Si estás interesado en aprender a programar la primera pregunta que te surgirá será ¿por qué lenguaje empiezo?. A la hora de elegir tu primer lenguaje tienes que tener en cuenta varios factores. En éste post vamos a ver cada punto por separado para que puedas tomar la mejor decisión posible.
¿Qué debe tener un lenguaje de programación para principiantes?
Utilidad
Quizás lo más importante es elegir un lenguaje de programación que sea útil hoy en día. Esto implica que pueda abrirte nuevas puertas laborales y que sirva para convertirte en un profesional más eficaz sea cual sea el ámbito en el que trabajes, no sólo los programadores pueden aumentar su productividad mediante la programación.
Para orientarnos, podemos echar un vistazo a la lista de los lenguajes más utilizados. Uno de los principales referentes de la industria es la encuesta anual que realiza Stack Overflow. Preguntan sobre los lenguajes más utilizados, y también sobre los que más gustan, los más odiados, y aquellos que los desarrolladores tienen más interés por utilizar a futuro.
Atendiendo a todos éstos factores, quizás las mejores alternativas para principiantes sean JavaScript y Python.
JavaScript
JavaScript lleva años siendo el lenguaje de programación más utilizado, mientras que TypeScript (una variante de JavaScript) es una de las tecnologías que más gustan a los desarrolladores.
Python
Python ha estado siempre en las primeras posiciones en cuanto a uso, y actualmente encabeza la lista de las tecnologías que suscitan más interés entre los desarrolladores. Ésto quiere decir que a la hora de iniciar nuevos desarrollos, muchos de ellos se realizarán en Python, y estarán en marcha durante varias décadas.
Ambos lenguajes son requisitos muy frecuentes en muchas ofertas de trabajo, y tienen muchas salidas en la actualidad.
Ámbitos de uso
No todos los lenguajes de programación se utilizan para lo mismo. Algunos son de propósito general, lo que quiere decir que valen para todo, pero quizás hay alternativas mejores para tareas específicas. Otros, destacan en tareas o sectores concretos, pero no tiene mucho sentido utilizarlos fuera de esos contextos.
JavaScript es el lenguaje de la web. La mayoría de la lógica de los sitios web que visitas, sus animaciones e incluso muchos de los componentes de los servidores que hay por detrás están implementados en JavaScript. Dado que buena parte del empleo tecnológico está relacionado con el desarrollo web, es una apuesta segura para conseguir trabajo como desarrollador.
Sin embargo no tiene demasiadas aplicaciones fuera del desarrollo web, ya que es un lenguaje de dominio específico (sólo tiene sentido usarlo para la programación web, aunque por poder puedes hacer lo que quieras con él).
Python en cambio es un lenguaje de propósito general. Nació como un lenguaje de scripting, es decir, para automatizar toda clase de tareas. Por ello ha ganado tracción en muchísimos campos: administración de sistemas, infraestructuras de telecomunicaciones, ciencia de datos y muchos más. Incluso se pueden desarrollar aplicaciones web utilizando el framework django. Por tanto es la mejor opción si no tienes pensado convertirte en programador full time, ya que puede serte útil en el trabajo que tienes e incluso en tu vida personal.
Por supuesto, el lenguaje que aprenderás debe ser el adecuado para el propósito que te hayas planteado. Por ejemplo, para gestionar bases de datos la primera tecnología que debes dominar es SQL. En nuestro blog podrás aprender SQL desde cero.
Facilidad de uso
Otro factor muy importante a tener en cuenta es la cantidad de facilidades que te ofrece el lenguaje para programar.
Algunos lenguajes dan más control al programador sobre aspectos como el manejo de memoria, y permiten interactuar con la máquina de forma más directa. Se suele describir a éstos lenguajes mediante la frase inglesa “Close to the metal”, ya que te proporcionan un acceso de bajo nivel al sistema. El más popular de éste tipo es C.
Otros en cambio abstraen todas estas historias para que no tengas que preocuparte por ellas, se denominan lenguajes de alto nivel. Suelen ser más laxos en lo que a sintaxis se refiere y te dan más margen para cometer “errores” por lo que su curva de aprendizaje es mucho más suave. Como punto negativo, te ofrecen menos control y el rendimiento suele ser muy inferior ya que toman muchas decisiones por ti para hacerte la vida más fácil.
Generalmente suele ser más amigable para los principiantes utilizar un lenguaje interpretado que uno compilado, ya que es más sencillo trastear con el código.
Tanto Python como JavaScript son lenguajes fáciles de utilizar y muy recomendables para principiantes.
Riqueza conceptual
Al decidir si aprendemos un lenguaje tenemos que considerar también qué conceptos nos va a enseñar. Por poner un ejemplo, si trabajamos con un lenguaje orientado a objetos, nos será mucho más fácil aprender otros lenguajes orientados a objetos.
Entrar en contacto con lenguajes que sean conceptualmente diferentes puede enriquecerte mucho como programador.
Éste apartado quizás no aplica para tu primer lenguaje, pero sí es interesante que lo tengas en cuenta para las siguientes herramientas que vayas cogiendo si quieres ser un buen programador.
Algunos lenguajes no tienen demasiada utilidad hoy en día pero aún así forman parte del programa en muchas universidades y másteres ya que te enseñan algo importante sobre la programación o el funcionamiento de los ordenadores. El mejor ejemplo son los lenguajes de tipo ensamblador.
Es el nivel de programación más bajo, y realizar cualquier tarea en ensamblador puede ser extremadamente tedioso. Comparado con éstos lenguajes (hay un ensamblador para cada arquitectura de procesador), C se considera de alto nivel. Casi nadie programa en ensamblador hoy en día, es una herramienta que está obsoleta, pero sí que puede enseñarte mucho sobre cómo funcionan los ordenadores, por lo que te ayudará a escribir mejor código en otros lenguajes.
Otra herramienta muy interesante para aprender es BASH, la terminal por defecto en la mayoría de distribuciones de Linux y Mac (también está disponible para Windows). Al hacer scripts para la terminal entrarás en contacto con programas como sed, awk, cut, wc y compañía.
Éstas utilidades siguen de cerca la filosofía UNIX. Algunos de sus “postulados” son los siguientes:
- Haz solo una cosa y hazla bien (minimalismo): las utilidades clásicas de la terminal realizan una sola función. ls lista los archivos que hay en el directorio y nada más. wc cuenta las líneas o caracteres que contiene un archivo. La idea es combinar utilidades sencillas para realizar tareas complejas.
- Todo es texto: en BASH, la mayoría de los programas reciben su entrada en formato texto, y su salida es texto también.
- Todo es un archivo: en los sistemas operativos derivados de UNIX todos los dispositivos del ordenador están representados por medio de archivos especiales.
Además, éste principio se combina con el anterior, éstos archivos son generalmente archivos de texto plano.
Si combinas estas 3 ideas tienes un ecosistema de utilidades sencillas especializadas en tratar con texto, y un sistema operativo en el que la mayoría de la configuración se realiza mediante ficheros de texto. Así, éstas ideas encajan muy bien entre ellas.
Esta filosofía originada en los 70 es la base de la programación moderna, y aunque ha llovido mucho desde entonces muchas de sus ideas siguen siendo muy necesarias.
En resumen
JavaScript y Python son los lenguajes más recomendables para empezar a programar. Si tienes interés por trabajar como programador, el desarrollo web es la mayor fuente de empleo, de modo que JavaScript sería la mejor opción. En OXYGEN nos hemos dado cuenta de esa demanda del mercado laboral y hemos creado un Bootcamp Full Stack basado en React JavaScript para conseguir todos los conocimientos relacionados con este lenguaje y también tu primer trabajo en menos de 5 meses. Por otro lado, para aquellos que ya tengan una base de programación y solo necesiten una aplicación real de sus conocimientos y encontrar trabajo tenemos el Training Full Stack.
Si quieres aplicar la programación en otros trabajos, o ser desarrollador pero trabajar fuera de la web, entonces Python tendría más sentido para familiarizarte con los conceptos básicos.
De todas formas, ambos lenguajes son muy parecidos, por lo que aprender uno después del otro te será fácil.