¿Por qué este apartado?

¿Qué lenguaje debo usar para aprender a programar? Si tuviera que ordenar las consultas que recibo y colocara en primer lugar las más frecuentes, claramente ésta sería la ganadora. El problema es que es una pregunta tan frecuente como difícil de responder, porque habría que considerar muchos factores para dar una respuesta acertada...

Vamos con mi opinión...

Hagamos las consideraciones iniciales de rigor:

  • ¿Te obligan a utilizar un cierto lenguaje? Si tu jefe, tu universidad o centro de estudios, o tus circunstancias de cualquier tipo te obligan a emplear un determinado lenguaje, la elección está clara: no hay elección ;-)
  • ¿Te resulta imposible conseguir ciertas herramientas? En ese caso, también se reduce la lista. De nada sirve que yo diga que XXXX (pon aquí cualquier nombre ;-) ) es una maravillosa herramienta si tú no te puedes permitir comprarla y no existe ninguna versión gratuita, o si empleas un sistema operativo para el que no exista una versión de esa herramienta.
  • ¿Qué quieres hacer? El uso también influye (y mucho) en la elección de la herramienta. Por ejemplo, querer crear un videojuego empleando Cobol está a medio camino entre la locura y el masoquismo. Del mismo modo, crear una aplicación de gestión en ensamblador puede ser un trabajo demasiado duro comparado con lo que se tardaría usando lenguajes como C#, Java, Pascal, C++ o Visual Basic.
  • ¿Quieres aprender? En ese caso (el más frecuente de la gente que me hace esta consulta), me limitaré a hacer un par de recomendaciones previas y a comentar algo sobre los lenguajes más habituales.
Y algunas recomendaciones previas (sólo mi opinión personal, claro):
  • Si no has programado nunca, comienza por un entorno en modo texto, no por uno visual. Muchas veces, los entornos "vistosos" hacen que la gente que empieza se dedique más a buscar resultados espectaculares que a entender qué hay por dentro, y los resultados son programas bonitos pero que fallan por todos lados. Empezar por un entorno más sobrio puede ayudar a centrar la atención inicialmente en lo importante; después será fácil "adornarlo".
  • Comienza por un lenguaje estructurado, como Pascal, Modula-2 o (si eres atrevido) C, o quizá por uno orientado a objeto como C#, Java o C++, pero, en ese caso, busca un curso que comience "por lo básico": variables, condiciones, bucles, funciones... pero no objetos. Personalmente, me parece "peligroso" empezar a programar usando lenguaje ensamblador o la mayoría de las versiones de lenguaje BASIC.
Adecuación de cada lenguaje:
  • Si quieres apenas jugar un poco, y hacer cosas con una sola orden, puedes experimentar un poco con alguna versión moderna de BASIC, que permiten teclear y probar desde un mismo entorno, como Basic256 o SmallBasic.
  • Si no tienes soltura con el inglés y sólo quieres coger un poco de base, puedes probar con el pseudocódigo.
  • Si quieres coger buenos fundamentos, lenguajes como C#, Python o Pascal parecen buenas elecciones: son estructurados, permiten hacer de todo (o casi) y además existen entornos gratuitos, por lo que cualquier aprendiz podría utilizarlos desde casa sin gastar dinero. De
  • Java también puede ser una buena elección, aunque obliga a veces a dar "demasiados rodeos" para hacer cosas sencillas, así que quizá sea un poco menos recomendable para un novato absoluto que C# o Python.
  • En cuanto a C y C++: C es un lenguaje muy potente, pero antiguo, por lo que algunas tareas muy frecuentes (como el manejo de cadenas de texto) son engorrosas y propensas a errores. C++ permite evitar muchos de esos problemas de C (aunque también permite pelearse con ellos) pero es un lenguaje extenso y con mucha "letra pequeña", relativamente difícil de dominar. Eso sí, tendrás que acabar teniendo soltura con estos dos lenguajes (aunque sea a largo plazo) si pretendes ganarte la vida gracias a la programación de ordenadores.
  • (También puedes mirar en la página dedicada a cada lenguaje concreto, para ver una breve descripción de sus características).