Cita:
Empezado por nlsgarcia
por lo cual creo que debes conocer una amplia gama de paginas relacionadas con el tema que puedas recomendar ampliamente
|
Basicamente el inicio es que he manejado muchos lenguajes, y casi que adrede el menos popular -en su momento- (FoxPro en vez de VB, Delphi en vez de C/C++, Python en vez de PHP/Ruby, Obj-c en vez de Java, Postgres en vez de Mysql, etc), lo que me ha expuesto a muchas ideas que no son tan comunes. Tambien esta el asunto de que cuando se trabaja solo o en equipos pequeños es inteligente saber que realmente
hay lenguajes mejores
que otros.
El sitio donde se habla a nivel *MUY* teorico sobre todo esto es:
http://lambda-the-ultimate.org/. En
http://www.hckrnews.com/ de cuando en cuando se habla.
Pero basicamente el asunto es que hay unas 2 ramas principales entre los diversos
paradigmas:
Funcionales e
imperativos y/o OO.
Como *siempre* me a gustado irme por la rama *menos* popular u obvio (es una idea que saque del libro "Las 22 leyes inmutables del marketing" donde se postula que el #1 con el tiempo se vuelve perezoso y grande y el #2 se tiene que esforzar mas) entonces trato de determinar que me pueda dar una ventaja sobre lo mas "común".
Tambien, cosa que saque de FoxPro: Uno no sabe de lo que se pierde o las estupideces que son innecesarias si no se expone a ideas diferentes, y las ideas diferentes no están en la opción obvia. FoxPro es un lenguaje que es una rama "perdida" en la actualidad, pero que me enseño sobre como hacer BD y hacer OO.
Asi que vas caminando cada rama de la
programacion, y te metes a cada lenguaje, y tratas de averiguar que tiene de interesante. Por ejemplo, en el caso de Julia son los
multi-metodos. Y asi sucesivamente vas creando un modelo: "La inhiterancia en la OO es una solucion
mas estupida que la cohesion" "El manejo de estado se debe reducir". "Si el lenguaje no tiene paradigma X, que tan costoso es emularlo? Y eso como afecta lo que hago?" y asi por el estilo.
Luego en cuanto a la idea de hacer el lenguaje vas mirando que es crucial, que es mejor, que es redundante, etc. y con el tiempo (y no es tan facil!) vas encontrando ideas utiles como el
pratt parser.
-----
Algunos lenguajes que son utiles para empaparse de ideas:
Funcional, Totalmente tipado, Estricto en manejo de estado: Hakell :
http://learnyouahaskell.com/
Software confiable y escalable: Erlang:
http://www.erlang.org/ (Elixir es un "dialecto" mucho mas amigable:
http://elixir-lang.org/
Pascal, y toda su familia (ADA, Modula, etc) por supuesto!
Python: La legibilidad importa
Lisp: No hay separacion de codigo y datos.
Un sitio que da un abrebocas de varios:
http://learnxinyminutes.com/