
Cuando yo era pequeño aprendí a programar. No aprendí a programar demasiado, y aunque ahora programo un poco por hobby, para una herramienta crítica buscaría un profesional. Pero me gusta saber programar. Tener una idea básica, muy simple, de cómo se hace para que el ordenador haga cosas. Me resulta interesante y, en muchos casos, útil. Sin embargo, parándome a pensar, es mucho más difícil para un niño aprender a programar hoy que cuando yo lo hice.
Me explico: mi primer contacto con la programación fue con un Spectrum ZX en los gloriosos ochenta. Mi primer programa sería algo muy parecido a esto:
10 INK 6
20 PAPER 2
30 BORDER 3
40 CIRCLE 20, 20, 20
Por supuesto no es que hiciera gran cosa, sino que dibujaba un círculo en la pantalla y cambiaba un par de colores. Pero eso para un niño que se iniciaba en la programación, era todo un mundo. Y eran apenas cuatro líneas de código.
Mucho más adelante me aventuré con un amigo en HyperCard, una curiosísima aplicación para Macintosh que permitía construir colecciones complejas de hipermedia (hipertexto con imágenes, sonidos e incluso vídeo). El lenguaje incorporado en HyperCard, llamado HyperTalk —se rompían la cabeza para los nombres, en Apple— sin ser demasiado sofisticado permitía a un par de niños imaginativos construir aplicaciones muy sencillas pero muy divertidas. Incluso llegamos a hacer un par de juegos, aventuras gráficas, que era lo que nos gustaba. Por supuesto eran espantosas, pero eran mucho más de lo que un niño de once años puede hacer fácilmente hoy en día.
Hace poco un amigo me dijo que le gustaría aprender a programar. Sinceramente, si pudiera le diría que volviera atrás en el tiempo y jugase con un Spectrum ZX o una máquina virtual de Logo, que la mejor forma de aprender los principios básicos de la programación son esos dos lenguajes. Sin embargo, como mi amigo no sabe viajar en el tiempo, me puse a pensar otra respuesta.
Quedaban descartados lenguajes como C o Java por su complejidad. PHP era un buen candidato, pero tiene una sintaxis complicada y es demasiado laxo en temas de tipos y declaración de variables. Muy cómodo de usar, pero malo para aprender. Así que la cosa quedó entre Ruby y Python.
Seguramente Ruby sería hoy en día el lenguaje de programación más adecuado para un niño. Los conceptos en realidad tienen más sentido que en la programación funcional: tenemos objetos, que son como las cosas que hay en el mundo real, y esos objetos responden a mensajes, que son como las cosas que hacemos con las cosas en el mundo real. Sin embargo, la personalidad tan profundamente idiosincrática de Ruby, que no se parece a nada más en el mundo —excepto a SmallTalk, que es más raro todavía— sería seguramente contraproducente a la larga. Cuando aprendes a programar en Ruby no aprendes a programar en general, sólo aprendes a programar en Ruby.
Así que el ganador —por eliminación— fue Python. El invento de Guido van Rossum es lo suficientemente flexible para no requerir introducir conceptos complicados hasta que no son necesarios. El hecho de que trate el espacio en blanco como nosotros esperamos que lo trate y no como el resto de lenguajes —que lo ignoran— hace que sea muy adecuado para aprender, y su increíble alcance permite que comprendamos, cuando sea necesario, conceptos tan enrevesados como las lambdas.
¿Qué pensáis vosotros? ¿Cuál os parece que es el lenguaje de programación más adecuado para aprender a programar de cero hoy en día?










