Hay muchos lenguajes ahí afuera, con variadas características. Paradigmas, objetivos, plataformas que soportan, performance son cosas que evaluamos al momento de elegir. Los lenguajes son casi una religión en algunos casos, todo programador defiende su lenguaje favorito a muerte, y jamás dejará pasar la oportunidad de echar en cara a sus pares como su amado lenguaje resuelve ese problema de forma mucho más elegante.
Otra característica que tiene que tener un lenguaje para ser "importante" es tener una comunidad que lo respalde. Nadie quiere usar un lenguaje que conocen solo los 3 desarrolladores en la cima de un pico Ballmer, que lo inventaron el fin de semana pasado. Ni siquiera otras implementaciones que no sean la de referencia suelen ganar una masa importante de usuarios.
Pero, cuál es el lenguaje más importante? Y qué criterio se puede utilizar para decidir cual es?
Podríamos usar la popularidad, y en seguida nos vienen varios lenguajes a la mente...
C, el lenguaje de lenguajes, si estas usando cualquier cosa que tenga software es 100% seguro que algo de lo que está fue escrito en C, o al menos compilado con un compilador hecho en C (si, gcc es MUY usado). C nos permite comunicarnos muy bien con las máquinas que tengan la arquitectura de von Neumman, que son prácticamente todas, en un lenguaje de un nivel MUCHO más alto que assembler sin perder performance. Pero, C es un arma de doble filo, tanta libertad nos permite periódicamente dispararnos en los pies, por lo que no es la herramienta adecuada para desarrollar grandes sistemas. No se si será el lenguaje más importante, pero es importante, es bueno saberlo, entenderlo, dominarlo.
C++, voy a resumir este, es C, pero con muchas cosas más, todas muy interesantes, llevaría años llegar a conocer los más oscuros rincones de este monstruo. Con soporte para distintos paradigmas de programación y compatibilidad con C, la sintaxis de este lenguaje se volvió algo demasiado grande, y a mi parecer, fea. Pero, C++ se puede usar como C con clases, lo que es realmente lindo y útil, permite organizar el código mejor y mejorar el manejo del aspecto en el que C si es complejo.
Java, je.. Java. El lenguaje más usado según el ranking de TIOBE y cualquiera que ande prestando algo de atención al mundo de la informática. Voy a ser sincero, no me gusta Java, me parece excesivamente verboso y complicado. Aunque comparado contra C++, para la construcción de sistemas tiene ventajas, el GC es algo bueno cuando los proyectos crecen desmesuradamente y el manejo de memoria se vuelve un caos. Java tiene la característica de que te obliga a escribir mucho código fácil (no requiere que el programador esté pensando) que no hace nada, dando la falsa sensación de productividad. Por otro lado, la plataforma Java (JVM) es muy interesante, y hoy por hoy soporta muchos más lenguajes y provee algunas herramientas básicas de intercomunicación entre estos. También tiene buenas librerías para todo lo que es concurrencia y escala bien según dicen.
Ruby, el juguete oriental que tomó al mundo del desarrollo web por sorpresa con el framework Rails. Ruby es un buen lenguaje, cumple bien su cometido tiene bastante popularidad. Su VM principal tuvo recientemente una gran actualización y tiene su versión sobre la JVM que corre más que bien. Me desagradan los END END END END ENDNENDNENDNDNDeNFNEDNE todo el tiempo, y esas cosas de @ y $ y ::... Creí que ya habíamos superado esas cosas en los lenguajes de alto nivel, pero veo que no.
Python (mi martillo favorito), otro lenguaje de scripting al igual que Ruby, con una completísima librería estándar ("Batteries included"), tiene varias implementaciones siendo CPython la de referencia (Jython, Iron Python, PYPY, stackless son las otras). Es bastante más usado de lo que uno creería. Recientemente tuvo una gran reestructuración pasando a la versión 3.0, donde rompió compatibilidad con sus versiones anteriores de forma maravillosa. Realmente me encantó que la gente detrás de Python halla hecho eso, Python 3.0 es más consistente que 2.x y atacó definitivamente el problema del unicode entre otras cosas. Python tiene muchas cosas excelentes que no podría hacerle justicia en tan pocas oraciones.
Pero, cual de estos es el más importante? Y no estoy mencionando otros pesos pesados como PHP, los lenguajes Microsoft, Javascript.
El lenguaje más importante es el Inglés, SI, el Inglés, English! Te guste o no tenés que saber inglés, no podés andar por la informática sin saber inglés. Quienes no saben inglés son caballos rengos, tienen limitaciones que no pueden superar. La mejor bibliografía está en ingles. Blogs, charlas, tutoriales, screencasts, podcasts, todos en ingles. Foros de ayuda, comunidades de open source, chats, todos en ingles. En proyectos open source, los comentarios, nombres de variables, funciones, clases... adivinaste? Si, todos en inglés.
Así que si te estabas preguntando que lenguaje aprender, ya sabés, mejor que sepas éste antes de seguir con cualquier otro.
sábado, 28 de marzo de 2009
El lenguaje más importante
Publicado por JustPablo en 22:53 0 comentarios
Etiquetas: lenguajes, programación
miércoles, 10 de septiembre de 2008
Programming Collective Intelligence
Este libro realmente me abrió los ojos. Para ser completamente sincero, lo compré casi por accidente. Estaba buscando otros libros de programación, quería tener una copia del K&R, y ya que hacía tiempo que lo estaba usando, quería adentrarme más en el mundo de Python. Entre las recomendaciones de Amazon apareció Collective Intelligence. Por curiosidad entré a ver la descripción y los reviews y me llamó la atención. Terminé agregándolo.Que grata sorpresa me llevé cuando ya en las primeras páginas el libro me había absorbido completamente. Es maravilloso como encara temas que son complejos de forma simple y práctica, dejando una idea de los conceptos en los que se basa, y dando claros ejemplos de uso.
Si alguna vez se preguntaron como el motor de búsquedas de Google selecciona que páginas mostrar, como AdSense muestra enlaces que son bastante acertados o como Amazon hace sus recomendaciones, realmente van a disfrutar este libro.
El autor comienza con una introducción al tópico del libro para luego las distintas áreas donde se aplica. Se abarcan temas como encontrar grupos con caracteristicas similares(clustering), motores de busqueda y sistemas de ranking(PageRank por ejemplo), optimización por medio de algoritmos genéticos, clasificación de documentos para filtrado de spam, modelos predictivos usando arboles de desición(data mining) y programación genética(programas que crean programas usando algoritmos genéticos).
En todos los temas, se muestran pruebas sobre datos reales, con código incluido(en Python), explicaciones de las APIs para obtener los datasets y todas las instrucciones para empezar a jugar(casi casi un mecano).
Obviamente al cubrir una gran cantidad de temas, no se adentra demasiado en ninguno, pero ya conocerlos y haber visto ejemplos prácticos de uso es una enorme ventaja al momento de encarar un problema y decidir que camino tomar para solucionarlo o tener que investigar más profundamente.
Programming Collective Intelligence es un excelente libro para aquellos interesados en IA, Machine Learning y Data Mining. Cubre temas que hace que empresas como Amazon y Google sean las mejores de su campo(Google gana sus miles de millones solo con publicidad especializada, y las recomendaciones de Amazon son una de las grandes diferencias que tiene con el resto). Estoy muy contento de que forme parte de mi biblioteca.
Publicado por JustPablo en 22:44 1 comentarios
Etiquetas: inteligencia artificial, libros, programación
Suscribirse a:
Comentarios (Atom)