Aprender a programar online (tour de recursos)
Programar hace mucho que dejó de ser un tema de unos pocos. Programar será, si ya no lo es, un ‘lenguaje’ y herramienta de estudio para distintas ciencias, disciplinas y hobbies como lo es la matemática. Tanto el astrofísico como el arqueólogo, el matematico o el ingeniero electrónico pueden utilizar la programación como una herramienta de automatización, investigación, proyección, y un largo etc.
Pero incluso, por sobre los científicos, geeks, hackers y programadores, la programación, puede ser una herramienta para que los niños aprendan a pensar y desarrollar sus ideas.
Hagamos un repaso de recursos disponibles, empezando por los mas simples y recomendados para los que nada saben de programar, y finalizando por los disponibles para quienes ya saben programar.
Comenzaré compartiendoles un simple juego, que ayuda a desarrollar la idea de programar desde el punto de vista de ordenar una serie de acontecimientos y acciones para lograr un determinado objetivo. Es Magic Pen. Que no te engañe su interfaz tan infantil, puedes divertirte un rato aún sabiendo programar. Por sobre todo, puede ser un excelente juego didáctico para tus hijos en edad escolar. Aviso, puede ser adictivo.
Continuando con juegos que nos enseñan a pensar como programador, CodeCombat es un juego donde nuestro personaje se mueve guiado por nuestro código. Con varios niveles, personajes, distintos items de vestimenta, y su progresiva dificultad, la experiencia lógica que puedes adquirir es difícilmente mensurable. En particular esta plataforma la recomiendo para aprender a programar Python (3) o JavaScript, aunque también puedes elegir Lua, Clojure, o Io. Todos orientados a objetos.
Es una introducción paulatina en la programación de forma muy amena y simple para niños/adolescentes. A medida que uno avanza adquiere items, algunos de las cuales mejoran el rendimiento del personaje y otras nos capacitan con sentencias de código como loop. if/else, for, etc. De esta manera el jugador avanza lento pero seguro en el conocimiento de la programación.
Habiendo superado los retos de CodeCombat, puedes ir introducirte en un lenguaje en particular. No voy a hacer un análisis o recomendación de que lenguajes debes aprender, sin embargo, es verdad que algunos lenguajes son mas fáciles que otros. En todo caso siempre encontrarás recursos online para ayudarte.
Además existen algunos portales recomendables, donde puedes aprender varios lenguajes:
CodeAcademy
Aquí podrás estudiar sobre programación y Diseño web con JavaScript, HTML y CSS, Jquery y PHP, además de Python y Ruby
CodeAcademy te guía paso a paso, de manera muy práctica y simple
CodeSchool
Al igual que CodeAcademy, CodeSchool te acompaña paso a paso, con la desventaja de no estar en español y valiendose mas de videos para explicar la teoría.
Los lenguajes disponibles son Ruby, JavaScript, HTML y CSS y iOS, además puedes aprender GIT (un sistema de control de versiones de código).
Aunque un poco machista, como ya hablamos en otro post, en CodeBabes, una striper te incentiva a que aprendas a programar, orientado completamente a la web. Puedes no sólo aprender HTML. CSS, JavaScript y PHP, si no también como optimizar tu web (SEO) y una intro a internet.
Ahora si!, si te has dedicado a explorar medianamente estas plataformas y avanzar hasta un punto intermedio/alto, los siguientes retos te ayudarán a optimizar tu capacidad de programación.
La primera, también ya lo comentamos en otro post, CodingGame,
te ayudará a adentrarnos en el desarrollo de algoritmos, algo que nos permitirá hacer de forma lúdica pero muy eficazmente. CodingGame, nos presenta una buena cantidad de retos a resolver, con distintos niveles de dificultad, en forma de juego, pero con la necesidad de aplicar una buena lógica. Esta plataforma exige mucho mas nuestro cerebro y requiere algunos conocimientos del lenguaje que vayamos a utilizar. Además nos permite elegir una buena cantidad de lenguajes para enfrentar los retos, un mode ‘debug’, y distintos casos de prueba para tu código. Esta plataforma, merece como mínimo, que le dediques unos minutos y te atrapará.
Alternamente al aprendizaje netamente lúdico, existe un proyecto, que nos puede ayudar a programar resolviendo retos mas interesantes aún. ProjectEuler te ayudará a exprimir todo tu potencial ingenio, tus habilidades matemáticas y tus capacidades de programación. Esta plataforma es mucho mas mezquina en su diseño, pero mucho mas desafiante. Además la cantidad de desafios es mucho mayor y de mayor variedad que en CodingGame, la cual te acercará mas a las necesidades reales a la hora de programar.
Pero nada mas real, que programar de verdad, no ya como juego o como desafío. Para esto también hay recursos útiles, como los siguientes 3 compiladores/IDEs online:
CodingGround
Esta es una Interfaz de Desarrollo online libre que nos permite compilar, y ejecutar nuestro código en una excelente e inigualable variedad de lenguajes.
CODEPAD,De manera mucho mas simple y con muchos menos lenguajes, CodePad es minimalistico y simple. IDEONE Un poco mas completo que CodePad y un poco menos que CodingGround.
Update 03/03/15:
CodeAnywhere
Otra excelente alternativa es CodeAnywhere, no solo un compilador online, si no una VM completa (2GB de disco, 256 de RAM) con Ubuntu o Centos, acceso http, ssh y ftp. Todo por el módico precio de $0. Mas info en este link
Finalmente, sin lugar a dudas para programar como un profesional, haz de colaborar en distintos proyectos. Puedes empezar solicitando unirte Code Pad (otro codepad no el compilador online), una red social para programadores, que paradójicamente esta en fase beta (mas de Code Pad en Hipertextual)
Y claro esta, una vez que haz recorrido todo este camino o parte de el, puede explorar GitHub, Google Code, Source Forge y Codeplex buscando proyectos o iniciar el tuyo propio…
Pero no te confundas, este tour nunca termina, por que aprender programación es un tema de toda la vida..
Nota: En este post incluí HTML y CSS como si fueran lenguajes de programación, aunque no lo son, suelen ser necesarios para tener una comprensión integral de programación web. Para mas sobre programación web, pueden utilizar los tutoriales de W3Schools
Otra plataforma muy interesante: http://codigofacilito.com/cursos