Javascript podría ser una buena opción…
En la Universidad enseñan a programar con lenguajes fuertemente tipados, en mi caso con ADA95, aunque si volviera a empezar, hubiera querido aprender directamente con JAVA, te aprendes bien alguna API y a correr, nada de hacer estructuras de datos desde 0.
Un saludo y enhorabuena por el blog!
Yo aprendí el año pasado a programar en PASCAL durante un cuatrimestre, sin duda es un muy buen lenguaje para empezar. Después ya he aprendido a programar en C y no me va demasiado mal…
@Poliuk ¡Cierto! Pascal es muy útil para el aprendizaje, antes de ir a C tal vez. @Emanuel ¿Lo dices en serio? Java me parece muy sencillo… hasta conozco a chicos de 15 años que están programando en Java xD
mm no creo que haya crisis de educación por el hecho de que vivamos sumergidos entre computadoras, en la universidad en donde estudié en el primer curso de programación te enseñan 3 lenguajes en forma secuencial.
Yo aprendí a programar en assembler, luego nos enseñaron C/C++ y luego Java, y la verdad creo que sin mayor inconveniente lograron en todos los estudiantes una curva de aprendizaje es bastante alta.
Seguramente en general las instituciones usan metodologías secuenciales similares, no creo que haya lío con eso.
Yo se definitivamente cual no es , JAVA , yo estoy aprendiéndolo y es muy complejo.
Como dice @Marcelo, es buena opción, yo diría que jQuery. Por cierto, yo aprendí a programar con PHP y a mi se me hace la mejor opción, poniéndole empeño, aprendes de todo un poco(Me refiero a sintaxis de otros lenguajes).
Cabe destarcar que jQuery no es un lenguaje, mas bien un framework de Javascript, por lo tanto primero hay que empezar aprendiendo este.
Te apoyo con lo de php es muy facil de aprender..
gracias a el entendi muchas cosas de los lenguaje de programacion.. el primero que toque fue llama pero nunca pude aprenderlo bien.. luego de aprender a moverme en php luego de el puedo crear aplicaciones sencilla en java que antes no podia… jeje estas vacaciones de verano me propuse a aprender java a full xD
El mejor lenguaje para aprender es C. No solo puedes usarlo desde microprocesadores hasta iPhones, ayuda a que aprender un segundo o tercer lenguaje sea mas facil.
C no es complejo, para nada. Depende de como te enseñen claro está… Si vas a lo loco y a hacer IA de programas o juegos 3D es una locura, sí, si en cambio quieres aprender a programar C es la base.
La sintaxis de PHP es la de C, añadiéndole que es más libre (lo cual es más peligroso si luego quieres aprender más), pero también es muy buena opción…
Python lo veo… poco útil para querer avanzar en el aprendizaje luego ;)
Definitivamente C.. No hay otro lenguaje que te abra tanto las puertas a otros lenguajes y paradigmas que ése.
Mmmm…. Veo que hay mucha gente hablando de C, pero creo que no estáis entendiendo a lo que me refería en el artículo. C es genial, es superversátil, pero para una persona que lo más que puede querer hacer en su vida son scripts o aplicaciones muy muy sencillas… ¿No os parece que es un poco exagerado?
Mmmm, no lo creo, yo opino que el lenguaje C es como aprender a manejar en un auto standard (si, es más difícil), pero una vez que lo dominas ya cualquier otro lenguaje se te hace más sencillo…como aprender después a manejar un automático.
Pues yo opino que es como un auto con todos los controles de un avion de pasajeros jaja.. podes controlar todo, pero no necesariamente es lo adecuado para aprender. Obvio que al pasar de ese “auto” a otro va a resultar mucho mas sencillo, lo que no quiere decir que sea adecuado para aprender.
En la universidad a la que asisto comentaban que usaban pascal por el hecho de ser fuertemente tipado, y por ser muy rigido en su sintaxis… Obligandote a buenas practicas de programacion, como el declarar todas las variables antes de usarlas y esas cosas. Python tambien tiene lo suyo, con su manera de bloques-por-indentacion obliga a escribir codigo mas legible.
Si bien aprendi con pascal y ahora me estoy metiendo en python no se si este seria el ideal para aprender a programar, aunque pascal esta pasado de moda y no seria tan util.
Bueno, es solo mi granito de arena. De momento programo en c++ :P
Pienso que un lenguaje adecuado para aprender a programar hoy en dia es QBasic, ya que ahi puedes aprender muchas cosas que estan incluidos en lenguajes de programacion mas “serios” (como apuntadores, variables, arreglos, etc), y claro, todo esto con la archiconocida sintaxis de BASIC, que es bastante bastante sencilla si la comparamos con la de C++, por decir algo.
Yo aprendi a programar con Qbasic, y aprendi muchas de las cosas que en la actualidad estoy viendo con C++ :)
El problema de empezar a programar con lenguajes de sintaxis simples es que esconden demasiadas cosas que en un futuro cuando se quiera comenzar a programar con un lenguaje de nivel mas bajo, hay que re-aprender conceptos. Como programador que soy recomendaría comenzar con un lenguaje un poco mas complejo para tener una noción mas precisa de como es que se mueven los fierros con nuestras instrucciones y después migrar a otros lenguajes de mas alto nivel con conceptos bien claros y aprendidos, sin embargo, si lo que se quiere es aprender a programar por hobby un lenguaje orientado a objetos no es lo ideal dado que hay que comprender conceptos como herencia, polimorfismo , encapsulación etc que pueden confundir.
Conclusión: Por hobby yo comenzaría con lenguajes como KPL, Scratch que a mi hijo le encanta en especial Scratch y tan solo tiene 8 años.
Para tomar la programación mas enserio aprender C seria bastante ideal y de ahi tomar Java o C++ ,el mismo Smaltalk es una muy buena opción.
Ya que si eres usuario de OS X como yo, java es casi el pan de cada día para migrar nuestras aplicaciones, y darle una vista a Objective-C y su GRAN soporte y tutoriales para programar Cocoa .
yo recomendaria aprender en un lenguaje con tipado estátito como java más que ruby.
ruby es un lenguaje muy útil y productivo pero creo que aprender con un lenguaje tan estricto como java es mejor para un novato.
ahora que si hablamos de niños hay muchas opciones, por ejemplo logo. Otra opcion es alice que es un lenguaje gráfico para hacer mundos virtuales de forma simple: http://www.alice.org/
además los lenguajes viejos siguen existiendo. es posible encontrar compiladores mas o menos recientes para casi cualquier lenguaje.
Creo que la elección es correcta, Python es un lenguaje apto para alguien que desea automatizar algunas cosas. Su sintaxis es más limpia que la de Ruby.
Aprender C, PHP, Javascript (jQuery no es un lenguaje!), PASCAL, entre otros sólo harán enfocarte más en otros detalles que no son el de resolver el problema entre manos.
Creo que tu análisis, casual o no, llegó a una elección que hubiese recomendado.
Como nota menciono que programo en Smalltalk hace siete años y vivo de ello. Tambien puedo programar (pero no domino) Ruby, PHP, Perl, JS, Java y C; por lo que puedo fundamentar mi elección.
Pues yo he aprendido, algo, con Pascal, no es mal lenguaje, pero puede enrevesarse un poco si se quiere…también se algo de Logo…pero estoy poco iniciado en la programación…
Aprender un lenguaje de programación tarda una o dos semanas, aprender a programar toda una vida…
Acabo de aprender mi primer lenguaje de programacion y no le veo nada de complicado, yo recomendaria C, claro que siempre acompañado de un buen libro o un maestro o algo que te guie Saludos
El lenguaje para aprender es Smalltalk. La tesis de Alan Key de trabajar con “orientación al objeto” y con hipermedios en una interfaz gráfica de 1972 se probó durante 8 años, y en 1980 se publicaron sus impresionantes resultados: chicos de 8, 9 y 10 años programaban videojuegos, e incluso interactuaban con el mundo real comandando robots hechos con Lego.
Así como a principios de las 90 la crisis del software fue resuelta por tecnologías y metodologías de los 70 (me refiero a los objetos), ya viene siendo hora de que la crisis educativa, que confunde enseñar informática con enseñar ofimática, tienen sus soluciones óptimas investigadas y documentadas… tal vez a la educación le falta más crisis para que alguien mire atrás y las “descubra”.
PD: Smalltalk se usa mucho más de lo que te imaginas pero mucho menos de lo que debiera!
A mi la idea de SmallTalk me entusiasma. Nunca me he visto con fuerzas de aprenderlo, pero me gusta mucho.
Incluso existen proyecto como el Squeak, basados en este lenguaje que sirven tanto para un niño como un adulto que quiera aprender sobre Programacion Orientada a Objetos
+1 Smalltalk es un lemguaje que puede usarse de muchas formas… la mejor forma de empezar con todo lo relacionado a lo orientado a objetos… todo ese mundo de clases metodos protocolos… yo estoy en la U y primero me enseñaron PASCAL, luego Prolog, Haskell , Smalltalk y ahora C.
Lo primero para empezar a programar—y es algo que, lamentablemente, rara vez se da—es tener muy claros los conceptos de memoria y los sistemas de entrada/salida del lenguaje de programación que se va a utilizar (descriptores de fichero en C, flujos en Java, etc.).
Una vez que eso ha quedado muy claro ya se puede comenzar con cualquier lenguaje. Personalmente, comenzaría con C para reforzar el concepto de memoria (dimensionamiento estático, dinámico y punteros). De ahí se pueden aprender muchas cosas sobre dimensionamiento y direccionamiento que pueden ser muy útiles en lenguajes como Java, de más alto nivel y orientados a objetos.
Como conclusión: si sólo sabes C, la POO te va a costar; si sólo sabes Java, la programación estructurada te va a costar, aunque menos que al revés; si sabes C y Java puedes aprender cualquier lenguaje en cuestión de dos días.
Para aprender a programar, la shell de linux. Aunque no es fácil (se puede complicar todo lo que se quiera), sí que es muy rápido a la hora de ver los resultados. Además de aprender los comandos básicos de linux. Y también puede ser muy sencillo para ejemplos básicos: El Hola Mundo: 1º Crear un documento vacío con el botón derecho del ratón -> Crear documento (por ejemplo script.sh) 2º Escribir:
!/bin/bash
echo Hola mundo 3º Desde la línea de comandos de linux cambiar los permisos chmod u+x script.sh 4º Y ejecutar: ./script.sh
Gente, para aprender a programar C/C++ y Java son complicados. Uno que ya esta acostumbrado a esas cosas dice que no es enrredado, pero para quienes desean aprender a programar resulta un tanto complicado. A mi me paso, antes de entrar a C (y cuando no sabia ningun lenguaje de programacion) se me hacia sumamente complicada su sintaxis.
Insisto, para aprender a programar no hace falta un lenguaje tan “pro” como C/C++, QBasic, Pascal o PHP son suficientes para aprender los conceptos que se ven en cualquier lenguaje de programacion.
Todo lo que vi en QBasic me ha servido mucho para lo que he visto actualmente en C n.n
hay un error en el código que pusiste en el post, :) (el 40 en la tercera lina debe ser un 30)
¡Gracias! El código lo he escrito en FUSE para probar que funcionase, pero me he confundido al copiarlo :(