¿Te apetece aprender a programar? Pues enhorabuena: ¡estás en el lugar idóneo para ello! Y no vas a aprender a programar sólo con un lenguaje sino que lo harás con dos lenguajes: Python y Java. Y lo mejor de todo: completamente gratis.
¿Por qué dos lenguajes?
Podríamos responder a esto de forma simplista con un: porque dos son mejor que uno. Pero no, tenemos una razón para ello. Java es un lenguaje estáticamente tipado y con una sintaxis y estructura muy similar a la del lenguaje C (podríamos decir: un lenguaje de más bajo nivel que Java) con un nivel de legibilidad para quien se enfrenta a él por primera vez significativamente más reducido que el de otros lenguajes como Python; por otro lado, Python es un lenguaje dinámicamente tipado y con una sintaxis tremendamente diferente a la de Java y a la de otros lenguajes basados en C. Hay quien dice que separar lenguajes de programación en únicamente dos categorías: alto y bajo nivel es simplificarlo demasiado y proponen otra categoría, por encima del alto nivel, para lenguajes como Python o Ruby, que en su filosofía está el simplificar al máximo su sintaxis y hacer que la legibilidad del código sea lo más importante sin que por ello merme en exceso su rendimiento.
Es conocido por todos que un programador pasa más tiempo leyendo código que escribiendo código, por tanto, hacerlo con un lenguaje cuya filosofía se base en un principio de claridad y legibilidad del código facilita enormente esta tarea. Además, Python tiene una serie de convenciones, como la PEP8 entre otras, en las que se habla de la Pythonic way: la forma pythónica en la que se ha de escribir el código, o lo que es lo mismo: aunque un algoritmo para la resolución de un problema pueda escribirse de mútiples formas hay que preferir siempre la que mayor legibilidad ofrezca a quien vaya leer ese código (sea otra persona o tú semanas o meses más tarde de haberlo escrito).
¿Por qué entonces no aprender únicamente con Python?
Porque siempre viene bien ampliar conocimientos sería una razón de peso más que suficiente, pero conforme vaya avanzando el curso podrás ir viendo que Python facilita enormemente algunas tareas que deberías conocer cómo hacerlas manualmente por el hecho de tener más conocimientos, pero también porque si aprendes cómo hacer algo de una forma, digamos, más laboriosa, cuando sepas cómo se hace en Python, y que probablemente sea con menos líneas de código y de forma mucho más sencilla, entonces podrás apreciar mejor qué es lo que ofrece este lenguaje de programación, por qué hay tanta gente enamorada de él y por qué da tantas satisfacciones escribir y leer código escrito en Python.
Tipado estático vs. tipado dinámico
En el segundo punto se ha mencionado el tipado estático y el tipado dinámico, pero sin aclarar qué significan estos conceptos.
El tipado en un lenguaje de programación hace referencia a los tipos de datos que en ese lenguaje se pueden almacenar; tendremos un artículo dedicado exclusivamente a esto próximamente, pero para poner en contexto: en todos los lenguajes se pueden almacenar caracteres, líneas o párrafos de texto, números enteros, números con decimales, etc. Esos datos se pueden guardar en variables (también veremos esto en profundidad más adelante) temporales, que no son más que una fracción de la memoria ram de la que dispone el equipo, y que durante la ejecución del programa que estemos creando, la llamada a esa variable equivaldrá al dato que le hayamos asignado y con el tipo de dato que hayamos asignado.
Ahora que sabemos a qué nos referimos con el tipado, o con el tipo de datos, es hora de que veamos las diferencias entre el tipado estático y dinámico. El tipado estático es un tipado que tienen algunos lenguajes (como Java, C y C++ entre otros) en los que al momento de definir una variable tienes que especificar de qué tipo es y este tipo de dato no cambiará nunca (podrá asignarse un valor diferente, siempre y cuando sea del mismo tipo); estos lenguajes además requieren una compilación (convertir el código que hemos escrito en código binario que es el que en realidad entiende la máquina donde se vaya a ejecutar), estos errores de tipado se detectan durante la compilación por lo que al ejecutarlos ya están libres de errores y se ejecutan más rápido. El tipado dinámico es más fácil para programar pero es más propenso a que aparezcan errores por descuidos (aunque estos errores los solventan en su mayoría todos los IDE y también la mayoría de editores de código actuales), con este tipado tú no tienes que indicar de qué tipo es una variable sino que según qué se le haya asignado es el propio lenguaje de programación quien define el tipo por nosotros dependiendo de qué contenga en cada momento, es decir: con este tipado una misma variable con el mismo nombre en un momento podría tener asignado un entero, en otro texto y en otro diferente un número decimal; no es una buena práctica (mejor que cada variable se ocupe de una única cosa, con un nombre que permita saber exactamente para qué se utilizará), pero como poder, se puede.
Qué podemos esperar encontrar en este curso
La idea es que en cada artículo se explique un concepto diferente, que cuando se termine de leer se haya podido comprender en su totalidad, pero quizá no siempre pueda ser así y será dividido en varios artículos para que no se tarde una eternidad en leerlo. Si el artículo es breve probablemente en el mismo artículo se pueda encontrar la explicación relativa tanto a Python como a Java; si es un tema extenso o que requiere una explicación más en profundidad la parte referente a Python y a Java estarán separadas en diferentes artículos.
Algo que diferenciará este curso de los muchísimos que podrás encontrar por internet es que haremos especial hincapié en las buenas prácticas, entre ellas la obligación de escribir código limpio y el uso de baterías de tests que nos permitirán saber si lo que estamos codificando funciona de la forma en que se espera o no. También, cuando se alcance un nivel con el que sepamos el mínimo necesario como para hacer ejercicios relacionados con el tema aprendido, se podrán encontrar propuestas de ejercicios y una de las (quizá muchas) formas de resolverlos. Esto tiene que quedar claro: en programación no existe una única forma de resolver un problema, nuestras soluciones a esos ejercicios propuestos no son la verdad absoluta; si hay otras formas de resolver estos ejercicios, que respeten los principios básicos del código limpio y que el código escrito esté lo más optimizado posible según los conocimientos alcanzados hasta el momento será perfectamente válida aunque difiera en algún punto a la solución propuesta.
Y si nos seguís habitualmente (si no, ¿a qué esperáis?) ya sabéis cuál es nuestra despedida: ¡nunca dejéis de programar! ¡Permaneced atentos a próximos artículos!