Lenguajes, lenguajes y lenguajes… Por suerte, en los ambientes Unix/Linux tenemos por donde escoger. Ya sea que queramos hacer una aplicación web o un driver para Nintento Wii. Ahora, cómo escogemos un lenguaje de programación para nuestros proyectos de desarrollo? Es una pregunta que muchas veces se toma a la ligera, y la solución más rápida, seas o no experimentado, es decir: “Usa el lenguaje Congrís”(sí, para estar a tono con Nova, Guano, Cazabe, Indomitux, cuando me dé la taranta de hacer mi propio lenguaje le llamaré Congris, y los plugins se llamaran Chatinos, Bistec, Yuca, etc). Bueno, y en ocasiones para no parcializarnos, es mejor sugerir que se debe tener en cuenta a la hora de escoger un lenguaje de programación.
Warming up!
Por qué quiero aprender un lenguaje de programación? Quiero aprender un nuevo lenguaje o quiero aprender a programar?
Según los expertos, para aprender lo mejor es escoger un lenguaje que enseñe los principios básicos como SmallTalk, Lisp, Python, Ruby. Hay varios lenguajes que su objetivo es didáctico.
Si ya tienes alguna experiencia en lenguajes de programación y te quieres convertir en un maestro jedi, pues los lenguajes mencionados anteriormente funcionan también, en especial Python(IMHO).
Si estás construyendote una carrera como programador, lo mejor es ver las exigencias del mercado, ahí verás que Java, Objetive C, PHP, son los que llevan la voz cantante.(Yo me sentí terriblemente miserable cuando tuve que programar en PHP por el proyecto productivo al que pertenecía durante mi Universidad, pero bueno, mercado = dinero no?)
Si, al final, buscas diversión y tienes programar como un hobby, pues aprende lo desees. En un post anterior mencioné algunos tips: http://gutl.jovenclub.cu/use-the-source-luke-cosas-que-hacer-para-aprender-a-programar/
Factores a considerar:
Estos factores no son aplicables a los fines de escoger un lenguaje como hobby.
No siempre se escoge un solo lenguaje de programación como la mejor opción. Ejemplo, el mismo sitio GUTL, contiene HTML5(sin etiquetas semánticas), CSS3, Javascript, etc etc. O sea, en muchos proyectos es necesario incluir un lenguaje, así que aún no existe ese all-mighty lenguaje.
Factores a tener en cuenta:
-
Plataforma: quizás este sea el más importante, ya que de el se derivan muchas cosas, librerías, IDEs, configuraciones, etc. Por ejemplo: supongamos que hacemos una aplicación en C++ que imprime en pantalla las palabras “Hola Mundo”, esta aplicación lleva 2 ejecutables: uno pa windows y otro pa Linux.
-
Elasticidad: Como elasticidad de un lenguaje, se entiende la capacidad que tiene de estirarse hasta niveles insospechados de la estratósfera :-D. Ahora en serio, un lenguaje elástico o flexible es aquel en que le podemos adicionar funciones, librerías u otras funcionalidades sin que sea muy traumático el proceso.
-
Tiempo de desarrollo: Este factor está ligado al tamaño(palabras reservadas, funciones built-in) del lenguaje. Ejemplo claro: Supongamos que queremos hacer un CMS para noticias, este sería el tiempo estimado:
-
JSP: semanas…
-
PHP: varios días.
-
Python: algunas horas.
-
De que depende esto, digo, repito y no es matraca mía, del tamaño del lenguaje.
-
Comportamiento: Este factor define el comportamiento de nuestro lenguaje en diferentes escenarios, digamos una PC con un procesador multinúcleo y 2Gb RAM con Windows XP 64 bits o un x86 Ubuntu Intel Q6600 de un solo núcleo. De forma general, si se hace una comparación de una aplicación web en Java y otra en Python, la de Java se ejecuta más rápido en entornos similares.
-
Soporte y comunidad: Otra factor, más humano, en este caso, es la comunidad que tenga detrás un lenguaje. Dicha comunidad ayuda al crecimiento generando wikis, forums, tutorials y librerías. Ejemplos tangibles: PHPy Python. Hay librerías, tutos y demás regadas por la red que ya da miedo.
Entonces, por fin que lenguaje me recomiendas?
GUTL, ya me conoces, y sabes que te diré Python, así que para que me preguntas. RTFM! 😀
Bueno, un buen lenguaje para comenzar es un lenguaje de scripting(Python, Ruby, Lua). Son más estructurados que Bash(si eres usuario de GNU/Linux asumo que sabes que es bash) y requieren menos esfuerzo que un lenguaje compilado. Y para empezar, olvidate de los muchos manuales que hablan de clases, objetos, etc. Empieza con algo fluido(sentencias condicionales, ciclos) y luego ocúpate de las estructuras de datos, funciones, etc.
GUTL dice: Python, lenguajes de scripting!? Los programadores de pelo en pecho usan C!!
Es cierto GUTL, C es casi un meta-lenguaje: muchos los usan, muchos se derivan de el, muchos sistemas operativos están hechos con él. Pero C no sería mi primera opción como lenguaje didáctico, es altamente traumático y doloroso hacer cosas con él cuando no se está familiarizado.
Conclusiones:
Queda mucha tela donde cortar, pero me extendería mucho y me apartaría de la idea del artículo. De algo pueden estar seguros: el lenguaje que escojan para aprender será el más difícil de aprender. Entendieron el juego de palabras? Me explico: después que se hagan harina los sesos aprendiendo a imprimir por consola “Hola Mundo” en Java, cuando traten de aprender otro lenguaje les será más fácil, el primer paso siempre es el más difícil.
Programar es mucho más que decirle a tu PC que haga tal o más acción, programar es un set de habilidades que te hace ver el mundo de forma diferente(ya tus amigos dejan de ser amigos para convertirse en objetos de la meta-clase Persona), programar es un medio de diseño, de ingeniería, de ciencia, de arte y de diversión.
PS: El de la foto soy yo dentro de 20 años.
Referencias:
http://programmingisterrible.com/
Buen camino @Ozkar, buen camino estas trazando para todos nosotros aqui en GUTL, gracias por el aporte y el articulo.
Saludos…
Pues de nada, gracias a tí.
@Ozcar concuerdo 100% contigo en lo que pusiste en el ultimo parrafo del articulo, y eres como yo que le gusta tener el codigo organizado, limpio y comentariado entonce en casa te conviertes en un Adrian Monk y tus familiares empiezan a decir que te estas volviendo medio loko 🙂 😀 🙂
Dile eso a mi ex… jajajajaja.
Excelente artículo Ozkar, como siempre me he quedado con ganas de leer mas … sigue asi
buen articulo @Oskar por cierto si tienes documentación del tipo «python para burros» que me puedas mandar por correo sera bienvenida a ver si de una buena vez y por todas le entro jajaja
ok mano @Ozkar dejame decirte algo interesante y es ke mi nombre es OSKR2013 al igual que tu asi ke bueno un parecido, si tienes algo de Python please enviamelo…..
Hola , me gusto mucho tu articulo.Siempre he querido entrarle a la programacion seria aunque sea por diversion porque no la usaria de otro modo.Hace rato vengo escuchando python y no me he encontrado con un buen manual/tutorial que me facilite las cosas, si puedes mandarlo por correo o decirme de donde descargarlo seria bueno.
La primera parte del artículo e dio hambre… mmm congris bistec y yuca (con mojo)
Bueno chicos yo por la carrera de tele ne la cujae me tengo que comer el C# a pepe sin ninguna base docente (pero romperse la cabeza me ayudo cantidad) llevo varios meses metiéndole al python cuando tengo tiempo libre entre asignatura y asignatura yo comencé con un buen libro que no recuerdo ahora de donde lo descargue que se llama «Aprenda a pensar como un programador Con Python» aquí veremos lo típico de la programación, declaración de variables, ciclos, recursividad de funciones….todo lo docente que nos sirve para la gran mayoría de los lenguajes y ahora estoy con este libro » Python para todos»
Yo empecé en Python en serio porque en la UCI para la prueba de nivel teníamos que migrar de C++ (lo que dimos en 1er año) a algo más high level, todos se fueron a C# para gozar del Visual Studio pero yo cogí python porque entiendo cada línea que escribo, en VS el IDE hace mucha magia por ti, pues nada el día de la prueba todos con .NET y yo con mis listas y diccionarios y PyQt de interfaz. Sobra decir que fue como hacer trampa, Python es una navaja suiza.
@Wolf119 Te contare que yo estudie Telecomunicaciones al igual que tu y fui el primer curso que utilizo el plan D en el cual impisieron la programacion en C#, nunca me gusto la idea de estar amarrado a un sistema operativo ni a M$ pero bueno no tuve otra opcion, aunque no dejo de reconocer que C# como lenguaje esta bien pensado y sus librerias estan muy buenas.
Salu2
@bosito7 que bueno ya tengo a quien caerle a preguntas jajja y si hurra con el plan D jaja a mi tampoco me gusto esa idea de tener que aprender un leguaje que me ate a una línea de producción, preferiría que me hubieran ensenado C++ antes que C# como a los automáticos, pero es verdad que no se le puede quitar crédito, pero aun no me gustan muchas cosas como tener que tener obligado instalado los framework.net en cada máquina donde vayas ejecutar un software por mi tontón que sea…..pero bueno ahi es cuando vemos la línea de software libre que persigue la enseñanza universitaria jajaj por eso me tire por la calle del medio y con le python de la mano, todos me mis colegas me llaman radical y se burlan de los IDE que uso, pero que les den ellos son VS no son nadie jajja
¡¡¡No sé de programación, pero sin dudas ha sido una buena receta de cocina criolla !!! Gracias, Monsieur le Chef Ozkar, las amas de casas te lo agradecemos.
OT: ¡¡¡ Poner tu foto real fue todo un detalle !!! También las amas de casas te lo agradecemos.
Todo un placer, y más que un placer, un solar!
Un artículo excelente es muy útil saber programar y además organiza la personalidad y ejercita el cerebro. A mí personalmente me gusta el C y un poco de C++ me va bien con ellos y ya estoy bastante avanzado, son muy flexibles y rápidos y entretenidos a full(siempre tienes un puntero pendiente regado por ahi)
Me imagino que hallas visto Qt para C++, eso es la bomba y ahora con el Qt 5 que dice que se puede programar para Android (aunque yo no lo he probado), si te hace falta algo por lo menos en Qt aqui estamos (rubisel.prieto@datys.cu).
Permíteme discrepar en algunas cosas.
1. Creo que el post se refiere a escoger un lenguaje de programación para aprender, porque si es para realizar un proyecto se deben tener algunos aspectos más en cuenta, pero te aconsejo que nunca seas “Martillo de Oro” ( un anti-patrón ) que todo tienes sus ventajas y desventajas.
2. Sin dudas para prender a programar lo mejor es seudo-código menos divertido pero aclara mejor los conceptos sin entrar en características especiales.
3. Cuando se sabe un lenguaje Orientado a Objetos los demás se aprenden fácil.
4. No estoy muy de acuerdo con:
• JSP: semanas…
• PHP: varios días.
• Python: algunas horas.
Entre otras cosas ya que los CMS hechos en “algunas horas” en Python son cascara, (sin maldad el ataque, pero si atacas PHP ataco Python gggg), Python es excelente y me encanta pero ningún lenguaje se puede decir que es el mejor.
Muchas gracias por la publicación.
Pues sí, en el punto 1 uno tienes razón, ya que como mencioné: «Si estás construyendote una carrera como programador, lo mejor es ver las exigencias del mercado». En el punto 2 también tienes razón! Por eso sugiero Python, nada más parecido a un pseudocódigo. En el 3 no tanto, digamos que para aprender, primero es mejor aprender a programar estructurado, y luego adentrarse en la POO(no me gustan esas siglas, me da por pensar en osos). Vengo de una Universidad que te «meten por los ojos» un lenguaje y la POO, mala práctica. En el punto 4… sí, ningún lenguaje es el mejor, pero en tiempo de desarrollo, creo que tengo razón, incluso usando frameworks y demás chucherías.
Gracias a tí por el comentario!! Kudos!
Siguiendo la discrepacia.
Si tanto te quejas de la mala orientación que te dieron en la Universidad, entonces para que la terminaste ?? Te hubieras ido para otra donde se estudiase la misma carrera y listo. Además compy tu sabes que si algo ayuda más que nada en las Universidades es estar en un proyecto productivo donde te exigen apreder y usar algo, ya que de todas las experiencias (tanto malas como buenas) se basa la formación de un programador.
Por lo demás te digo que nada tan objetivo como aprender desde cero y bien, aunque sea a la fuerza, para no caer en errores (horrores) después por no saber aspectos básicos que se debieron aprender en la base. Como bien dices y te apoyo 100 %, primero se debe aprender estructurado, en eso los lenguajes script son la ostia ya que muchos son puramente estructurados (ahhh como extraño el Basic de los Z80 y los televisores crin en blanco y negro).
Salu2
Siempre hay uno que lee mal entre líneas. Yo me quejé de la Uni? Solo dije que es una mala práctica, que además, existe en todas las Universidades del país. En el FLISOL 2012, me invitaron a la UHo, allí mencioné que por suerte o desgracia, en Cuba se enseña Java, C#, C++, etc, pero muy pocos profesores enseñan programación, solo enseñan lenguajes.
Asi que no te quejaste de la Universidad ??? 😀 cito (copiar y pegar) «Vengo de una Universidad que te “meten por los ojos” un lenguaje y la POO, mala práctica.» 😀 Como mola esto.
Salu2
Caramba, me hubiese quejado si dijera: «malas clases, mal esto, mal lo otro», pero es la pura verdad. Y si no pregúntale a los que vienen de allá.
no se, pero me parece que en todas las universidades del país se da lo mismitico de nada le serviría a un estudiante cambiarse para otra donde den la misma carrera a no ser que sea por problemas de transporte, vamos que estamos en Cuba jejjee y demás esta decir porque nos graduamos todos 😉
Pues si estoy de acuerdo con @Ozkar en practicamente todo lo que dice, cierto el punto 1 y 2 que planteas. Ahora de verdad has desarrollado en python como para no estar de acuerdo con eso? PHP nada mas entrando en la sintaxis por tocar algún aspecto el tema de «->» eso es una barbaridad, ahora mismo han mejorado muchísimo con el symfony 2 que si has trabajado con el verás que tomaron casi todas las buenas prácticas de frameworks como Django, que me lleva a la siguiente interrogante has visto el trabajo de Django para desarrollos de CMS?
Saludos
Primero cuidado con las faltas de ortografía, tanto al escribir como al programar, pueden hacer que tu programa explote, metafóricamente hablando. Segundo, te apoyo en tu comentario, Java sera difícil de usar, pero Windows y Linux básicamente tienen algo en común y no se llama Phyton ni PHP. Pero bueno eso es decisión de cada cual. Y me pongo a mi como ejemplo que ayer comencé a trabajar con Python y créeme que por muy intuitivo que parezca a veces te da su dolorcito de cabeza 🙂 Obvio, comencé ayer
Excelente articulo, soy como linuxgirl, de los que criticamos los que hacen los programadores ;-))… Nada en serio, programar es un arte que se me escapa de las manos, tengo que reconocerlo…
Cuando solicitaban cosa sobre Python recorde que en Humanos a cada rato hablan de tema y encontre este link http://humanos.uci.cu/2011/12/head-first-python-una-excelente-aproximacion-a-uno-de-los-lenguajes-de-programacion-mas-utilizados-en-la-actualidad/ son casi 40 megitas así que los de enlace conmutado busquen alternativas… Si hay algun interesado que yo pueda ayudar se lo descargo y ponemos de acuerdo, radico en Vedado y vivo en Alamar un rango bastante amplio…
Exelente articulo Ozcar, +100 por ti, olle concuerdo contigo en que es mejor aprender estructurado y luego pasar a la POO, ese metodo es mejor pues al final los algoritmos mas basicos son estructurados y casi cualquier algoritmo se puede hacer utilizando esta forma de lenguaje, claro que la POO organiza mejor el trabajo pero pienzo que despues que sabes hacer cosas de forma estructurada pasarse a POO es mucho mas facil y se entienden los conceptos mejor.
Al leer lo que decia Ernesto Tur Laurencio recorde mis inicios como programador hace ya alrrededor de 11 años cuando hacia mis cosillas en Borland Pascal (ni me acuerdo que version pero era de palo) y llevaba con orgullo mi compilador y mis programas en un diskete de 3.5 y a cualquiera que tenia PC (que eran pocos en aquel entonce, yo tampoco tenia) le enseñaba mis programitas, en esos lios de programacion fue que conoci a mi esposa, hace ya mmmmm un buen tiempo.
Yo creo que tienes una pequeña confusión , primero no se trata de «lenguaje de programación estructurado» , sino que hay un tipo de programación que se llama estructurada , que simplemente es hacer algoritmos claros , utilizando únicamente tres estructuras: secuencial, selectiva e iterativa. Si vemos en la historia de la programación , los primeros lenguajes que utilizaban mucho la instrucción «goto» esto suponía un desorden mayúsculo en el código, por esto surge la «programación estructurada» , para hacer algoritmos más ordenados , claros y eficientes . Y después vino la evolución natural :» la programación orientada a objetos”.
Por tanto en los lenguajes que se puede usar POO se puede usar Programación Estructurada, no siempre de manera inversa.
C’mon! Errores conceptuales, nada grave. No queremos formar gurús, solo que se acerquen al mundo de la programación. Imagínate si los atiborramos con conceptos para nada pragmáticos.
Acerca del GOTO, tengo en casa un libro apocalíptico que en unas escasas 1000 páginas enseña los fundamentos de Fortran.
Es que hasta mi me confundio, tuve que ratificar conocimientos en google-sama. No quiero ser el polillon de la clase.
Interesante artículo Ozcar, personalmente desde que tomé contacto con algo parecido a una PC (aquellos TV Caribe con un engendro conectado y el SO en un disco 5.25″) siempre me gustó la programación. Hoy la considero un hobby. En la Univ. programé con Broland Delphi (que horror), claro ya Pascal es un lenguaje más a lo seudo-código y eso me sirvió de mucho para apropiarme de los principios básico de la programación en ambos paradigmas (estructurada y POO), luego me fui por C/C++, también usé PHP, en fin… un día terminé probando Python y realmente creo que es un excelente lenguaje para aprender a programar programar… finalmente, hoy por hoy me he concentrado en hacer scripts en bash porque les encuentro una utilidad práctica enorme para mi trabajo diario y como no soy informático y mucho menos programador, pues me entretengo en esto y uno lo útil con lo agradable. Concuerdo contigo cuando dices: «programar es un medio de diseño, de ingeniería, de ciencia, de arte y de diversión.» a lo que añadiría que es un increíble reto a la inteligencia y una fuente de satisfacción personal cuando se logra hacer que el programa que estás haciendo funcione como tú deseas.
saludos,
lpozo
Que lenguaje de programación me recomendáis aprender? quiero iniciarme en un orientado a la electrónica y no se que hacer, estoy aprendiendo c pero mas bien lo aprendo para crear videojuegos y esas cosas.
Si es orientado a la electronica o cualquier otra interfazpor puertos de cualquier tipo te recomiendo encarecidamente el octave, si usas kde el octave-qt. Esto te va a resolver todo tus problemas pues tiene todo lo que hace falta y tu solo debes decirle que quieres que haga. el lenguaje que usa es el m (el mismo del matlab).
Python es mi preferido porque es gratuito, libre y casi todas las librerías o herramientas adicionales que pudieses necesitar tambien son gratuitos, libres. Si programas en C# dependes de muchas mas utilidades que cuestan dinero y no puedes ver su código.