Embracing Singularity
BLOG
De laico a experto en aprendizaje profundo
2. Eligiendo Python
By Victor - 02/jul/2020 #Ciencia y Tecnología
Cuando decidí convertirme en programador de computadoras y experto en aprendizaje profundo, es natural que, como el apasionado por los idiomas extranjeros que siempre he sido, la primera pregunta que me hiciera fuera: "¿Qué lenguaje de programación debo aprender?"
Al buscar la respuesta en internet, descubrí que los lenguajes de programación pueden ser de nivel más alto o bajo en términos de abstracción de operaciones computacionales. Cuanto más bajo es el nivel de un lenguaje, mayor rendimiento suele tener desde el punto de vista de la máquina, pero más difícil es para los programadores humanos usarlo de manera creativa y eficiente. Para los estudiantes e investigadores de ciencias de la computación, puede tener sentido aprender lenguajes de nivel relativamente bajo como el C[1], ya que su lógica está un poco más cerca de cómo funcionan realmente las computadoras y porque sus ventajas de velocidad pueden ser decisivas para ciertos propósitos. Por el contrario, para alguien que busca cambiar de profesión o simplemente agregar una habilidad a su arsenal de productividad, aprender un lenguaje de muy alto nivel, como Ruby, Python o Visual Basic, puede ser una propuesta más viable y potente.
Mi deseo de aprender a programar se basaba en fines muy prácticos: quería resolver problemas reales. Quería ser capaz de desarrollar aplicaciones web y software dirigidos a la productividad y a la lingüística aplicada en Natural, organizar y automatizar rutinas personales, analizar datos en el tribunal de cuentas y gestionar mi granja de manera más efectiva. Claramente, necesitaba aprender un lenguaje de programación multipropósito de alto nivel.
Mi elección inicial fue Ruby. Supongo que surgió mucho en los resultados de búsqueda como el mejor idioma para aprender en 2018. Parecía encajar perfectamente como un lenguaje productivo de uso general y de un nivel muy alto, ideal para alguien que quiere dar un giro profesional, pero sin capacitación en ingeniería o informática. Compré un par de libros, incluido uno para niños, con la esperanza de que mi hija de 10 años se emocionara al aprenderlo conmigo (lo que nunca sucedió). Comencé a estudiar los primeros capítulos de dos libros diferentes, pero no me sentí inspirado. Probablemente tuvo más que ver con los libros que con el lenguaje en sí; de todos modos, creo que fue afortunado que mi entusiasmo no despegara en ese momento.
Mientras tanto, seguí leyendo sobre la revolución de la inteligencia artificial y cómo convertirme en un practicante. Me preocupaba ver a Ruby poco referenciada en este floreciente campo, mientras que Python se mencionaba una y otra vez. Ya había comenzado a invertir en Ruby, y parecía ser más genial, con su sintaxis flexible y libertad creativa, que Python, con su sangría rígida y una "forma correcta" de hacer las cosas. Sin embargo, al profundizar mi investigación y hablar con un amigo programador, llegué a la conclusión de que, si realmente quería aprender aprendizaje profundo, Python era la opción correcta. Elegí Python para mí y para Natural y no he mirado hacia atrás.
Estoy totalmente y cada vez más satisfecho con mi elección. Puede ser que parte de mi satisfacción resulte del sesgo de confirmación inherente a la participación grupal, pero tengo fuertes razones para recomendar Python a otras personas con objetivos similares.
Primero, como he aludido, Python es, de lejos, el lenguaje más popular en el mundo de aprendizaje automático, lo que significa que es inmejorable en términos de bibliotecas, frameworks, soporte y recursos de aprendizaje disponibles para ser productivo en este campo que está cambiando el mundo.
Segundo, Python es versátil. A menudo se compara con R, un lenguaje popular entre los estadísticos, para la ciencia de datos y para las aplicaciones de aprendizaje automático. Sin embargo, R no es una opción natural para el desarrollo de software, mientras que Python es igualmente adecuado para recopilar datos, analizarlos, entrenar modelos de aprendizaje automático y luego implementar los modelos en soluciones de software integradas y ponerlas en línea. Python hace que sea fácil escribir un código rápido en mi computadora portátil para mejorar la productividad y, a la vez, los científicos lo usaron recientemente para generar la primera imagen de un agujero negro.
En tercer lugar, Python es una excelente opción para el desarrollo del backend de aplicaciones web. Si bien permitió a dos pasantes (muy inteligentes) en Natural desarrollar e implementar la primera aplicación web del Instituto en poco más de un mes, también permite que el núcleo de YouTube, que se basa en más de un millón de líneas de código Python, alimente cinco mil millones de videos para los espectadores cada día, y el framework web central de Instagram (Django) también está construido en Python.
Cuarto, Python, aunque increíblemente poderoso, es fácil de aprender para principiantes como yo. Esa es una de las razones por las cuales, cada vez más, se incluye preferentemente en los planes de estudio de los cursos universitarios de informática y de cursos para no programadores. Esta facilidad de aprendizaje se deriva indudablemente del hecho de que su precursor, el lenguaje de programación ABC que inspiró a Python, fue diseñado explícitamente para la enseñanza.
La quinta y última razón por la que amo Python ha sido una gran y agradable sorpresa para mí. No tiene nada que ver con la razón original por la que elegí Python, pero puede tener un fuerte impacto en el mantenimiento de esa opción para Python a largo plazo. El lenguaje tiene una comunidad fuerte, acogedora y solidaria que encarna el espíritu del movimiento de código abierto. Los recién llegados son aceptados con los brazos abiertos y todos parecen dispuestos a ayudar. Hay innumerables programadores que ofrecen voluntariamente sus esfuerzos para desarrollar una gama extremadamente amplia de bibliotecas útiles, sin mencionar a los desarrolladores principales que mantienen CPython[2].
Sabía muy poco sobre la comunidad de código abierto antes de comenzar a aprender a codificar en 2018. Cada vez estoy más impresionado con lo que representa. Aunque mi experiencia con esta comunidad ha sido en Python, el movimiento es mucho más amplio e incluye muchos lenguajes y tecnologías relacionados. Mi impresión es que el movimiento de código abierto no solo está contribuyendo decisivamente a los tremendos avances que ahora están sucediendo en la tecnología de la información, sino que es una de las fuerzas más positivas para el progreso humano en el mundo, punto. Eso suena a un gran tema para una publicación futura ...
[1] El concepto de un lenguaje de programación de alto o bajo nivel es relativo. C originalmente se consideraba un lenguaje de alto nivel, ya que abstraía algunas rutinas y hacía que la codificación fuera más accesible para los humanos que los lenguajes ensambladores. Sin embargo, hoy se contrasta con lenguajes como Ruby, Python o Java y se considera de "bajo nivel".
[2] Dado que Python es un lenguaje de código abierto, puede y tiene muchas ramas o implementaciones. La implementación principal de referencia es CPython, que para la mayoría de los propósitos es sinónimo de Python.
Esta publicación es la segundo de la serie De lego a experto en aprendizaje profundo.