Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Lectura 2 (PIT : Python Basico)

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.

Lectura 2 (PIT : Python Basico)

Avatar for Abraham Zamudio

Abraham Zamudio

May 17, 2026

More Decks by Abraham Zamudio

Other Decks in Education

Transcript

  1. La importancia de los lenguajes de programaci´ on en la

    sociedad moderna: el papel protag´ onico de Python Abraham Zamudio https://www.linkedin.com/in/abraham-zamudio/
  2. ´ Indice general 1. Introducci´ on 5 Introducci´ on .

    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.1. La programaci´ on como lenguaje del mundo digital . . . . . . . . . . . . . . . 5 1.2. C´ omo el software transform´ o la vida cotidiana . . . . . . . . . . . . . . . . . 5 1.3. De la inform´ atica especializada a la programaci´ on para todos . . . . . . . . . 5 2. ¿Qu´ e es un lenguaje de programaci´ on? 7 2.1. Concepto y prop´ osito . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.2. Diferencias entre lenguaje humano y lenguaje computacional . . . . . . . . . 9 2.3. Evoluci´ on hist´ orica de los lenguajes de programaci´ on . . . . . . . . . . . . . 12 3. La presencia invisible del software en la vida diaria 17 3.1. Aplicaciones m´ oviles y redes sociales . . . . . . . . . . . . . . . . . . . . . . 17 3.2. Comercio electr´ onico y banca digital . . . . . . . . . . . . . . . . . . . . . . 19 3.3. Plataformas educativas y entretenimiento . . . . . . . . . . . . . . . . . . . . 21 3.4. Transporte, navegaci´ on y ciudades inteligentes . . . . . . . . . . . . . . . . . 23 3.5. Automatizaci´ on en hogares y empresas . . . . . . . . . . . . . . . . . . . . . 25 4. Los lenguajes de programaci´ on como motor de innovaci´ on 29 4.1. Transformaci´ on digital de las empresas . . . . . . . . . . . . . . . . . . . . . 29 4.2. Inteligencia artificial y an´ alisis de datos . . . . . . . . . . . . . . . . . . . . . 32 4.3. Ciencia, medicina y tecnolog´ ıa . . . . . . . . . . . . . . . . . . . . . . . . . . 34 4.4. Videojuegos, cine y contenido multimedia . . . . . . . . . . . . . . . . . . . . 37 4.5. Impacto en la econom´ ıa global . . . . . . . . . . . . . . . . . . . . . . . . . . 39 5. ¿Qu´ e es Python y por qu´ e se volvi´ o tan popular? 43 5.1. Origen e historia de Python . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 5.2. Filosof´ ıa de simplicidad y legibilidad . . . . . . . . . . . . . . . . . . . . . . 45 5.3. La importancia de la comunidad global . . . . . . . . . . . . . . . . . . . . . 47 5.4. Python como lenguaje accesible para principiantes . . . . . . . . . . . . . . . 49 6. Python en la educaci´ on 53 6.1. Ense˜ nanza de programaci´ on en escuelas y universidades . . . . . . . . . . . . 53 6.2. Python como herramienta para aprender l´ ogica y pensamiento computacional 55 6.3. Recursos educativos y comunidades de aprendizaje . . . . . . . . . . . . . . 58 3
  3. Sesion 2 6.4. Democratizaci´ on del conocimiento tecnol´ ogico .

    . . . . . . . . . . . . . . . . 60 7. Python en la ciencia y la investigaci´ on 63 7.1. An´ alisis de datos y visualizaci´ on . . . . . . . . . . . . . . . . . . . . . . . . . 63 7.2. Simulaci´ on cient´ ıfica y modelamiento matem´ atico . . . . . . . . . . . . . . . 65 7.3. Aplicaciones en f´ ısica, biolog´ ıa y econom´ ıa . . . . . . . . . . . . . . . . . . . 68 7.4. Python en universidades y centros de investigaci´ on . . . . . . . . . . . . . . 71 8. Python y la inteligencia artificial 75 8.1. Aprendizaje autom´ atico y redes neuronales . . . . . . . . . . . . . . . . . . . 75 8.2. Automatizaci´ on inteligente . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 8.3. Procesamiento de lenguaje natural . . . . . . . . . . . . . . . . . . . . . . . 81 8.4. Visi´ on por computadora . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 8.5. El papel de Python en la revoluci´ on de la IA . . . . . . . . . . . . . . . . . . 87 9. Python en el mundo empresarial 91 9.1. Automatizaci´ on de tareas repetitivas . . . . . . . . . . . . . . . . . . . . . . 91 9.2. Desarrollo web y servicios digitales . . . . . . . . . . . . . . . . . . . . . . . 94 9.3. Finanzas, marketing y an´ alisis predictivo . . . . . . . . . . . . . . . . . . . . 97 9.4. Startups y transformaci´ on digital . . . . . . . . . . . . . . . . . . . . . . . . 100 9.5. Empresas tecnol´ ogicas que utilizan Python . . . . . . . . . . . . . . . . . . . 103 10.Python y el desarrollo de habilidades laborales 107 10.1. Nuevas profesiones digitales . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 10.2. Programaci´ on como competencia transversal . . . . . . . . . . . . . . . . . . 111 10.3. Empleabilidad y demanda de programadores Python . . . . . . . . . . . . . 113 10.4. Trabajo remoto y econom´ ıa digital . . . . . . . . . . . . . . . . . . . . . . . 116 11.Los desaf´ ıos de la sociedad programada 119 11.1. Dependencia tecnol´ ogica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 11.2. Seguridad inform´ atica y privacidad . . . . . . . . . . . . . . . . . . . . . . . 122 11.3. Brecha digital y acceso al conocimiento . . . . . . . . . . . . . . . . . . . . . 125 11.4. ´ Etica en el desarrollo de software . . . . . . . . . . . . . . . . . . . . . . . . 129 12.El futuro de Python y la programaci´ on 133 12.1. Automatizaci´ on e inteligencia artificial avanzada . . . . . . . . . . . . . . . . 133 12.2. Programaci´ on para no especialistas . . . . . . . . . . . . . . . . . . . . . . . 135 12.3. Integraci´ on con rob´ otica e Internet de las Cosas . . . . . . . . . . . . . . . . 137 12.4. Python en la educaci´ on del futuro . . . . . . . . . . . . . . . . . . . . . . . . 139 12.5. Tendencias emergentes en el desarrollo de software . . . . . . . . . . . . . . . 140 Conclusiones 143 Abraham Zamudio 4 PIT: Python Basico
  4. Cap´ ıtulo 1 Introducci´ on 1.1. La programaci´ on como

    lenguaje del mundo digital En la era de la informaci´ on, los lenguajes de programaci´ on se han consolidado como el principal medio de comunicaci´ on con las m´ aquinas y, por extensi´ on, como el lenguaje que da forma al mundo digital. Desde los sistemas operativos que gestionan nuestros dispositivos hasta los algoritmos que recomiendan contenido en redes sociales, la programaci´ on es la base sobre la cual se construye la interacci´ on humano-m´ aquina. Lejos de ser una herramienta exclusiva de especialistas, su comprensi´ on se ha vuelto una competencia clave para entender y participar activamente en la sociedad contempor´ anea. 1.2. C´ omo el software transform´ o la vida cotidiana Apenas unas d´ ecadas atr´ as, el software estaba relegado a laboratorios y grandes ordenadores. Hoy, cada aspecto de la rutina diaria est´ a mediado por programas: despertar con la alarma del tel´ efono, consultar el clima, realizar transacciones bancarias, pedir un veh´ ıculo de transporte, o incluso controlar la temperatura del hogar. Esta ubicuidad ha modificado nuestras formas de trabajar, relacionarnos y consumir. El software no solo automatiza tareas, sino que redefine la productividad, el ocio y la ciudadan´ ıa, haciendo necesario un conocimiento b´ asico de sus principios para desenvolverse con autonom´ ıa. 1.3. De la inform´ atica especializada a la programaci´ on para todos Hist´ oricamente, programar requer´ ıa conocimientos profundos de hardware y lenguajes cr´ ıpticos. Sin embargo, el surgimiento de lenguajes de alto nivel —y especialmente de Python— ha democratizado la creaci´ on de software. Con una sintaxis clara y una filosof´ ıa que prioriza la legibilidad, Python ha abierto las puertas a estudiantes, cient´ ıficos, periodistas, dise˜ nadores y emprendedores. Esta transici´ on de la inform´ atica especializada a la programaci´ on para todos 5
  5. Sesion 2 es uno de los fen´ omenos m´ as

    importantes del siglo XXI, y Python se erige como su m´ aximo exponente. Abraham Zamudio 6 PIT: Python Basico
  6. Cap´ ıtulo 2 ¿Qu´ e es un lenguaje de programaci´

    on? 2.1. Concepto y prop´ osito Un lenguaje de programaci´ on es un sistema formal de notaci´ on dise˜ nado para comunicar instrucciones a una m´ aquina, espec´ ıficamente a un computador. A diferencia de los lenguajes naturales, que evolucionan de manera org´ anica y presentan ambig¨ uedades, los lenguajes de programaci´ on se construyen a partir de reglas sint´ acticas y sem´ anticas rigurosas que permiten describir algoritmos de forma precisa. Su prop´ osito fundamental es servir como interfaz entre el pensamiento humano y el hardware, posibilitando que las personas especifiquen procesos computacionales que la m´ aquina pueda ejecutar de manera autom´ atica y eficiente. Para comprender la esencia de un lenguaje de programaci´ on, es necesario analizar sus tres dimensiones constitutivas: la sintaxis, la sem´ antica y la pragm´ atica. La sintaxis define las reglas de formaci´ on de los programas, es decir, las combinaciones v´ alidas de s´ ımbolos. Por ejemplo, en el lenguaje C, la instrucci´ on ‘int x = 5;‘ sigue una sintaxis espec´ ıfica: tipo de dato, identificador, operador de asignaci´ on, valor y terminador de sentencia. La sem´ antica determina el significado de las construcciones sint´ acticas: qu´ e ocurre cuando se ejecuta esa instrucci´ on (se reserva espacio en memoria para un entero y se almacena el valor 5). La pragm´ atica abarca aspectos de usabilidad, implementaci´ on y aplicaciones t´ ıpicas, como la disponibilidad de bibliotecas, herramientas de depuraci´ on y paradigmas de programaci´ on. Los lenguajes de programaci´ on se clasifican seg´ un m´ ultiples criterios. Por nivel de abstracci´ on, distinguimos lenguajes de bajo nivel (ensamblador) que se corresponden casi directamente con el conjunto de instrucciones del procesador, y lenguajes de alto nivel (Python, Java, C++) que ocultan detalles del hardware y ofrecen construcciones m´ as cercanas al razonamiento humano. Por paradigma, encontramos lenguajes imperativos (C, Fortran), orientados a objetos (Java, C++), funcionales (Haskell, Lisp), l´ ogicos (Prolog), y multiparadigma (Python, Scala). Cada paradigma propone una forma particular de concebir la soluci´ on de problemas: la programaci´ on imperativa describe pasos secuenciales que modifican el estado; la funcional evita el estado mutable y se basa en la aplicaci´ on de funciones; la l´ ogica expresa relaciones y hechos, delegando la inferencia al sistema. El prop´ osito de un lenguaje de programaci´ on trasciende la mera ejecuci´ on de instrucciones. 7
  7. Sesion 2 Sirve como herramienta de pensamiento, influyendo en la

    manera en que los desarrolladores estructuran problemas y dise˜ nan soluciones. Edsger Dijkstra, reconocido cient´ ıfico de la computaci´ on, afirmaba que los lenguajes que utilizamos moldean nuestros h´ abitos mentales y nuestra capacidad para razonar sobre algoritmos. Un buen lenguaje debe ofrecer expresividad (capacidad de expresar conceptos complejos de forma clara y concisa), abstracci´ on (ocultar detalles irrelevantes), seguridad (prevenir errores comunes como desbordamientos de b´ ufer o accesos a memoria no inicializada), y eficiencia (traducirse en c´ odigo m´ aquina que aproveche los recursos del hardware). Adem´ as, los lenguajes de programaci´ on son veh´ ıculos de conocimiento encapsulado. Las bibliotecas y frameworks construidos sobre un lenguaje representan soluciones probadas a problemas recurrentes. Por ejemplo, el ecosistema de Python incluye NumPy para computaci´ on num´ erica, Django para aplicaciones web y TensorFlow para aprendizaje autom´ atico. Cada lenguaje atrae a una comunidad con valores y pr´ acticas espec´ ıficas, lo que genera una cultura de desarrollo que va m´ as all´ a de la sintaxis. La elecci´ on de un lenguaje para un proyecto no es solo una decisi´ on t´ ecnica; implica considerar la disponibilidad de bibliotecas, el soporte comunitario, las herramientas de depuraci´ on, el rendimiento esperado y las habilidades del equipo. Hist´ oricamente, el prop´ osito de los lenguajes de programaci´ on ha evolucionado. En sus inicios, se buscaba fundamentalmente controlar el hardware de manera directa (como en el ensamblador). Luego, con Fortran y COBOL, el objetivo fue facilitar el c´ alculo cient´ ıfico y el procesamiento de datos empresariales. M´ as adelante, lenguajes como C permitieron combinar eficiencia y abstracci´ on para construir sistemas operativos. En las ´ ultimas d´ ecadas, ha predominado la b´ usqueda de productividad, seguridad y concurrencia. Lenguajes como Rust y Go enfatizan la gesti´ on de memoria sin recolector de basura y la concurrencia segura. Python, por su parte, prioriza la legibilidad y la rapidez de desarrollo, a costa de cierta ineficiencia en tiempo de ejecuci´ on. El prop´ osito tambi´ en incluye aspectos educativos. Un lenguaje de programaci´ on bien dise˜ nado puede ense˜ nar conceptos fundamentales de computaci´ on sin abrumar al estudiante con detalles complejos. Python es un ejemplo paradigm´ atico: su sintaxis limpia y su naturaleza interpretada permiten a los principiantes centrarse en la l´ ogica y los algoritmos, postergando cuestiones como gesti´ on de memoria o compilaci´ on separada. En contraste, un lenguaje como C++ expone m´ as detalles de bajo nivel que, si bien son valiosos para entender c´ omo funciona una computadora, pueden resultar abrumadores en una primera aproximaci´ on. En resumen, un lenguaje de programaci´ on es una herramienta dual: por un lado, es un medio para expresar algoritmos con precisi´ on matem´ atica; por otro, es un artefacto sociot´ ecnico que incorpora convenciones, filosof´ ıas de dise˜ no y comunidades de pr´ actica. Su prop´ osito ´ ultimo es permitir que los seres humanos controlen y automaticen procesos inform´ aticos de manera confiable, eficiente y, cada vez m´ as, segura y ´ etica. Sin lenguajes de programaci´ on, no existir´ ıa el software que impulsa la civilizaci´ on digital: desde sistemas operativos y navegadores hasta aplicaciones de inteligencia artificial y redes sociales. Por tanto, comprender qu´ e son y c´ omo funcionan es un paso indispensable para cualquier persona que desee participar activamente en la construcci´ on de la sociedad moderna. Abraham Zamudio 8 PIT: Python Basico
  8. Sesion 2 2.2. Diferencias entre lenguaje humano y lenguaje compu-

    tacional Los lenguajes humanos (tambi´ en llamados lenguajes naturales, como el espa˜ nol, ingl´ es o mandar´ ın) y los lenguajes de programaci´ on comparten la caracter´ ıstica de ser sistemas simb´ olicos con reglas combinatorias. Sin embargo, sus diferencias son profundas y revelan la naturaleza de la comunicaci´ on humana frente a la instrucci´ on mec´ anica. A continuaci´ on, se analizan las distinciones fundamentales en t´ erminos de ambig¨ uedad, contexto, evoluci´ on, estructura, prop´ osito y procesamiento. Ambig¨ uedad vs. Precisi´ on La ambig¨ uedad es inherente a los lenguajes naturales. Una misma frase puede interpretarse de m´ ultiples maneras dependiendo del contexto, el tono, la intenci´ on del hablante o el conocimiento compartido. Por ejemplo, la oraci´ on “Vi al hombre con el telescopio” puede significar que el hablante utiliz´ o un telescopio para ver al hombre, o que el hombre que vio llevaba un telescopio. En los lenguajes de programaci´ on, la ambig¨ uedad es inaceptable; cada construcci´ on sint´ actica tiene exactamente un significado definido por la sem´ antica del lenguaje. Un compilador o int´ erprete debe poder traducir el c´ odigo a instrucciones m´ aquina sin lugar a dudas. Para lograr esto, los lenguajes de programaci´ on emplean gram´ aticas formales (como las gram´ aticas libres de contexto) que eliminan la ambig¨ uedad mediante reglas expl´ ıcitas de precedencia y asociatividad. Contexto y dependencia situacional El lenguaje humano depende fuertemente del contexto extraling¨ u´ ıstico: el conocimiento del mundo, las emociones, las relaciones sociales y la situaci´ on f´ ısica. La frase “Hace fr´ ıo aqu´ ı” no solo informa sobre la temperatura, sino que puede ser una petici´ on para cerrar una ventana, una queja, o un simple comentario. En programaci´ on, el contexto est´ a estrictamente definido por el estado del programa (variables, memoria, pila de llamadas) y el entorno de ejecuci´ on. No existe “sobreentendido” cultural o pragm´ atico. Un lenguaje de programaci´ on no interpreta la intenci´ on del programador; ejecuta literalmente lo que est´ a escrito. Esto exige que el programador sea expl´ ıcito en cada detalle: no puede escribir “ordena la lista” sin especificar el criterio de ordenamiento, el algoritmo y el manejo de casos borde. Evoluci´ on y cambio Los lenguajes naturales evolucionan de manera org´ anica, sin una autoridad central, mediante el uso cotidiano. Nuevas palabras surgen, otras caen en desuso, la gram´ atica cambia lentamente a lo largo de siglos. Los lenguajes de programaci´ on, en cambio, son dise˜ nados deliberadamente por comit´ es o creadores individuales, y su evoluci´ on sigue un proceso estandarizado (versiones, propuestas de mejora, retrocompatibilidad). Mientras que el espa˜ nol del siglo XIII es casi ininteligible para un hablante moderno, un programa escrito en Fortran 77 (1978) a´ un puede compilarse con modificaciones menores en compiladores actuales. Existe un fuerte compromiso Abraham Zamudio 9 PIT: Python Basico
  9. Sesion 2 con la estabilidad y la retrocompatibilidad en los

    lenguajes de programaci´ on, especialmente en aquellos de uso cr´ ıtico en la industria. Estructura y recursividad Ambos tipos de lenguaje permiten estructuras recursivas (oraciones subordinadas en lenguaje natural; funciones que se llaman a s´ ı mismas en programaci´ on). Sin embargo, los lenguajes naturales tienen l´ ımites pr´ acticos de anidamiento debido a la memoria humana de trabajo; una oraci´ on con m´ as de tres o cuatro niveles de subordinaci´ on se vuelve dif´ ıcil de comprender. En programaci´ on, la recursi´ on puede ser tan profunda como lo permita la pila de llamadas (millones de niveles en teor´ ıa, aunque con restricciones pr´ acticas). Adem´ as, la estructura de los programas es jer´ arquica y modular (funciones, clases, m´ odulos), mientras que la estructura del lenguaje natural es m´ as flexible y menos formalizada. Comunicaci´ on vs. Ejecuci´ on El prop´ osito fundamental del lenguaje humano es la comunicaci´ on entre agentes inteligentes, con intenciones, creencias y emociones. Se busca persuadir, informar, preguntar, expresar sentimientos. El lenguaje de programaci´ on no est´ a dise˜ nado para la comunicaci´ on entre humanos, sino para la especificaci´ on de procesos que una m´ aquina ejecutar´ a. Aunque los programas pueden ser le´ ıdos por otros programadores (y de hecho la legibilidad es un valor importante), su destinatario ´ ultimo es el computador. Esto implica que no hay lugar para la ret´ orica, la ambig¨ uedad estil´ ıstica o las figuras literarias. Un programa no “entiende” el c´ odigo en el sentido humano; lo procesa sint´ actica y sem´ anticamente seg´ un reglas deterministas. Manejo de errores En el habla natural, los errores gramaticales o l´ exicos suelen ser tolerados o inferidos por el contexto. Un humano puede entender “¿A d´ onde vo?” como “¿A d´ onde voy?”. En cambio, un compilador o int´ erprete rechaza cualquier desviaci´ on de la sintaxis estricta. Un solo car´ acter mal escrito (una coma en lugar de un punto y coma) impide la ejecuci´ on. Adem´ as, en lenguajes tipados est´ aticamente, errores de tipo (asignar un texto a una variable num´ erica) se detectan en tiempo de compilaci´ on. En lenguajes din´ amicos como Python, se detectan en tiempo de ejecuci´ on, pero igualmente detienen el programa. No existe “comprensi´ on aproximada” en la computaci´ on. Abstracci´ on y met´ afora Los lenguajes humanos est´ an llenos de met´ aforas y expresiones idiom´ aticas cuyo significado no es composicional (“llueve a c´ antaros”, “tirar la toalla”). Los lenguajes de programaci´ on carecen de met´ aforas; su significado es estrictamente composicional: el significado de una expresi´ on compleja se deriva del significado de sus partes y las reglas de combinaci´ on. Sin embargo, los lenguajes de programaci´ on permiten crear abstracciones (funciones, clases, tipos de datos abstractos) que act´ uan como met´ aforas computacionales, pero siempre definidas de manera expl´ ıcita y no ambigua. Abraham Zamudio 10 PIT: Python Basico
  10. Sesion 2 Procesamiento neuronal vs. mec´ anico El cerebro humano

    procesa el lenguaje utilizando redes neuronales biol´ ogicas, con paralelismo masivo, tolerancia a fallos y aprendizaje continuo. El computador procesa lenguajes de programaci´ on mediante algoritmos secuenciales deterministas (aunque con cierto paralelismo a nivel hardware). Un ser humano puede entender una frase aunque nunca la haya o´ ıdo antes, gracias a la generalizaci´ on; un compilador solo reconoce las construcciones definidas en la gram´ atica del lenguaje. No hay “creatividad” ni “intuici´ on” en el compilador. Expresividad y concisi´ on Se ha debatido si los lenguajes de programaci´ on son m´ as o menos expresivos que los naturales. Por un lado, un lenguaje de programaci´ on puede expresar con precisi´ on una operaci´ on matem´ atica compleja en una l´ ınea: ‘resultado = sum(x**2 for x in datos)‘. En lenguaje natural, describir esa misma operaci´ on tomar´ ıa varias oraciones ambiguas. Por otro lado, los lenguajes naturales pueden expresar matices emocionales, ´ ordenes indirectas, iron´ ıa, etc., que son imposibles en programaci´ on. Por tanto, son dominios diferentes: la programaci´ on expresa procedimientos, mientras que el lenguaje natural expresa pensamiento humano integral. Ejemplo concreto Consid´ erese la frase en espa˜ nol: “Si llueve, entonces me quedo en casa, a menos que tenga una cita importante”. Un programa en un lenguaje de programaci´ on equivalente podr´ ıa ser: if llueve: if cita_importante: pass # no se queda en casa else: quedarse_en_casa = True else: quedarse_en_casa = False N´ otese la necesidad de explicitar todas las combinaciones, el manejo del caso “cita importante y llueve” (que en lenguaje natural se infiere por el “a menos que”), y la asignaci´ on a una variable. La versi´ on humana es m´ as compacta pero ambigua: ¿qu´ e pasa si llueve y la cita es importante? La interpretaci´ on natural es que la excepci´ on prevalece, pero la frase podr´ ıa entenderse de otra forma. La versi´ on computacional elimina toda duda. En conclusi´ on, las diferencias entre lenguajes humanos y computacionales son cualitativas y reflejan la brecha entre la inteligencia natural (flexible, contextual, evolutiva) y la inteligencia artificial actual (literal, determinista, formal). Reconocer estas diferencias es crucial para dise˜ nar lenguajes de programaci´ on m´ as accesibles y para entender por qu´ e la programaci´ on requiere una forma de pensar precisa y disciplinada, distinta de la comunicaci´ on cotidiana. Abraham Zamudio 11 PIT: Python Basico
  11. Sesion 2 2.3. Evoluci´ on hist´ orica de los lenguajes

    de programa- ci´ on La historia de los lenguajes de programaci´ on es la cr´ onica de la b´ usqueda humana por dominar la complejidad del hardware y expresar algoritmos de manera cada vez m´ as abstracta, productiva y segura. Desde los primeros cables y tarjetas perforadas hasta los modernos lenguajes multiparadigma, esta evoluci´ on refleja avances tecnol´ ogicos, cambios en la teor´ ıa de la computaci´ on y necesidades pr´ acticas de la industria. A continuaci´ on, se presenta un recorrido detallado por las generaciones y hitos principales. Prehistoria: Cables y c´ odigos m´ aquina (antes de 1950) Antes de los lenguajes de programaci´ on, las computadoras como la ENIAC (1945) se pro- gramaban reconectando f´ ısicamente cables y configurando interruptores. Cada problema requer´ ıa una nueva configuraci´ on de hardware, un proceso tedioso y propenso a errores. Pronto surgi´ o el concepto de programa almacenado (arquitectura de von Neumann, 1945), donde las instrucciones se guardaban en memoria como n´ umeros. Los primeros programadores escrib´ ıan directamente en c´ odigo m´ aquina (secuencias de bits) o, ligeramente m´ as adelante, en c´ odigo ensamblador, que reemplazaba los c´ odigos num´ ericos por nemot´ ecnicos (ADD, MOV, JMP) y permit´ ıa usar etiquetas simb´ olicas para direcciones de memoria. El ensamblador todav´ ıa estaba ligado uno a uno al conjunto de instrucciones del procesador, pero mejor´ o enormemente la legibilidad y la productividad. A˜ nos 1950: Primeros lenguajes de alto nivel La d´ ecada de 1950 vio el nacimiento de los lenguajes de alto nivel, que abstra´ ıan los detalles del hardware. FORTRAN (1957, de “Formula Translation”), desarrollado por IBM bajo la direcci´ on de John Backus, fue el primer lenguaje compilado exitoso. Estaba orientado a c´ omputo cient´ ıfico y permit´ ıa expresar f´ ormulas matem´ aticas de manera similar a la notaci´ on algebraica. Su compilador generaba c´ odigo m´ aquina eficiente, rivalizando con el ensamblador. FORTRAN sigue en uso hoy en d´ ıa en simulaciones num´ ericas de alto rendimiento. En 1958 apareci´ o LISP (de “List Processing”), creado por John McCarthy para investigaci´ on en inteligencia artificial. LISP introdujo el manejo de listas, la recursi´ on y las funciones de orden superior, siendo el antecesor de los lenguajes funcionales. COBOL (1959, “Common Business Oriented Language”), dise˜ nado por Grace Hopper y otros, se orient´ o a aplicaciones comerciales y de gesti´ on, con una sintaxis similar al ingl´ es para facilitar su adopci´ on por no programadores. COBOL domin´ o la administraci´ on y finanzas durante d´ ecadas. A˜ nos 1960: Estructuraci´ on y algoritmos Los a˜ nos 60 consolidaron la teor´ ıa de lenguajes y la programaci´ on estructurada. ALGOL (1960, “Algorithmic Language”) fue un hito conceptual: introdujo la notaci´ on BNF para describir gram´ aticas, bloques de c´ odigo, ´ ambitos l´ exicos y paso de par´ ametros por valor o nombre. Aunque menos usado comercialmente, influy´ o profundamente en lenguajes posteriores como Pascal, C y Java. En 1964, los profesores John Kemeny y Thomas Kurtz crearon BASIC Abraham Zamudio 12 PIT: Python Basico
  12. Sesion 2 (“Beginner’s All-purpose Symbolic Instruction Code”) en Dartmouth College

    para ense˜ nar programaci´ on a estudiantes no especializados. BASIC populariz´ o el uso de int´ erpretes y fue el lenguaje de los primeros microordenadores (Altair, Apple II, Commodore). Tambi´ en en 1964 se present´ o PL/I (“Programming Language One”), que intentaba unificar c´ omputo cient´ ıfico y comercial, pero result´ o demasiado complejo. Hacia finales de la d´ ecada, Simula (1967), desarrollada por Ole-Johan Dahl y Kristen Nygaard, introdujo los conceptos de clases, objetos, herencia y subtyping, sentando las bases de la programaci´ on orientada a objetos. Simula influy´ o directamente en C++ y Java. A˜ nos 1970: Eficiencia, portabilidad y nuevos paradigmas La d´ ecada de 1970 estuvo marcada por C y Pascal. Dennis Ritchie en Bell Labs desarroll´ o C (1972) a partir de su predecesor B. C combinaba la eficiencia del ensamblador con la expresividad de un lenguaje de alto nivel, ofreciendo manejo directo de memoria mediante punteros y una biblioteca est´ andar m´ ınima. El sistema operativo Unix fue reescrito en C, demostrando que un lenguaje de alto nivel pod´ ıa construir sistemas completos. C se volvi´ o omnipresente y sigue siendo fundamental en sistemas embebidos, kernels y bibliotecas de alto rendimiento. Pascal (1970), dise˜ nado por Niklaus Wirth, se utiliz´ o intensivamente en la ense˜ nanza por su claridad y tipado fuerte, aunque menos eficiente que C. Por otro lado, Smalltalk (1972-1980), desarrollado en Xerox PARC por Alan Kay y otros, llev´ o la orientaci´ on a objetos a su expresi´ on m´ as pura: todo es un objeto, mensajes, entorno gr´ afico integrado. Smalltalk influy´ o en el desarrollo de interfaces gr´ aficas y entornos de programaci´ on vivos. Tambi´ en apareci´ o Prolog (1972), lenguaje l´ ogico basado en cl´ ausulas de Horn, usado en sistemas expertos y procesamiento de lenguaje natural. A˜ nos 1980: Programaci´ on orientada a objetos masiva y mejora de tipos Los a˜ nos 80 vieron la estandarizaci´ on de C++ por Bjarne Stroustrup (1983), que a˜ nadi´ o clases, herencia, polimorfismo y manejo de excepciones a C. C++ se convirti´ o en el lenguaje dominante para aplicaciones grandes y de alto rendimiento (juegos, sistemas financieros, navegadores). Ada (1983), dise˜ nado por el Departamento de Defensa de EE.UU., fue pionero en concurrencia, tipado fuerte y programaci´ on en tiempo real. En la ense˜ nanza, se populariz´ o Turbo Pascal de Borland (1983) y luego Delphi. En el ´ ambito acad´ emico, Standard ML (1984) avanz´ o los sistemas de tipos polim´ orficos y la inferencia de tipos. Tambi´ en surgi´ o MATLAB (1984) como lenguaje interpretado para c´ alculo num´ erico con matrices, aunque m´ as ambiente que lenguaje de prop´ osito general. Los lenguajes funcionales como Scheme (1975) continuaron desarroll´ andose, pero sin amplia adopci´ on industrial. A˜ nos 1990: La web, Java, Python y la explosi´ on de lenguajes inter- pretados Los a˜ nos 90 fueron revolucionarios. Python, creado por Guido van Rossum (1991) como un proyecto personal, se dise˜ n´ o con ´ enfasis en legibilidad del c´ odigo, indentaci´ on obligatoria y una filosof´ ıa de bater´ ıas incluidas (vasta biblioteca est´ andar). Su naturaleza interpretada Abraham Zamudio 13 PIT: Python Basico
  13. Sesion 2 y din´ amica lo hizo popular en scripting,

    automatizaci´ on y, m´ as tarde, en ciencia de datos. Java (1995, por James Gosling en Sun Microsystems) naci´ o con la premisa write once, run anywhere gracias a la m´ aquina virtual Java (JVM). Java combin´ o una sintaxis similar a C++, un modelo de concurrencia basado en hilos, recolecci´ on de basura autom´ atica y un vasto ecosistema. Fue adoptado masivamente en aplicaciones empresariales, web (applets, servlets) y dispositivos m´ oviles (Android). JavaScript (1995, Brendan Eich en Netscape) se cre´ o en 10 d´ ıas para a˜ nadir interactividad a los navegadores web. A pesar de sus defectos iniciales, con el tiempo se convirti´ o en el lenguaje de la web, evolucionando con est´ andares ECMAScript y frameworks como Node.js (2009) que lo llevaron al servidor. PHP (1995, Rasmus Lerdorf) se populariz´ o para el desarrollo din´ amico de sitios web. Tambi´ en aparecieron Ruby (1995) y su framework Rails (2005), que promovieron la convenci´ on sobre configuraci´ on. C# (2000) de Microsoft fue la respuesta a Java, integrado en .NET. A˜ nos 2000 y 2010: Concurrencia, seguridad y lenguajes modernos El cambio de milenio trajo desaf´ ıos de concurrencia (procesadores multin´ ucleo) y seguridad (vulnerabilidades de memoria). Lenguajes como Go (2009, Google) dise˜ nados para sistemas concurrentes con gorutinas y canales; Rust (2010, Mozilla) introdujo el sistema de ownership y borrowing para garantizar seguridad de memoria sin recolector de basura. Swift (2014, Apple) reemplaz´ o a Objective-C para desarrollo en ecosistema Apple, con sintaxis moderna y seguridad de tipos. TypeScript (2012, Microsoft) a˜ nadi´ o tipado est´ atico opcional a JavaScript, ganando adopci´ on masiva. En el ´ ambito de la inteligencia artificial y datos, Python se consolid´ o como lenguaje dominante gracias a bibliotecas como NumPy, SciPy, pandas, scikit- learn y TensorFlow. R (1993, pero popularizado en los 2000) se especializ´ o en estad´ ıstica y visualizaci´ on. Julia (2012) busc´ o combinar la velocidad de C con la facilidad de Python para c´ omputo cient´ ıfico. Tendencias actuales y futuras Hoy en d´ ıa, coexisten m´ ultiples paradigmas. Los lenguajes multiparadigma (Python, C++, Scala) permiten elegir el estilo m´ as adecuado. Los lenguajes de script (Python, Ruby, Ja- vaScript) dominan en desarrollo r´ apido y web. Los lenguajes de sistemas (C, Rust, Zig) se usan en kernels, bases de datos y motores de juego. La ense˜ nanza ha adoptado Python como primer lenguaje en la mayor´ ıa de universidades. La evoluci´ on se orienta hacia lenguajes m´ as seguros por defecto (Rust), mayor concurrencia (Go, Erlang), y t´ ecnicas como comprobaci´ on de tipos dependientes (Idris, Coq) para verificaci´ on formal. Los lenguajes tambi´ en se integran con entornos de desarrollo asistidos por IA (GitHub Copilot) que sugieren c´ odigo y completan patrones. No obstante, la evoluci´ on es lenta: Fortran y COBOL siguen ejecutando aplicaciones cr´ ıticas de hace medio siglo, y C sigue siendo insustituible en ciertos dominios. La historia muestra que ning´ un lenguaje es definitivo; cada uno responde a necesidades de su ´ epoca y evoluciona o desaparece seg´ un su capacidad de adaptaci´ on. Abraham Zamudio 14 PIT: Python Basico
  14. Sesion 2 Caso concreto: La evoluci´ on de Python como

    ejemplo paradigm´ atico Python ha pasado de ser un lenguaje de scripting en los 90 a ser el m´ as popular seg´ un ´ ındices TIOBE, IEEE Spectrum y Stack Overflow. Su evoluci´ on (versiones 2.x vs 3.x) ilustra el conflicto entre innovaci´ on y retrocompatibilidad. Python 3 (2008) rompi´ o con Python 2 (2000) al mejorar Unicode, manejo de excepciones y eliminar redundancias. La transici´ on tard´ o m´ as de una d´ ecada, pero hoy Python 3 es est´ andar. Esta historia muestra que incluso los lenguajes exitosos deben evolucionar, a menudo con costos de migraci´ on. En conclusi´ on, la evoluci´ on de los lenguajes de programaci´ on es un proceso continuo de abstracci´ on creciente: desde el c´ odigo m´ aquina hasta lenguajes que se asemejan a la notaci´ on matem´ atica y pronto a la especificaci´ on por intenci´ on. Cada nuevo lenguaje resuelve algunos problemas de sus predecesores e introduce nuevos desaf´ ıos. Comprender esta historia permite a los profesionales elegir herramientas adecuadas y prever hacia d´ onde se dirige la disciplina. Abraham Zamudio 15 PIT: Python Basico
  15. Cap´ ıtulo 3 La presencia invisible del software en la

    vida diaria 3.1. Aplicaciones m´ oviles y redes sociales El software se ha integrado en las actividades cotidianas de los seres humanos de una manera tan profunda que resulta casi imperceptible. Las aplicaciones m´ oviles y las redes sociales constituyen quiz´ as el ejemplo m´ as evidente de esta omnipresencia digital. Un tel´ efono inteli- gente promedio contiene docenas de aplicaciones que abordan necesidades de comunicaci´ on, informaci´ on, productividad y ocio. Detr´ as de cada interacci´ on con la pantalla t´ actil existe una compleja cadena de ejecuci´ on de c´ odigo que comienza en el sistema operativo, contin´ ua con la l´ ogica de la aplicaci´ on, se apoya en bibliotecas de terceros y culmina en servicios remotos ejecut´ andose en centros de datos distribuidos por todo el planeta. Las aplicaciones m´ oviles se desarrollan principalmente para dos ecosistemas dominantes: Android (basado en Linux, con capas de abstracci´ on y entornos de ejecuci´ on como Android Runtime) e iOS (basado en Darwin, derivado de UNIX, con el entorno Cocoa Touch). Los lenguajes de programaci´ on t´ ıpicos son Kotlin y Java para Android, y Swift junto con Objective-C para iOS. Sin embargo, el desarrollo multiplataforma ha cobrado relevancia mediante frameworks como React Native (JavaScript), Flutter (Dart) y .NET MAUI (C#), que permiten compartir gran parte del c´ odigo entre sistemas operativos. Cada aplicaci´ on m´ ovil es un sistema de eventos: responde a toques, deslizamientos, rotaciones del dispositivo, notificaciones push y cambios en la conectividad de red. La interfaz de usuario se construye a partir de componentes visuales (botones, listas, campos de texto) que siguen modelos de programaci´ on reactiva o declarativa, donde el estado de la aplicaci´ on determina la interfaz en cada instante. Las redes sociales, ejecutadas tanto en aplicaciones m´ oviles como en navegadores web, re- presentan un caso particularmente complejo de ingenier´ ıa de software. Plataformas como Facebook, Twitter, Instagram, TikTok y LinkedIn manejan miles de millones de usuarios y cantidades astron´ omicas de datos. El software que las sostiene no es monol´ ıtico, sino que se organiza en microservicios: cientos o miles de peque˜ nos programas que se comunican mediante 17
  16. Sesion 2 protocolos como HTTP/REST, gRPC o colas de mensajes

    (Apache Kafka, RabbitMQ). Por ejemplo, el servicio de “amigos” puede ser independiente del servicio de “publicaciones”, y ambos dependen de un servicio de autenticaci´ on y otro de notificaciones. Esta arquitectura permite escalar cada componente por separado, desplegar actualizaciones sin detener toda la plataforma y tolerar fallos parciales. Un aspecto fundamental del software en redes sociales es el manejo de datos masivos y en tiempo real. Cada publicaci´ on, “me gusta”, comentario o compartido genera eventos que deben ser procesados, almacenados y replicados en m´ ultiples centros de datos para garantizar disponibilidad y baja latencia. Sistemas de bases de datos distribuidas como Cassandra, HBase, o Spanner, junto con sistemas de cach´ e como Memcached o Redis, son esenciales. Adem´ as, el software de recomendaci´ on y personalizaci´ on utiliza algoritmos de aprendizaje autom´ atico que se entrenan con el historial de interacciones. Por ejemplo, el feed de noticias de Facebook se ordena mediante un modelo de relevancia que considera variables como la afinidad con el autor, el tipo de contenido, la recencia y las interacciones previas. El c´ odigo que implementa estos modelos suele escribirse en Python (con bibliotecas como TensorFlow o PyTorch) para la fase de entrenamiento, pero la inferencia en producci´ on puede usar implementaciones m´ as eficientes en C++ o Java. Las aplicaciones m´ oviles tambi´ en incorporan funcionalidades que aprovechan el hardware del dispositivo: c´ amara, GPS, aceler´ ometro, giroscopio, sensor de huellas dactilares, etc. Por ejemplo, una aplicaci´ on de fitness registra la ubicaci´ on mediante GPS, cuenta pasos con el aceler´ ometro y muestra rutas en un mapa. El software debe gestionar el consumo de bater´ ıa, la precisi´ on de las mediciones y la privacidad de los datos. Los sistemas operativos m´ oviles imponen pol´ ıticas estrictas sobre los permisos que cada aplicaci´ on puede solicitar, y el programador debe escribir c´ odigo que maneje adecuadamente la denegaci´ on de permisos o la ausencia de conectividad. Otro aspecto invisible pero cr´ ıtico es la actualizaci´ on continua del software. Las aplicaciones m´ oviles se distribuyen a trav´ es de tiendas oficiales (Google Play, App Store) y reciben actualizaciones frecuentes que corrigen errores, a˜ naden funciones y mejoran la seguridad. Detr´ as de cada actualizaci´ on hay un proceso de integraci´ on continua y despliegue continuo (CI/CD) que automatiza las pruebas, el empaquetado y la firma digital del c´ odigo. El software de la tienda de aplicaciones tambi´ en verifica que el c´ odigo no contenga malware ni viole las pol´ ıticas de privacidad. En el ´ ambito de las redes sociales, el software tambi´ en enfrenta desaf´ ıos ´ eticos y regulatorios. Los algoritmos de recomendaci´ on pueden crear burbujas de filtro, difundir desinformaci´ on o amplificar discursos de odio. Por ello, las empresas invierten en sistemas de moderaci´ on autom´ atica (basados en procesamiento de lenguaje natural y visi´ on por computadora) que detectan contenido prohibido, as´ ı como en equipos humanos que revisan las decisiones autom´ aticas. El c´ odigo que implementa la moderaci´ on debe equilibrar la libertad de expresi´ on con la protecci´ on de los usuarios, y a menudo se mantiene en secreto para evitar que los actores maliciosos lo exploten. Desde la perspectiva del usuario final, las aplicaciones m´ oviles y redes sociales ofrecen una experiencia pulida y aparentemente simple. Pero esa simplicidad es el resultado de millones Abraham Zamudio 18 PIT: Python Basico
  17. Sesion 2 de l´ ıneas de c´ odigo, protocolos de

    red, bases de datos distribuidas y sistemas de aprendizaje autom´ atico que funcionan en conjunto. La pr´ oxima vez que un usuario deslice el dedo sobre una pantalla para ver historias de Instagram, estar´ a desencadenando una secuencia de eventos que involucra al menos una decena de servicios diferentes, ubicados posiblemente en tres continentes, todo en menos de medio segundo. El software se ha vuelto, literalmente, la capa invisible que estructura la vida social moderna. 3.2. Comercio electr´ onico y banca digital El comercio electr´ onico y la banca digital representan dos de los dominios donde el software ha transformado de manera m´ as radical las actividades econ´ omicas y financieras. Lo que antes requer´ ıa desplazamientos f´ ısicos, efectivo, cheques o letras de cambio, hoy se resuelve con unos pocos clics o toques en una pantalla. Detr´ as de esta aparente simplicidad se esconde una arquitectura de software extremadamente compleja, que debe garantizar seguridad, consistencia, disponibilidad y auditabilidad. En el comercio electr´ onico, plataformas como Amazon, Alibaba, Mercado Libre o Shopify procesan millones de transacciones por hora. El software se organiza t´ ıpicamente en capas: la capa de presentaci´ on (interfaz de usuario web o m´ ovil), la capa de l´ ogica de negocio (carrito de compras, gesti´ on de inventario, c´ alculo de impuestos y env´ ıos) y la capa de datos (almacenamiento de productos, usuarios, pedidos y pagos). Un aspecto cr´ ıtico es el manejo de concurrencia: cuando dos usuarios intentan comprar el ´ ultimo art´ ıculo disponible, el sistema debe garantizar que solo uno tenga ´ exito sin condiciones de carrera. Esto se logra mediante mecanismos de bloqueo optimista o pesimista, transacciones at´ omicas en bases de datos y, en sistemas de alta escala, mediante t´ ecnicas como el particionamiento de inventario y el uso de colas. El proceso de pago es el momento m´ as delicado. Intervienen pasarelas de pago (Stripe, PayPal, Adyen), que son software especializado en comunicarse con bancos y redes de tarjetas. Cuando un usuario ingresa los datos de su tarjeta, el software de la tienda (o un iframe proporcionado por la pasarela) env´ ıa una solicitud cifrada mediante TLS (Transport Layer Security) a los servidores de la pasarela. Esta nunca ve los n´ umeros completos de la tarjeta si se utiliza tokenizaci´ on: el software de la pasarela devuelve un token que representa el m´ etodo de pago, y la tienda solo almacena ese token. Luego, la pasarela se comunica con el banco emisor mediante redes privadas y protocolos como ISO 8583, y recibe una autorizaci´ on o rechazo. Todo esto ocurre en menos de dos segundos. El software debe manejar casos de error: fondos insuficientes, tarjeta bloqueada, conexi´ on fallida con el banco, etc., y ofrecer mensajes claros al usuario sin revelar informaci´ on sensible. El comercio electr´ onico tambi´ en depende de sistemas de recomendaci´ on similares a los de redes sociales, pero orientados a la conversi´ on. El software analiza el historial de navegaci´ on y compras, las valoraciones de otros usuarios y la disponibilidad de inventario para sugerir productos complementarios o similares. Estos sistemas usan t´ ecnicas de filtrado colabora- tivo (basado en usuarios similares) y filtrado basado en contenido (similitud de atributos). La implementaci´ on puede usar librer´ ıas de Python como Surprise o LightFM, o motores especializados como Apache Mahout. Abraham Zamudio 19 PIT: Python Basico
  18. Sesion 2 La log´ ıstica es otro componente esencial. Una

    vez realizado el pedido, el software debe comunicarse con sistemas de gesti´ on de almacenes (WMS) y sistemas de gesti´ on de transporte (TMS). Los robots en los centros de distribuci´ on (como los de Amazon) reciben instrucciones generadas por software que optimiza las rutas de recolecci´ on. Los algoritmos de planificaci´ on determinan qu´ e art´ ıculos empaquetar juntos, qu´ e tama˜ no de caja usar y qu´ e transportista asignar seg´ un la ubicaci´ on del destinatario y la velocidad elegida. Adem´ as, los sistemas de seguimiento actualizan al usuario en tiempo real mediante notificaciones push o correos electr´ onicos, lo que requiere una integraci´ on continua con las API de las empresas de mensajer´ ıa. En la banca digital, el software debe cumplir con regulaciones extremadamente estrictas. Las aplicaciones de banca m´ ovil permiten consultar saldos, transferir fondos, pagar servicios, solicitar pr´ estamos e invertir. Cada una de estas operaciones involucra sistemas centrales (core banking) que pueden haber sido escritos en COBOL hace d´ ecadas, pero que exponen API modernas mediante capas de integraci´ on escritas en Java o C#. El software de banca digital debe implementar autenticaci´ on multifactor (contrase˜ na, biometr´ ıa, token por SMS o aplicaci´ on autenticadora), cifrado de extremo a extremo y detecci´ on de fraudes en tiempo real. La detecci´ on de fraudes es un ejemplo destacado de software especializado. Los algoritmos analizan cada transacci´ on considerando cientos de caracter´ ısticas: ubicaci´ on del dispositivo, velocidad de escritura, patrones de gasto habituales, historial de transacciones fallidas, etc. Si una operaci´ on se desv´ ıa significativamente del perfil del usuario, el software puede bloquearla y solicitar verificaci´ on adicional. Estos modelos de machine learning se entrenan con datos hist´ oricos de transacciones fraudulentas y leg´ ıtimas, y se actualizan continuamente para adaptarse a nuevas t´ acticas de los defraudadores. La implementaci´ on suele usar Python (con Scikit-learn, XGBoost o redes neuronales) pero la inferencia en l´ ınea puede requerir tiempos de respuesta inferiores a 100 milisegundos, por lo que a veces se utilizan modelos compilados a formatos como ONNX o ejecutados en hardware especializado. Otro aspecto cr´ ıtico es la consistencia transaccional. En una transferencia bancaria, el software debe garantizar que, si se debita de una cuenta, se acredite en la otra, y nunca ocurra una sola de las dos operaciones. Esto se logra mediante transacciones ACID (Atomicidad, Consistencia, Aislamiento, Durabilidad) en bases de datos relacionales, o mediante patrones como Saga en arquitecturas de microservicios. En las transferencias interbancarias, intervienen sistemas de compensaci´ on (como SPEI en M´ exico, SEPA en Europa o ACH en EE.UU.), que son plataformas de software gestionadas por los bancos centrales o asociaciones bancarias. La comunicaci´ on entre bancos se realiza mediante mensajes estandarizados (ISO 20022, SWIFT), y el software debe implementar protocolos de confirmaci´ on y reintentos para garantizar la entrega. La banca digital tambi´ en ha impulsado la aparici´ on de los neobancos (Revolut, Nubank, Chime), que son completamente digitales y sin sucursales f´ ısicas. Su software est´ a construido desde cero con tecnolog´ ıas modernas (microservicios, bases de datos distribuidas, tiempo de ejecuci´ on en la nube), lo que les permite innovar r´ apidamente y ofrecer comisiones m´ as bajas. Sin embargo, tambi´ en enfrentan desaf´ ıos de escalabilidad y seguridad comparables a los bancos tradicionales. Abraham Zamudio 20 PIT: Python Basico
  19. Sesion 2 Tanto en comercio electr´ onico como en banca

    digital, el software debe cumplir con normativas de protecci´ on de datos (GDPR en Europa, CCPA en California), que imponen requisitos como el derecho al olvido, la portabilidad de datos y la notificaci´ on de brechas de seguridad. Implementar estas funcionalidades en c´ odigo implica a˜ nadir procesos de anonimizaci´ on, exportaci´ on de datos en formatos est´ andar y sistemas de logging que permitan auditar accesos. En conjunto, el comercio electr´ onico y la banca digital son ejemplos paradigm´ aticos de c´ omo el software ha reemplazado intermediarios f´ ısicos, reducido costos de transacci´ on y democratizado el acceso a servicios financieros. No obstante, tambi´ en han creado nuevos riesgos: fraude cibern´ etico, exclusi´ on digital de personas sin acceso a internet o sin habilidades tecnol´ ogicas, y dependencia cr´ ıtica de la disponibilidad de los sistemas. La ingenier´ ıa de software en estos ´ ambitos no solo debe ser t´ ecnicamente excelente, sino tambi´ en socialmente responsable y resiliente. 3.3. Plataformas educativas y entretenimiento El software ha revolucionado tanto la educaci´ on como el entretenimiento, dos esferas que tradicionalmente depend´ ıan de la presencia f´ ısica y de medios anal´ ogicos. Las plataformas educativas en l´ ınea (como Coursera, edX, Khan Academy, Moodle, Google Classroom) y los servicios de entretenimiento (Netflix, Spotify, YouTube, Twitch, videojuegos en la nube) son ejemplos de sistemas de software masivos que manejan contenidos multimedia, interacci´ on con usuarios y personalizaci´ on algor´ ıtmica. En el ´ ambito educativo, las plataformas de aprendizaje en l´ ınea (o MOOCs, Massive Open Online Courses) permiten que millones de estudiantes accedan a cursos de universidades de primer nivel sin desplazarse. El software que las sustenta debe gestionar el contenido (videos, lecturas, cuestionarios), el progreso del estudiante, los foros de discusi´ on, las calificaciones y, en algunos casos, los ex´ amenes supervisados remotamente. La arquitectura t´ ıpica incluye un sistema de gesti´ on de aprendizaje (LMS) como n´ ucleo, complementado con componentes de videoconferencia (para clases en vivo), herramientas de evaluaci´ on autom´ atica y anal´ ıticas de aprendizaje. Uno de los componentes m´ as interesantes es el evaluador autom´ atico de c´ odigo, utilizado en cursos de programaci´ on. Plataformas como Codecademy, LeetCode o los laboratorios de edX ejecutan el c´ odigo enviado por los estudiantes en entornos aislados (contenedores Docker o m´ aquinas virtuales desechables) para verificar su correcci´ on, eficiencia y estilo. El software debe prevenir ataques como la ejecuci´ on de comandos maliciosos o el consumo excesivo de recursos. Para lenguajes como Python, los evaluadores autom´ aticos utilizan bibliotecas de an´ alisis est´ atico (pylint, flake8) y de pruebas unitarias (unittest, pytest). Adem´ as, se generan reportes detallados para el estudiante, con sugerencias de mejora. Las plataformas educativas tambi´ en emplean sistemas de recomendaci´ on, similares a los del comercio electr´ onico, pero orientados a la trayectoria de aprendizaje. Por ejemplo, si un estudiante tiene dificultades en un tema de matem´ aticas, el software puede sugerir videos adicionales, ejercicios de refuerzo o redirigirlo a un curso m´ as b´ asico. Estos sistemas se basan en modelos de dominio del conocimiento (como los modelos de respuesta a ´ ıtems o los Abraham Zamudio 21 PIT: Python Basico
  20. Sesion 2 modelos bayesianos de seguimiento del conocimiento) que estiman

    la probabilidad de que el estudiante conozca cada concepto. La implementaci´ on en software requiere algoritmos de inferencia y actualizaci´ on en tiempo real, as´ ı como bases de datos que almacenen el historial de interacciones. La gamificaci´ on es otra t´ ecnica com´ un en plataformas educativas: el software a˜ nade puntos, insignias, tablas de clasificaci´ on y narrativas para motivar a los estudiantes. Detr´ as de estas mec´ anicas hay sistemas de reglas y eventos que actualizan el estado del juego en funci´ on de las acciones del usuario. Por ejemplo, completar un m´ odulo otorga 100 puntos y desbloquea el siguiente nivel. El software debe ser cuidadoso para no incentivar comportamientos superficiales (como repetir ejercicios f´ aciles para acumular puntos) y debe permitir que los educadores personalicen las reglas. En el entretenimiento, las plataformas de streaming como Netflix manejan un cat´ alogo de miles de t´ ıtulos y decenas de millones de usuarios simult´ aneos. El software de backend debe ser altamente escalable y tolerante a fallos. Cuando un usuario pulsa “reproducir”, el sistema de recomendaci´ on ya ha elegido qu´ e contenido mostrar en la pantalla de inicio, y el sistema de entrega de contenido (CDN) selecciona el servidor m´ as cercano geogr´ aficamente para transmitir el video. El protocolo de transmisi´ on suele ser DASH o HLS, que dividen el video en segmentos de pocos segundos y adaptan la calidad (resoluci´ on, tasa de bits) seg´ un las condiciones de la red. Esto se logra con un algoritmo de control de tasa que monitorea el buffer del cliente y el ancho de banda disponible. El software del cliente (aplicaci´ on m´ ovil o reproductor web) implementa la l´ ogica de adaptaci´ on y la reproducci´ on fluida. Las recomendaciones de contenido son quiz´ as el componente m´ as caracter´ ıstico de estas plataformas. Netflix, por ejemplo, utiliza un sistema de filtrado colaborativo basado en la descomposici´ on matricial: convierte las valoraciones impl´ ıcitas (tiempo de visualizaci´ on, pausas, b´ usquedas) en una matriz usuario-´ ıtem, la factoriza en vectores latentes y usa esos vectores para predecir qu´ e t´ ıtulos le gustar´ an al usuario. Adem´ as, emplea t´ ecnicas de bandidos multi-brazo para explorar nuevos contenidos mientras explota los ya conocidos. Todo esto se implementa en software que debe actualizar los modelos peri´ odicamente (normalmente cada noche) y servir predicciones con baja latencia (menos de 100 ms). Python se usa intensamente en la fase de investigaci´ on y prototipado, pero los sistemas de producci´ on a menudo recurren a Java, Scala o C++ por razones de rendimiento. Los videojuegos representan otra forma masiva de entretenimiento digital. Un juego moderno puede tener millones de l´ ıneas de c´ odigo, combinando motores gr´ aficos (Unreal Engine, Unity), sistemas de f´ ısica, inteligencia artificial para los personajes no jugables, red para multijugador, y herramientas de edici´ on de contenido. Los lenguajes de programaci´ on para videojuegos son principalmente C++ (por su control de memoria y rendimiento) y C# (en Unity). Sin embargo, el comportamiento de los personajes y las reglas del juego a menudo se definen en lenguajes de scripting m´ as ligeros como Lua o Python, que permiten iterar r´ apidamente. El software de red en juegos multijugador debe manejar la latencia y la p´ erdida de paquetes mediante t´ ecnicas de interpolaci´ on, predicci´ on de movimiento y compensaci´ on de retardo. El entretenimiento tambi´ en abarca plataformas de m´ usica como Spotify, donde el software debe gestionar bibliotecas de millones de canciones, metadatos, licencias y recomendaciones. Abraham Zamudio 22 PIT: Python Basico
  21. Sesion 2 El procesamiento de audio digital (ecualizaci´ on, normalizaci´

    on de volumen, detecci´ on de beats) se realiza con librer´ ıas como Essentia o librosa en Python, mientras que el backend de recomendaciones combina modelos de factorizaci´ on matricial y redes neuronales recurrentes para capturar la secuencialidad de las escuchas. Finalmente, las plataformas educativas y de entretenimiento comparten el desaf´ ıo de la accesibilidad. El software debe cumplir con est´ andares como WCAG (Web Content Accessibility Guidelines) para que personas con discapacidades visuales, auditivas o motoras puedan utilizarlas. Esto implica a˜ nadir subt´ ıtulos, descripciones de audio, navegaci´ on por teclado y compatibilidad con lectores de pantalla. A menudo, estas caracter´ ısticas se implementan como capas adicionales sobre el c´ odigo existente, requiriendo una arquitectura que separe el contenido de la presentaci´ on y permita inyectar comportamientos alternativos. En resumen, el software en educaci´ on y entretenimiento no solo distribuye contenido, sino que crea experiencias interactivas personalizadas a escala global. La intersecci´ on entre pedagog´ ıa y algoritmo, o entre arte y recomendaci´ on, sigue siendo un campo activo de investigaci´ on en ingenier´ ıa de software. 3.4. Transporte, navegaci´ on y ciudades inteligentes El transporte y la navegaci´ on son dominios donde el software ha pasado de ser un complemento a convertirse en el elemento central de la operaci´ on. Desde los sistemas de gesti´ on de tr´ afico hasta las aplicaciones de mapas y las ciudades inteligentes, el c´ odigo se ejecuta en servidores, sem´ aforos, veh´ ıculos y dispositivos port´ atiles para coordinar el movimiento de personas y mercanc´ ıas. Las aplicaciones de navegaci´ on como Google Maps, Waze, Apple Maps o HERE WeGo procesan datos de m´ ultiples fuentes: im´ agenes satelitales, levantamientos topogr´ aficos, informaci´ on de tr´ afico en tiempo real (proveniente de tel´ efonos m´ oviles y sensores en carreteras), datos de transporte p´ ublico (horarios, posiciones GPS de autobuses y trenes) y reportes de usuarios. El software debe resolver el problema de encontrar la ruta ´ optima entre dos puntos considerando una funci´ on de costo que puede incluir distancia, tiempo estimado, peajes, restricciones de veh´ ıculo (altura, peso, carga peligrosa) y preferencias del usuario (evitar autopistas, priorizar rutas esc´ enicas). El algoritmo cl´ asico es Dijkstra, pero en mapas de gran tama˜ no se utilizan variantes como A* con heur´ ısticas, o algoritmos de b´ usqueda jer´ arquica (Contraction Hierarchies) que precomputan rutas ´ optimas entre nodos importantes. Un desaf´ ıo particular es la actualizaci´ on en tiempo real de las condiciones del tr´ afico. El software recibe miles de reportes de velocidad por minuto, detecta congestiones y accidentes, y debe recalcular rutas para los usuarios activos. Esto requiere una arquitectura de streaming (Apache Kafka, Apache Flink) y algoritmos de estimaci´ on del estado del tr´ afico (modelos de redes de carreteras con actualizaciones peri´ odicas). Adem´ as, las aplicaciones de navegaci´ on ofrecen modos alternativos: bicicleta, caminata, transporte p´ ublico. En el caso del transporte p´ ublico, el software debe integrar horarios est´ aticos (archivos GTFS) con datos din´ amicos de retrasos, a menudo usando sistemas de predicci´ on basados en machine learning. El software de navegaci´ on tambi´ en se integra con veh´ ıculos aut´ onomos. Los coches aut´ onomos Abraham Zamudio 23 PIT: Python Basico
  22. Sesion 2 (Waymo, Tesla, Cruise) combinan sensores (c´ amaras, LIDAR,

    radar) con software de percepci´ on (identificar peatones, se˜ nales de tr´ afico, otros veh´ ıculos), planificaci´ on (decidir la trayectoria) y control (actuar sobre el volante y los frenos). La mayor´ ıa de este software se escribe en C++ por razones de tiempo real y seguridad, pero las capas de entrenamiento de los modelos de percepci´ on usan Python (TensorFlow, PyTorch). La navegaci´ on de un coche aut´ onomo no es un problema resuelto; el software debe manejar condiciones clim´ aticas adversas, obras en la v´ ıa, comportamientos err´ aticos de otros conductores y escenarios poco frecuentes (corner cases). La seguridad es cr´ ıtica: un error puede causar la muerte. Por ello, se utilizan m´ etodos de verificaci´ on formal, pruebas exhaustivas en simulaci´ on y millones de kil´ ometros de pruebas reales. En las ciudades inteligentes, el software coordina infraestructuras urbanas. Los sem´ aforos inteligentes reciben datos de sensores de tr´ afico y ajustan los ciclos en tiempo real para minimizar la congesti´ on. El software de gesti´ on de estacionamiento indica a los conductores d´ onde hay plazas libres mediante sensores en el asfalto o c´ amaras. Los sistemas de iluminaci´ on p´ ublica ajustan la intensidad seg´ un la presencia de peatones o veh´ ıculos, ahorrando energ´ ıa. La recogida de basura se optimiza con sensores de nivel en los contenedores. Todo esto requiere una red de dispositivos IoT (Internet of Things) que se comunican mediante protocolos como MQTT, LoRaWAN o NB-IoT. El backend suele usar lenguajes como Python o Go por su productividad, con bases de datos de series temporales (InfluxDB, TimescaleDB) para almacenar las lecturas de los sensores. El transporte ferroviario y a´ ereo tambi´ en depende cr´ ıticamente del software. Los sistemas de se˜ nalizaci´ on ferroviaria (ERTMS, ETCS) utilizan software de seguridad que implementa principios de control de trenes basados en comunicaciones (CBTC). Los trenes obtienen su posici´ on mediante balizas y odometr´ ıa, y el software autoriza movimientos seg´ un la distancia al tren precedente. En aviaci´ on, el software de control de tr´ afico a´ ereo gestiona rutas, altitudes y separaci´ on entre aeronaves, con requisitos de fiabilidad extremos. Estos sistemas suelen programarse en lenguajes de alto prestigio por su robustez, como Ada o C++ con est´ andares DO-178C. Las aplicaciones de movilidad compartida (Uber, Lyft, Didi, Lime) constituyen otro nivel de software que coordina oferta y demanda. Cuando un usuario solicita un viaje, el software debe encontrar el conductor m´ as cercano, calcular la tarifa (con algoritmos de precios din´ amicos que suben en horas pico o con mal tiempo), y gestionar el pago. El sistema de emparejamiento resuelve un problema de asignaci´ on ´ optima en tiempo real, similar al problema de asignaci´ on bipartita m´ axima ponderada. Las implementaciones usan algoritmos de subasta, o bien t´ ecnicas de aprendizaje por refuerzo para equilibrar la distribuci´ on de conductores en la ciudad. El software tambi´ en debe predecir la demanda futura para incentivar a los conductores a moverse a zonas de alta demanda. El transporte de mercanc´ ıas, especialmente la log´ ıstica de ´ ultima milla, ha sido transformado por software de optimizaci´ on de rutas. Empresas como Amazon Logistics o UPS utilizan algoritmos de ruteo de veh´ ıculos (VRP, Vehicle Routing Problem) con restricciones de tiempo, capacidad y ventanas horarias. Estos algoritmos son NP-hard, por lo que se emplean heur´ ısticas (b´ usqueda local, algoritmos gen´ eticos, colonia de hormigas) y metaheur´ ısticas. El software ejecuta estos c´ alculos en la nube y env´ ıa las rutas a los conductores mediante aplicaciones Abraham Zamudio 24 PIT: Python Basico
  23. Sesion 2 m´ oviles. Un aspecto emergente es la integraci´

    on de todas estas capas en una plataforma unificada de movilidad como servicio (MaaS). El software permite planificar viajes multimodales: caminar a una estaci´ on de bicicletas compartidas, tomar una bicicleta hasta el metro, viajar en metro y luego usar un patinete el´ ectrico. La aplicaci´ on combina datos de horarios, disponibilidad en tiempo real y tarifas de todos los operadores, y ofrece un pago ´ unico. La complejidad de integraci´ on es enorme: cada operador expone una API diferente, con distintos formatos y niveles de fiabilidad. El software debe manejar fallos parciales (por ejemplo, que el metro falle pero las bicicletas est´ en disponibles) y proporcionar rutas alternativas. Finalmente, la ciberseguridad en transporte es cr´ ıtica. Un ataque al software de un sem´ aforo podr´ ıa causar caos; un ataque a una flota de veh´ ıculos aut´ onomos podr´ ıa tener consecuencias catastr´ oficas. Por ello, los sistemas de transporte emplean t´ ecnicas de seguridad por dise˜ no: autenticaci´ on mutua entre dispositivos, cifrado de comunicaciones, actualizaciones firmadas y monitoreo continuo de intrusiones. El software debe ser actualizable de forma remota para parchear vulnerabilidades, pero sin comprometer la seguridad. En conclusi´ on, el software en transporte y ciudades inteligentes est´ a transformando la movilidad urbana, haci´ endola m´ as eficiente, segura y sostenible, pero tambi´ en introduciendo dependencias tecnol´ ogicas y desaf´ ıos ´ eticos sobre la vigilancia y el control centralizado. 3.5. Automatizaci´ on en hogares y empresas La automatizaci´ on mediante software ha permeado tanto los hogares como las empresas, aunque con diferentes escalas y prop´ ositos. En los hogares, los sistemas de dom´ otica (hogar inteligente) permiten controlar iluminaci´ on, climatizaci´ on, persianas, electrodom´ esticos, sistemas de seguridad y entretenimiento desde una aplicaci´ on central o mediante comandos de voz. En las empresas, la automatizaci´ on de procesos rob´ oticos (RPA, Robotic Process Automation) y los sistemas de control industrial (SCADA, PLC) ejecutan tareas repetitivas, monitorean maquinaria y optimizan la producci´ on. En el hogar inteligente, el software se ejecuta en m´ ultiples dispositivos: altavoces inteligentes (Amazon Echo, Google Home), hubs (Samsung SmartThings, Apple HomeKit), sensores (de movimiento, humo, fugas de agua), actuadores (interruptores inteligentes, cerraduras, termostatos) y electrodom´ esticos (lavadoras, frigor´ ıficos, aspiradoras rob´ oticas). La comunica- ci´ on entre estos dispositivos se realiza mediante protocolos de redes de ´ area personal como Zigbee, Z-Wave, Thread, o directamente mediante Wi-Fi. Dado que provienen de diferentes fabricantes, el software debe interoperar a trav´ es de est´ andares como Matter (antiguo Project Connected Home over IP), que define una capa de aplicaci´ on com´ un sobre IP. Los asistentes de voz incorporan procesamiento de lenguaje natural (NLP) para interpretar comandos como “sube la calefacci´ on a 22 grados”. La mayor´ ıa de estos sistemas env´ ıan datos a la nube para el procesamiento m´ as complejo, aunque cada vez se prefieren soluciones locales (edge computing) por privacidad y latencia. El software de automatizaci´ on del hogar permite crear rutinas y escenas: “al atardecer, cerrar persianas y encender luces c´ alidas”, o “si detecto movimiento en la entrada y no estoy en Abraham Zamudio 25 PIT: Python Basico
  24. Sesion 2 casa, enviar notificaci´ on al m´ ovil”. Estas

    reglas se implementan como sistemas basados en eventos (triggers) y acciones. La l´ ogica puede ser tan simple como una tabla de condiciones o tan compleja como un motor de reglas (drools) para escenarios con m´ ultiples condiciones y estados. La fiabilidad es importante: una regla mal dise˜ nada podr´ ıa encender la calefacci´ on cuando se abre una ventana, desperdiciando energ´ ıa. El software debe tambi´ en manejar fallos de conectividad: si el hub pierde acceso a internet, a´ un debe poder ejecutar reglas locales (por ejemplo, encender una luz con un interruptor f´ ısico). La automatizaci´ on empresarial abarca desde peque˜ nos scripts que automatizan tareas de oficina hasta l´ ıneas de producci´ on completas controladas por software. La Robotic Process Automation (RPA) utiliza software “robots” que imitan las acciones de un humano sobre interfaces gr´ aficas: abrir aplicaciones, copiar y pegar datos, completar formularios, enviar correos. Herramientas como UiPath, Automation Anywhere o Blue Prism permiten grabar macros y luego ejecutarlas sin intervenci´ on. La l´ ogica se programa en lenguajes visuales o en lenguajes como Python (con bibliotecas como PyAutoGUI, Selenium para web, o pywin32 para aplicaciones Windows). RPA es ´ util para sistemas legados que no ofrecen API; sin embargo, su mantenimiento es fr´ agil porque cualquier cambio en la interfaz rompe el robot. Por ello, se prefiere la automatizaci´ on a nivel de API siempre que sea posible. En el sector industrial, los sistemas SCADA (Supervisory Control and Data Acquisition) monitorean y controlan procesos como plantas de tratamiento de agua, oleoductos, genera- ci´ on el´ ectrica o f´ abricas. Estos sistemas adquieren datos de sensores (temperatura, presi´ on, caudal) mediante PLC (Programmable Logic Controllers), que son computadoras industriales especializadas que ejecutan c´ odigo en tiempo real (lenguajes de aut´ omata como Ladder Logic, Structured Text o Function Block Diagram). El software SCADA se encarga de mostrar las variables en pantallas sin´ opticas, generar alarmas cuando se superan umbrales, almacenar hist´ oricos y permitir el control manual o autom´ atico. La comunicaci´ on entre el SCADA y los PLC se realiza mediante protocolos industriales como Modbus, Profibus, OPC UA o DNP3. Dado que una falla puede causar da˜ nos f´ ısicos o accidentes, el software debe seguir est´ andares de seguridad funcional como IEC 61508 o IEC 61511, que exigen t´ ecnicas de redundancia, diversidad y pruebas rigurosas. Un caso particular de automatizaci´ on empresarial es la gesti´ on de flujos de trabajo (workflow). Herramientas como Zapier, IFTTT (para empresas) o n8n conectan diferentes servicios en la nube: cuando se recibe un correo con un archivo adjunto, se guarda en Dropbox, se extrae el texto y se a˜ nade a una fila de Google Sheets. Estos sistemas se basan en eventos (webhooks, polling) y acciones predefinidas. Los usuarios pueden crear automatizaciones sin programar mediante interfaces visuales, pero detr´ as hay un motor de ejecuci´ on que maneja reintentos, errores y concurrencia. La automatizaci´ on en empresas tambi´ en incluye scripts de administraci´ on de sistemas. Por ejemplo, un administrador puede escribir un script en Python que se ejecute cada hora para comprobar el espacio en disco de cien servidores, y si alguno supera el 90 % de uso, enviar una alerta a Slack. El uso de lenguajes de scripting (Python, Bash, PowerShell) para tareas de mantenimiento es universal. Adem´ as, la infraestructura como c´ odigo (IaC) permite automatizar el aprovisionamiento de servidores, redes y bases de datos mediante herramientas como Terraform, Ansible o Pulumi. El software que describe la infraestructura se escribe en Abraham Zamudio 26 PIT: Python Basico
  25. Sesion 2 lenguajes declarativos (HCL para Terraform) o en lenguajes

    de prop´ osito general (TypeScript, Python para Pulumi). Esto permite versionar la configuraci´ on, revisar cambios y desplegar entornos reproducibles. La automatizaci´ on tambi´ en alcanza a la gesti´ on de documentos y flujos de aprobaci´ on. Los sistemas ERP (Enterprise Resource Planning) como SAP, Oracle o Microsoft Dynamics incluyen m´ odulos de workflow que automatizan la aprobaci´ on de facturas, solicitudes de compra o vacaciones. El software modela el proceso como una m´ aquina de estados: cada documento pasa por estados (borrador, pendiente de aprobaci´ on, aprobado, rechazado) y las transiciones dependen de reglas de negocio (qui´ en puede aprobar, plazos). Estos sistemas suelen programarse en lenguajes propietarios o mediante configuraciones, pero cada vez m´ as exponen APIs REST para integrarse con otros servicios. Un aspecto cr´ ıtico en la automatizaci´ on de hogares y empresas es la seguridad y la priva- cidad. En los hogares, los dispositivos inteligentes pueden ser vulnerables a ataques que permitan espiar conversaciones, desbloquear puertas o encender electrodom´ esticos peligro- samente. Muchos incidentes de seguridad han surgido por contrase˜ nas por defecto, falta de cifrado o actualizaciones deficientes. El software debe incluir mecanismos de autenticaci´ on robusta (certificados, tokens), cifrado de comunicaciones incluso en la red local (TLS/SSL) y actualizaciones autom´ aticas y seguras. En empresas industriales, un ataque a un sistema SCADA podr´ ıa tener consecuencias catastr´ oficas, como el famoso gusano Stuxnet que da˜ n´ o centrifugadoras nucleares en Ir´ an. Por ello, los entornos industriales suelen estar aislados (air-gapped) y utilizan software con an´ alisis de seguridad est´ atico y din´ amico. Finalmente, la automatizaci´ on plantea cuestiones sociales sobre el futuro del trabajo. Mientras que la automatizaci´ on de tareas repetitivas libera a los humanos para trabajos m´ as creativos, tambi´ en puede desplazar empleos. En el hogar, la dom´ otica promete comodidad y ahorro energ´ etico, pero tambi´ en puede aumentar la brecha digital y la dependencia de plataformas tecnol´ ogicas. El software que impulsa estas transformaciones debe dise˜ narse teniendo en cuenta no solo la eficiencia, sino tambi´ en la equidad, la transparencia y el control humano. En conclusi´ on, la automatizaci´ on en hogares y empresas demuestra c´ omo el software se ha infiltrado en los espacios m´ as ´ ıntimos y en los procesos productivos, prometiendo eficiencia y confort, pero tambi´ en generando nuevos desaf´ ıos de seguridad, privacidad y ´ etica. La pr´ oxima frontera es la automatizaci´ on cognitiva (basada en IA) que no solo ejecute reglas, sino que aprenda comportamientos ´ optimos a partir de los datos. Abraham Zamudio 27 PIT: Python Basico
  26. Cap´ ıtulo 4 Los lenguajes de programaci´ on como motor

    de innovaci´ on 4.1. Transformaci´ on digital de las empresas La transformaci´ on digital de las empresas es uno de los fen´ omenos m´ as significativos de la econom´ ıa contempor´ anea, y los lenguajes de programaci´ on constituyen el andamiaje t´ ecnico que la hace posible. Este proceso no se limita a la mera adopci´ on de tecnolog´ ıa, sino que implica una reinvenci´ on profunda de los modelos de negocio, los procesos operativos y las relaciones con clientes y proveedores, todo ello sustentado en c´ odigo. Para comprender la magnitud de esta transformaci´ on, es necesario analizar c´ omo los lenguajes de programaci´ on permiten automatizar, escalar e innovar en sectores tradicionalmente ajenos al software. La transformaci´ on digital comienza con la digitalizaci´ on de procesos internos. Las empresas que durante d´ ecadas dependieron del papel, los archivos f´ ısicos y las comunicaciones anal´ ogicas han migrado hacia sistemas de gesti´ on empresarial (ERP, Enterprise Resource Planning) como SAP, Oracle o Microsoft Dynamics. Estos sistemas son, en esencia, enormes conjuntos de software escrito principalmente en lenguajes como ABAP (en SAP), Java y C#. Un ERP moderno integra contabilidad, recursos humanos, cadena de suministro, fabricaci´ on y ventas en una ´ unica base de datos relacional. El c´ odigo que implementa esta integraci´ on debe manejar transacciones complejas, reglas de negocio cambiantes y flujos de aprobaci´ on. Por ejemplo, cuando un cliente realiza un pedido, el software debe verificar el cr´ edito, reservar inventario, programar la producci´ on si es necesario, calcular impuestos y generar una factura, todo en milisegundos y con garant´ ıas ACID. Los lenguajes de programaci´ on utilizados en estos entornos deben ser robustos, con tipado fuerte y excelentes herramientas de depuraci´ on y monitoreo. La transformaci´ on digital tambi´ en implica la apertura de las empresas al exterior mediante APIs (Application Programming Interfaces). Un banco tradicional que expone una API permite que aplicaciones de terceros (fintechs) consulten saldos o realicen transferencias. Una aerol´ ınea expone su API de reservas para que agencias de viajes online puedan vender billetes. El desarrollo de APIs suele realizarse en lenguajes como Python (con frameworks 29
  27. Sesion 2 como Flask o FastAPI), Node.js (JavaScript/TypeScript) o Go,

    que ofrecen alto rendimiento y facilidad para construir servicios RESTful o GraphQL. La documentaci´ on de las APIs se genera autom´ aticamente a partir del c´ odigo mediante herramientas como Swagger/OpenAPI. Adem´ as, el software debe implementar autenticaci´ on (OAuth2, JWT), limitaci´ on de tasa (rate limiting) y versionado para no romper los clientes existentes. Un componente cr´ ıtico de la transformaci´ on digital es la migraci´ on a la nube. Empresas que antes operaban sus propios centros de datos ahora utilizan AWS, Azure o Google Cloud, y el software que desarrollan est´ a dise˜ nado para ejecutarse en contenedores (Docker) orquestados por Kubernetes. Los lenguajes de programaci´ on se combinan con herramientas de infraestructura como c´ odigo (Terraform, Pulumi, AWS CDK) que permiten describir servidores, redes y bases de datos mediante c´ odigo declarativo. Por ejemplo, un equipo puede escribir 200 l´ ıneas de TypeScript usando AWS CDK para desplegar una aplicaci´ on completa con balanceadores de carga, autoescalado y bases de datos. Esto acelera radicalmente los ciclos de desarrollo y reduce los errores humanos. La anal´ ıtica de negocio es otra dimensi´ on clave. Las empresas recogen ingentes cantidades de datos de ventas, clientes, operaciones y redes sociales, y necesitan software que los transforme en informaci´ on ´ util. Los lenguajes de programaci´ on, especialmente Python y R, se han convertido en las herramientas est´ andar para el an´ alisis de datos. Con bibliotecas como pandas, NumPy, y scikit-learn, los analistas pueden limpiar datos, realizar agregaciones complejas, aplicar modelos estad´ ısticos y generar visualizaciones. Estos an´ alisis se incrustan en dashboards interactivos (construidos con frameworks como Dash, Streamlit o Shiny) que los directivos consultan diariamente. Por ejemplo, una cadena minorista puede tener un tablero que muestra en tiempo real las ventas por tienda, los productos m´ as vendidos y la rotaci´ on de inventario, permitiendo ajustar promociones o reabastecer r´ apidamente. La automatizaci´ on de procesos rob´ oticos (RPA) ha permitido que empresas no tecnol´ ogicas automaticen tareas repetitivas que antes realizaban empleados. Un robot de software, escrito en C#, Java o Python (con bibliotecas como Robot Framework), puede extraer datos de un PDF, introducirlos en un sistema ERP, descargar un informe y enviarlo por correo. La ventaja es que no requiere cambiar los sistemas existentes, sino que act´ ua sobre las interfaces de usuario como lo har´ ıa un humano. Sin embargo, el mantenimiento de estos robots es costoso porque cualquier cambio en la interfaz de las aplicaciones (por ejemplo, un bot´ on que se mueve de lugar) rompe el script. Por ello, las empresas est´ an migrando hacia automatizaciones basadas en API, m´ as estables, y hacia la integraci´ on mediante plataformas de integraci´ on como servicio (iPaaS) como Zapier, MuleSoft o Workato. La inteligencia artificial y el machine learning se han convertido en motores de innovaci´ on dentro de las empresas. Los lenguajes de programaci´ on permiten construir sistemas de recomendaci´ on (como los que usa Amazon para sugerir productos), modelos de predicci´ on de demanda (para optimizar inventarios), clasificadores de sentimiento en redes sociales (para monitorear marca) y chatbots de atenci´ on al cliente. Python es el lenguaje dominante en este ´ ambito, pero cada vez m´ as se utilizan plataformas que abstraen parte de la complejidad, como AutoML (Google Cloud AutoML, H2O.ai) que generan c´ odigo autom´ aticamente. Sin embargo, el verdadero valor est´ a en la integraci´ on de estos modelos en los procesos de negocio: un modelo de predicci´ on de abandono de clientes (churn) debe ejecutarse diariamente y alimentar Abraham Zamudio 30 PIT: Python Basico
  28. Sesion 2 un sistema de campa˜ nas de marketing automatizadas,

    todo escrito en c´ odigo. La transformaci´ on digital tambi´ en afecta la cadena de suministro. El software de planificaci´ on de recursos (SCP, Supply Chain Planning) utiliza algoritmos de optimizaci´ on (programaci´ on lineal entera, algoritmos gen´ eticos) escritos en lenguajes como Python (PuLP, OR-Tools) o Julia (JuMP). Estos algoritmos deciden cu´ anto producir, en qu´ e f´ abrica, con qu´ e proveedores y c´ omo distribuir los productos para minimizar costos y cumplir plazos. La complejidad es enorme: una empresa multinacional puede tener cientos de miles de variables y restricciones. El software debe resolver estos problemas en tiempo razonable (horas, no d´ ıas) y ofrecer soluciones que los planificadores humanos puedan entender y ajustar. Un aspecto a menudo pasado por alto es el cambio cultural y organizativo que requiere la transformaci´ on digital. Las empresas necesitan incorporar perfiles tecnol´ ogicos (desarrolladores, ingenieros de datos, DevOps) y adoptar metodolog´ ıas ´ agiles (Scrum, Kanban) que los lenguajes de programaci´ on y las herramientas asociadas facilitan. Los repositorios de c´ odigo (Git), la integraci´ on continua (Jenkins, GitHub Actions) y el despliegue continuo (Argo CD, Spinnaker) se convierten en el sistema nervioso de la organizaci´ on. Las decisiones de negocio se traducen en issues de GitHub, los requisitos se escriben como tests automatizados (TDD, Behaviour-Driven Development) y el software se despliega m´ ultiples veces al d´ ıa. No toda transformaci´ on digital es exitosa. Muchas empresas fracasan por subestimar la complejidad del software heredado (legacy) escrito en lenguajes obsoletos (COBOL, Fortran, PL/I) que mantienen procesos cr´ ıticos. Reemplazar o modernizar ese c´ odigo es costoso y riesgoso. Por ello, surgen estrategias como el estrangulamiento (strangler pattern): construir gradualmente nuevos microservicios en lenguajes modernos (Java, C#, Go, Python) que interceptan llamadas al sistema antiguo hasta que este puede ser apagado. El software de integraci´ on debe enrutar transparentemente las solicitudes, lo que a menudo se implementa con un proxy inverso (NGINX, Envoy) o un API gateway. Otro desaf´ ıo es la seguridad. Cuanto m´ as digitalizada est´ a una empresa, mayor es su superficie de ataque. El software debe implementar principios de seguridad desde el dise˜ no: validaci´ on de entradas, autenticaci´ on multifactor, cifrado de datos en reposo y en tr´ ansito, y monitoreo continuo de intrusiones. Las revisiones de c´ odigo est´ atico (SonarQube, Bandit para Python) y din´ amico (pruebas de penetraci´ on) se integran en el pipeline CI/CD. Los lenguajes de programaci´ on ofrecen diferentes niveles de seguridad: Rust y Go previenen ciertos tipos de errores de memoria, mientras que Python y JavaScript requieren m´ as disciplina por parte del programador. Finalmente, la transformaci´ on digital no es un destino, sino un viaje continuo. Las empresas deben mantenerse actualizadas con nuevos lenguajes y paradigmas. El auge de la computaci´ on sin servidor (serverless) con funciones Lambda (Python, Node.js, Go) est´ a cambiando la forma de pensar el backend. La web assembly (Wasm) permite ejecutar c´ odigo escrito en Rust, C++ o Go en el navegador a velocidad casi nativa, abriendo nuevas posibilidades para aplicaciones empresariales en el cliente. La integraci´ on de grandes modelos de lenguaje (LLM) como GPT-4 a trav´ es de APIs est´ a revolucionando la automatizaci´ on del conocimiento. En este contexto, los lenguajes de programaci´ on son la materia prima de la innovaci´ on empresarial, y su dominio se ha convertido en una competencia estrat´ egica para cualquier organizaci´ on que aspire a Abraham Zamudio 31 PIT: Python Basico
  29. Sesion 2 sobrevivir en el siglo XXI. 4.2. Inteligencia artificial

    y an´ alisis de datos La inteligencia artificial (IA) y el an´ alisis de datos constituyen quiz´ as el campo donde la relaci´ on entre los lenguajes de programaci´ on y la innovaci´ on es m´ as evidente y transformadora. La IA ha pasado de ser una disciplina acad´ emica especializada a convertirse en una tecnolog´ ıa general, con aplicaciones que van desde el reconocimiento facial hasta la conducci´ on aut´ onoma, pasando por el diagn´ ostico m´ edico y la recomendaci´ on de contenido. En el coraz´ on de esta revoluci´ on se encuentran los lenguajes de programaci´ on que permiten expresar algoritmos complejos, manejar vol´ umenes masivos de datos y entrenar modelos con millones de par´ ametros. El ecosistema de la IA est´ a dominado por Python, aunque no de manera exclusiva. La elecci´ on de Python como lenguaje de facto para la investigaci´ on y desarrollo en IA responde a varias razones. Primero, su sintaxis clara y din´ amica permite prototipar r´ apidamente ideas, una caracter´ ıstica esencial en un campo donde la experimentaci´ on es constante. Segundo, cuenta con un ecosistema de bibliotecas cient´ ıficas maduras: NumPy para computaci´ on num´ erica (arrays multidimensionales y operaciones vectorizadas), SciPy para algoritmos cient´ ıficos, pandas para manipulaci´ on de datos tabulares, Matplotlib y Seaborn para visualizaci´ on, y scikit-learn para una amplia gama de algoritmos de aprendizaje autom´ atico cl´ asico (regresi´ on, clasificaci´ on, clustering, reducci´ on de dimensionalidad). Tercero, los frameworks de aprendizaje profundo m´ as populares, TensorFlow y PyTorch, tienen Python como su lenguaje principal (aunque sus n´ ucleos est´ an escritos en C++ para rendimiento). Cuarto, la comunidad de IA ha generado una cantidad ingente de librer´ ıas, tutoriales y modelos preentrenados que reducen la barrera de entrada. El an´ alisis de datos, ´ ıntimamente ligado a la IA, se beneficia de la capacidad de Python para procesar conjuntos de datos que no caben en la memoria principal mediante t´ ecnicas como el procesamiento por lotes y el uso de bibliotecas como Dask o Vaex. Adem´ as, la integraci´ on con SQL a trav´ es de bibliotecas como SQLAlchemy permite extraer datos directamente de bases de datos relacionales. Los analistas de datos escriben scripts que realizan operaciones ETL (extracci´ on, transformaci´ on, carga): extraen datos de m´ ultiples fuentes (archivos CSV, JSON, bases de datos, APIs), los limpian (manejan valores nulos, detectan outliers, normalizan), los transforman (agregan, pivotean, crean caracter´ ısticas) y los cargan en un almac´ en de datos o en un modelo de machine learning. Este flujo de trabajo se ha estandarizado en torno a Jupyter Notebooks, que combinan c´ odigo, visualizaciones y texto explicativo, lo que facilita la reproducibilidad y la colaboraci´ on. En el ´ ambito del aprendizaje autom´ atico cl´ asico, scikit-learn ofrece una API uniforme para dece- nas de algoritmos: regresi´ on lineal, ´ arboles de decisi´ on, bosques aleatorios, m´ aquinas de vectores soporte, k-medias, DBSCAN, PCA, etc. El c´ odigo t´ ıpico para entrenar un clasificador es sor- prendentemente breve: model␣=␣RandomForestClassifier();␣model.fit(X_train,␣y_train);␣predict Detr´ as de esta simplicidad, la biblioteca implementa optimizaciones num´ ericas (en Cython) y maneja detalles como la validaci´ on cruzada, la b´ usqueda de hiperpar´ ametros y la selecci´ on de caracter´ ısticas. Los lenguajes de programaci´ on permiten, adem´ as, integrar estos modelos en sistemas de producci´ on: por ejemplo, serializar el modelo entrenado con ‘pickle‘ o ‘joblib‘ y Abraham Zamudio 32 PIT: Python Basico
  30. Sesion 2 cargarlo en una aplicaci´ on web que sirve

    predicciones mediante una API REST. El aprendizaje profundo ha llevado la IA a otro nivel de complejidad. Las redes neuronales profundas (con decenas o cientos de capas) requieren el c´ omputo de gradientes mediante retropropagaci´ on sobre grafos computacionales de millones de operaciones. Los frameworks como TensorFlow y PyTorch construyen estos grafos din´ amicamente (en modo eager) o est´ aticamente (en modo gr´ afico) y ejecutan las operaciones en GPUs o TPUs para acelerar los c´ alculos. El programador escribe el c´ odigo que define la arquitectura de la red (capas convolucionales, recurrentes, de atenci´ on, etc.), la funci´ on de p´ erdida, el optimizador (Adam, SGD) y el bucle de entrenamiento. Por ejemplo, en PyTorch: 1 class MiRed(nn.Module): 2 def __init__(self): 3 super ().__init__ () 4 self.conv1 = nn.Conv2d (3, 16, 3) 5 self.fc1 = nn.Linear (16*30*30 , 10) 6 def forward(self , x): 7 x = F.relu(self.conv1(x)) 8 x = x.view(x.size (0), -1) 9 return self.fc1(x) Este c´ odigo es legible y expresivo, pero la ejecuci´ on en GPU es gestionada autom´ aticamente por el framework. Los lenguajes de programaci´ on tambi´ en permiten el uso de t´ ecnicas avanzadas como el aprendizaje por transferencia (cargar modelos preentrenados como ResNet o BERT y afinarlos con datos propios), el aprendizaje por refuerzo (bibliotecas como Stable-Baselines3) y el aprendizaje autosupervisado. El an´ alisis de datos a gran escala ha propiciado el desarrollo de lenguajes y sistemas espec´ ıficos. Apache Spark, con sus APIs en Scala, Python (PySpark) y Java, permite procesar terabytes de datos distribuidos en cl´ usteres. El programador escribe transformaciones declarativas (‘map‘, ‘filter‘, ‘reduceByKey‘) que Spark convierte en un plan de ejecuci´ on optimizado. SQL tambi´ en se ha mantenido vigente como lenguaje declarativo para datos estructurados, y los motores de bases de datos modernos (PostgreSQL, ClickHouse, BigQuery) permiten ejecutar consultas complejas con eficiencia asombrosa. Para datos no estructurados (texto, im´ agenes, audio), Python es nuevamente la herramienta de elecci´ on, con bibliotecas como NLTK, spaCy (procesamiento de lenguaje natural), OpenCV (visi´ on por computadora) y librosa (audio). Un avance reciente es la irrupci´ on de los grandes modelos de lenguaje (LLM) como GPT-4, Llama, Gemini. Estos modelos se entrenan con billones de tokens de texto y cientos de miles de millones de par´ ametros, requiriendo cl´ usteres de miles de GPUs y software de entrenamiento distribuido escrito en Python y C++. Pero m´ as all´ a del entrenamiento, los lenguajes de programaci´ on permiten interactuar con estos modelos a trav´ es de APIs o mediante bibliotecas como Hugging Face Transformers, que ofrece una interfaz unificada para cargar y utilizar cientos de modelos preentrenados. Un programador puede escribir unas pocas l´ ıneas de Python para generar texto, resumir documentos, traducir idiomas o responder preguntas. Esta accesibilidad est´ a democratizando la IA, permitiendo que incluso peque˜ nas empresas integren capacidades de lenguaje natural en sus productos. Sin embargo, el desarrollo de IA conlleva responsabilidades ´ eticas y t´ ecnicas. Los sesgos en Abraham Zamudio 33 PIT: Python Basico
  31. Sesion 2 los datos de entrenamiento se traducen en sesgos

    en los modelos, lo que puede perpetuar discriminaci´ on. Los lenguajes de programaci´ on permiten implementar t´ ecnicas de mitigaci´ on de sesgos (reequilibrado de clases, aprendizaje adversario) y de explicabilidad (SHAP, LIME) para que los modelos sean menos ¸ cajas negras”. Adem´ as, la seguridad es cr´ ıtica: los modelos pueden ser atacados con ejemplos adversarios (peque˜ nas perturbaciones en la entrada que causan clasificaciones err´ oneas). La investigaci´ on en IA robusta se traduce en c´ odigo que incluye defensas como el entrenamiento adversario o la detecci´ on de anomal´ ıas. El futuro de la IA y los lenguajes de programaci´ on apunta hacia una mayor integraci´ on. Los sistemas de generaci´ on autom´ atica de c´ odigo (GitHub Copilot, CodeWhisperer) ya utilizan LLMs entrenados en repositorios de c´ odigo para sugerir l´ ıneas o funciones completas. Esto acelera la escritura de c´ odigo, pero tambi´ en plantea interrogantes sobre la calidad, la seguridad y los derechos de autor. Por otro lado, los lenguajes de programaci´ on espec´ ıficos de dominio para IA est´ an surgiendo: Mojo, un superconjunto de Python dise˜ nado para acelerar el c´ odigo num´ erico mediante compilaci´ on avanzada y acceso de bajo nivel a hardware, promete unir la productividad de Python con el rendimiento de C. Tambi´ en se investigan lenguajes diferenciables, donde cualquier programa puede ser autom´ aticamente diferenciado para aplicaciones de optimizaci´ on basada en gradientes. En conclusi´ on, la inteligencia artificial y el an´ alisis de datos son motores de innovaci´ on impulsados por lenguajes de programaci´ on que han democratizado el acceso a t´ ecnicas avanzadas. Python se erige como el veh´ ıculo principal, pero no el ´ unico, y su ecosistema sigue creciendo. La capacidad de procesar datos y extraer predicciones se ha convertido en una ventaja competitiva para empresas, gobiernos e investigadores. A medida que la IA se integra en todos los aspectos de la sociedad, dominar estos lenguajes se vuelve una habilidad fundamental, no solo para especialistas sino para cualquier profesional que desee aprovechar los datos en la toma de decisiones. 4.3. Ciencia, medicina y tecnolog´ ıa Los lenguajes de programaci´ on han revolucionado la pr´ actica cient´ ıfica, la investigaci´ on m´ edica y el desarrollo tecnol´ ogico de una manera que recuerda a la invenci´ on del telescopio o el microscopio: ampl´ ıan las capacidades humanas para observar, simular y transformar la realidad. En la ciencia contempor´ anea, el c´ odigo ya no es una mera herramienta auxiliar, sino un componente esencial del m´ etodo cient´ ıfico, desde la adquisici´ on de datos hasta la publicaci´ on de resultados, pasando por la simulaci´ on num´ erica, el an´ alisis estad´ ıstico y la visualizaci´ on compleja. En las ciencias f´ ısicas y de la ingenier´ ıa, los lenguajes de programaci´ on permiten resolver ecuaciones que no tienen soluci´ on anal´ ıtica. Por ejemplo, la din´ amica de fluidos computacional (CFD) resuelve las ecuaciones de Navier-Stokes mediante m´ etodos de diferencias finitas, vol´ umenes finitos o elementos finitos. Software como OpenFOAM (escrito en C++) o FEniCS (C++ y Python) permiten simular el flujo de aire alrededor de un avi´ on, la combusti´ on en un motor o el clima global. El investigador describe el dominio geom´ etrico, las condiciones de contorno y las propiedades del fluido, y el c´ odigo discretiza las ecuaciones en una malla y avanza en el tiempo resolviendo sistemas lineales masivos (con millones de inc´ ognitas). El Abraham Zamudio 34 PIT: Python Basico
  32. Sesion 2 rendimiento es cr´ ıtico, por lo que los

    n´ ucleos computacionales se escriben en C++ o Fortran, pero las capas de pre y postprocesamiento suelen usar Python por su flexibilidad. En qu´ ımica computacional y biolog´ ıa estructural, los lenguajes de programaci´ on permiten simular interacciones moleculares a nivel at´ omico. GROMACS, NAMD y AMBER (en C++ y Fortran) realizan din´ amica molecular, integrando las ecuaciones de movimiento de Newton para miles o millones de ´ atomos, con fuerzas derivadas de campos de fuerza (como CHARMM o AMBER). Para estudiar el plegamiento de prote´ ınas, el plegamiento de ARN o la uni´ on de f´ armacos a receptores, se utilizan scripts en Python que preparan los sistemas, ejecutan las simulaciones en supercomputadores y analizan las trayectorias resultantes (distancias, ´ angulos, energ´ ıa libre). La combinaci´ on de lenguajes de alto rendimiento y lenguajes de alto nivel es un patr´ on recurrente. La astronom´ ıa y la cosmolog´ ıa han sido transformadas por el software. Los telescopios modernos generan petabytes de datos por noche, y los lenguajes de programaci´ on son esenciales para procesarlos. Los pipelines de calibraci´ on (que corrigen el ruido de los detectores, la respuesta del instrumento y la astrometr´ ıa) se escriben en Python (con bibliotecas como astropy, scipy, numpy) y se ejecutan en cl´ usteres. La detecci´ on de objetos astron´ omicos (estrellas, galaxias, supernovas) utiliza algoritmos de procesamiento de im´ agenes (filtros convolucionales, segmentaci´ on) que se programan en Python con OpenCV o scikit-image. La simulaci´ on de formaci´ on de estructuras a gran escala (N-body simulations, hidrodin´ amica cosmol´ ogica) requiere c´ odigo en C++ o CUDA (para GPUs) que resuelve la gravedad y la hidrodin´ amica en vol´ umenes de miles de millones de part´ ıculas. Python se usa para analizar los snapshots de estas simulaciones y generar visualizaciones (con matplotlib, plotly, o herramientas especializadas como yt). Los cat´ alogos astron´ omicos se consultan mediante SQL, y la clasificaci´ on de objetos (separar estrellas de galaxias, identificar transitorios) emplea machine learning (scikit-learn, TensorFlow). El resultado ha sido un avance sin precedentes en el conocimiento del universo, desde la detecci´ on de ondas gravitacionales (LIGO, cuyos an´ alisis de datos utilizaron Python) hasta la imagen del agujero negro M87* producida por el Event Horizon Telescope. En ciencias de la Tierra y el clima, los modelos de circulaci´ on general (GCMs) como CESM o MPI-ESM son programas escritos en Fortran que simulan la atm´ osfera, los oc´ eanos, la cri´ osfera y la biosfera. Estos c´ odigos tienen cientos de miles de l´ ıneas y se ejecutan en supercomputadoras durante semanas para proyectar el clima futuro. Los lenguajes de programaci´ on permiten tambi´ en la asimilaci´ on de datos (combinar observaciones con modelos) mediante t´ ecnicas como el filtro de Kalman o el an´ alisis variacional, implementadas en C++ y Python. Los cient´ ıficos del clima escriben scripts en Python para analizar las salidas de los modelos: calcular promedios globales, tendencias, anomal´ ıas, y generar los gr´ aficos que aparecen en informes del IPCC. La biblioteca Xarray, que extiende pandas para datos multidimensionales etiquetados (latitud, longitud, tiempo), se ha convertido en una herramienta indispensable. La medicina ha sido quiz´ as el campo donde la programaci´ on ha tenido un impacto m´ as directo en la vida humana. La secuenciaci´ on gen´ etica masiva (Next-Generation Sequencing) produce cientos de gigabytes por muestra, y los algoritmos de alineamiento (BWA, Bowtie) y de llamada de variantes (GATK, FreeBayes) est´ an escritos en C++ y Python. Estos programas comparan el ADN del paciente con una referencia, detectan mutaciones y las anotan con bases de datos cl´ ınicas. El diagn´ ostico de enfermedades gen´ eticas raras a menudo depende de Abraham Zamudio 35 PIT: Python Basico
  33. Sesion 2 pipelines de software que filtran las variantes seg´

    un frecuencia poblacional, impacto funcional y herencia familiar. Python se usa para construir estos pipelines (con Snakemake o Nextflow) y para analizar los resultados. La oncolog´ ıa de precisi´ on utiliza secuenciaci´ on de tumores para identificar mutaciones conductoras y sugerir terapias dirigidas; todo ello mediado por software. La imagen m´ edica es otro dominio crucial. Los algoritmos de reconstrucci´ on tomogr´ afica (Tomograf´ ıa Computarizada, Resonancia Magn´ etica, PET) transforman proyecciones brutas en im´ agenes tridimensionales. La reconstrucci´ on filtrada (FBP) y los m´ etodos iterativos (SIRT, ART) se implementan en C++ y Python (con bibliotecas como PyTorch para reconstrucci´ on basada en aprendizaje profundo). El software de segmentaci´ on (delimitar ´ organos o tumores) ha pasado de algoritmos cl´ asicos (region growing, level sets) a redes neuronales convolucionales profundas (U-Net, SegNet). Los m´ edicos utilizan herramientas como 3D Slicer (Python y C++) o ITK-SNAP para visualizar y manipular im´ agenes. En radioterapia, el software de planificaci´ on calcula la dosis de radiaci´ on entregada a un tumor minimizando la exposici´ on a ´ organos sanos, resolviendo ecuaciones de transporte de radiaci´ on con m´ etodos de Monte Carlo o algoritmos deterministas. Todo ello es c´ odigo que salva vidas. La inteligencia artificial en medicina est´ a transformando el diagn´ ostico. Modelos de aprendizaje profundo entrenados con millones de radiograf´ ıas, tomograf´ ıas o muestras histol´ ogicas pueden detectar neumon´ ıa, c´ ancer de mama, retinopat´ ıa diab´ etica o fracturas con precisi´ on comparable o superior a la de especialistas humanos. El software para estos sistemas se escribe en Python con PyTorch o TensorFlow, y se despliega en hospitales como herramientas de apoyo al diagn´ ostico. La regulaci´ on es estricta: los dispositivos m´ edicos basados en software deben pasar por la FDA (Food and Drug Administration) o la EMA (European Medicines Agency), lo que exige que el c´ odigo cumpla con est´ andares de calidad, trazabilidad y validaci´ on cl´ ınica. La epidemiolog´ ıa tambi´ en se ha beneficiado enormemente. Durante la pandemia de COVID-19, modelos epidemiol´ ogicos (SEIR, agent-based models) programados en Python, R o Julia permitieron predecir la propagaci´ on del virus, evaluar el impacto de las intervenciones (distanciamiento, mascarillas, vacunaci´ on) y estimar la presi´ on hospitalaria. Los repositorios p´ ublicos de c´ odigo (GitHub) facilitaron la colaboraci´ on global entre cient´ ıficos. El software de seguimiento de contactos (como COVID Alert) utiliz´ o lenguajes m´ oviles (Java/Kotlin, Swift) y backend (Node.js, Python) para notificar a los usuarios de exposiciones de riesgo, preservando la privacidad mediante criptograf´ ıa. En tecnolog´ ıa e ingenier´ ıa, los lenguajes de programaci´ on son la base del dise˜ no asistido por ordenador (CAD) y la simulaci´ on. El software CAD (SolidWorks, AutoCAD, FreeCAD) permite modelar piezas y ensamblajes en 3D, con lenguajes de scripting internos (AutoLISP, Python) para automatizar tareas repetitivas. El an´ alisis por elementos finitos (FEA) con software como Ansys, Abaqus o Calculix (en Fortran y C++) calcula tensiones, deformaciones, modos de vibraci´ on y fatiga de componentes sometidos a cargas. Los lenguajes de programaci´ on permiten acoplar diferentes simulaciones (multif´ ısica): por ejemplo, un motor el´ ectrico requiere an´ alisis electromagn´ etico, t´ ermico y estructural, y el c´ odigo de acoplamiento (a menudo en Python) orquesta la ejecuci´ on y el intercambio de datos entre solvers especializados. En la industria aeroespacial, el software de control de vuelo se escribe en C++ o Ada y Abraham Zamudio 36 PIT: Python Basico
  34. Sesion 2 se verifica formalmente. Los sistemas de guiado, navegaci´

    on y control (GNC) implementan algoritmos de filtrado de Kalman para fusionar sensores (GPS, IMU, radar) y calcular la posici´ on y orientaci´ on, y leyes de control PID o LQR para gobernar los actuadores. El c´ odigo debe ser seguro y confiable, porque un error puede ser catastr´ ofico. Los lenguajes de programaci´ on tambi´ en se utilizan para dise˜ nar trayectorias de misiones interplanetarias, resolviendo problemas de optimizaci´ on din´ amica (m´ ınimo consumo de combustible, ventanas de lanzamiento). La NASA y la ESA publican gran parte de este software como c´ odigo abierto. En resumen, la ciencia, la medicina y la tecnolog´ ıa dependen hoy de lenguajes de programaci´ on para simular fen´ omenos que no podemos experimentar directamente, analizar datos que superan la capacidad humana de procesamiento, y controlar instrumentos y dispositivos con precisi´ on. El c´ odigo se ha convertido en el lenguaje de la investigaci´ on moderna, y su dominio es tan fundamental como las matem´ aticas o la estad´ ıstica para cualquier cient´ ıfico o ingeniero. Los lenguajes evolucionan para adaptarse a las necesidades de cada disciplina: Python por su expresividad y ecosistema, Julia por su velocidad en c´ omputo cient´ ıfico, C++ por su rendimiento en simulaciones masivas, y lenguajes espec´ ıficos como Stan para modelado bayesiano. La frontera de la ciencia seguir´ a expandi´ endose gracias al software. 4.4. Videojuegos, cine y contenido multimedia La industria del entretenimiento digital (videojuegos, cine con efectos visuales, animaci´ on, realidad virtual y aumentada) es uno de los motores m´ as visibles de la innovaci´ on en lenguajes de programaci´ on. No solo porque mueve miles de millones de d´ olares, sino porque exige un rendimiento extremo, gr´ aficos realistas, inteligencia artificial de personajes, f´ ısica simulada y experiencias interactivas. Detr´ as de cada juego galardonado, cada pel´ ıcula de superh´ eroes llena de efectos y cada experiencia inmersiva de realidad virtual hay millones de l´ ıneas de c´ odigo escritas en una variedad de lenguajes, con enfoques que combinan eficiencia y flexibilidad. Los videojuegos son quiz´ as el software m´ as complejo que un consumidor ejecuta en su computadora o consola. Un juego moderno AAA (grande presupuesto) tiene sistemas de renderizado 3D, f´ ısica, inteligencia artificial, audio, entrada de usuario, red para multijugador y scripting de niveles. El motor del juego es el coraz´ on de este software. Los motores m´ as conocidos son Unreal Engine (c´ odigo en C++), Unity (C#), Godot (GDScript y C++), y motores propietarios como Frostbite (EA) o RAGE (Rockstar). El lenguaje principal es C++ por su control preciso de la memoria y el rendimiento, especialmente cr´ ıtico para el bucle de juego que debe ejecutarse a 60 o m´ as cuadros por segundo. En C++, el programador puede usar optimizaciones a bajo nivel (como SIMD, gesti´ on manual de la cach´ e, multihilo) que son dif´ ıciles de lograr en lenguajes con recolecci´ on de basura. El renderizado gr´ afico es la parte m´ as espectacular. Utiliza APIs de bajo nivel como DirectX 12, Vulkan o Metal, que permiten programar la GPU (unidad de procesamiento gr´ afico) mediante shaders. Los shaders son peque˜ nos programas que se ejecutan en paralelo en miles de n´ ucleos de la GPU para transformar v´ ertices (vertex shader) y calcular el color de cada p´ ıxel (fragment shader). Estos programas se escriben en lenguajes espec´ ıficos como HLSL (High-Level Shading Language) o GLSL. El motor del juego compila estos shaders y los env´ ıa a la GPU junto con los modelos, texturas y luces. T´ ecnicas avanzadas como el ray tracing Abraham Zamudio 37 PIT: Python Basico
  35. Sesion 2 (trazado de rayos) requieren shaders adicionales y son

    posibles gracias a las GPU modernas. El c´ odigo del motor debe gestionar la memoria de la GPU, cargar texturas de manera as´ ıncrona y ordenar los objetos transparentes, entre otras muchas tareas. La f´ ısica en los juegos es otro componente imprescindible. Los motores de f´ ısica (PhysX, Bullet, Box2D) simulan colisiones, cuerpos r´ ıgidos, articulaciones, fluidos o telas. Estos motores est´ an escritos en C++ y utilizan algoritmos como la detecci´ on de colisiones mediante ´ arboles de bounding volumes (BVH), la resoluci´ on de contactos mediante el m´ etodo de Gauss-Seidel, e integraci´ on temporal con m´ etodos de Euler o Verlet. El programador puede ajustar par´ ametros como la gravedad, la fricci´ on, o la elasticidad, y recibir callbacks cuando ocurren colisiones. Para juegos multijugador, la f´ ısica debe ser determinista (mismos resultados en todas las m´ aquinas) o compensarse mediante predicci´ on y reconciliaci´ on. La inteligencia artificial de los personajes no jugadores (NPCs) ha avanzado enormemente. Los comportamientos simples se implementan con m´ aquinas de estado finito (FSM) o ´ arboles de comportamiento (behavior trees), que se pueden dise˜ nar visualmente en el editor del motor. Para comportamientos m´ as complejos (como enemigos que aprenden), se utilizan sistemas de planificaci´ on de acciones (GOAP) o aprendizaje por refuerzo. La detecci´ on de caminos (pathfinding) se realiza con algoritmos como A* sobre grafos de navegaci´ on (navmesh). Todo esto se programa en C++ para rendimiento, pero los dise˜ nadores de niveles pueden modificar el comportamiento usando lenguajes de scripting ligeros, como Lua o Python, que se incrustan en el motor. Esto permite iterar r´ apidamente sin recompilar el juego completo. El audio en los juegos tambi´ en requiere programaci´ on: motores como FMOD o Wwise permiten mezclar sonidos, aplicar efectos (reverb, Doppler), y hacer que los sonidos reaccionen al entorno (por ejemplo, el eco en una cueva). El c´ odigo en C++ o C# controla la reproducci´ on, el volumen y la espacializaci´ on. En el cine, los efectos visuales (VFX) y la animaci´ on por computadora (CGI) han transformado la industria. Pel´ ıculas como .Avatar”, .El Se˜ nor de los Anillos.o .El Libro de la Selva.est´ an repletas de personajes y entornos generados por software. Las principales herramientas (Autodesk Maya, Blender, Houdini, Nuke) tienen lenguajes de scripting integrados: Maya usa Python y MEL, Blender utiliza Python, Houdini ofrece VEX y Python, Nuke usa Python y TCL. Estos scripts automatizan tareas repetitivas (por ejemplo, renombrar cientos de capas), crean efectos procedurales (como generar un bosque con miles de ´ arboles colocados aleatoriamente) y unen diferentes etapas del pipeline de producci´ on. El renderizado fotorrealista en cine utiliza motores de renderizado como RenderMan (Pixar), Arnold (Solid Angle), o Cycles (Blender). Estos motores implementan algoritmos de trazado de rayos (ray tracing) y de transporte de luz global, escritos en C++ con optimizaciones masivas. Un solo cuadro puede tardar horas en renderizarse en una granja de servidores. El software de renderizado se ejecuta en paralelo en miles de n´ ucleos, y los programadores desarrollan shaders (en lenguajes como Open Shading Language) que describen c´ omo reacciona un material a la luz. La animaci´ on de personajes implica sistemas de rigging (esqueletos), cinem´ atica inversa, anima- ci´ on por captura de movimiento, y blend shapes (morfismos). Los lenguajes de programaci´ on permiten manipular matrices y quaternions para representar rotaciones, resolver sistemas de Abraham Zamudio 38 PIT: Python Basico
  36. Sesion 2 ecuaciones para la cinem´ atica inversa, e interpolar

    animaciones con curvas de Bezier. Todo esto se expone a los artistas mediante interfaces gr´ aficas, pero la l´ ogica subyacente es puro c´ odigo. La realidad virtual (VR) y aumentada (AR) agregan capas de complejidad. El software debe rastrear la cabeza y las manos del usuario con baja latencia (de lo contrario, causa mareo), renderizar la escena en dos vistas (una para cada ojo) y presentar estereoscop´ ıa y correcci´ on de lentes. Se usan SDKs como OpenXR (C/C++) y motores como Unity y Unreal con soporte VR. El c´ odigo debe manejar la interacci´ on 6DOF (seis grados de libertad), la detecci´ on de colisiones con el entorno virtual, y la representaci´ on de las manos o controladores. El contenido multimedia, m´ as all´ a de juegos y cine, incluye herramientas de edici´ on de video (Adobe Premiere, DaVinci Resolve), audio (Ableton Live, Audacity), y gr´ aficos (Photoshop, GIMP). Estas aplicaciones son programas enormes, escritos principalmente en C++ por rendimiento, con plug-ins que se pueden desarrollar en Python o Lua. Por ejemplo, en DaVinci Resolve, se pueden escribir scripts en Python para automatizar la creaci´ on de subt´ ıtulos o la correcci´ on de color en lote. Un avance reciente es el uso de inteligencia artificial generativa para crear contenido. Modelos como Stable Diffusion o DALL-E generan im´ agenes a partir de texto, y se est´ an integrando en herramientas de dise˜ no. Los videojuegos experimentan con generaci´ on procedural de niveles, quests o di´ alogos, usando redes neuronales entrenadas con grandes corpus. Todo ello requiere programaci´ on en Python para el entrenamiento, y C++ para la inferencia en tiempo real. Los lenguajes de programaci´ on tambi´ en permiten la distribuci´ on de juegos y pel´ ıculas. Las plataformas de streaming como Netflix, Disney+, o Steam tienen backends escritos en lenguajes como Java, Go, Python, y utilizan sistemas de recomendaci´ on y entrega de contenido (CDN). La protecci´ on de contenido contra pirater´ ıa (DRM) implica criptograf´ ıa y ofuscaci´ on de c´ odigo. En conclusi´ on, los lenguajes de programaci´ on son la base invisible del entretenimiento digital moderno. Desde el C++ de bajo nivel que impulsa los motores de juego y renderizado, hasta el Python que automatiza pipelines de producci´ on y el HLSL que programa las GPU, pasando por los lenguajes de scripting que dan flexibilidad a los artistas, la industria del videojuego y el cine es un ecosistema donde la innovaci´ on en lenguajes y herramientas se traduce directamente en experiencias m´ as inmersivas y espectaculares. La demanda de rendimiento y realismo seguir´ a empujando los l´ ımites de la ingenier´ ıa de software, y los lenguajes evolucionar´ an para hacer m´ as productivo el desarrollo de contenido multimedia. 4.5. Impacto en la econom´ ıa global El impacto de los lenguajes de programaci´ on en la econom´ ıa global es dif´ ıcil de exagerar. Pr´ acticamente todos los sectores econ´ omicos, desde la agricultura hasta la banca, pasando por la manufactura y los servicios, dependen del software para operar. Los lenguajes de programaci´ on son la herramienta que permite crear ese software, y por tanto, se han convertido en un factor de producci´ on esencial, comparable al capital f´ ısico o al trabajo. Estimar el valor econ´ omico agregado por los lenguajes de programaci´ on es complejo, pero podemos analizar su Abraham Zamudio 39 PIT: Python Basico
  37. Sesion 2 impacto a trav´ es de m´ ultiples dimensiones:

    productividad, innovaci´ on, empleo, comercio y estructura de mercado. La productividad es quiz´ as el canal m´ as directo. Los lenguajes de programaci´ on permiten automatizar tareas repetitivas, reducir errores y acelerar procesos. Un estudio de la OCDE estim´ o que la digitalizaci´ on, basada en software, podr´ ıa aumentar la productividad total de los factores entre 0.5 % y 1.5 % anual en las econom´ ıas avanzadas. Cada vez que una empresa reemplaza una hoja de c´ alculo manual con un sistema automatizado, o cuando un fabricante instala robots controlados por software, est´ a obteniendo ganancias de productividad. Los lenguajes de programaci´ on, al facilitar la creaci´ on de dicho software, multiplican la eficiencia del trabajo humano. Por ejemplo, un script en Python que procesa miles de facturas en minutos libera a los contables para tareas de mayor valor a˜ nadido. A escala macroecon´ omica, estas ganancias se acumulan y explican gran parte del crecimiento de la productividad desde la d´ ecada de 1990. La innovaci´ on es otro motor econ´ omico impulsado por los lenguajes de programaci´ on. Las empresas que adoptan tecnolog´ ıas digitales pueden crear nuevos productos y servicios, acceder a nuevos mercados y mejorar su posicionamiento competitivo. La econom´ ıa de plataformas (Amazon, Uber, Airbnb, Alibaba) no existir´ ıa sin el software que conecta oferta y demanda a escala global. Estas plataformas generan un valor econ´ omico enorme: Amazon representa aproximadamente el 40 % del comercio electr´ onico en EE.UU., y Uber factura decenas de miles de millones de d´ olares al a˜ no. Detr´ as de estas plataformas hay cientos de miles de l´ ıneas de c´ odigo escritas en Java, Python, Go, JavaScript y otros lenguajes. La capacidad de iterar r´ apidamente (gracias a lenguajes de alto nivel y herramientas de desarrollo ´ agil) permite a estas empresas experimentar, lanzar nuevas funciones y responder a la competencia. La econom´ ıa del software y los servicios de TI se ha convertido en un sector por derecho propio. Seg´ un estimaciones de Gartner y IDC, el gasto global en software alcanz´ o los 600 mil millones de d´ olares en 2023, y los servicios de TI asociados superaron el bill´ on de d´ olares. Empresas como Microsoft, Oracle, SAP, Salesforce, Adobe y VMware generan ingresos multimillonarios vendiendo software (o suscripciones) que est´ a escrito en lenguajes de programaci´ on. El empleo directo de desarrolladores de software supera los 26 millones en todo el mundo, y la productividad de estos desarrolladores est´ a directamente relacionada con la calidad de los lenguajes que utilizan. Los lenguajes m´ as productivos (como Python para an´ alisis de datos, o JavaScript para desarrollo web) permiten que un desarrollador resuelva problemas m´ as complejos en menos tiempo, reduciendo los costos de desarrollo y acelerando la entrega. El comercio internacional tambi´ en ha sido transformado por los lenguajes de programaci´ on. El software se distribuye digitalmente sin costos de transporte f´ ısico, lo que ha llevado a un enorme crecimiento del comercio de servicios digitales. Empresas indias de desarrollo de software (Tata Consultancy, Infosys) exportan servicios por valor de decenas de miles de millones de d´ olares, utilizando lenguajes como Java, .NET o Python para sus clientes occidentales. El c´ odigo se convierte as´ ı en un producto de exportaci´ on de alto valor a˜ nadido. Adem´ as, las plataformas de comercio electr´ onico permiten que peque˜ nas empresas de cualquier pa´ ıs vendan a clientes globales, gracias al software de log´ ıstica, pago y traducci´ on. La econom´ ıa de los ”gig workers”(freelancers) se apoya en plataformas como Upwork o Fiverr, donde los programadores ofrecen sus servicios utilizando lenguajes espec´ ıficos. Abraham Zamudio 40 PIT: Python Basico
  38. Sesion 2 El impacto en la estructura del mercado laboral

    es profundo. La demanda de profesionales con habilidades de programaci´ on ha crecido mucho m´ as r´ apido que la oferta, creando brechas de talento y aumentando los salarios. Los desarrolladores de software, especialmente los especializados en lenguajes demandados (Python, JavaScript, Go, Rust), gozan de altos ingresos y baja tasa de desempleo. Pero m´ as all´ a de los programadores profesionales, muchas profesiones tradicionales (contables, ingenieros, cient´ ıficos, dise˜ nadores) requieren ahora competencias b´ asicas de programaci´ on para automatizar tareas y analizar datos. Por ejemplo, un contable que sabe Python puede auditar transacciones mucho m´ as r´ apido; un bi´ ologo que sabe Python puede procesar datos gen´ omicos. La alfabetizaci´ on en lenguajes de programaci´ on se ha convertido en una competencia transversal. Los pa´ ıses que invierten en educaci´ on en programaci´ on (como Estonia, Finlandia o Corea del Sur) obtienen ventajas competitivas. Los lenguajes de programaci´ on tambi´ en afectan la distribuci´ on de la renta. Por un lado, reducen la desigualdad al permitir que personas de cualquier origen puedan desarrollar software y venderlo globalmente (el costo de entrada es solo una computadora e internet). Por otro lado, la automatizaci´ on puede desplazar trabajos rutinarios (operadores de datos, cajeros, administrativos), lo que podr´ ıa aumentar la desigualdad si los trabajadores desplazados no se recapacitan. La econom´ ıa global enfrenta el desaf´ ıo de gestionar esta transici´ on, invirtiendo en educaci´ on y protecci´ on social. Los lenguajes de programaci´ on, al ser la herramienta de automatizaci´ on, son un factor clave en este debate. La innovaci´ on en lenguajes de programaci´ on tambi´ en tiene un impacto econ´ omico indirecto. Los lenguajes m´ as recientes, como Rust, ofrecen ventajas de seguridad y concurrencia, lo que reduce los costos de mantenimiento y las vulnerabilidades de software. El coste de los fallos de software (bugs) se estima en cientos de miles de millones de d´ olares anuales (p´ erdida de productividad, brechas de seguridad, demandas judiciales). Elegir un lenguaje que prevenga ciertos errores (por ejemplo, Rust evita los problemas de memoria que causan el 70 % de las vulnerabilidades de seguridad en C++) genera ahorros significativos para la econom´ ıa. Adem´ as, los lenguajes que facilitan el paralelismo permiten aprovechar mejor el hardware multin´ ucleo, aumentando la eficiencia energ´ etica de los centros de datos, lo que reduce costos y emisiones de carbono. A nivel macroecon´ omico, la adopci´ on de lenguajes de programaci´ on est´ a vinculada a la productividad multifactorial. Un estudio del Banco Mundial encontr´ o que un aumento del 10 % en la penetraci´ on del software en una econom´ ıa se asocia con un incremento del 0.5 % en el PIB per c´ apita a largo plazo. Los pa´ ıses l´ ıderes en desarrollo de software (Estados Unidos, India, Israel, Reino Unido, China) muestran tasas de crecimiento superiores. La creaci´ on de unicornios (startups valoradas en m´ as de mil millones de d´ olares) basados en software es un fen´ omeno global, y muchos de ellos utilizan lenguajes de programaci´ on como Python (Dropbox, Instagram), Java (LinkedIn, Netflix) o JavaScript (MongoDB, Slack). La capacidad de una regi´ on para formar programadores y fomentar comunidades en torno a lenguajes espec´ ıficos se ha convertido en una pol´ ıtica de desarrollo econ´ omico. Finalmente, los lenguajes de programaci´ on tienen un impacto en la resiliencia econ´ omica. Durante la pandemia de COVID-19, las empresas que ya hab´ ıan adoptado software pudieron cambiar r´ apidamente al teletrabajo, continuar operando y atender la demanda de servicios digitales. Los lenguajes que permiten el desarrollo r´ apido de aplicaciones web y m´ oviles Abraham Zamudio 41 PIT: Python Basico
  39. Sesion 2 (JavaScript, Python, Dart/Flutter) facilitaron a los gobiernos y

    empresas crear aplicaciones de rastreo, telemedicina y comercio en l´ ınea. La econom´ ıa digital, construida sobre lenguajes de programaci´ on, demostr´ o ser m´ as resistente a los choques que la econom´ ıa anal´ ogica. En conclusi´ on, los lenguajes de programaci´ on son un motor del crecimiento econ´ omico moderno, no solo como sector en s´ ı mismos, sino como habilitadores de la transformaci´ on digital en toda la econom´ ıa. Su impacto se mide en productividad, innovaci´ on, empleo, comercio y bienestar. La elecci´ on de qu´ e lenguaje aprender o utilizar tiene implicaciones microecon´ omicas (para un desarrollador o una empresa) y macroecon´ omicas (para la competitividad de un pa´ ıs). A medida que la automatizaci´ on y la inteligencia artificial sigan avanzando, el dominio de los lenguajes de programaci´ on ser´ a una habilidad cada vez m´ as valiosa, y su evoluci´ on continuar´ a moldeando el panorama econ´ omico global en las pr´ oximas d´ ecadas. Abraham Zamudio 42 PIT: Python Basico
  40. Cap´ ıtulo 5 ¿Qu´ e es Python y por qu´

    e se volvi´ o tan popular? 5.1. Origen e historia de Python Python es un lenguaje de programaci´ on de alto nivel, interpretado, de tipado din´ amico y multiparadigma, creado por Guido van Rossum a finales de la d´ ecada de 1980. Su nombre no proviene de la serpiente, sino del grupo c´ omico brit´ anico Monty Python, del cual Van Rossum era admirador. Esta elecci´ on ya anticipaba una filosof´ ıa de dise˜ no que privilegia la diversi´ on, la simplicidad y la claridad sobre la rigidez acad´ emica. La historia de Python es la cr´ onica de c´ omo un proyecto personal, nacido en el centro de investigaci´ on CWI (Centrum Wiskunde & Informatica) en los Pa´ ıses Bajos, se convirti´ o en uno de los lenguajes m´ as influyentes del siglo XXI, utilizado por gigantes tecnol´ ogicos, cient´ ıficos, educadores y principiantes por igual. La gestaci´ on de Python comenz´ o en diciembre de 1989, cuando Guido van Rossum buscaba un pasatiempo durante las vacaciones de Navidad. En esa ´ epoca, trabajaba en el sistema operativo distribuido Amoeba, y necesitaba un lenguaje de scripting que fuera m´ as potente que el shell de Unix pero m´ as accesible que C. Se inspir´ o en el lenguaje ABC, desarrollado en el CWI, que destacaba por su legibilidad y facilidad de uso, pero que no hab´ ıa logrado ´ exito comercial debido a su falta de apertura y a limitaciones t´ ecnicas. Van Rossum decidi´ o tomar las buenas ideas de ABC (indentaci´ on para bloques, tipos de datos de alto nivel, manejo autom´ atico de memoria) y combinarlas con una sintaxis m´ as extensible, una mejor integraci´ on con el sistema operativo y una filosof´ ıa de c´ odigo abierto. As´ ı naci´ o Python, cuyo int´ erprete vio la luz en febrero de 1991, cuando Van Rossum public´ o la versi´ on 0.9.0 en el grupo de noticias alt.sources. Ya desde esa primera versi´ on, Python inclu´ ıa caracter´ ısticas que hoy consideramos esenciales: clases con herencia m´ ultiple, manejo de excepciones, funciones, tipos de datos fundamentales (listas, diccionarios, cadenas) y un sistema de m´ odulos. El lenguaje era orientado a objetos pero no forzaba ese paradigma; se pod´ ıa programar de manera imperativa o funcional. Este eclecticismo fue una de las claves de su ´ exito posterior. En 1994, se form´ o el grupo de noticias comp.lang.python, que se convirti´ o en el centro de una comunidad global incipiente. La 43
  41. Sesion 2 popularidad de Python creci´ o lentamente pero de

    forma constante en la d´ ecada de 1990, especialmente en entornos acad´ emicos y de investigaci´ on, donde compet´ ıa con Perl, Tcl y Scheme. Un hito crucial fue la liberaci´ on de Python bajo la licencia GPL compatible (la Python Software Foundation License, posteriormente considerada de c´ odigo abierto por la OSI) y la creaci´ on del sitio web python.org en 1996. La versi´ on 1.0 se hab´ ıa lanzado en enero de 1994, e inclu´ ıa caracter´ ısticas como funciones lambda, map, filter y reduce (influenciadas por Lisp). La versi´ on 1.4 (1996) a˜ nadi´ o soporte para m´ odulos nombrados con espacios de nombres y la primera documentaci´ on oficial. En 1999, Van Rossum propuso un plan de desarrollo para Python 2.0, que se lanz´ o en octubre de 2000 con caracter´ ısticas mayores: comprensi´ on de listas (list comprehensions, una joya tomada de lenguajes funcionales), recolecci´ on de basura con conteo de referencias y un ciclo detector, y soporte para caracteres Unicode. Python 2.0 marc´ o la madurez del lenguaje y su adopci´ on en la industria, especialmente en empresas como Google (que adopt´ o Python desde sus primeros a˜ nos), Yahoo! y NASA. La transici´ on a Python 3, iniciada en diciembre de 2008, fue una de las decisiones m´ as controvertidas y valientes en la historia de los lenguajes de programaci´ on. Python 3 rompi´ o la retrocompatibilidad con Python 2 para corregir errores de dise˜ no acumulados, especialmente en el manejo de cadenas (Unicode vs bytes), la funci´ on print (de sentencia a funci´ on), la divisi´ on de enteros, y la eliminaci´ on de construcciones anticuadas como ‘apply‘ o ‘execfile‘. La comunidad se dividi´ o durante casi una d´ ecada, con muchos proyectos manteni´ endose en Python 2.7 (la ´ ultima versi´ on de la rama 2, publicada en 2010 y con soporte extendido hasta 2020). El proceso de migraci´ on fue doloroso, pero al final la claridad y consistencia de Python 3 prevalecieron. El 1 de enero de 2020, Python 2 lleg´ o a su fin de vida, y la gran mayor´ ıa de bibliotecas y frameworks hab´ ıan migrado. Esta lecci´ on ense˜ n´ o a la comunidad la importancia de las transiciones planificadas y del soporte a largo plazo. ¿Por qu´ e Python sobrevivi´ o y prosper´ o mientras otros lenguajes de scripting (Perl, Ruby, Tcl) perdieron relevancia? M´ ultiples factores convergieron. En primer lugar, su sintaxis limpia y legible redujo la barrera de entrada y mejor´ o la mantenibilidad del c´ odigo. En segundo lugar, su comunidad adopt´ o tempranamente principios de c´ odigo abierto y desarrollo basado en consenso (el llamado “Benevolent Dictator for Life” – BDFL – Guido van Rossum, hasta que se retir´ o en 2018, dejando un consejo de gobierno). En tercer lugar, el ecosistema de bibliotecas cient´ ıficas (NumPy en 1995, SciPy en 2001, matplotlib en 2003) atrajo a cient´ ıficos e ingenieros, mucho antes del boom de la inteligencia artificial. En cuarto lugar, la llegada de frameworks web como Django (2005) y Flask (2010) convirti´ o a Python en una opci´ on seria para desarrollo backend. Finalmente, el auge del machine learning (con scikit-learn 2007, TensorFlow 2015, PyTorch 2016) catapult´ o a Python al primer puesto en los ´ ındices de popularidad (TIOBE, IEEE Spectrum, Stack Overflow). En la actualidad, Python es mantenido por la Python Software Foundation (PSF) y un n´ ucleo de desarrolladores (core developers) que toman decisiones mediante Python Enhancement Proposals (PEPs). El lenguaje evoluciona con un nuevo lanzamiento menor cada 12 meses (versiones 3.x) y un lanzamiento importante cada 18-24 meses. Caracter´ ısticas modernas como los type hints (PEP 484, 2014), async/await (PEP 492, 2015), las expresiones walrus (:=, PEP 572, 2019), y los patrones estructurales (match/case, PEP 634, 2021) muestran que Abraham Zamudio 44 PIT: Python Basico
  42. Sesion 2 Python sigue innovando sin sacrificar su filosof´ ıa

    original. La historia de Python es, en esencia, la historia de c´ omo un lenguaje dise˜ nado para ser placentero de usar puede, con el apoyo de una comunidad global, escalar desde scripts de una sola l´ ınea hasta sistemas que manejan miles de millones de transacciones. 5.2. Filosof´ ıa de simplicidad y legibilidad La popularidad de Python no puede entenderse sin analizar su filosof´ ıa de dise˜ no, que se resume expl´ ıcitamente en el “Zen de Python” (PEP 20), escrito por Tim Peters e incluido como un huevo de pascua en el lenguaje (escribir ‘import this‘ en el int´ erprete). Los principios del Zen incluyen frases como “Bello es mejor que feo”, “Expl´ ıcito es mejor que impl´ ıcito”, “Simple es mejor que complejo”, “Complejo es mejor que complicado”, “Legibilidad cuenta”, y “Deber´ ıa haber una —y preferiblemente solo una— manera obvia de hacerlo”. Estas m´ aximas no son meras declaraciones est´ eticas; se traducen en decisiones concretas en la sintaxis, la sem´ antica y las bibliotecas est´ andar de Python. La simplicidad y legibilidad de Python se manifiestan ante todo en su uso de la indentaci´ on para delimitar bloques de c´ odigo. Mientras que la mayor´ ıa de los lenguajes (C, Java, JavaScript) usan llaves ‘ ‘ y puntos y coma, Python utiliza espacios en blanco (generalmente 4 espacios) para indicar anidamiento. Esta decisi´ on, heredada de ABC, fue muy controvertida al principio, pero con el tiempo se ha demostrado que reduce dr´ asticamente la cantidad de errores de sintaxis y obliga a escribir c´ odigo visualmente limpio. No hay lugar para el debate sobre d´ onde colocar las llaves; el c´ odigo es uniforme y legible para cualquier programador Python. Otro pilar de la legibilidad es la elecci´ on de palabras clave en ingl´ es simple y natural: if, elif, else, for, while, try, except, finally, def, class, with, as, pass, break, continue, return, yield, raise, import, from, global, nonlocal. No hay s´ ımbolos cr´ ıpticos (&& se escribe and, —— se escribe or, ! se escribe not). Las expresiones booleanas se leen casi como ingl´ es: ‘if x ¿0 and y ¡10:‘. Esto reduce la carga cognitiva para principiantes y para expertos que leen c´ odigo ajeno. Adem´ as, Python evita los s´ ımbolos de terminaci´ on de sentencia (punto y coma es opcional y solo se usa para separar varias sentencias en una l´ ınea, pr´ actica desaconsejada). El final de l´ ınea indica el final de una sentencia, a menos que se use una barra invertida o par´ entesis impl´ ıcito, lo que fomenta l´ ıneas cortas y legibles. La simplicidad tambi´ en implica no tener m´ ultiples formas de hacer lo mismo. Por ejemplo, en Perl hay decenas de formas de escribir una misma operaci´ on, lo que da flexibilidad pero dificulta la lectura. En Python, el principio “Deber´ ıa haber una —y preferiblemente solo una— manera obvia de hacerlo” gu´ ıa el dise˜ no. Esto no significa que no haya alternativas, sino que se fomenta una forma can´ onica (pythonica) que todo el mundo debe aprender y respetar. Por ejemplo, para intercambiar dos variables se escribe ‘a, b = b, a‘; para recorrer una lista con ´ ındice se usa ‘enumerate‘; para crear una lista transformada se usa comprensi´ on de listas ‘[expr for item in iterable if condition]‘. El lenguaje y su comunidad desarrollan constantemente este estilo “pythonico”. La filosof´ ıa de simplicidad se extiende al modelo de objetos y tipos. En Python, todo es un objeto, incluyendo n´ umeros, cadenas, funciones, clases, m´ odulos e incluso tipos. Cada objeto Abraham Zamudio 45 PIT: Python Basico
  43. Sesion 2 tiene un tipo (clase), atributos y m´ etodos.

    Esta uniformidad reduce las excepciones y hace que el lenguaje sea predecible. Por ejemplo, se puede preguntar el tipo de cualquier objeto con type(obj) o comprobar su pertenencia con isinstance(). Los tipos b´ asicos son inmutables (enteros, flotantes, tuplas, cadenas) o mutables (listas, diccionarios, conjuntos). El modelo de datos define m´ etodos especiales (con doble guion bajo, como __init__, __str__, __add__) que permiten sobrecargar operadores y personalizar el comportamiento. Un dise˜ nador de lenguajes experimentado notar´ a que este modelo es simple pero extremadamente potente, comparable a Smalltalk o Ruby, pero con una sintaxis m´ as limpia. La legibilidad tambi´ en se ve favorecida por la ausencia de ruido sint´ actico. En Java, para imprimir “Hola mundo” se necesita una clase, un m´ etodo p´ ublico est´ atico, una sentencia System.out.println y punto y coma. En Python: ‘print(”Hola mundo”)‘. Esa diferencia de verbosidad se acumula en programas grandes. Adem´ as, Python no requiere declarar tipos de variables (tipado din´ amico) ni gestionar memoria manualmente (recolecci´ on de basura autom´ atica). Esto libera al programador de preocupaciones de bajo nivel y le permite concentrarse en la l´ ogica del problema. Sin embargo, el tipado din´ amico puede llevar a errores en tiempo de ejecuci´ on que otros lenguajes detectan en tiempo de compilaci´ on. Por eso Python ha incorporado anotaciones de tipo opcionales (PEP 484) que permiten verificaci´ on est´ atica con herramientas como mypy, preservando la simplicidad para quienes no las usan. La biblioteca est´ andar de Python (llamada “bater´ ıas incluidas”) tambi´ en refleja la filosof´ ıa de simplicidad. Proporciona m´ odulos para expresiones regulares (‘re‘), acceso a sistemas operativos (‘os‘, ‘sys‘), manejo de archivos y directorios (‘shutil‘, ‘pathlib‘), serializaci´ on (‘pickle‘, ‘json‘, ‘xml‘), programaci´ on en red (‘socket‘, ‘http.server‘, ‘asyncio‘), procesamiento de datos (‘csv‘, ‘sqlite3‘), matem´ aticas (‘math‘, ‘random‘, ‘statistics‘), y mucho m´ as. El dise˜ no de estos m´ odulos es consistente, bien documentado y sigue los principios de Python. Un programador puede realizar tareas complejas con unas pocas l´ ıneas de c´ odigo, sin necesidad de instalar bibliotecas externas. Contrastemos con otros lenguajes. C++ ofrece un poder inmenso pero con una complejidad abrumadora: m´ ultiples formas de inicializaci´ on, reglas de resoluci´ on de sobrecarga, SFINAE, herencia m´ ultiple, etc. JavaScript tiene peculiaridades (coerci´ on de tipos, comportamiento de ‘this‘, ausencia de m´ odulos hasta ES6) que dificultan la legibilidad. Java es verboso y est´ atico. Ruby es elegante pero con m´ ultiples formas de hacer lo mismo (y una sintaxis que puede volverse cr´ ıptica). Python se sit´ ua en un punto ´ optimo: la curva de aprendizaje es suave, pero el lenguaje tiene suficiente profundidad para abordar proyectos muy complejos. Como dijo Guido van Rossum: “Python es un lenguaje que puedes aprender en un fin de semana y usar durante toda tu carrera”. La filosof´ ıa de simplicidad y legibilidad tiene implicaciones en la productividad del desarrollador. Los estudios emp´ ıricos (por ejemplo, los realizados por la NASA y Google) muestran que la productividad en Python (medida en l´ ıneas de c´ odigo por hora o funcionalidad implementada por d´ ıa) es entre 2 y 10 veces mayor que en C++ o Java. Esto se debe a que el programador dedica menos tiempo a lidiar con el lenguaje y m´ as a resolver el problema. Adem´ as, el c´ odigo Python es m´ as f´ acil de leer y modificar por otros miembros del equipo, lo que reduce los costos de mantenimiento. Como consecuencia, Python se ha convertido en el lenguaje preferido para prototipado r´ apido, startups, y para equipos peque˜ nos que necesitan entregar valor Abraham Zamudio 46 PIT: Python Basico
  44. Sesion 2 r´ apidamente. Sin embargo, la simplicidad tiene un

    costo. Python es m´ as lento que C++ o Java porque es interpretado (aunque hoy en d´ ıa utiliza compilaci´ on JIT en implementaciones como PyPy, y los m´ odulos num´ ericos est´ an escritos en C optimizado). El tipado din´ amico y la reflexi´ on hacen que sea dif´ ıcil optimizar ciertos patrones. Adem´ as, el Global Interpreter Lock (GIL) impide que m´ ultiples hilos de Python ejecuten c´ odigo a la vez en la misma CPU, lo que limita el paralelismo. Para tareas intensivas en CPU se recurre a C extensi´ on, multiprocesamiento, o bibliotecas que liberan el GIL (NumPy). La filosof´ ıa de Python acepta estas limitaciones porque prioriza la claridad y la productividad sobre el rendimiento bruto, y porque en la mayor´ ıa de los casos el cuello de botella no es el lenguaje sino la E/S o la base de datos. En resumen, la filosof´ ıa de simplicidad y legibilidad no es un accidente, sino el resultado deliberado de d´ ecadas de dise˜ no y refinamiento. Python se esfuerza por ser un lenguaje en el que sea f´ acil pensar y dif´ ıcil cometer errores. El Zen de Python sigue siendo la gu´ ıa para cada nueva caracter´ ıstica. Por eso, cuando los programadores dicen que programar en Python es “como escribir pseudoc´ odigo que se ejecuta”, est´ an capturando la esencia de su ´ exito. 5.3. La importancia de la comunidad global Un lenguaje de programaci´ on, por muy bien dise˜ nado que est´ e, no prospera sin una comunidad activa, diversa y comprometida. Python posee una de las comunidades m´ as vibrantes y acogedoras del mundo del software. Esta comunidad no solo contribuye con c´ odigo, sino que tambi´ en produce documentaci´ on, responde preguntas en foros, organiza conferencias, desarrolla bibliotecas, escribe tutoriales, y mantiene un c´ odigo de conducta ejemplar. El ´ exito de Python es inseparable de su comunidad. La comunidad Python se organiza en m´ ultiples niveles. El n´ ucleo t´ ecnico est´ a formado por los core developers, unas pocas decenas de personas con privilegios de escritura en el repositorio oficial de Python (desde 2017 alojado en GitHub). Ellos revisan los Pull Requests, discuten los PEPs y toman decisiones de dise˜ no, originalmente bajo la gu´ ıa de Guido van Rossum como BDFL (Benevolent Dictator for Life). En 2018, tras tres d´ ecadas al frente, Van Rossum se retir´ o y el gobierno pas´ o a un consejo electo de cinco miembros (Steering Council), renovable anualmente. Este modelo de gobernanza, m´ as democr´ atico, refleja la madurez de la comunidad. Cualquier persona puede contribuir a Python: las contribuciones pasan por un riguroso proceso de revisi´ on, pruebas unitarias, y discusi´ on en la lista de correo python-dev. Por debajo de los core developers, existe un enorme grupo de mantenedores de bibliotecas populares. Bibliotecas como NumPy, pandas, Django, Flask, Requests, TensorFlow, PyTorch, scikit-learn, entre muchas otras, son proyectos independientes con sus propias comunidades, pero que se sienten parte del ecosistema Python. Estas bibliotecas dependen de Python y a su vez ampl´ ıan su dominio de aplicaci´ on. La colaboraci´ on cruzada es com´ un, y muchos mantenedores asisten a los mismos eventos (PyCon, EuroPython, SciPy). La salud de este eco- sistema es tal que, seg´ un el ´ ındice PyPI (Python Package Index), hay m´ as de 400.000 paquetes disponibles, con miles de millones de descargas mensuales. La comunidad ha construido un sistema de distribuci´ on (pip, setuptools, twine) que hace trivial compartir y reutilizar c´ odigo. Abraham Zamudio 47 PIT: Python Basico
  45. Sesion 2 La comunidad Python es famosa por su acogida

    a principiantes. El lema “la comunidad del abrazo de serpiente” (aunque no oficial) refleja la cultura de ser amigable con los nuevos. Los canales de comunicaci´ on (Stack Overflow con la etiqueta python, Reddit r/learnpython, Discord, Slack, Telegram) est´ an llenos de personas dispuestas a ayudar sin menospreciar preguntas b´ asicas. El c´ odigo de conducta de Python (adoptado por la PSF y por la mayor´ ıa de conferencias) proh´ ıbe expl´ ıcitamente el acoso, la discriminaci´ on y el lenguaje ofensivo, y establece procedimientos para reportar incidentes. Esto ha creado un entorno seguro para personas de todos los g´ eneros, razas, orientaciones sexuales y niveles de habilidad. Como resultado, Python es uno de los lenguajes con mayor diversidad en su base de usuarios, aunque todav´ ıa queda trabajo por hacer. Las conferencias son otro pilar. PyCon US, que comenz´ o en 2003, es la reuni´ on anual m´ as grande, con miles de asistentes, charlas, tutoriales, sprints (sesiones de programaci´ on en grupo) y ferias de empleo. Pero existen PyCon en casi todos los continentes: EuroPython, PyCon India, PyCon APAC, PyCon Africa, PyCon Latinoam´ erica, etc. Adem´ as, conferencias especializadas como SciPy (cient´ ıficos), DjangoCon (desarrolladores web) y PyData (datos) atraen a subcomunidades. En estas conferencias no solo se aprende, sino que se crean lazos sociales y oportunidades de colaboraci´ on. La experiencia de asistir a una PyCon es a menudo descrita como transformadora para los asistentes, especialmente para aquellos que no tienen colegas programadores en su entorno local. La contribuci´ on de la comunidad a la documentaci´ on es legendaria. La documentaci´ on oficial de Python (docs.python.org) es extensa, clara y llena de ejemplos, y se traduce a varios idiomas. Adem´ as, existen recursos comunitarios como Real Python, Python.org tutorial, Python Crash Course, Automate the Boring Stuff with Python (gratuito en l´ ınea), y cientos de canales de YouTube. La comunidad tambi´ en mantiene el Python Wiki, listas de correo (python-list, python-announce), y los Python Software Foundation News. Todo esto baja la barrera de entrada y permite el autoaprendizaje. ¿Por qu´ e la comunidad Python es tan colaborativa? En parte, porque el lenguaje fue abierto desde el principio. Guido van Rossum foment´ o la participaci´ on externa, respondiendo correos personalmente y aceptando contribuciones. La licencia permisiva (PSF License) permite usar Python incluso en productos comerciales cerrados, lo que atrajo a empresas que luego contribuyeron de vuelta (Google, Microsoft, Dropbox, etc.). Adem´ as, la comunidad desa- rroll´ o est´ andares claros: PEP 8 (gu´ ıa de estilo), PEP 20 (Zen), PEP 257 (docstrings), que homogeneizan el c´ odigo y reducen discusiones est´ eriles. El lenguaje es estable pero evoluciona mediante procesos transparentes y democr´ aticos. Un hito en la organizaci´ on comunitaria fue la creaci´ on de la Python Software Foundation (PSF) en 2001. La PSF es una organizaci´ on sin fines de lucro que posee los derechos intelectuales de Python, gestiona las conferencias PyCon, otorga becas a proyectos y eventos, y protege la marca Python. La PSF tambi´ en financia iniciativas de diversidad, educaci´ on y desarrollo de infraestructura (como PyPI). Cualquier persona puede ser miembro de la PSF (con cuota voluntaria) y votar en las elecciones de la junta directiva. Este modelo ha demostrado ser sostenible y escalable. La comunidad tambi´ en se ha destacado en momentos de crisis. Durante la transici´ on Python Abraham Zamudio 48 PIT: Python Basico
  46. Sesion 2 2 a 3, se formaron grupos de trabajo

    para facilitar la migraci´ on, se crearon herramientas como ‘2to3‘, ‘six‘, ‘future‘, y se ofreci´ o soporte extendido para Python 2.7. La comunidad decidi´ o un´ animemente que el 1 de enero de 2020 ser´ ıa el fin de vida, y se organiz´ o la “Python 3 Statement” firmada por los principales proyectos. La transici´ on fue larga pero exitosa gracias a la cooperaci´ on. Otro ejemplo reciente: cuando Guido van Rossum anunci´ o su retiro como BDFL en 2018, la comunidad no colaps´ o; en su lugar, dise˜ n´ o un nuevo modelo de gobierno (Steering Council) mediante una serie de votaciones y discusiones abiertas. El proceso fue ejemplar y demostr´ o la madurez institucional de la comunidad. La comunidad Python tambi´ en ha influido en otras comunidades. El c´ odigo de conducta de Python sirvi´ o de modelo para muchos otros proyectos. El sistema de PEPs inspir´ o a otros lenguajes a tener procesos formales de dise˜ no. La organizaci´ on de PyCon con sprints finales ha sido copiada por muchas conferencias. La PSF ha ayudado a fundar organizaciones hermanas en otros lenguajes (por ejemplo, la Ruby Together se inspir´ o parcialmente en la PSF). En el ´ ambito local, existen Python User Groups (PUGs) en cientos de ciudades del mundo. Estos grupos organizan reuniones peri´ odicas (gratuitas o con bajo costo) donde los miembros dan charlas, programan juntos y ayudan a principiantes. La red de PUGs es la columna vertebral de la comunidad a nivel granular. Durante la pandemia, muchos PUGs migraron a encuentros virtuales, manteniendo el sentido de comunidad. El impacto econ´ omico de la comunidad es dif´ ıcil de medir, pero se estima que el ecosistema Python genera decenas de miles de millones de d´ olares en valor cada a˜ no. Empresas como Google (desde sus inicios), Facebook (muchas herramientas internas), Instagram (el backend original en Django), Netflix (parte de su infraestructura), Spotify (procesamiento de datos), Dropbox (cliente de escritorio en Python), y la mayor´ ıa de startups de IA, dependen cr´ ıtica- mente de Python. A su vez, estas empresas contribuyen con recursos: patrocinios a la PSF, desarrollo de bibliotecas de c´ odigo abierto, y donaciones de tiempo de sus ingenieros. En conclusi´ on, la comunidad global de Python es mucho m´ as que un grupo de usuarios; es un ecosistema autosostenible basado en la ayuda mutua, la transparencia y la diversi´ on. La frase “comunidad primero” ha sido clave en el ´ exito de Python, y sigue siendo su ventaja competitiva m´ as s´ olida frente a otros lenguajes que pueden tener ventajas t´ ecnicas pero carecen de esa masa cr´ ıtica colaborativa. 5.4. Python como lenguaje accesible para principiantes Una de las razones m´ as citadas para la popularidad de Python es su accesibilidad para personas que nunca han programado. Mientras que lenguajes como C o Java presentan una barrera de entrada alta (sintaxis cr´ ıptica, compilaci´ on, gesti´ on de memoria, puntos y coma, llaves, tipado est´ atico obligatorio, etc.), Python permite que un principiante escriba su primer programa funcional en cuesti´ on de minutos. Esta accesibilidad no es accidental; fue un objetivo expl´ ıcito de Guido van Rossum, inspirado en el lenguaje ABC, que estaba dise˜ nado para la ense˜ nanza. Abraham Zamudio 49 PIT: Python Basico
  47. Sesion 2 La accesibilidad de Python se manifiesta en m´

    ultiples dimensiones. La primera es la sintaxis limpia y legible. Un bloque de c´ odigo en Python se parece a pseudoc´ odigo, lo que facilita que un principiante entienda lo que hace incluso antes de conocer las reglas formales. Por ejemplo, un programa para calcular el factorial: 1 def factorial(n): 2 if n == 0: 3 return 1 4 else: 5 return n * factorial(n-1) 6 7 numero = 5 8 print(f"El factorial de {numero} es {factorial(numero)}") Incluso alguien sin experiencia puede inferir que la funci´ on se llama a s´ ı misma y que multiplica n´ umeros. No hay llaves que confundan, ni declaraciones de tipos, ni gesti´ on de memoria, ni punteros. La indentaci´ on deja claro qu´ e pertenece al ‘if‘ y qu´ e a la funci´ on. La segunda dimensi´ on es el modelo de ejecuci´ on: Python es interpretado, no compilado. El principiante escribe un script en un archivo .py o directamente en un REPL (Read-Eval- Print Loop) escribiendo ‘python‘ en la terminal y viendo los resultados inmediatos. Esta retroalimentaci´ on instant´ anea es crucial para el aprendizaje por exploraci´ on. Puede probar una l´ ınea, ver qu´ e pasa, corregir errores al instante, sin ciclos de compilaci´ on-enlace-ejecuci´ on. Los entornos como IDLE, Jupyter Notebook, o Thonny (dise˜ nado espec´ ıficamente para ense˜ nanza) mejoran a´ un m´ as esta experiencia. La tercera dimensi´ on es el manejo de errores. Python produce mensajes de error (tracebacks) con informaci´ on ´ util: la l´ ınea exacta donde ocurri´ o, el tipo de excepci´ on, y una breve descripci´ on. Aunque al principio pueden ser abrumadores, son mucho m´ as claros que los cr´ ıpticos errores de segmentaci´ on de C o los voluminosos stack traces de Java. Adem´ as, la comunidad ha desarrollado herramientas como ‘pdb‘ (depurador) y tutoriales sobre c´ omo leer tracebacks. La cuarta dimensi´ on es la ausencia de conceptos complejos al inicio. Un principiante no necesita entender la diferencia entre pila y mont´ on, paso por referencia vs valor, sobrecarga de operadores, herencia m´ ultiple, o gesti´ on de memoria. Puede usar listas, diccionarios, bucles y condicionales durante semanas antes de necesitar clases. Incluso cuando llega a la orientaci´ on a objetos, Python simplifica: no hay modificadores de acceso p´ ublico/privado/protegido (se usa convenci´ on de nombre), no hay interfaces, no hay clases abstractas (aunque se puede con ABC), y el polimorfismo es natural gracias al tipado pato (“si camina como pato y suena como pato, entonces es un pato”). El principiante puede concentrarse en la l´ ogica del problema, no en los accidentes del lenguaje. La quinta dimensi´ on es el ecosistema educativo. Existe una cantidad ingente de recursos gratuitos y de alta calidad para aprender Python. Desde tutoriales interactivos como Code- cademy, freeCodeCamp, o el propio Python.org, hasta libros como “Python Crash Course” de Eric Matthes, “Automate the Boring Stuff with Python” de Al Sweigart (disponible gratis en l´ ınea), “Think Python” de Allen B. Downey, y “How to Think Like a Computer Scientist”. Tambi´ en hay MOOCs masivos en Coursera, edX, y Udemy, muchos impartidos por profesores universitarios. La comunidad tambi´ en ha producido entornos de aprendizaje Abraham Zamudio 50 PIT: Python Basico
  48. Sesion 2 adaptados: Thonny (incluye depuraci´ on paso a paso

    con visualizaci´ on de la pila), Mu (dise˜ nado para ni˜ nos y principiantes), y Replit (entorno en l´ ınea que no requiere instalaci´ on). Esta abundancia de recursos reduce dr´ asticamente la fricci´ on inicial. La sexta dimensi´ on es la versatilidad. Un principiante puede empezar con scripts simples, luego pasar a programas con interfaz gr´ afica (Tkinter, PySimpleGUI), luego a aplicaciones web (Flask), luego a an´ alisis de datos (pandas), sin tener que aprender un lenguaje nuevo en cada etapa. Esto permite que el estudiante profundice gradualmente, aplicando las mismas construcciones b´ asicas a dominios diferentes. La motivaci´ on se mantiene porque puede ver resultados tangibles en ´ areas que le interesan (por ejemplo, un bi´ ologo puede procesar secuencias de ADN, un economista puede analizar series temporales). La s´ eptima dimensi´ on es la comunidad amigable. Como se mencion´ o antes, los foros y grupos de usuarios est´ an llenos de personas dispuestas a ayudar a los principiantes sin menospreciar. Preguntar “¿c´ omo hago un bucle?” en Stack Overflow recibe respuestas educadas y enlaces a tutoriales. Adem´ as, hay canales espec´ ıficos para principiantes como r/learnpython. Esta red de apoyo es fundamental para evitar la frustraci´ on y el abandono. La octava dimensi´ on es la disponibilidad en m´ ultiples plataformas. Python se ejecuta en Windows, macOS, Linux, y tambi´ en en dispositivos m´ oviles (a trav´ es de aplicaciones como Pydroid 3 o Pythonista). Un estudiante puede instalar Python en su computadora dom´ estica sin costo, y todo el software necesario es gratuito y de c´ odigo abierto. No hay barreras econ´ omicas. La novena dimensi´ on es la madurez de las herramientas de desarrollo. Un principiante puede empezar con un simple editor de texto y la terminal, pero cuando quiera avanzar encontrar´ a IDEs como PyCharm (Community Edition gratuita), Visual Studio Code con extensiones, o Spyder (para cient´ ıficos). Estas herramientas ofrecen resaltado de sintaxis, autocompletado, depuraci´ on visual, y control de versiones integrado, todo sin configuraciones complejas. La d´ ecima dimensi´ on, quiz´ as la m´ as importante, es que Python ha sido adoptado oficialmente por muchas instituciones educativas como el lenguaje de introducci´ on a la programaci´ on. Universidades como MIT (con su curso 6.0001), Stanford (CS106A), UC Berkeley, y la Universidad de Toronto, entre muchas otras, ense˜ nan Python en sus primeros cursos. Esto crea un efecto de red: los estudiantes aprenden Python en la universidad, luego lo usan en sus pr´ acticas profesionales, y finalmente lo llevan a la industria. Adem´ as, la certificaci´ on PCAP (Python Certified Associate Programmer) y el examen de entrada a la carrera de programaci´ on de Google utilizan Python. Un debate com´ un es si Python es “demasiado f´ acil” y si eso lleva a malas pr´ acticas. Los cr´ ıticos argumentan que los estudiantes que aprenden con Python luego tienen dificultades al enfrentarse a lenguajes de m´ as bajo nivel porque no entienden conceptos como tipos est´ aticos o gesti´ on de memoria. Sin embargo, la mayor´ ıa de los educadores sostienen que la curva de aprendizaje suave permite dominar primero los conceptos fundamentales (algoritmos, estructuras de datos, recursi´ on, modularizaci´ on) para luego a˜ nadir complejidad gradualmente. Muchos cursos avanzados cambian a C o Java para ense˜ nar sistemas, manteniendo Python para el resto. En cualquier caso, la accesibilidad de Python no es un defecto sino una virtud, sobre todo en un mundo donde la programaci´ on se est´ a volviendo una competencia b´ asica Abraham Zamudio 51 PIT: Python Basico
  49. Sesion 2 (alfabetizaci´ on digital). En resumen, Python es accesible

    para principiantes porque combina una sintaxis limpia, un modelo de ejecuci´ on interpretado, mensajes de error claros, ausencia de complejidades innecesarias, un ecosistema educativo masivo, una comunidad acogedora, gratuidad total y adopci´ on institucional. Estas caracter´ ısticas han democratizado la programaci´ on, permitiendo que personas de todas las edades, or´ ıgenes y disciplinas puedan aprender a codificar y utilizar el ordenador como herramienta de creaci´ on. Python ha demostrado que la accesibilidad y el poder no son mutuamente excluyentes; al contrario, la accesibilidad es una forma de poder. Abraham Zamudio 52 PIT: Python Basico
  50. Cap´ ıtulo 6 Python en la educaci´ on 6.1. Ense˜

    nanza de programaci´ on en escuelas y universi- dades La incorporaci´ on de Python en los sistemas educativos formales, desde la educaci´ on primaria hasta la universitaria, constituye uno de los cambios pedag´ ogicos m´ as significativos de las ´ ultimas dos d´ ecadas. Python ha desplazado a lenguajes tradicionales como Java, C++ y Pascal en los cursos introductorios de programaci´ on, y cada vez m´ as escuelas secundarias lo adoptan como primer lenguaje. Esta transici´ on no es caprichosa: responde a la necesidad de formar a los estudiantes en competencias digitales fundamentales, pero haci´ endolo con un lenguaje que minimiza la frustraci´ on inicial y maximiza la sensaci´ on de logro. En las universidades, el cambio ha sido especialmente visible. El prestigioso curso CS50 de Harvard, que tradicionalmente ense˜ naba C, a˜ nadi´ o Python como opci´ on principal y hoy lo utiliza en gran parte de su temario. El MIT introdujo Python en su emblem´ atico curso 6.0001 “Introduction to Computer Science and Programming in Python”, que es tomado por miles de estudiantes cada a˜ no tanto de forma presencial como en edX. Stanford, UC Berkeley, Carnegie Mellon, la Universidad de Toronto y decenas de instituciones europeas y asi´ aticas han seguido el mismo camino. ¿Por qu´ e? Porque los profesores observaron que con Python los estudiantes pod´ ıan dedicar menos tiempo a la sintaxis y la gesti´ on de memoria, y m´ as a los conceptos fundamentales: algoritmos, estructuras de datos, recursi´ on, abstracci´ on, dise˜ no modular y depuraci´ on. La estructura t´ ıpica de un curso universitario introductorio con Python abarca los siguientes temas en orden progresivo: tipos de datos b´ asicos (enteros, flotantes, booleanos, cadenas), variables y expresiones, entrada/salida simple, estructuras de control (if/elif/else, bucles for/while), funciones y paso de par´ ametros, alcance de variables, recursi´ on b´ asica, listas, tuplas, diccionarios y conjuntos, comprensi´ on de listas, manejo de archivos, excepciones, y finalmente programaci´ on orientada a objetos con clases y herencia. Dependiendo del tiempo disponible, se pueden cubrir m´ odulos, paquetes, y nociones de complejidad algor´ ıtmica. Todo ello con ejemplos pr´ acticos y proyectos que los estudiantes pueden completar en unas pocas horas. 53
  51. Sesion 2 Una de las grandes ventajas de Python en

    la ense˜ nanza universitaria es la facilidad para introducir bibliotecas externas. Un curso de introducci´ on a la ciencia de datos puede usar pandas y matplotlib desde las primeras semanas; un curso de inteligencia artificial puede usar scikit-learn o PyTorch sin necesidad de que los estudiantes dominen la compilaci´ on o la gesti´ on de memoria. Esto permite que incluso estudiantes de primer a˜ no realicen proyectos impresionantes: clasificar im´ agenes, analizar textos, predecir tendencias, etc. La motivaci´ on se dispara cuando ven resultados tangibles y “reales”. En las escuelas secundarias (educaci´ on media), Python est´ a reemplazando a lenguajes como Scratch (para ni˜ nos m´ as peque˜ nos) o Java (considerado demasiado complejo). El curr´ ıculo de la “Computer Science Education” en Estados Unidos (AP Computer Science Principles) recomienda Python como uno de los lenguajes preferidos. En Europa, varios pa´ ıses (Estonia, Finlandia, Reino Unido) han incorporado Python en sus planes de estudio obligatorios de inform´ atica. En Am´ erica Latina, iniciativas como “Program.Ar” en Argentina o “Computaci´ on para Todos” en Uruguay utilizan Python. La edad de inicio t´ ıpica es entre 14 y 16 a˜ nos, aunque hay experiencias exitosas con estudiantes de 11 o 12 a˜ nos. La ense˜ nanza en secundaria se enfoca m´ as en la resoluci´ on de problemas, el pensamiento computacional y la creatividad, y menos en la ingenier´ ıa de software. Los proyectos t´ ıpicos incluyen: juegos simples con ‘pygame‘, dibujos con ‘turtle‘ (una biblioteca de gr´ aficos muy did´ actica), procesamiento de textos, an´ alisis de datos deportivos o meteorol´ ogicos, creaci´ on de sitios web simples con ‘Flask‘, y aplicaciones con interfaz gr´ afica con ‘tkinter‘ o ‘PySimpleGUI‘. Los docentes valoran que Python permita avanzar r´ apido y que los estudiantes puedan ver resultados en cada sesi´ on, lo que reduce la deserci´ on. Un aspecto cr´ ıtico en la educaci´ on secundaria es la formaci´ on de los propios docentes. Muchos profesores de inform´ atica provienen de otras disciplinas o aprendieron programaci´ on con lenguajes muy diferentes. Python, por su sintaxis clara, tambi´ en es m´ as f´ acil de aprender para los docentes. Existen cursos de formaci´ on espec´ ıficos, como “Python for Everybody” de la Universidad de Michigan (disponible en Coursera) o el “CS50 for Teachers” de Harvard. Adem´ as, la comunidad produce materiales curriculares listos para usar, como “CS in Science” de Bootstrap, “Python for Education” de Richard White, o el “AP CSP with Python” de la organizaci´ on Beauty and Joy of Computing. En la educaci´ on primaria (ni˜ nos de 6 a 12 a˜ nos), Python no suele ser el primer lenguaje; se prefiere Scratch o Blockly, basados en bloques visuales. Sin embargo, existen variantes de Python dise˜ nadas para ni˜ nos, como ‘SnakeWrangling for Kids‘, o el uso de librer´ ıas simplificadas. A partir de los 10-11 a˜ nos, muchos ni˜ nos pueden transitar a Python textual, sobre todo si tienen un buen acompa˜ namiento. Las escuelas que implementan programas de “coding” desde edades tempranas suelen usar Python en los ´ ultimos a˜ nos de primaria. La pandemia de COVID-19 aceler´ o la adopci´ on de entornos en l´ ınea para ense˜ nar Python. Plataformas como Replit, Google Colab, Trinket, y CodeSkulptor permiten que los estudiantes escriban y ejecuten Python desde el navegador, sin instalar nada. Esto es especialmente valioso en contextos donde los estudiantes no tienen permisos de administrador en sus computadoras o usan dispositivos limitados (Chromebooks, tablets). Los profesores pueden crear aulas virtuales, compartir enlaces y ver el progreso. Estas herramientas tambi´ en incluyen evaluaci´ on Abraham Zamudio 54 PIT: Python Basico
  52. Sesion 2 autom´ atica (grading) y detecci´ on de plagio.

    En la educaci´ on superior, tambi´ en se utiliza Python en disciplinas no relacionadas con la computaci´ on. Por ejemplo, en cursos de f´ ısica se ense˜ na Python para simular experimentos; en biolog´ ıa se usa para procesar secuencias gen´ eticas; en econom´ ıa para econometr´ ıa; en psicolog´ ıa para analizar encuestas; en ling¨ u´ ıstica para procesamiento de corpus. Esto se conoce como “programaci´ on para dominio espec´ ıfico” y Python es el lenguaje favorito porque tiene bibliotecas cient´ ıficas maduras y una curva de aprendizaje suave. Los estudiantes de estas carreras no necesitan convertirse en programadores profesionales, pero s´ ı adquirir habilidades computacionales para su investigaci´ on o pr´ actica profesional. Python les permite eso sin un costo prohibitivo en tiempo. No todo es positivo. Algunos educadores critican que Python oculta demasiados detalles importantes. Por ejemplo, los estudiantes pueden usar listas y diccionarios sin entender c´ omo se implementan internamente (arrays din´ amicos, tablas hash), lo que puede ser problem´ atico cuando luego enfrentan problemas de rendimiento o memoria. Adem´ as, el tipado din´ amico puede llevar a errores sutiles que en lenguajes est´ aticos se detectar´ ıan en compilaci´ on. Para mitigarlo, muchos cursos universitarios combinan Python con un segundo lenguaje m´ as de bajo nivel (C, C++, Java) para ense˜ nar sistemas, estructuras de datos m´ as detalladas, o programaci´ on concurrente. La tendencia es “Python primero, luego el que corresponda”. En conclusi´ on, Python se ha convertido en el caballo de batalla de la ense˜ nanza de la programaci´ on en escuelas y universidades debido a su equilibrio entre simplicidad y poder. Ha permitido que millones de estudiantes aprendan a programar, muchos de los cuales nunca se habr´ ıan acercado a la inform´ atica si se hubieran encontrado con la sintaxis de C++ o Java. La adopci´ on por parte de las instituciones educativas m´ as prestigiosas ha creado un c´ ırculo virtuoso: m´ as cursos en Python, m´ as estudiantes competentes, m´ as demanda en la industria, m´ as inversi´ on en recursos educativos, y as´ ı sucesivamente. 6.2. Python como herramienta para aprender l´ ogica y pensamiento computacional M´ as all´ a de la mera ense˜ nanza de la sintaxis de un lenguaje, Python se ha consolidado como un medio privilegiado para desarrollar el pensamiento computacional: la capacidad de formular problemas y sus soluciones de manera que puedan ser ejecutadas por un computador. Este conjunto de habilidades incluye la descomposici´ on, el reconocimiento de patrones, la abstracci´ on, el dise˜ no de algoritmos, y la evaluaci´ on de soluciones. Numerosos estudios pedag´ ogicos han demostrado que Python, por su claridad, permite a los estudiantes centrarse en estas habilidades en lugar de perderse en detalles t´ ecnicos. La descomposici´ on consiste en dividir un problema complejo en subproblemas m´ as peque˜ nos y manejables. Python facilita esto mediante las funciones. Un estudiante aprende a escri- bir una funci´ on para cada tarea, d´ andole un nombre significativo y unos par´ ametros. Por ejemplo, para construir un juego del ahorcado, puede descomponer en: elegir_palabra(), mostrar_estado(), pedir_letra(), actualizar_progreso(), verificar_fin(). Cada fun- ci´ on es corta y se puede probar de forma independiente. La sintaxis de Python no a˜ nade Abraham Zamudio 55 PIT: Python Basico
  53. Sesion 2 ruido (no hay que declarar prototipos, ni poner

    punto y coma, ni manejar punteros), lo que mantiene la atenci´ on en la descomposici´ on. El reconocimiento de patrones se refiere a encontrar similitudes y regularidades. Python ofrece estructuras de datos vers´ atiles (listas, diccionarios, conjuntos) y operaciones de alto nivel (comprensi´ on de listas, ‘map‘, ‘filter‘, ‘reduce‘) que permiten expresar patrones de forma concisa. Por ejemplo, para extraer todos los n´ umeros pares de una lista, un estudiante puede escribir ‘[n for n in lista if n La abstracci´ on es la capacidad de ignorar detalles irrelevantes para concentrarse en lo esencial. Python soporta m´ ultiples niveles de abstracci´ on: variables (abstracci´ on de datos), funciones (abstracci´ on de procesos), clases e interfaces (abstracci´ on de tipos), y m´ odulos/paquetes (abstracci´ on de componentes). La programaci´ on orientada a objetos en Python es menos r´ ıgida que en Java; no hay necesidad de encapsular todo en clases desde el principio, lo que permite introducir clases gradualmente. El tipado pato (duck typing) es una forma de abstracci´ on potente: si un objeto tiene los m´ etodos necesarios, no importa su tipo real. Esto fomenta pensar en comportamientos m´ as que en jerarqu´ ıas. El dise˜ no de algoritmos es el coraz´ on del pensamiento computacional. Python, al ser un lenguaje de muy alto nivel, permite implementar algoritmos complejos en pocas l´ ıneas, lo que facilita la experimentaci´ on con diferentes enfoques. Por ejemplo, ordenar una lista con el algoritmo de burbuja vs quicksort se puede codificar de manera legible. Comparar tiempos con ‘timeit‘ o visualizar el proceso con ‘matplotlib‘ es trivial. Los estudiantes pueden analizar la complejidad temporal y espacial sin que el lenguaje introduzca artefactos. La biblioteca est´ andar incluye algoritmos fundamentales ya implementados (ordenamiento, b´ usqueda, estructuras como ‘heapq‘, ‘bisect‘), que los estudiantes pueden usar y luego implementar por s´ ı mismos. La evaluaci´ on de soluciones implica probar, depurar y optimizar. Python ofrece un depurador interactivo (‘pdb‘) y soporte nativo para pruebas unitarias con ‘unittest‘ o ‘pytest‘. Los estudiantes pueden escribir aserciones para verificar invariantes y casos l´ ımite. Los mensajes de error (tracebacks) muestran la pila de llamadas, ayudando a rastrear el origen del error. Adem´ as, entornos como Jupyter Notebook permiten un estilo de programaci´ on exploratorio, donde el estudiante puede ejecutar celdas, inspeccionar variables, modificar c´ odigo y volver a ejecutar, todo en el mismo contexto. Esto acelera el ciclo de prueba y error, esencial para aprender. Numerosos curr´ ıculos de pensamiento computacional utilizan Python con ejercicios espec´ ıficos. Por ejemplo, “CS Unplugged” (actividades sin computadora) se complementa con actividades en Python. El proyecto “Python for Everybody” de la Universidad de Michigan sigue una progresi´ on cuidadosa desde la manipulaci´ on de cadenas hasta la recuperaci´ on de datos web. Code.org tiene cursos de “App Lab” que pueden usar Python como lenguaje de texto. La “Bebras Challenge” (desaf´ ıo internacional de pensamiento computacional) ofrece tareas que pueden resolverse con Python. Un aspecto particularmente exitoso es el uso de Python con la biblioteca ‘turtle‘ para ense˜ nar geometr´ ıa y recursi´ on. Los estudiantes escriben comandos como ‘forward(100)‘, ‘left(90)‘ y ven el dibujo en tiempo real. Pueden crear figuras complejas (copos de nieve de Koch, ´ arboles fractales) con pocas l´ ıneas, comprendiendo conceptos de recursi´ on, iteraci´ on y ´ angulos. La Abraham Zamudio 56 PIT: Python Basico
  54. Sesion 2 retroalimentaci´ on visual es inmediata y motivadora. Para

    estudiantes j´ ovenes (10-14 a˜ nos), ‘turtle‘ es a menudo la puerta de entrada al pensamiento computacional. Otro recurso es ‘Jupyter Notebook‘ con ‘pandas‘ y ‘matplotlib‘ para el an´ alisis exploratorio de datos. Los estudiantes pueden cargar un conjunto de datos (por ejemplo, resultados de ex´ amenes, datos clim´ aticos, estad´ ısticas deportivas), hacer preguntas (¿cu´ al es el promedio? ¿hay correlaci´ on entre dos variables?), y responder con c´ odigo. Este enfoque integra el pensamiento computacional con la alfabetizaci´ on de datos, una habilidad fundamental en el siglo XXI. La programaci´ on de videojuegos simples con ‘pygame‘ es otro veh´ ıculo excelente. Los estu- diantes aplican bucles de eventos, detecci´ on de colisiones, manejo de sprites, y estado del juego. Aprenden sobre m´ aquinas de estado, sincronizaci´ on y simulaci´ on. El juego resultante puede ser compartido con amigos y familiares, lo que proporciona un fuerte incentivo. La curva de aprendizaje de ‘pygame‘ es moderada, pero con ejemplos guiados los estudiantes pueden crear su propio “Pong”, “Space Invaders” o “Snake” en pocas sesiones. La rob´ otica educativa tambi´ en se beneficia de Python. Plataformas como Raspberry Pi (con GPIO) y microcontroladores como Micro:bit o CircuitPython permiten programar LEDs, sensores y motores en Python. Los estudiantes ven c´ omo el c´ odigo interact´ ua con el mundo f´ ısico, lo que refuerza la noci´ on de algoritmo como secuencia de acciones que afectan el entorno. Proyectos t´ ıpicos incluyen sem´ aforos, term´ ometros digitales, robots seguidores de l´ ınea, y sistemas de riego autom´ atico. Para estudiantes m´ as avanzados, Python se utiliza para ense˜ nar estructuras de datos cl´ asicas (pilas, colas, ´ arboles, grafos) y algoritmos (b´ usqueda, ordenamiento, caminos m´ ınimos, flujo). La implementaci´ on es limpia y permite centrarse en la l´ ogica subyacente. Por ejemplo, una pila puede implementarse con una lista (usando ‘append‘ y ‘pop‘), y el estudiante puede medir el rendimiento. Un ´ arbol binario de b´ usqueda puede implementarse con objetos Nodo y m´ etodos recursivos. El c´ odigo resultante es legible y depurable. La programaci´ on funcional, aunque no pura, tambi´ en se puede ense˜ nar con Python: funciones lambda, ‘map‘, ‘filter‘, ‘reduce‘, ‘functools.partial‘, y ‘itertools‘. Estos conceptos desarrollan una forma diferente de pensar sobre transformaciones de datos, ´ util para el procesamiento de flujos y la concurrencia. Al ser Python multiparadigma, el estudiante puede elegir el estilo m´ as adecuado para cada problema. En resumen, Python no es solo un lenguaje para ense˜ nar a programar, sino un lenguaje para ense˜ nar a pensar computacionalmente. Su sintaxis clara reduce la carga cognitiva, su biblioteca est´ andar proporciona herramientas para m´ ultiples dominios, y su entorno interactivo favorece la experimentaci´ on. Los educadores han descubierto que los estudiantes que aprenden con Python desarrollan una base s´ olida de pensamiento computacional que luego pueden transferir a otros lenguajes y contextos. La l´ ogica, la abstracci´ on, la descomposici´ on y la evaluaci´ on son habilidades que trascienden la programaci´ on y sirven en matem´ aticas, ciencias, ingenier´ ıa y en la vida cotidiana. Abraham Zamudio 57 PIT: Python Basico
  55. Sesion 2 6.3. Recursos educativos y comunidades de aprendizaje El

    ecosistema de recursos educativos para Python es probablemente el m´ as rico y variado de cualquier lenguaje de programaci´ on. Esta abundancia es tanto causa como consecuencia de la popularidad de Python en la ense˜ nanza. Existen libros de texto gratuitos y de pago, cursos masivos en l´ ınea (MOOCs), tutoriales interactivos, canales de YouTube, plataformas de pr´ actica, foros de preguntas, y comunidades locales de usuarios. Cada recurso est´ a dirigido a diferentes edades, niveles y estilos de aprendizaje, lo que permite que cada estudiante encuentre el material que mejor se adapta a sus necesidades. Entre los libros m´ as destacados y ampliamente utilizados se encuentran: - “Automate the Boring Stuff with Python” de Al Sweigart (gratuito en l´ ınea), orientado a principiantes adultos que desean automatizar tareas cotidianas. - “Python Crash Course” de Eric Matthes, un libro muy completo con proyectos pr´ acticos (juego, visualizaci´ on de datos, aplicaci´ on web). - “Think Python” de Allen B. Downey, que enfatiza conceptos de ciencia de la computaci´ on. - “How to Think Like a Computer Scientist” (versi´ on Python) tambi´ en de Downey, disponible libremente. - “Learning Python” de Mark Lutz, un tomo exhaustivo para quienes desean un conocimiento profundo. - “Fluent Python” de Luciano Ramalho, para programadores con experiencia que quieren escribir Python idiom´ atico. - “Python for Everybody” de Charles Severance, basado en su curso en l´ ınea. - “Invent Your Own Computer Games with Python” de Al Sweigart, para aprender programando juegos. Muchos de estos libros tienen versiones interactivas en l´ ınea o c´ odigo fuente disponible en GitHub. Los cursos masivos en l´ ınea (MOOCs) han democratizado el acceso a la educaci´ on en Python. Los m´ as populares son: - “Python for Everybody” (Universidad de Michigan, Coursera): cinco cursos que cubren desde lo b´ asico hasta el acceso a datos web y bases de datos. - “CS50’s Introduction to Programming with Python” (Harvard, edX): una versi´ on del famoso CS50 enfocada en Python. - “Google IT Automation with Python” (Google, Coursera): orientado a administradores de sistemas. - “Introduction to Computer Science and Programming Using Python” (MIT, edX): un curso riguroso, parte del curr´ ıculo del MIT. - “Programming for Everybody (Getting Started with Python)” (Coursera): el curso m´ as popular en la plataforma, con millones de inscripciones. - “100 Days of Code: The Complete Python Pro Bootcamp” (Udemy): muy pr´ actico, con proyectos diarios. Estos cursos incluyen videos, lecturas, cuestionarios y laboratorios de programaci´ on con evaluaci´ on autom´ atica. La mayor´ ıa ofrecen certificados pagos pero el acceso al contenido es gratuito (en modo auditor´ ıa). Las plataformas de pr´ actica interactiva son especialmente valiosas para principiantes. Destacan: - **Codecademy**: cursos interactivos con consola integrada, seguimiento de progreso. - **freeCodeCamp**: completamente gratuito, con certificaciones y proyectos. - **DataCamp**: especializado en ciencia de datos con Python. - **Exercism**: ofrece ejercicios (katas) con mentor´ ıa humana. - **LeetCode**: problemas algor´ ıtmicos (m´ as para entrevistas, pero ´ util). - **HackerRank**: similar a LeetCode, con desaf´ ıos clasificados por dificultad. - **CheckiO**: un juego de programaci´ on donde se resuelven misiones. - **Replit**: permite escribir y ejecutar Abraham Zamudio 58 PIT: Python Basico
  56. Sesion 2 Python en el navegador, con plantillas para juegos,

    GUI, etc. - **Google Colab**: notebooks de Python en la nube con GPU gratuita. Los canales de YouTube ofrecen tutoriales gratuitos y accesibles. Algunos canales de referencia son: - **Corey Schafer**: explicaciones claras y completas sobre Python est´ andar y bibliotecas. - **Sentdex**: aplicaciones pr´ acticas, machine learning, juegos. - **Tech With Tim**: proyectos y tutoriales para principiantes e intermedios. - **Programming with Mosh**: cursos intensivos. - **freeCodeCamp.org**: cursos completos de varias horas. - **PyData**: conferencias y tutoriales de la comunidad cient´ ıfica. - **Real Python**: tutoriales en video (tambi´ en tienen web con art´ ıculos). La documentaci´ on oficial de Python (docs.python.org) es una referencia insustituible. Est´ a bien organizada, incluye tutoriales para principiantes, gu´ ıas de referencia de la biblioteca est´ andar, y un ´ ındice completo. Adem´ as, est´ a traducida a varios idiomas (espa˜ nol, franc´ es, alem´ an, japon´ es, etc.). La comunidad tambi´ en produce versiones alternativas como “Python Spot” o “El Libro de Python” (en espa˜ nol). Los foros y comunidades de aprendizaje son esenciales para resolver dudas. Stack Overflow tiene millones de preguntas sobre Python, y su comunidad es muy activa. Subreddits como r/learnpython, r/Python, r/pythontips son amigables para principiantes. Existen servidores de Discord (por ejemplo, “Python Discord”, “Learn Python”) con canales de texto y voz para ayuda en tiempo real. Tambi´ en hay grupos de Telegram, Slack y WhatsApp en muchos idiomas. A nivel local, los Python User Groups (PUGs) organizan reuniones presenciales o virtuales con talleres, charlas y sesiones de programaci´ on en pareja. Estos grupos son una excelente manera de aprender socialmente, recibir mentor´ ıa y establecer contactos. La Python Software Foundation mantiene un directorio de grupos. Las conferencias como PyCon, EuroPython, PyData, y Scipy tambi´ en tienen pistas espec´ ıficas para educadores y principiantes. Para los docentes, existen recursos curriculares completos. “CS Principles with Python” de la organizaci´ on “Beauty and Joy of Computing” ofrece lecciones, ejercicios y evaluaciones. “Bootstrap” tiene “Bootstrap: Algebra” y “Bootstrap: Data Science” usando Python. “Project Lead The Way” (PLTW) tiene “Computer Science Essentials” con Python. En espa˜ nol, “Programa Python” (programapython.com) y “Aprende Python” (aprendepython.es) ofrecen tutoriales y ejercicios. El Ministerio de Educaci´ on de Finlandia public´ o “Python for Kids” como parte de su curr´ ıculo nacional. Un recurso emergente son las plataformas de evaluaci´ on autom´ atica (autograders) dise˜ nadas para educaci´ on. Por ejemplo, **Gradescope**, **OK.py** (de UC Berkeley), **CodeGrade**, y **Inginious** permiten a los profesores crear ejercicios con pruebas unitarias ocultas, l´ ımites de tiempo, y detecci´ on de plagio. Los estudiantes reciben retroalimentaci´ on inmediata. Muchos cursos masivos utilizan sus propios autograders, como el de edX o Coursera. La comunidad tambi´ en ha desarrollado entornos de desarrollo integrados (IDEs) adaptados a la ense˜ nanza. **Thonny** es un IDE dise˜ nado para principiantes, con depurador paso a paso que muestra la pila de llamadas y las variables; es ideal para entender la ejecuci´ on. **Mu** es otro editor simple, con modo Python 3, modo micro:bit, y modo Pygame. **PyCharm Abraham Zamudio 59 PIT: Python Basico
  57. Sesion 2 Edu** es una versi´ on educativa de PyCharm

    que incluye cursos interactivos. **Visual Studio Code** con extensiones como “Python”, “Jupyter”, y “Live Share” es muy popular en cursos universitarios. Finalmente, la comunidad de aprendizaje de Python se beneficia de una filosof´ ıa de inclusi´ on y ayuda mutua. El c´ odigo de conducta de la PSF y de la mayor´ ıa de eventos proh´ ıbe el acoso y fomenta la participaci´ on de todos. Se organizan eventos como “Django Girls”, “PyLadies”, “Black Python Devs”, y “AfroPython” para reducir la brecha de g´ enero y ´ etnica. Estos grupos ofrecen talleres gratuitos, mentor´ ıa y becas para conferencias. Como resultado, Python tiene una base de estudiantes muy diversa, enriqueciendo el aprendizaje colectivo. En conclusi´ on, la existencia de un ecosistema educativo tan vasto y variado es una de las razones principales por las que Python es la puerta de entrada a la programaci´ on para millones de personas cada a˜ no. Un principiante puede empezar con un tutorial de YouTube de 10 minutos, luego seguir con un libro gratuito, practicar en Codecademy, resolver dudas en Stack Overflow, asistir a un taller local, y finalmente contribuir a un proyecto de c´ odigo abierto, todo ello sin costo (excepto la inversi´ on de tiempo). Esta red de recursos y comunidades crea un entorno de aprendizaje continuo y sostenible que otros lenguajes envidian. 6.4. Democratizaci´ on del conocimiento tecnol´ ogico Uno de los impactos m´ as profundos de Python en la sociedad es su contribuci´ on a la democratizaci´ on del conocimiento tecnol´ ogico. Democratizaci´ on significa que el poder de crear software, analizar datos y automatizar tareas ya no est´ a restringido a una ´ elite de ingenieros con formaci´ on especializada, sino que est´ a al alcance de cualquier persona con una computadora y acceso a internet, independientemente de su edad, origen econ´ omico, ubicaci´ on geogr´ afica o formaci´ on previa. Python ha sido un veh´ ıculo clave para esta transformaci´ on gracias a sus caracter´ ısticas de accesibilidad, su gratuidad, su ecosistema abierto y su comunidad global. En primer lugar, Python es software libre y de c´ odigo abierto. Cualquier persona puede descargar el int´ erprete, las bibliotecas y las herramientas desde python.org sin pagar nada. No hay versiones “profesionales” con costo, ni licencias que limiten su uso comercial o educativo. Esto elimina la barrera econ´ omica. En pa´ ıses en desarrollo o en escuelas con presupuestos ajustados, Python puede instalarse en computadoras antiguas (requiere pocos recursos) o usarse en la nube (Google Colab, Replit) sin necesidad de hardware potente. La ausencia de costo permite que proyectos comunitarios, bibliotecas p´ ublicas, ONGs y centros de ense˜ nanza ofrezcan talleres de programaci´ on sin preocuparse por licencias. En segundo lugar, la sintaxis simple y la legibilidad reducen la barrera de entrada cognitiva. Una persona con educaci´ on media, incluso sin conocimientos previos de programaci´ on, puede escribir su primer programa en minutos. Esto contrasta con la situaci´ on hace 20 a˜ nos, cuando aprender a programar requer´ ıa dominar conceptos como punteros, gesti´ on de memoria, compilaci´ on, y una sintaxis cr´ ıptica. Python ha hecho posible que un contable, un bi´ ologo, un periodista, o un artista puedan aprender a programar para mejorar su trabajo, sin necesidad de convertirse en ingenieros de software. La democratizaci´ on no significa que todos se conviertan en programadores profesionales, sino que todos tengan la oportunidad de adquirir competencias Abraham Zamudio 60 PIT: Python Basico
  58. Sesion 2 computacionales b´ asicas, al igual que la alfabetizaci´

    on en lectura, escritura y matem´ aticas. En tercer lugar, Python es el lenguaje de la ciencia abierta. Las bibliotecas cient´ ıficas (NumPy, SciPy, matplotlib, pandas, scikit-learn, etc.) son gratuitas y se publican bajo licencias permisivas. Los investigadores pueden compartir sus scripts y notebooks (Jupyter) junto con sus art´ ıculos, permitiendo la reproducibilidad de los experimentos. Esta pr´ actica se ha extendido enormemente en campos como la bioinform´ atica, la astrof´ ısica, la econometr´ ıa y la psicolog´ ıa computacional. Antes, los investigadores usaban software propietario (MATLAB, SAS, SPSS) que costaba miles de d´ olares y cuyas licencias imped´ ıan compartir el c´ odigo abiertamente. Python ha nivelado el campo, permitiendo que universidades de recursos limitados participen en la vanguardia de la investigaci´ on. Un estudiante de una universidad peque˜ na en un pa´ ıs en desarrollo puede usar las mismas herramientas que un investigador del MIT. En cuarto lugar, la comunidad global de Python ha impulsado iniciativas espec´ ıficas para reducir la brecha digital. Por ejemplo, **PyLadies** ofrece talleres y mentor´ ıa para mujeres, aumentando la representaci´ on femenina en tecnolog´ ıa. **Django Girls** organiza talleres gratuitos de un d´ ıa para principiantes, con centenares de eventos en todo el mundo. **Black Python Devs** apoya a la comunidad negra de Python. **AfroPython** y **PyCon Africa** llevan el lenguaje a pa´ ıses africanos. **Python en Espa˜ nol** y **Python Brasil** promueven recursos en espa˜ nol y portugu´ es. La PSF otorga becas (financial aid) para asistir a PyCon y otras conferencias, cubriendo viaje, alojamiento y entrada. Estas acciones contrarrestan la desigualdad estructural en el acceso a la tecnolog´ ıa. En quinto lugar, la proliferaci´ on de recursos educativos gratuitos mencionados en la secci´ on anterior es en s´ ı misma una forma de democratizaci´ on. Cualquier persona con conexi´ on a internet puede acceder a cursos de universidades de prestigio (MIT, Harvard, Michigan) sin costo, o a libros interactivos, o a canales de YouTube con contenido de calidad. Los tutoriales est´ an disponibles en decenas de idiomas, no solo ingl´ es. Iniciativas como **freeCodeCamp** ofrecen certificaciones completamente gratuitas. Esto es especialmente importante en regiones donde el costo de la educaci´ on formal es prohibitivo. En sexto lugar, Python ha sido adoptado por gobiernos y organizaciones multilaterales como herramienta para la inclusi´ on digital. Por ejemplo, el plan “Ceibal en Uruguay” incluy´ o Python en sus cursos de programaci´ on para escolares. El proyecto “One Laptop Per Child” (OLPC) utiliza Python como lenguaje principal. La Uni´ on Europea financia proyectos como “Python for Engineers” en universidades de pa´ ıses del Este. En India, el gobierno lanz´ o el programa “Skill India” con cursos de Python en centros comunitarios. Estas iniciativas reconocen que la programaci´ on es una habilidad del siglo XXI y que Python es el veh´ ıculo m´ as efectivo para difundirla. En s´ eptimo lugar, Python permite la creaci´ on de “aplicaciones de empoderamiento”. Personas no t´ ecnicas pueden, con unas pocas l´ ıneas de c´ odigo, automatizar tareas repetitivas que antes les consum´ ıan horas. Por ejemplo, un periodista puede escribir un script para extraer datos de miles de PDFs y analizar patrones (periodismo de datos). Un agricultor puede usar sensores conectados a una Raspberry Pi con Python para monitorear humedad del suelo y activar riego autom´ atico. Un maestro puede crear un programa para calificar ex´ amenes de opci´ on m´ ultiple. Abraham Zamudio 61 PIT: Python Basico
  59. Sesion 2 Estos usos no requieren convertirse en desarrollador profesional,

    sino adquirir lo suficiente para resolver un problema concreto. Python, al ser f´ acil de aprender, hace esto posible. En octavo lugar, la naturaleza interpretada y la disponibilidad de REPL (Read-Eval-Print Loop) permiten un estilo de aprendizaje exploratorio y justo a tiempo. Una persona puede aprender solo los fragmentos que necesita para su tarea inmediata, sin tener que leer un libro completo. Por ejemplo, alguien que quiere procesar un archivo CSV puede buscar “python leer csv”, encontrar el m´ odulo ‘csv‘, copiar un ejemplo, adaptarlo y ejecutarlo. Este aprendizaje basado en tareas (task-oriented learning) es mucho m´ as efectivo para muchos adultos que el aprendizaje secuencial tradicional. La comunidad ha producido innumerables “recetas” (cookbooks) y fragmentos de c´ odigo listos para usar. En noveno lugar, Python ha impulsado el movimiento de “c´ odigo abierto para el desarrollo sostenible”. Organizaciones como **GitHub** y **GitLab** alojan millones de repositorios Python. Cualquier persona puede contribuir a proyectos que resuelven problemas sociales: salud p´ ublica (tracking de epidemias), medio ambiente (an´ alisis de datos clim´ aticos), educaci´ on (sistemas de gesti´ on), transparencia gubernamental (scraping de boletines oficiales). La barrera para contribuir es baja: basta con aprender lo b´ asico de Python y usar git. Esto convierte a Python en una herramienta de participaci´ on ciudadana. En d´ ecimo lugar, la integraci´ on de Python con hardware de bajo costo (Raspberry Pi, micro:bit, CircuitPython) ha llevado la programaci´ on a comunidades con recursos limitados. Una Raspberry Pi cuesta alrededor de 35 d´ olares, y puede convertirse en una computadora completa con Python. Proyectos de alfabetizaci´ on digital en aldeas remotas utilizan estas placas para ense˜ nar programaci´ on a ni˜ nos y adultos. Del mismo modo, los tel´ efonos m´ oviles con Android pueden ejecutar Python mediante aplicaciones como Pydroid 3, permitiendo aprender desde cualquier lugar. No obstante, persisten desaf´ ıos. La brecha digital sigue siendo real: en muchas regiones el acceso a internet es limitado o costoso, las computadoras son escasas, y la educaci´ on b´ asica es deficiente. Adem´ as, el idioma ingl´ es sigue siendo una barrera, aunque hay esfuerzos de traducci´ on. La democratizaci´ on no significa que todos tengan las mismas oportunidades, sino que las oportunidades est´ an disponibles para quienes pueden acceder a ellas. Python reduce las barreras t´ ecnicas pero no resuelve las barreras socioecon´ omicas. Por eso, las iniciativas de inclusi´ on son cruciales. En conclusi´ on, Python ha sido un poderoso agente democratizador en el mundo de la tecnolog´ ıa. Ha permitido que personas de todos los or´ ıgenes aprendan a programar, compartan c´ odigo, realicen investigaci´ on reproducible, y resuelvan problemas locales con herramientas globales. No es exagerado decir que Python es el lenguaje que m´ as ha contribuido a la alfabetizaci´ on computacional en el siglo XXI. Su filosof´ ıa de simplicidad, su gratuidad, su comunidad acogedora y su rico ecosistema educativo han convertido la programaci´ on de un arte arcano a una herramienta cotidiana. La democratizaci´ on del conocimiento tecnol´ ogico es una condici´ on necesaria para una sociedad m´ as justa y participativa, y Python est´ a desempe˜ nando un papel central en esa misi´ on. Abraham Zamudio 62 PIT: Python Basico
  60. Cap´ ıtulo 7 Python en la ciencia y la investigaci´

    on 7.1. An´ alisis de datos y visualizaci´ on La capacidad de procesar, analizar y visualizar datos se ha convertido en una competencia central en todas las disciplinas cient´ ıficas. El volumen de datos generados por experimentos, simulaciones, sensores y observaciones crece exponencialmente, y los investigadores necesitan herramientas que les permitan extraer conocimiento de manera eficiente y reproducible. Python, con su ecosistema de bibliotecas especializadas, se ha posicionado como el lenguaje de referencia para el an´ alisis de datos cient´ ıficos, reemplazando en gran medida a entornos propietarios como MATLAB, IDL o SAS. La combinaci´ on de NumPy, SciPy, pandas, Matplotlib, Seaborn y otras librer´ ıas ofrece un flujo de trabajo integrado que cubre desde la limpieza de datos hasta la generaci´ on de gr´ aficos de publicaci´ on. El pilar fundamental del an´ alisis de datos en Python es NumPy (Numerical Python), que proporciona el objeto ‘ndarray‘ (array multidimensional homog´ eneo) y una colecci´ on de funciones para operaciones vectorizadas de alto rendimiento. A diferencia de las listas nativas de Python, los arrays de NumPy almacenan datos de un mismo tipo en bloques contiguos de memoria, lo que permite realizar operaciones matem´ aticas elemento a elemento sin bucles expl´ ıcitos en Python, delegando el trabajo a rutinas optimizadas en C y Fortran. Por ejemplo, para sumar dos vectores de un mill´ on de elementos, la operaci´ on ‘c = a + b‘ en NumPy es cientos de veces m´ as r´ apida que un bucle ‘for‘ en Python puro. Esta eficiencia es crucial para conjuntos de datos grandes. Adem´ as, NumPy ofrece indexaci´ on avanzada (indexaci´ on booleana, indexaci´ on por arrays de enteros), funciones de ´ algebra lineal (producto matricial, descomposici´ on LU, valores singulares), transformadas de Fourier, generaci´ on de n´ umeros aleatorios y operaciones estad´ ısticas b´ asicas. Sobre NumPy se construye SciPy (Scientific Python), una colecci´ on de m´ odulos para al- goritmos cient´ ıficos. SciPy incluye: - scipy.integrate: integraci´ on num´ erica (m´ etodos de cuadratura, ecuaciones diferenciales ordinarias con solve_ivp). - scipy.optimize: minimi- zaci´ on (m´ etodos de gradiente, Nelder-Mead, Newton), b´ usqueda de ra´ ıces, ajuste de curvas . - scipy.interpolate: interpolaci´ on 1D y 2D (splines, grillas). - scipy.fft: transforma- das r´ apidas de Fourier (alternativa a NumPy). - scipy.signal : procesamiento de se˜ nales 63
  61. Sesion 2 (filtros, convoluci´ on, wavelets). - scipy.sparse: matrices dispersas

    y solvers para sistemas lineales dispersos. - scipy.stats: distribuciones de probabilidad, pruebas estad´ ısticas (t-test, chi-cuadrado, Kolmogorov-Smirnov). - scipy.ndimage: procesamiento de im´ agenes multi- dimensional (filtros, morfolog´ ıa). Estos m´ odulos evitan que los investigadores tengan que implementar desde cero algoritmos est´ andar, lo que acelera la investigaci´ on y reduce errores. Para datos tabulares y etiquetados (similares a hojas de c´ alculo o data frames de R), la biblioteca pandas es insustituible. El objeto central es ‘DataFrame‘, una estructura bidimen- sional con columnas de tipos potencialmente diferentes, indexaci´ on por filas y columnas, y un vasto conjunto de operaciones. pandas permite: - Cargar datos desde m´ ultiples formatos (CSV, Excel, JSON, SQL, HDF5, Parquet). - Limpiar datos: manejar valores nulos (‘drop- na‘, ‘fillna‘), eliminar duplicados, convertir tipos, reemplazar valores. - Filtrar y seleccionar: mediante indexaci´ on booleana, ‘loc‘ (por etiqueta) e ‘iloc‘ (por posici´ on). - Transformar: aplicar funciones a filas/columnas, crear nuevas columnas derivadas, agrupar (‘groupby‘) con agregaciones (suma, media, mediana, conteo, etc.), combinar DataFrames (‘concat‘, ‘merge‘, ‘join‘). - Operaciones de series temporales: remuestreo, ventanas m´ oviles, desfases. - Operacio- nes estad´ ısticas: descripci´ on (‘describe‘), correlaciones, covarianzas. La sintaxis de pandas es expresiva y permite realizar operaciones complejas con pocas l´ ıneas de c´ odigo. Por ejemplo, para calcular el promedio de temperatura por ciudad y mes desde un archivo CSV, se puede escribir: 1 df = pd.read_csv(’datos.csv’) 2 promedio = df.groupby ([’ciudad ’, df[’fecha ’].dt.month ])[’temperatura ’]. mean () Esta legibilidad es clave para la reproducibilidad y la colaboraci´ on. La visualizaci´ on de datos es otro pilar. Matplotlib es la biblioteca fundamental, que provee una API similar a MATLAB para crear gr´ aficos de alta calidad. Permite gr´ aficos de l´ ıneas, dispersi´ on, barras, histogramas, contornos, superficies, im´ agenes, etc. Su integraci´ on con NumPy es directa. Aunque Matplotlib es extremadamente flexible, su API puede ser verbosa. Por ello, se han desarrollado bibliotecas de alto nivel: - **Seaborn**: basada en Matplotlib, ofrece una sintaxis m´ as simple y temas est´ eticos por defecto, adem´ as de gr´ aficos estad´ ısticos espec´ ıficos (gr´ aficos de viol´ ın, mapas de calor, pairplots, regresiones lineales con intervalos de confianza). - **Plotly**: gr´ aficos interactivos (zoom, tooltips) que se pueden incrustar en notebooks o p´ aginas web; tambi´ en permite gr´ aficos 3D, mapas y dashboards. - **Bokeh**: similar a Plotly, enfocada en grandes conjuntos de datos. - **ggplot**: una adaptaci´ on de la gram´ atica de gr´ aficos de R (aunque menos usada). - **Altair**: basada en especificaciones declarativas, muy adecuada para an´ alisis exploratorio. En el ´ ambito cient´ ıfico, los gr´ aficos generados con estas bibliotecas cumplen con los requisitos de las publicaciones (formato vectorial, etiquetas en LaTeX, personalizaci´ on de estilos). El an´ alisis de datos no se limita a tablas; abarca tambi´ en datos de alta dimensionalidad, como im´ agenes, se˜ nales de EEG, espectros, etc. Para im´ agenes, ‘scikit-image‘ ofrece algoritmos de procesamiento (filtros, segmentaci´ on, extracci´ on de caracter´ ısticas) y ‘OpenCV‘ es otra alternativa potente. Para datos geogr´ aficos, ‘GeoPandas‘ extiende pandas con geometr´ ıas, y ‘Cartopy‘ permite mapas con proyecciones. Para datos de redes (grafos), ‘NetworkX‘ Abraham Zamudio 64 PIT: Python Basico
  62. Sesion 2 proporciona algoritmos de teor´ ıa de grafos. Para

    datos textuales, las bibliotecas de NLP como ‘NLTK‘, ‘spaCy‘ y ‘transformers‘ (Hugging Face) se integran f´ acilmente. Un aspecto revolucionario ha sido la adopci´ on de Jupyter Notebook como entorno de trabajo. Jupyter combina c´ odigo, texto enriquecido (Markdown), ecuaciones (LaTeX), visualizaciones interactivas y resultados en un solo documento ejecutable. Los investigadores pueden crear cuadernos que documentan todo el flujo de an´ alisis, desde la carga de datos hasta las figuras finales, y compartirlos como material complementario de sus art´ ıculos. Esto promueve la reproducibilidad: cualquier lector puede ejecutar el mismo c´ odigo y obtener los mismos resultados (siempre que tenga los datos). Adem´ as, Jupyter Lab proporciona un entorno de desarrollo integrado con terminal, visor de archivos y m´ ultiples cuadernos. Otra herramienta clave es ‘Dask‘, que permite escalar el an´ alisis a conjuntos de datos que no caben en memoria, mediante computaci´ on paralela y fuera del n´ ucleo. Dask ofrece una API similar a pandas y NumPy, pero trabajando con particiones que se procesan en paralelo en un solo ordenador o en un cl´ uster. Para datos extremadamente grandes (cientos de GB o TB), se integra con bases de datos y sistemas distribuidos como Spark (a trav´ es de ‘pyspark‘). La adopci´ on de Python en el an´ alisis de datos ha transformado la pr´ actica cient´ ıfica. Antes, los investigadores a menudo usaban herramientas de clic (Excel, SPSS, GraphPad) que no permit´ ıan automatizaci´ on ni reproducibilidad; o lenguajes especializados (R, MATLAB, IDL) que, aunque potentes, ten´ ıan costos de licencia y curvas de aprendizaje empinadas. Python unifica el ecosistema: se puede hacer desde la extracci´ on de datos de una API web hasta la construcci´ on de modelos de machine learning, pasando por la visualizaci´ on interactiva, todo en el mismo lenguaje. La formaci´ on de los cient´ ıficos incluye ahora Python como herramienta b´ asica, y los repositorios de c´ odigo (GitHub, Zenodo) son parte integral de la publicaci´ on cient´ ıfica. Por ´ ultimo, la comunidad cient´ ıfica que utiliza Python ha desarrollado est´ andares y mejores pr´ acticas. Por ejemplo, el uso de ‘virtualenv‘ o ‘conda‘ para gestionar entornos y dependencias asegura la reproducibilidad. Los notebooks se convierten a HTML o PDF para su inclusi´ on en suplementos. Las bibliotecas se someten a pruebas rigurosas y tienen documentaci´ on extensa. Las revistas cient´ ıficas como Nature, Science, y PLOS ONE aceptan ahora contribuciones que incluyen c´ odigo Python como material complementario, y algunas han lanzado secciones espec´ ıficas de ”software.o ¸ code sharing”. En campos como la bioinform´ atica, la astrof´ ısica y la econometr´ ıa, es pr´ acticamente obligatorio publicar el c´ odigo junto con los datos. 7.2. Simulaci´ on cient´ ıfica y modelamiento matem´ atico La simulaci´ on computacional es una metodolog´ ıa cient´ ıfica en s´ ı misma, junto con la teor´ ıa y la experimentaci´ on. Permite explorar sistemas que son demasiado grandes, peque˜ nos, r´ apidos, lentos, peligrosos o costosos para ser estudiados directamente. Python, combinado con bibliotecas de alto rendimiento, se ha convertido en una plataforma muy utilizada para simular fen´ omenos f´ ısicos, qu´ ımicos, biol´ ogicos y sociales. Aunque Python puro es lento para bucles intensivos, el uso de NumPy (operaciones vectorizadas), Numba (compilaci´ on just-in-time), Cython, o la integraci´ on con bibliotecas escritas en lenguajes compilados (C, Abraham Zamudio 65 PIT: Python Basico
  63. Sesion 2 C++, Fortran) permite alcanzar rendimientos cercanos a los

    de lenguajes tradicionales, con una productividad mucho mayor. Uno de los dominios m´ as cl´ asicos es la simulaci´ on de ecuaciones diferenciales ordinarias (EDOs) y parciales (EDPs). La biblioteca scipy.integrate proporciona solve_ivp (para problemas de valor inicial) con m´ etodos como Runge-Kutta, Adams, y BDF (para ecuaciones r´ ıgidas). Por ejemplo, un modelo epidemiol´ ogico SIR (Susceptible-Infectado-Recuperado) se escribe en unas pocas l´ ıneas: 1 def sir(t, y, beta , gamma): 2 S, I, R = y 3 dSdt = -beta * S * I 4 dIdt = beta * S * I - gamma * I 5 dRdt = gamma * I 6 return [dSdt , dIdt , dRdt] 7 8 sol = solve_ivp(sir , 9 [0, 100] , 10 [0.99 , 0.01 , 0], 11 args =(0.3 , 0.1) , 12 t_eval=np.linspace (0 ,100 ,1000) 13 ) Este modelo se puede extender a poblaciones estructuradas por edad, movilidad, etc. Los investigadores en epidemiolog´ ıa, ecolog´ ıa, farmacocin´ etica y din´ amica de sistemas utilizan estos solvers. Para EDPs, el paquete FEniCS (interfaz desde Python) resuelve problemas de elementos finitos con facilidad. Por ejemplo, la ecuaci´ on de calor 2D en un dominio rectangular se puede discretizar y resolver con unas decenas de l´ ıneas, definiendo la forma variacional en notaci´ on matem´ atica casi directa. Alternativamente, ‘FiPy‘ (Finite Volume PDE solver) es una biblioteca puramente Python. Para simulaciones de mec´ anica de fluidos, ‘OpenFOAM‘ tiene bindings para Python (ejemplo: ‘PyFoam‘). Para sistemas de part´ ıculas (din´ amica molecular, N-body), ‘PyMD‘ o ‘ASE‘ (Atomic Simulation Environment) permiten simular interacciones at´ omicas con campos de fuerza. La simulaci´ on de Monte Carlo es otra ´ area donde Python destaca. Se utiliza para integrar num´ ericamente, optimizar, modelar procesos estoc´ asticos (movimiento browniano, difusi´ on), y en f´ ısica de part´ ıculas. La biblioteca numpy.random proporciona generadores de n´ ume- ros aleatorios (incluyendo Mersenne Twister y PCG64). Para simulaciones m´ as complejas, scipy.stats ofrece distribuciones de probabilidad, y emcee (affine-invariant MCMC) se usa para ajustar modelos mediante cadenas de Markov. Un ejemplo t´ ıpico es estimar el valor de π mediante un algoritmo de Monte Carlo (lanzar puntos al azar en un cuadrado y contar los que caen dentro de un c´ ırculo inscrito). La eficiencia de NumPy permite ejecutar miles de millones de iteraciones en segundos. En biolog´ ıa computacional y biof´ ısica, Python se usa para simular plegamiento de prote´ ınas (modelos coarse-grained con ‘OpenMM‘ o ‘PyRosetta‘), din´ amica de poblaciones (‘EcoPy‘), redes de regulaci´ on gen´ etica (‘Tellurium‘), y modelos de electrofisiolog´ ıa cardiaca/neuronal (‘Brian‘ para neuronas, ‘Myokit‘ para cardiomiocitos). ‘Brian‘ es un simulador de redes Abraham Zamudio 66 PIT: Python Basico
  64. Sesion 2 neuronales escrito en Python que compila ecuaciones diferenciales

    a c´ odigo C++ sobre la marcha, permitiendo simular grandes redes (millones de neuronas) con un c´ odigo muy legible. En econom´ ıa y ciencias sociales, Python permite simulaciones basadas en agentes (agent-based modeling, ABM). La biblioteca ‘Mesa‘ proporciona una arquitectura para crear agentes, un entorno espacial (grid o network), y un scheduler para la activaci´ on. Los investigadores pueden modelar mercados financieros, segregaci´ on residencial (modelo de Schelling), propagaci´ on de innovaciones o evoluci´ on cultural. Mesa se integra con ‘matplotlib‘ para visualizaciones y con ‘pandas‘ para recopilar datos de cada simulaci´ on. Una alternativa m´ as ligera es ‘SimPy‘, orientada a simulaci´ on de eventos discretos (colas, procesos industriales, log´ ıstica). En f´ ısica de altas energ´ ıas y astrof´ ısica, Python se ha convertido en un est´ andar. El Large Hadron Collider (LHC) produce petabytes de datos, y el an´ alisis se realiza con ‘ROOT‘ (C++), pero cada vez m´ as los f´ ısicos usan ‘uproot‘ (para leer archivos ROOT en Python) y ‘awkward-array‘ (para datos tipo ”jagged array”). Las simulaciones de colisiones se realizan con ‘Geant4‘ (C++), pero los scripts de configuraci´ on y an´ alisis posteriores son Python. En cosmolog´ ıa, ‘CAMB‘ y ‘CLASS‘ (que tienen interfaces Python) calculan el espectro de potencia del fondo c´ osmico de microondas, y ‘nbodykit‘ simula estructuras a gran escala. Un enfoque moderno es la simulaci´ on h´ ıbrida que combina c´ odigo de alto rendimiento (C++, CUDA) con un orquestador en Python. Por ejemplo, el paquete ‘PyFR‘ resuelve ecuaciones de Euler y Navier-Stokes con m´ etodos espectrales, usando GPU y siendo controlado desde Python. ‘Dedalus‘ es un pseudo-espectral para EDPs, escrito en Python con n´ ucleos en C. Estos sistemas permiten a los cient´ ıficos concentrarse en la f´ ısica sin tener que programar en bajo nivel. La simulaci´ on cu´ antica tambi´ en encuentra en Python un aliado. ‘QuTiP‘ (Quantum Toolbox in Python) simula la din´ amica de sistemas cu´ anticos abiertos (ecuaci´ on maestra de Lindblad), estados de Fock, y circuitos cu´ anticos sencillos. ‘PennyLane‘ y ‘Qiskit‘ (IBM) permiten programar computadoras cu´ anticas reales y simuladores desde Python. Para la optimizaci´ on de modelos y calibraci´ on de par´ ametros, los investigadores utilizan scipy.optimize y bibliotecas m´ as avanzadas como emcee (MCMC) o pymc3 (inferencia bayesiana). Un flujo t´ ıpico es: se escribe la funci´ on que simula un sistema (por ejemplo, la evoluci´ on de una poblaci´ on de especies), se comparan los resultados con datos observados mediante una funci´ on de verosimilitud, y luego se optimizan los par´ ametros o se muestrea su distribuci´ on posterior. La capacidad de Python para integrarse con bibliotecas existentes en otros lenguajes es una ventaja enorme. A trav´ es de ‘ctypes‘, ‘CFFI‘, ‘pybind11‘ (para C++), o ‘f2py‘ (Fortran), se puede invocar c´ odigo heredado optimizado. Muchos c´ odigos cient´ ıficos hist´ oricos escritos en Fortran (desde los a˜ nos 70) se utilizan hoy con envolturas Python, lo que permite reutilizarlos sin reescribirlos. Por ejemplo, el popular c´ odigo de elementos finitos ‘MCNP‘ (neutr´ onica) tiene interfaces Python no oficiales. La reproducibilidad en simulaci´ on es otro punto fuerte. Los entornos de Python (con archivos ‘requirements.txt‘ o ‘environment.yml‘) capturan las versiones exactas de todas las bibliotecas. Las simulaciones se pueden ejecutar en contenedores Docker o en plataformas como Binder, Abraham Zamudio 67 PIT: Python Basico
  65. Sesion 2 donde cualquier investigador puede repetirlas. Esto es especialmente

    importante cuando los resultados de simulaciones son parte esencial de un art´ ıculo cient´ ıfico. Python tambi´ en se usa para simulaciones en tiempo real (hard real-time, por ejemplo en control de experimentos). Aunque no es tan determinista como C, con un sistema operativo adecuado y utilizando ‘numba‘ para acelerar, puede ser suficiente para muchos prop´ ositos (por ejemplo, en sintonizaci´ on de l´ aseres o adquisici´ on de datos en tiempo real). Finalmente, la combinaci´ on de simulaci´ on y visualizaci´ on interactiva con ‘ipywidgets‘ permite explorar par´ ametros en tiempo real. Por ejemplo, un modelo de depredador-presa de Lotka- Volterra puede tener deslizadores para las tasas de crecimiento, y al moverlos, la gr´ afica de poblaciones se actualiza al instante. Esto facilita la comprensi´ on de la sensibilidad del modelo, tanto para investigadores como para estudiantes. En resumen, Python ha democratizado la simulaci´ on cient´ ıfica, permitiendo que investigadores con diversos niveles de habilidad en programaci´ on construyan modelos complejos de forma r´ apida y fiable. La combinaci´ on de NumPy/SciPy para operaciones num´ ericas, Numba/Cython para aceleraci´ on, y bibliotecas especializadas para cada dominio, hace de Python una plata- forma vers´ atil que compite con lenguajes tradicionales en rendimiento y gana en facilidad de uso. 7.3. Aplicaciones en f´ ısica, biolog´ ıa y econom´ ıa La versatilidad de Python ha propiciado su adopci´ on en pr´ acticamente todas las disciplinas cient´ ıficas. Esta secci´ on presenta aplicaciones concretas en tres campos paradigm´ aticos: f´ ısica, biolog´ ıa y econom´ ıa, mostrando c´ omo el lenguaje y su ecosistema han permitido avances significativos en la investigaci´ on. F´ ısica En f´ ısica, Python se utiliza desde la ense˜ nanza hasta la investigaci´ on de vanguardia. Un ejem- plo emblem´ atico es el an´ alisis de datos del LIGO (Laser Interferometer Gravitational-Wave Observatory), que detect´ o por primera vez ondas gravitacionales en 2015. El pipeline de detec- ci´ on usa grandes cantidades de c´ odigo Python para limpiar las se˜ nales, buscar coincidencias con modelos te´ oricos (waveforms) y estimar par´ ametros (masas, espines, distancia). La biblio- teca ‘GWpy‘ es espec´ ıfica para este dominio. Otros proyectos como ‘AstroPy‘ proporcionan herramientas comunes en astronom´ ıa: manejo de unidades y constantes, coordenadas celestes (transformaciones entre sistemas), tablas de datos (FITS, VO), convoluciones, estad´ ısticas, y modelos cosmol´ ogicos. ‘SunPy‘ se dedica a datos solares (im´ agenes de SDO, espectros). En f´ ısica de part´ ıculas, los f´ ısicos del LHC utilizan ‘scikit-hep‘ (una colecci´ on de paquetes como ‘uproot‘, ‘hist‘, ‘vector‘, ‘particle‘) para analizar colisiones. En f´ ısica del estado s´ olido y ciencia de materiales, Python ha revolucionado los c´ alculos de estructura electr´ onica. ‘PySCF‘ (Python-based Simulations of Chemistry Framework) realiza c´ alculos de qu´ ımica cu´ antica (m´ etodos de Hartree-Fock, DFT, etc.). ‘ASE‘ (Atomic Simulation Environment) es un conjunto de herramientas para construir, manipular y simular estructuras Abraham Zamudio 68 PIT: Python Basico
  66. Sesion 2 at´ omicas con interfaces a c´ odigos externos

    como VASP, GPAW o Quantum Espresso. ‘Phonopy‘ calcula dispersi´ on de fonones. ‘Pymatgen‘ (Python Materials Genomics) se usa para an´ alisis de estructuras cristalinas, diagramas de fases, y an´ alisis de datos de bases de datos como Materials Project. Todos estos paquetes permiten automatizar c´ alculos de alta productividad, generando scripts que ejecutan miles de simulaciones variando par´ ametros (por ejemplo, temperatura o presi´ on) y analizan los resultados. En f´ ısica de fluidos y plasma, se utilizan ‘Dedalus‘ (EDPs espectrales), ‘PyROOT‘ (an´ alisis de datos de colisionadores), ‘PlasmaPy‘ (par´ ametros de plasma, dispersi´ on, ecuaciones de MHD). Incluso en educaci´ on, ‘vpython‘ y ‘glowscript‘ permiten crear animaciones 3D de sistemas f´ ısicos (ley de Coulomb, movimientos planetarios, campos el´ ectricos) que se ejecutan en un navegador, facilitando la ense˜ nanza interactiva. Biolog´ ıa La biolog´ ıa computacional ha sido una de las ´ areas de m´ as r´ apido crecimiento para Python. La bioinform´ atica depende cr´ ıticamente de Python para procesar secuencias gen´ omicas. ‘Biopython‘ es la biblioteca fundamental: proporciona herramientas para manipular secuencias (ADN, ARN, prote´ ınas), leer y escribir formatos est´ andar (FASTA, GenBank, PDB), acceder a bases de datos en l´ ınea (NCBI, UniProt), realizar alineamientos (con wrappers de ClustalW, MUSCLE), y manejar ´ arboles filogen´ eticos. ‘Biopython‘ tambi´ en incluye m´ odulos para gen´ etica de poblaciones (´ ındices de diversidad, Fst) y estructura de prote´ ınas. En gen´ omica, los pipelines de an´ alisis (por ejemplo, RNA-seq para expresi´ on diferencial, ATAC- seq para accesibilidad de cromatina) se escriben en Python (o con Snakemake, que es Python). La biblioteca ‘pysam‘ da acceso a archivos SAM/BAM (alineamientos de secuenciaci´ on). ‘HTSeq‘ proporciona estructuras de datos para an´ alisis de alta productividad. ‘PyGenome‘ facilita la manipulaci´ on de ensamblajes. Adem´ as, ‘scikit-bio‘ ofrece algoritmos de ecolog´ ıa microbiana (diversidad alfa/beta, UniFrac). El an´ alisis de datos de prote´ omica (espectrometr´ ıa de masas) usa ‘pyteomics‘. Para biolog´ ıa estructural, ‘PyMOL‘ (aunque es una aplicaci´ on independiente) se puede controlar mediante scripts Python; tambi´ en ‘Bio.PDB‘ de Biopython maneja archivos de coordenadas at´ omicas. En neurociencia, Python es el lenguaje dominante para an´ alisis de electrofisiolog´ ıa (spikes, LFP, EEG) con ‘Neo‘ (estructuras de datos), ‘Elephant‘ (an´ alisis de datos de electrofisiolog´ ıa), ‘NeuroKit2‘ (se˜ nales fisiol´ ogicas), ‘MNE-Python‘ (MEG y EEG). ‘Brian‘ (ya mencionado) simula redes neuronales. ‘Nilearn‘ y ‘nibabel‘ se usan en neuroimagen (resonancia magn´ eti- ca funcional, fMRI). Para modelado cognitivo, ‘PsyNeuLink‘ permite construir modelos computacionales de procesos cognitivos. En ecolog´ ıa y biolog´ ıa de la conservaci´ on, ‘PyEco‘ y ‘scikit-ecology‘ (menos populares), o los wrappers de Python para ‘R‘ con ‘rpy2‘, permiten hacer modelos de distribuci´ on de especies, din´ amica poblacional, y an´ alisis de redes tr´ oficas. ‘Biomart‘ se consulta desde Python para obtener anotaciones gen´ omicas. Un ´ area emergente es la biolog´ ıa sint´ etica, donde ‘jupyter‘ notebooks se utilizan para dise˜ nar circuitos gen´ eticos, simular su comportamiento (modelos de ODE) y controlar robots l´ ıquidos Abraham Zamudio 69 PIT: Python Basico
  67. Sesion 2 automatizados. ‘CRISPRstack‘ es una herramienta en Python para

    dise˜ nar gu´ ıas ARN. Econom´ ıa La econom´ ıa ha experimentado una transformaci´ on metodol´ ogica en las ´ ultimas dos d´ ecadas, pasando de modelos anal´ ıticos cerrados a simulaciones num´ ericas y an´ alisis de datos masivos. Python ha sido un veh´ ıculo clave para esta transformaci´ on, ofreciendo alternativas gratuitas y flexibles a software especializado como Stata, EViews o MATLAB. Los economistas utilizan Python en tres grandes vertientes: econometr´ ıa, macroeconom´ ıa computacional y finanzas cuantitativas. En econometr´ ıa, la biblioteca ‘statsmodels‘ es la m´ as completa: proporciona estimaci´ on de modelos lineales (OLS, GLS, WLS), modelos lineales generalizados (logit, probit, Poisson), series temporales (ARIMA, VAR, modelos de cointegraci´ on), pruebas de hip´ otesis (Wald, t, F, Breusch-Pagan, White, Jarque-Bera), y herramientas de especificaci´ on. ‘linearmodels‘ extiende con paneles y variables instrumentales. ‘PyMC‘ (Bayesiano) se usa para modelos m´ as complejos. Para datos de panel, ‘panelOLS‘. Adem´ as, los economistas pueden leer y escribir f´ acilmente datos desde y hacia formatos comunes (CSV, Excel, Stata .dta, SPSS .sav). En macroeconom´ ıa computacional, los investigadores resuelven modelos de equilibrio gene- ral din´ amico estoc´ astico (DSGE) utilizando Python. La biblioteca ‘dynare‘ (originalmente MATLAB) tiene una interfaz Python (‘pydynare‘). Alternativamente, se implementan m´ etodos de perturbaci´ on, proyecci´ on de pol´ ıticas o simulaci´ on de Monte Carlo. ‘quantecon‘ (Quantitati- ve Economics) es una organizaci´ on que proporciona c´ odigo abierto para econom´ ıa cuantitativa, con ejemplos de b´ usqueda de empleo, modelos de crecimiento, juegos de Markov, etc. Tambi´ en incluye ‘quantecon‘ como paquete Python con utilidades para aproximaciones num´ ericas y simulaciones. ‘EconModel‘ es otra plataforma. En finanzas cuantitativas, Python se utiliza para valoraci´ on de opciones (modelo Black-Scholes, ´ arboles binomiales, Monte Carlo), gesti´ on de riesgos (VaR, Expected Shortfall), backtesting de estrategias algor´ ıtmicas, y an´ alisis de series temporales financieras. La biblioteca pandas es esencial para manejar datos de precios, vol´ umenes, etc. pandas datareader extrae datos de Yahoo Finance, Google Finance, FRED, etc. yfinance es una alternativa moderna. PyPortfolioOpt implementa optimizaci´ on de carteras (frontera eficiente de Markowitz, riesgo de CVaR). arch modela heterocedasticidad condicional (ARCH/GARCH). ta (Technical Analysis) calcula indicadores. backtrader o zipline (para backtesting) permiten simular estrategias de trading. Adem´ as, Python se usa para extraer datos econ´ omicos no estructurados (web scraping con ‘BeautifulSoup‘ y ‘Scrapy‘), procesar textos de noticias financieras (an´ alisis de sentimiento con ‘TextBlob‘ o ‘transformers‘), y construir dashboards interactivos (con ‘Dash‘ o ‘Bokeh‘) para visualizar indicadores macroecon´ omicos. La academia econ´ omica ha adoptado tambi´ en el modelo de investigaci´ on reproducible con Jupyter notebooks. Revistas como el ”Journal of Applied Econometrics 2 el .American Economic Review.alientan (y a veces exigen) que los autores proporcionen c´ odigo y datos para replicaci´ on. Python se utiliza a menudo para ello. Abraham Zamudio 70 PIT: Python Basico
  68. Sesion 2 En conclusi´ on, las aplicaciones de Python en

    f´ ısica, biolog´ ıa y econom´ ıa ilustran su car´ acter verdaderamente general. Los mismos conceptos (arrays, dataframes, solvers de EDOs, vi- sualizaci´ on) se reutilizan en dominios muy diferentes, pero cada disciplina ha desarrollado bibliotecas especializadas que profundizan en sus necesidades particulares. Esta comunidad transversal es una de las grandes fortalezas de Python: lo que se aprende en un campo es f´ acilmente transferible a otro. 7.4. Python en universidades y centros de investigaci´ on La adopci´ on de Python en el ´ ambito acad´ emico y de investigaci´ on ha pasado de ser una decisi´ on individual de entusiastas a convertirse en una pol´ ıtica institucional en muchas universidades y centros de investigaci´ on. Los departamentos de inform´ atica, ingenier´ ıa, ciencias naturales, medicina y ciencias sociales integran Python en sus curr´ ıculos y plataformas de computaci´ on. Esta secci´ on examina c´ omo Python se ha institucionalizado, los recursos de supercomputaci´ on, las comunidades de investigaci´ on y el impacto en la formaci´ on de nuevas generaciones de cient´ ıficos. En las universidades, Python se ense˜ na no solo en cursos de programaci´ on, sino tambi´ en como herramienta en cursos de m´ etodos num´ ericos, an´ alisis de datos, aprendizaje autom´ atico, simulaci´ on y estad´ ıstica. Muchas carreras han reemplazado sus cursos de ¨ Inform´ atica 101”(que usaban Java o C++) por Python. Por ejemplo, el MIT ofrece ¨ Introduction to Computational Thinking and Data Science”basado en Python; la Universidad de Stanford tiene ”Scientific Computing in Python”; la Universidad de Cambridge usa Python en su programa de Ciencias Naturales. Esta integraci´ on vertical significa que los estudiantes aprenden un lenguaje desde el principio y luego lo aplican en asignaturas posteriores, evitando tener que aprender un lenguaje diferente para cada materia. Los centros de supercomputaci´ on (HPC) han incorporado Python como lenguaje de primer orden. Aunque los c´ odigos de alto rendimiento suelen estar escritos en C, C++ o Fortran, Python se utiliza como lenguaje de ”pegamento”(glue language) para orquestar flujos de trabajo complejos. Los gestores de trabajos en cl´ usteres (Slurm, PBS) tienen m´ odulos para lanzar trabajos Python. Adem´ as, bibliotecas como ‘mpi4py‘ proporcionan bindings de MPI (Message Passing Interface) para paralelizaci´ on en memoria distribuida. ‘numba‘ permite compilar funciones Python a CUDA para GPUs. ‘dask‘ y ‘joblib‘ paralelizan en un nodo. Como resultado, los investigadores pueden desarrollar prototipos en Python y luego ejecutarlos en cientos de n´ ucleos sin cambiar de lenguaje. Muchos centros de investigaci´ on han creado equipos de ”software engineering.o research software engineers”(RSEs) que ayudan a los cient´ ıficos a escribir c´ odigo Python eficiente y reproducible. Por ejemplo, el Software Sustainability Institute (Reino Unido) y el US Research Software Engineer Association promueven buenas pr´ acticas. Las universidades tambi´ en ofrecen servicios de consultor´ ıa en Python, talleres de buenas pr´ acticas (control de versiones, pruebas unitarias, documentaci´ on, manejo de entornos) y ¸ coding clinics”. Esto reconoce que el software es un producto de investigaci´ on tan importante como los art´ ıculos. La infraestructura de investigaci´ on a gran escala (CERN, ESA, NOAA, EMBL, etc.) ha Abraham Zamudio 71 PIT: Python Basico
  69. Sesion 2 adoptado Python masivamente. En el CERN, el an´

    alisis de datos del LHC se realiza con ROOT, pero los flujos de trabajo se gestionan con Python. El proyecto ”LHCC”(Large Hadron Collider Computing) ha desarrollado ‘Ganga‘ (Python) para el env´ ıo de trabajos. El repositorio de c´ odigo de los experimentos (ATLAS, CMS) contiene millones de l´ ıneas de Python. La ESA (Agencia Espacial Europea) utiliza Python para procesar datos de sat´ elites (por ejemplo, ‘Sentinel Hub‘ tiene API Python). La NOAA (Administraci´ on Nacional Oce´ anica y Atmosf´ erica) usa Python en modelos clim´ aticos y predicci´ on meteorol´ ogica. Las bibliotecas cient´ ıficas de Python son mantenidas en muchos casos por investigadores que voluntariamente dedican tiempo a su desarrollo. Sin embargo, la sostenibilidad es un desaf´ ıo. Proyectos como NumPy, SciPy, pandas, matplotlib y Jupyter han recibido financiamiento de agencias gubernamentales (NSF, DOE, Sloan Foundation) y de empresas (Google, Microsoft, IBM). La existencia de la Python Software Foundation (PSF) y de fiscally sponsored projects (como NumFOCUS) permite recaudar donaciones y patrocinios. NumFOCUS es una fundaci´ on sin ´ animo de lucro que apoya proyectos de c´ odigo abierto en ciencia de datos, entre ellos muchos del ecosistema Python. Los investigadores que contribuyen a estas bibliotecas a menudo reciben cr´ edito acad´ emico en forma de citas (se solicita citar la biblioteca) e incluso pueden incluirlas como ”producto de investigaci´ on.en sus curr´ ıculums. Un hito importante fue la creaci´ on de **Jupyter** (originalmente IPython) en 2014, que ha transformado la comunicaci´ on cient´ ıfica. Los notebooks Jupyter permiten mezclar narrativa, ecuaciones, c´ odigo y visualizaciones, y se han convertido en un formato est´ andar para publicar an´ alisis reproducibles. Revistas como ”Jupyter Notebooks as Supplementary Material”son comunes. Servicios como **Binder** permiten ejecutar cualquier notebook alojado en GitHub directamente en un entorno personalizado. **MyBinder** es utilizado por universidades para compartir ejercicios interactivos. Los repositorios institucionales (arXiv, Zenodo, Figshare) aceptan c´ odigo Python como complemento de art´ ıculos. Zenodo asigna DOIs a versiones de software, lo que permite citar el c´ odigo de manera formal. Tambi´ en existen revistas dedicadas al software cient´ ıfico, como el ”Journal of Open Source Software”(JOSS), que revisa por pares paquetes Python (y otros), otorg´ andoles credibilidad acad´ emica. En cuanto a la formaci´ on de investigadores, muchas escuelas de doctorado ofrecen cursos obligatorios de Python para estudiantes de todas las disciplinas. Por ejemplo, ”Software Carpentry 2 ”Data Carpentry”son talleres de dos d´ ıas que ense˜ nan automatizaci´ on de tareas, control de versiones y an´ alisis de datos con Python, y han formado a decenas de miles de investigadores en todo el mundo. Estos talleres son organizados por voluntarios y a menudo patrocinados por universidades. La pandemia aceler´ o la virtualizaci´ on de la ense˜ nanza de Python. Los cursos masivos en l´ ınea (Coursera, edX, DataCamp) tienen millones de estudiantes. Las universidades tambi´ en desa- rrollan sus propias plataformas de ense˜ nanza basadas en JupyterHub, donde cada estudiante obtiene un notebook en la nube con las bibliotecas preinstaladas. Esto evita problemas de instalaci´ on local y permite a los profesores revisar el trabajo. Un fen´ omeno interesante es el surgimiento de Research Software Engineer¸ como carrera profesional. Los RSE son personas que tienen formaci´ on en ciencias y en ingenier´ ıa de software, Abraham Zamudio 72 PIT: Python Basico
  70. Sesion 2 y se dedican a desarrollar software de investigaci´

    on de alta calidad. Muchas universidades (UCL, Southampton, Delft, etc.) tienen departamentos de RSE. Python es su lenguaje principal, junto con herramientas de construcci´ on (poetry, conda), integraci´ on continua (GitHub Actions) y pruebas. Las universidades tambi´ en est´ an migrando sus sistemas de gesti´ on de laboratorios y adquisici´ on de datos a Python. Por ejemplo, en experimentos de f´ ısica, se utiliza ‘PyVISA‘ para controlar instrumentos (osciloscopios, fuentes de voltaje) a trav´ es de GPIB, USB o Ethernet. En qu´ ımica, ‘OpenChrom‘ y ‘ChemPy‘ permiten an´ alisis cromatogr´ afico y termodin´ amico. En biolog´ ıa, ‘Microscope‘ y ‘Pycromanager‘ controlan microscopios. Por ´ ultimo, la colaboraci´ on interdisciplinaria se ve facilitada por Python. Un ec´ ologo puede compartir un script con un climat´ ologo que a su vez puede adaptarlo a sus datos. Los notebooks en repositorios p´ ublicos permiten el aprendizaje por imitaci´ on y la construcci´ on sobre el trabajo de otros. Esta cultura de apertura y reutilizaci´ on es fundamental para el progreso cient´ ıfico. En resumen, Python ha pasado de ser una herramienta de nicho a una infraestructura esencial en universidades y centros de investigaci´ on. Su gratuidad, su ecosistema bibliotecario, su facilidad de aprendizaje y su comunidad activa lo han convertido en el lenguaje de la ciencia abierta y reproducible. La formaci´ on de los futuros investigadores en Python es ahora parte integral de la educaci´ on cient´ ıfica, y su uso continuar´ a expandi´ endose a medida que la investigaci´ on dependa m´ as de los datos y las simulaciones. Abraham Zamudio 73 PIT: Python Basico
  71. Cap´ ıtulo 8 Python y la inteligencia artificial 8.1. Aprendizaje

    autom´ atico y redes neuronales La inteligencia artificial (IA) ha experimentado una transformaci´ on radical en las ´ ultimas dos d´ ecadas, pasando de ser un campo acad´ emico especializado a convertirse en una tecnolog´ ıa ubicua que impulsa desde los motores de b´ usqueda hasta los sistemas de recomendaci´ on, pasando por el diagn´ ostico m´ edico y los veh´ ıculos aut´ onomos. En el coraz´ on de esta revoluci´ on se encuentra Python, que se ha consolidado como el lenguaje de programaci´ on dominante para el aprendizaje autom´ atico (machine learning, ML) y el aprendizaje profundo (deep learning). Esta supremac´ ıa no es casual: Python ofrece una combinaci´ on inigualable de simplicidad, legibilidad y un ecosistema de bibliotecas optimizadas que permiten a los investigadores y desarrolladores implementar algoritmos complejos con una productividad extraordinaria. El aprendizaje autom´ atico cl´ asico abarca una amplia gama de algoritmos que aprenden patrones a partir de datos. La biblioteca de referencia es scikit-learn, construida sobre NumPy, SciPy y matplotlib. scikit-learn proporciona una API uniforme y consistente para decenas de algoritmos, organizados en categor´ ıas: Regresi´ on: regresi´ on lineal, Ridge, Lasso, ElasticNet, regresi´ on log´ ıstica, regresi´ on de vectores soporte (SVR), ´ arboles de decisi´ on para regresi´ on, bosques aleatorios, gradiente boosting (XGBoost, LightGBM, CatBoost a menudo se integran como envolturas). Clasificaci´ on: k-vecinos m´ as cercanos (k-NN), m´ aquinas de vectores soporte (SVC), ´ arboles de decisi´ on, bosques aleatorios, Naive Bayes (Gaussiano, Multinomial, Bernoulli), an´ alisis discriminante lineal y cuadr´ atico, clasificadores de gradiente boosting, redes neuronales multicapa (MLPClassifier) simples. Clustering: k-means, clustering jer´ arquico, DBSCAN, OPTICS, mezcla de Gaussianas (GMM), MeanShift, espectro de afinidad. Reducci´ on de dimensionalidad: an´ alisis de componentes principales (PCA), an´ alisis discriminante lineal (LDA), t-SNE, UMAP, autoencoders (v´ ıa redes neuronales). Selecci´ on de modelos: validaci´ on cruzada (k-fold, estratificada, leave-one-out), b´ usque- 75
  72. Sesion 2 da de hiperpar´ ametros (GridSearchCV, RandomizedSearchCV), curvas de

    validaci´ on y aprendizaje. Preprocesamiento: escalado (StandardScaler, MinMaxScaler, RobustScaler), normali- zaci´ on, imputaci´ on de valores nulos, codificaci´ on de variables categ´ oricas (OneHotEnco- der, LabelEncoder), generaci´ on de caracter´ ısticas polin´ omicas. La API de scikit-learn sigue el patr´ on de estimador: cada algoritmo tiene m´ etodos fit(X, y) para entrenar (aprender) y predict(X) para predecir. Existen tambi´ en transform para transformaciones y fit transform para combinarlos. Los pipelines (Pipeline) permiten encadenar transformaciones y un estimador final, lo que facilita la validaci´ on cruzada y la b´ usqueda de hiperpar´ ametros de todo el proceso. Por ejemplo, un pipeline t´ ıpico para clasificaci´ on de texto podr´ ıa incluir extracci´ on de caracter´ ısticas (TF-IDF), selecci´ on de las mejores caracter´ ısticas y un clasificador lineal, todo ello dentro de un GridSearchCV que optimiza los par´ ametros de todos los pasos simult´ aneamente. El aprendizaje profundo ha llevado la IA a otro nivel de capacidad y complejidad. Las redes neuronales profundas con decenas o cientos de capas pueden aprender representaciones jer´ arquicas de los datos, logrando un rendimiento sobrehumano en tareas como reconocimiento de im´ agenes, procesamiento de lenguaje natural y juegos de estrategia. Los dos frameworks dominantes son TensorFlow (desarrollado por Google) y PyTorch (desarrollado por Meta, originalmente de Facebook). Ambos tienen Python como lenguaje principal, aunque sus n´ ucleos est´ an escritos en C++ y CUDA para un rendimiento m´ aximo. TensorFlow ofrece un ecosistema completo: tf.data para pipelines de entrada eficientes, tf.keras como API de alto nivel (integrada desde TensorFlow 2.x), tf.distribute para entrenamiento distribuido, TensorBoard para visualizaci´ on, TensorFlow Serving para des- pliegue en producci´ on, y TensorFlow Lite para dispositivos m´ oviles y embebidos. Keras proporciona una sintaxis simple e intuitiva para construir redes neuronales mediante capas (layers). Por ejemplo, una red convolucional para clasificaci´ on de im´ agenes se define as´ ı: 1 import tensorflow as tf 2 from tensorflow.keras import layers , models 3 4 model = models.Sequential ([ 5 layers.Conv2D (32, (3 ,3), activation=’relu ’, input_shape =(64 ,64 ,3)), 6 layers.MaxPooling2D ((2 ,2)), 7 layers.Conv2D (64, (3 ,3), activation=’relu ’), 8 layers.MaxPooling2D ((2 ,2)), 9 layers.Conv2D (128 , (3 ,3), activation=’relu ’), 10 layers.Flatten (), 11 layers.Dense (128 , activation=’relu ’), 12 layers.Dense (10, activation=’softmax ’) 13 ]) 14 15 model.compile(optimizer=’adam ’, 16 loss=’sparse_categorical_crossentropy ’, 17 metrics =[’accuracy ’]) 18 19 model.fit(train_dataset , epochs =10, validation_data =val_dataset) Abraham Zamudio 76 PIT: Python Basico
  73. Sesion 2 PyTorch, por su parte, sigue un paradigma de

    diferenciaci´ on autom´ atica mediante el uso de tensores y un grafo computacional din´ amico (definido por ejecuci´ on). Esto lo hace especialmente adecuado para investigaci´ on, donde se requiere flexibilidad para modificar la arquitectura en tiempo de ejecuci´ on. La misma red convolucional en PyTorch se escribe de manera m´ as expl´ ıcita: 1 import torch 2 import torch.nn as nn 3 import torch.optim as optim 4 5 class ConvNet(nn.Module): 6 def __init__(self): 7 super(ConvNet , self).__init__ () 8 self.conv1 = nn.Conv2d (3, 32, 3) 9 self.pool = nn.MaxPool2d (2, 2) 10 self.conv2 = nn.Conv2d (32, 64, 3) 11 self.conv3 = nn.Conv2d (64, 128, 3) 12 self.fc1 = nn.Linear (128 * 6 * 6, 128) 13 self.fc2 = nn.Linear (128 , 10) 14 15 def forward(self , x): 16 x = self.pool(torch.relu(self.conv1(x))) 17 x = self.pool(torch.relu(self.conv2(x))) 18 x = torch.relu(self.conv3(x)) 19 x = x.view(-1, 128 * 6 * 6) 20 x = torch.relu(self.fc1(x)) 21 x = self.fc2(x) 22 return x 23 24 model = ConvNet () 25 criterion = nn. CrossEntropyLoss () 26 optimizer = optim.Adam(model.parameters (), lr =0.001) 27 28 # Bucle de entrenamiento 29 for epoch in range (10): 30 for images , labels in train_loader : 31 outputs = model(images) 32 loss = criterion(outputs , labels) 33 optimizer.zero_grad () 34 loss.backward () 35 optimizer.step () Ambos frameworks se integran perfectamente con hardware acelerador (GPU NVIDIA a trav´ es de CUDA, TPUs con TensorFlow, y tambi´ en se est´ a extendiendo a AMD ROCm y Apple Metal). La capacidad de mover tensores a la GPU con una simple instrucci´ on (.to(’cuda’) en PyTorch, o autom´ aticamente con TensorFlow si se detecta) permite acelerar el entrenamiento de redes neuronales por un factor de 10 a 100, haciendo factible el entrenamiento de modelos grandes en d´ ıas o semanas en lugar de a˜ nos. Adem´ as de TensorFlow y PyTorch, existen otros frameworks de alto nivel como JAX (de Google), que combina NumPy acelerado con diferenciaci´ on autom´ atica y compilaci´ on just-in- time (XLA), y est´ a ganando popularidad en investigaci´ on por su eficiencia y expresividad. Abraham Zamudio 77 PIT: Python Basico
  74. Sesion 2 MXNet (patrocinado por Amazon) y PaddlePaddle (Baidu) tambi´

    en tienen APIs Python, aunque menos extendidos. El campo del aprendizaje autom´ atico ha evolucionado desde modelos entrenados con CPU y conjuntos de datos peque˜ nos (como Iris o MNIST) hasta modelos con cientos de miles de millones de par´ ametros entrenados en terabytes de datos (por ejemplo, GPT-4). Python ha sido el facilitador de esta escalabilidad gracias a bibliotecas que soportan entrenamiento distribuido. Por ejemplo, tf.distribute.MirroredStrategy permite entrenar en m´ ultiples GPUs de un mismo nodo; Horovod (desarrollado por Uber) proporciona optimizaci´ on de comu- nicaciones all-reduce para entrenamiento a gran escala en cl´ usteres; y PyTorch Distributed (torch.distributed) ofrece primitivas para paralelismo de datos y de modelos. Un ´ area de gran actividad es el autoML (aprendizaje autom´ atico automatizado), que busca automatizar la selecci´ on de algoritmos y la optimizaci´ on de hiperpar´ ametros. Bibliotecas como Optuna, Hyperopt, scikit-optimize y SMAC implementan algoritmos de optimizaci´ on bayesiana, y se integran f´ acilmente con cualquier modelo de scikit-learn o TensorFlow/PyTorch. Los frameworks de autoML de alto nivel, como AutoKeras (basado en Keras) o TPOT (basado en programaci´ on gen´ etica), permiten a usuarios no expertos obtener modelos competitivos con poco c´ odigo. La explicabilidad de los modelos (XAI) es otra tendencia importante, especialmente en aplicaciones sensibles como medicina o finanzas. Python ofrece bibliotecas como SHAP (SHapley Additive exPlanations) y LIME (Local Interpretable Model-agnostic Explanations) que explican las predicciones de cualquier modelo en t´ erminos de la contribuci´ on de cada caracter´ ıstica. Para redes neuronales, herramientas como TF-Explain (TensorFlow) y Captum (PyTorch) proporcionan m´ etodos de atribuci´ on de caracter´ ısticas (gradientes, integraci´ on de gradientes, LRP, etc.). Finalmente, el aprendizaje por refuerzo (reinforcement learning) tambi´ en tiene un ecosis- tema Python robusto. Bibliotecas como Stable-Baselines3 proporcionan implementaciones listas para usar de algoritmos modernos (PPO, SAC, TD3, DQN, A2C). Para entornos de simulaci´ on, Gymnasium (antes OpenAI Gym) ofrece una API est´ andar para que los agentes interact´ uen con entornos como juegos de Atari, control rob´ otico (Mujoco) o juegos de mesa (Go, Chess). El aprendizaje por refuerzo profundo combina redes neuronales con estos algo- ritmos y se ha utilizado para crear agentes que superan a los humanos en juegos complejos (AlphaGo, OpenAI Five, etc.). En resumen, Python es el lenguaje del aprendizaje autom´ atico y las redes neuronales porque ofrece una combinaci´ on de facilidad de uso (para exploraci´ on y prototipado), rendimiento (gracias a bibliotecas en C/C++/CUDA) y un ecosistema unificado que cubre todo el ciclo de vida del proyecto, desde la preparaci´ on de datos hasta el despliegue en producci´ on. La curva de aprendizaje para los fundamentos es suave, pero la profundidad del campo permite a los expertos implementar los ´ ultimos avances de la literatura de investigaci´ on. Abraham Zamudio 78 PIT: Python Basico
  75. Sesion 2 8.2. Automatizaci´ on inteligente La automatizaci´ on inteligente

    se refiere al uso de t´ ecnicas de inteligencia artificial, espe- cialmente aprendizaje autom´ atico y procesamiento de lenguaje natural, para automatizar tareas que tradicionalmente requer´ ıan inteligencia humana. A diferencia de la automatizaci´ on tradicional basada en reglas (RPA, robotic process automation), la automatizaci´ on inteligente puede adaptarse a situaciones cambiantes, manejar datos no estructurados y mejorar con la experiencia. Python, con su ecosistema de IA, se ha convertido en la plataforma preferida para construir sistemas de automatizaci´ on inteligente en dominios tan diversos como la atenci´ on al cliente, la gesti´ on documental, la log´ ıstica, la manufactura y los flujos de trabajo empresariales. Un ejemplo paradigm´ atico son los chatbots y asistentes virtuales inteligentes. Los chat- bots basados en reglas (con expresiones regulares y ´ arboles de decisi´ on) han sido reemplazados por sistemas basados en grandes modelos de lenguaje (LLMs) como GPT-4, Gemini o LLaMA. Python permite integrar estos modelos a trav´ es de APIs (OpenAI API, Anthropic, Cohere) o ejecut´ andolos localmente con bibliotecas como transformers de Hugging Face. Un chatbot moderno puede mantener el contexto de una conversaci´ on, responder preguntas complejas, extraer informaci´ on de documentos, y ejecutar acciones (por ejemplo, enviar un correo o crear un ticket de soporte) mediante llamadas a funciones (function calling). La arquitectura t´ ıpica incluye: Un modelo de embeddings (como ‘text-embedding-ada-002‘ o ‘sentence-transformers‘) para convertir consultas en vectores. Una base de datos vectorial (FAISS, Pinecone, Chroma, Weaviate) para b´ usqueda de similitud sem´ antica sobre documentos de conocimiento. Un LLM que genera la respuesta final combinando el contexto recuperado con la consulta del usuario (RAG: Retrieval-Augmented Generation). Un orquestador en Python (a menudo con FastAPI o Flask) que maneja la l´ ogica de di´ alogo, el manejo de errores y las integraciones con sistemas externos. Otra ´ area de automatizaci´ on inteligente es la extracci´ on de informaci´ on de documentos no estructurados. Empresas reciben facturas, contratos, correos electr´ onicos, formularios escaneados, etc. Los sistemas tradicionales de reconocimiento ´ optico de caracteres (OCR) producen texto, pero no entienden el significado. Usando Python con bibliotecas como ‘pytes- seract‘ (OCR), ‘pdfplumber‘ (extracci´ on de PDFs) y modelos de NLP (spaCy, transformers), se pueden construir pipelines que extraen autom´ aticamente campos clave: n´ umeros de factura, fechas, totales, nombres de proveedores. Para documentos complejos (por ejemplo, informes m´ edicos), se utilizan modelos de comprensi´ on de documentos (LayoutLM, Donut) que com- binan informaci´ on visual y textual. Python proporciona los andamios para conectar estas herramientas, aplicar validaciones y enviar los datos extra´ ıdos a un ERP o base de datos. La automatizaci´ on de tareas repetitivas en el puesto de trabajo es otro campo en expansi´ on. Empleados de oficina dedican tiempo a tareas como introducir datos de hojas de c´ alculo a sistemas internos, clasificar correos electr´ onicos, o generar informes a partir de m´ ultiples fuentes. Con Python, se pueden escribir scripts que lean archivos Excel con ‘pandas‘, Abraham Zamudio 79 PIT: Python Basico
  76. Sesion 2 extraigan informaci´ on de correos usando ‘imaplib‘ o

    la API de Gmail, y luego automaticen la entrada en un CRM mediante ‘selenium‘ (para aplicaciones web sin API) o API REST. Lo “inteligente” entra en juego cuando el script debe tomar decisiones: por ejemplo, clasificar un correo como ¨ urgente.o rutinario¨ usando un clasificador de texto, o extraer entidades (fechas, nombres de productos) mediante NER (reconocimiento de entidades nombradas). Con un poco de machine learning, estas automatizaciones se vuelven robustas a variaciones en el formato. En el ´ ambito industrial, la automatizaci´ on inteligente de procesos de negocio (intelligent BPM) combina RPA con IA. Frameworks como ‘Robot Framework‘ (originalmente para pruebas) permiten escribir tareas automatizadas; se pueden a˜ nadir bibliotecas Python que invoquen modelos de IA. Por ejemplo, un robot podr´ ıa descargar un PDF, aplicar OCR, extraer texto, ejecutar un modelo de clasificaci´ on y, seg´ un la categor´ ıa, archivar en una carpeta distinta. Los robots inteligentes pueden tambi´ en detectar excepciones y derivar a un humano cuando la confianza es baja. Python se utiliza para escribir las funciones de “inteligencia”, mientras que el orquestador puede ser UiPath, Automation Anywhere (que permiten llamar a scripts Python) o una soluci´ on de c´ odigo abierto como ‘Apache Airflow‘ o ‘Prefect‘ (que tambi´ en se programan en Python). La automatizaci´ on de pruebas de software ha incorporado IA para generar casos de prueba y detectar anomal´ ıas en aplicaciones. Herramientas como ‘Diffblue Cover‘ (para Java) utilizan aprendizaje autom´ atico, pero en Python, bibliotecas como ‘AITest‘ o ‘DrivenData‘ est´ an surgiendo. M´ as com´ un es el uso de t´ ecnicas de aprendizaje por refuerzo para explorar autom´ aticamente interfaces gr´ aficas (GUI) y encontrar bugs. El popular framework ‘Sele- nium‘ para pruebas web se puede combinar con modelos de visi´ on por computadora (por ejemplo, ‘OpenCV‘ o ‘SikuliX‘) para interactuar con elementos no detectables por selectores tradicionales. La automatizaci´ on de la toma de decisiones basada en datos es otra aplicaci´ on. En lugar de reglas fijas (if-else), los sistemas pueden usar modelos de machine learning para recomendar acciones. Por ejemplo, un sistema de gesti´ on de inventario puede predecir la demanda futura (con ‘prophet‘ o ‘xgboost‘) y generar ´ ordenes de compra autom´ aticamente cuando el stock previsto cae por debajo de un umbral. Un sistema de marketing puede decidir a qu´ e clientes enviar un descuento bas´ andose en un modelo de probabilidad de compra (‘scikit-learn‘). Estas decisiones automatizadas se integran en pipelines de datos construidos con Apache Airflow (escrito en Python) o con herramientas como ‘Dagster‘. Un caso de ´ exito es la automatizaci´ on de la atenci´ on al cliente en plataformas de comercio electr´ onico. Los sistemas clasifican autom´ aticamente las consultas por categor´ ıa (devoluci´ on, garant´ ıa, seguimiento de pedido), extraen el n´ umero de pedido del texto, consultan la base de datos, y generan una respuesta personalizada. Si el cliente est´ a insatisfecho, el sistema puede ofrecer un cup´ on de descuento autom´ aticamente, todo ello sin intervenci´ on humana. Python con ‘spaCy‘ para NER, ‘transformers‘ para an´ alisis de sentimiento y ‘sqlalchemy‘ para base de datos permite construir esto en unos cientos de l´ ıneas de c´ odigo. La automatizaci´ on de redes sociales es otro ejemplo: se pueden escribir scripts Python que usan la API de Twitter (X), Instagram o LinkedIn para publicar contenido programado, Abraham Zamudio 80 PIT: Python Basico
  77. Sesion 2 responder autom´ aticamente a mensajes (con un bot

    basado en LLM), analizar el sentimiento de los comentarios, y reportar estad´ ısticas. La librer´ ıa ‘tweepy‘ es com´ un para Twitter, y ‘instabot‘ para Instagram (aunque con restricciones de t´ erminos de servicio). En el ´ ambito financiero, la automatizaci´ on inteligente se aplica a la detecci´ on de fraudes en tiempo real: cada transacci´ on es evaluada por un modelo de machine learning (entrenado con transacciones hist´ oricas) que devuelve una puntuaci´ on de riesgo. Si supera un umbral, la transacci´ on se bloquea o se requiere autenticaci´ on adicional. Python con ‘scikit-learn‘, ‘XGBoost‘ o ‘TensorFlow‘ se usa tanto para entrenar modelos como para servirlos en producci´ on (con ‘TensorFlow Serving‘, ‘BentoML‘ o ‘FastAPI‘). El sistema debe ser extremadamente r´ apido (milisegundos), por lo que los modelos se optimizan (cuantizaci´ on, pruning) y se ejecutan en CPUs o GPUs seg´ un sea necesario. La automatizaci´ on de la ciberseguridad emplea IA para detectar intrusiones y malware. Los logs de sistemas se analizan con t´ ecnicas de detecci´ on de anomal´ ıas (Isolation Forest, redes neuronales autoasociadoras) escritas en Python. Cuando se detecta un patr´ on an´ omalo, se puede desencadenar una respuesta autom´ atica: aislar un host, bloquear una IP, o enviar una alerta a un SIEM. Python es popular por su capacidad para procesar grandes vol´ umenes de logs con bibliotecas como ‘pandas‘ y ‘dask‘, y por la disponibilidad de librer´ ıas de ML. Un componente cr´ ıtico en la automatizaci´ on inteligente es el monitoreo y la actualizaci´ on continua de los modelos. Los modelos de IA pueden degradarse con el tiempo (concept drift). Python permite construir pipelines de monitoreo que calculan m´ etricas de rendimiento en datos recientes y disparan alertas. Si se detecta degradaci´ on, el sistema puede reentrenar el modelo autom´ aticamente con datos actualizados. Herramientas como ‘Kubeflow‘, ‘MLflow‘ o ‘Seldon‘ (todas con APIs Python) facilitan el despliegue y la gesti´ on de modelos en producci´ on. Es importante mencionar que la automatizaci´ on inteligente no busca reemplazar completa- mente a los humanos, sino aumentar sus capacidades. Los sistemas automatizados manejan tareas rutinarias y de baja complejidad, mientras que los humanos se dedican a excepciones, supervisi´ on y tareas creativas. Python, con su facilidad de integraci´ on, permite dise˜ nar arqui- tecturas ”human-in-the-loop”donde el c´ odigo solicita intervenci´ on cuando la confianza es baja o la situaci´ on es novedosa. En conclusi´ on, la automatizaci´ on inteligente con Python est´ a transformando la forma en que las organizaciones operan, aumentando la eficiencia, reduciendo errores y liberando talento humano para tareas de mayor valor a˜ nadido. La combinaci´ on de RPA tradicional con IA, habilitada por el ecosistema Python, est´ a creando una nueva generaci´ on de sistemas aut´ onomos que pueden aprender y adaptarse. 8.3. Procesamiento de lenguaje natural El procesamiento de lenguaje natural (NLP, Natural Language Processing) es una subdisciplina de la IA que se ocupa de la interacci´ on entre computadoras y el lenguaje humano. Python se ha convertido en el lenguaje est´ andar para NLP gracias a bibliotecas maduras como NLTK, spaCy, TextBlob, Gensim, y especialmente el ecosistema de Hugging Face (transformers, datasets, tokenizers). La evoluci´ on del NLP ha sido vertiginosa: de los modelos basados en Abraham Zamudio 81 PIT: Python Basico
  78. Sesion 2 reglas y estad´ ısticos a los modelos neuronales

    preentrenados (Word2Vec, GloVe, ELMo, BERT, GPT, T5, etc.), que dominan hoy el campo. Las tareas b´ asicas de NLP incluyen: Tokenizaci´ on: dividir un texto en palabras, subpalabras o caracteres. Python ofrece tokenizadores regulares (split por espacios) y tokenizadores espec´ ıficos de modelos (por ejemplo, ‘transformers.AutoTokenizer‘ para BERT o GPT). Lematizaci´ on y stemming: reducir palabras a su forma can´ onica (corriendo → correr) o ra´ ız. NLTK y spaCy proveen lematizadores basados en diccionarios y reglas morfol´ ogicas. Etiquetado de partes del discurso (POS tagging): asignar a cada palabra su categor´ ıa gramatical (sustantivo, verbo, adjetivo, etc.). spaCy y NLTK incluyen modelos entrenados. Reconocimiento de entidades nombradas (NER): identificar y clasificar entidades como personas, organizaciones, ubicaciones, fechas, cantidades. spaCy tiene modelos preentrenados para varios idiomas; Hugging Face ofrece modelos de NER basados en BERT. An´ alisis de dependencias: extraer relaciones gramaticales entre palabras (sujeto- verbo-objeto). spaCy es particularmente fuerte en esto. Clasificaci´ on de texto: asignar categor´ ıas (spam vs no spam, sentimiento positivo/ne- gativo/neutral, t´ opicos). scikit-learn con TF-IDF o embeddings, o modelos transformers finetuned. Extracci´ on de relaciones: identificar relaciones sem´ anticas entre entidades (por ejemplo, ”Marie Curie descubri´ o el polonio”→ (Marie Curie, descubri´ o, polonio)). Respuesta a preguntas (QA): dado un contexto y una pregunta, extraer la respuesta. Los modelos como BERT (SQuAD) son comunes. Generaci´ on de texto: resumen autom´ atico, traducci´ on autom´ atica, completado de texto, di´ alogo. Los modelos autoregresivos (GPT, T5, BART) son l´ ıderes. La biblioteca m´ as influyente en los ´ ultimos a˜ nos es transformers de Hugging Face, que proporciona una API unificada para cargar, entrenar y utilizar modelos preentrenados de ´ ultima generaci´ on. Con unas pocas l´ ıneas se puede realizar an´ alisis de sentimiento, reconocimiento de entidades, generaci´ on de texto, etc. Por ejemplo: 1 from transformers import pipeline 2 3 classifier = pipeline("sentiment -analysis", model="distilbert -base - uncased -finetuned -sst -2") 4 result = classifier("I love programming in Python!") 5 print(result) # [{’ label ’: ’POSITIVE ’, ’score ’: 0.999...}] 6 7 ner = pipeline("ner", model="dbmdz/bert -large -cased -finetuned -conll03 - english") 8 entities = ner("Apple Inc. is headquartered in Cupertino , California.") Abraham Zamudio 82 PIT: Python Basico
  79. Sesion 2 9 for ent in entities: 10 print(ent[’word ’],

    ent[’entity ’]) Hugging Face tambi´ en ofrece la biblioteca datasets que contiene cientos de conjuntos de datos listos para usar (IMDb, SQuAD, GLUE, etc.), y tokenizers para tokenizaci´ on ultra r´ apida. El ecosistema se integra con PyTorch y TensorFlow, permitiendo fine-tuning de modelos con c´ odigo m´ ınimo. Antes de la era de los transformers, el NLP en Python se basaba en NLTK (Natural Language Toolkit), que es excelente para educaci´ on y para tareas m´ as tradicionales. NLTK incluye corpus (textos de muestra), diccionarios l´ exicos (WordNet), y algoritmos de clasificaci´ on (Naive Bayes, Decision Trees). Aunque ahora muchos usan spaCy para producci´ on por su velocidad y modelos entrenados, NLTK sigue siendo valioso para ense˜ nar conceptos fundamentales. Gensim se especializa en modelado de t´ opicos y word embeddings no neuronales (Word2Vec, Doc2Vec, FastText). Es eficiente para corpus grandes y se integra con sklearn y pandas. spaCy es la opci´ on preferida para flujos de trabajo de NLP en producci´ on. Est´ a escrita en Python pero con n´ ucleos en Cython para alta velocidad. Ofrece pipelines preentrenados en varios idiomas (ingl´ es, espa˜ nol, alem´ an, franc´ es, etc.) que realizan tokenizaci´ on, lematizaci´ on, POS tagging, NER, an´ alisis de dependencias, y clasificaci´ on de textos. Tambi´ en permite a˜ nadir componentes personalizados (por ejemplo, reglas basadas en patrones o modelos de transformers). La integraci´ on con ‘thinc‘ (biblioteca de aprendizaje profundo) y la posibilidad de usar transformers como ‘spacy-transformers‘ la convierten en una herramienta muy potente. Un avance disruptivo ha sido la llegada de los grandes modelos de lenguaje (LLMs) como GPT-3, GPT-4, LLaMA, Claude, Gemini. Aunque estos modelos se entrenan con enormes recursos, Python permite acceder a ellos mediante APIs (OpenAI, Anthropic, Cohere) o ejecutando versiones optimizadas localmente (llama.cpp, Ollama, GPTQ). Con unos pocos centenares de l´ ıneas de Python, se puede construir un asistente de escritura, un analizador de sentimiento multimodal, o un tutor personalizado. La capacidad de los LLMs para seguir instrucciones (few-shot, zero-shot) y para razonar en cadena (chain-of-thought) ha abierto posibilidades de automatizaci´ on del conocimiento que antes eran inimaginables. En entornos acad´ emicos y empresariales, el fine-tuning de modelos BERT (o sus variantes como RoBERTa, DistilBERT, ALBERT) para tareas espec´ ıficas es una pr´ actica com´ un. Con ‘transformers‘ y ‘datasets‘, se puede adaptar un modelo preentrenado a un dominio (legal, m´ edico, financiero) con relativamente pocos ejemplos etiquetados. El fine-tuning en PyTorch o TensorFlow es sencillo gracias a los ‘Trainer‘ de Hugging Face. La evaluaci´ on de sistemas NLP requiere m´ etricas espec´ ıficas: precisi´ on, exhaustividad, F1 (para clasificaci´ on y NER), BLEU (para traducci´ on autom´ atica), ROUGE (para resumen), perplexidad (para modelos de lenguaje), etc. Python proporciona implementaciones en ‘scikit- learn‘, ‘nltk‘ (BLEU), ‘rouge-score‘, etc. Un desaf´ ıo importante en NLP es el manejo de idiomas con pocos recursos (low-resource languages). Python y Hugging Face han facilitado la difusi´ on de modelos multiling¨ ues (mBERT, XLM-RoBERTa) que se entrenan en m´ as de 100 idiomas, permitiendo transferir conocimiento Abraham Zamudio 83 PIT: Python Basico
  80. Sesion 2 a lenguas con escasos datos etiquetados. En aplicaciones

    pr´ acticas, el procesamiento de lenguaje natural con Python se utiliza en: Servicio al cliente automatizado: chatbots y an´ alisis de sentimiento en redes sociales. An´ alisis de contratos y documentos legales: extracci´ on de cl´ ausulas, detecci´ on de riesgos. B´ usqueda sem´ antica: motores de b´ usqueda que entienden la intenci´ on del usuario (por ejemplo, en bases de conocimiento internas). Resumen autom´ atico de noticias o informes. Moderaci´ on de contenidos: detecci´ on de discurso de odio, spam o lenguaje inapro- piado. Traducci´ on autom´ atica (con modelos de Hugging Face o APIs de Google Translate, DeepL). Generaci´ on de c´ odigo (asistentes de programaci´ on como GitHub Copilot, que usan LLMs). Correcci´ on gramatical y ortotipogr´ afica (LanguageTool tiene API Python). El futuro del NLP en Python pasa por la integraci´ on de modelos multimodales (texto + imagen, texto + audio), la mejora de la eficiencia (compresi´ on de modelos, distillation, quantization), y la democratizaci´ on de los LLMs mediante frameworks como LangChain, que permite orquestar cadenas de llamadas a LLM con herramientas externas (bases de datos, APIs, etc.) para construir agentes aut´ onomos. En resumen, Python es el lenguaje del procesamiento de lenguaje natural porque ofrece un ecosistema completo, desde herramientas b´ asicas (NLTK, spaCy) hasta modelos de vanguardia (transformers), pasando por integraci´ on con APIs de LLMs. La comunidad es enormemente activa, y la barrera de entrada es baja: en pocas l´ ıneas de c´ odigo se pueden construir aplicaciones de NLP que hace una d´ ecada requer´ ıan equipos de investigaci´ on. 8.4. Visi´ on por computadora La visi´ on por computadora (computer vision) es el campo de la IA que ense˜ na a las m´ aquinas a “ver” e interpretar el mundo visual a trav´ es de im´ agenes y videos. Python se ha erigido como el lenguaje dominante gracias a bibliotecas como OpenCV (la biblioteca de visi´ on por computadora m´ as popular), scikit-image, Pillow, y especialmente los frameworks de aprendizaje profundo (TensorFlow, PyTorch) que han revolucionado el campo con redes neuronales convolucionales (CNNs) y transformers visuales (ViT, DETR, SAM). OpenCV (Open Source Computer Vision Library) es una biblioteca escrita en C++ pero con bindings completos en Python (cv2). Proporciona cientos de algoritmos para procesamiento de im´ agenes y visi´ on en tiempo real, incluyendo: Abraham Zamudio 84 PIT: Python Basico
  81. Sesion 2 Operaciones b´ asicas: lectura/escritura de im´ agenes y

    v´ ıdeo, cambios de color, redimen- sionado, rotaci´ on, recorte. Filtros: desenfoque (Gaussiano, mediana), detecci´ on de bordes (Sobel, Canny), realce, morfolog´ ıa (erosi´ on, dilataci´ on). Caracter´ ısticas: detecci´ on de esquinas (Harris, Shi-Tomasi), descriptores SIFT, SURF, ORB, coincidencia de caracter´ ısticas. Segmentaci´ on: umbralizaci´ on (Otsu, adaptativa), watershed, mean-shift, grabcut. Detecci´ on de objetos: clasificadores en cascada de Haar (para caras, ojos, etc.), HOG + SVM (para peatones). Calibraci´ on de c´ amaras, modelado 3D, estimaci´ on de pose, seguimiento ´ optico (flujo de Lucas-Kanade, medios de desplazamiento). Procesamiento de video: lectura de frames, escritura, seguimiento de objetos (CSRT, KCF, MIL). OpenCV se integra perfectamente con NumPy (las im´ agenes son arrays de NumPy), lo que permite combinar operaciones de OpenCV con manipulaci´ on matricial directa. Es extrema- damente r´ apida porque sus n´ ucleos est´ an optimizados en C++ y pueden usar instrucciones SIMD y aceleraci´ on con GPU (CUDA) si se compila con soporte. Para tareas de visi´ on que requieren aprendizaje, las CNN han desplazado a los m´ etodos cl´ asicos. Keras y PyTorch ofrecen capas convolucionales predefinidas (Conv2D, MaxPooling2D, etc.) y arquitecturas populares (VGG, ResNet, Inception, EfficientNet, MobileNet) tanto en versiones preentrenadas (transfer learning) como para entrenar desde cero. Por ejemplo, clasificaci´ on de im´ agenes con ResNet50 preentrenado en ImageNet: 1 from tensorflow.keras.applications import ResNet50 2 from tensorflow.keras.applications .resnet50 import preprocess_input , decode_predictions 3 import numpy as np 4 from tensorflow.keras. preprocessing import image 5 6 model = ResNet50(weights=’imagenet ’) 7 8 img_path = ’elephant.jpg’ 9 img = image.load_img(img_path , target_size =(224 , 224)) 10 x = image.img_to_array (img) 11 x = np.expand_dims(x, axis =0) 12 x = preprocess_input (x) 13 14 preds = model.predict(x) 15 print( decode_predictions (preds , top =3) [0]) El aprendizaje profundo ha habilitado tareas avanzadas de visi´ on: Detecci´ on de objetos: localizar y clasificar m´ ultiples objetos en una imagen. Modelos como YOLO (You Only Look Once), SSD (Single Shot Detector), Faster R-CNN, y Abraham Zamudio 85 PIT: Python Basico
  82. Sesion 2 Transformers (DETR) tienen implementaciones en Python (por ejemplo,

    ‘ultralytics‘ para YOLOv8, ‘detectron2‘ de Facebook, ‘mmdetection‘). La salida t´ ıpica son cuadros delimitadores (bounding boxes) con etiquetas y confianzas. Segmentaci´ on sem´ antica: clasificar cada p´ ıxel de una imagen en una categor´ ıa (carretera, coche, cielo, etc.). Modelos como U-Net, DeepLab, Mask R-CNN (que adem´ as hace detecci´ on y segmentaci´ on de instancias). La biblioteca ‘segmentation-models- pytorch‘ ofrece implementaciones listas para usar. Segmentaci´ on de instancias: diferenciar objetos individuales de la misma clase (por ejemplo, distinguir dos coches distintos). Mask R-CNN es el est´ andar. Estimaci´ on de pose humana: identificar puntos clave del cuerpo (hombros, codos, mu˜ necas, rodillas) en una imagen. OpenPose (C++/Python) y MoveNet (TensorFlow) son populares. Reconocimiento facial: detecci´ on de caras (OpenCV Haar cascades, MTCNN, Reti- naFace), alineamiento, extracci´ on de embeddings (FaceNet, ArcFace) y comparaci´ on. face_recognition (basado en dlib) es una biblioteca Python sencilla. Generaci´ on de im´ agenes: GANs (Generative Adversarial Networks) y modelos de difusi´ on (Stable Diffusion, DALL-E) permiten crear im´ agenes realistas a partir de texto o de ruido. Python con PyTorch/TensorFlow y bibliotecas como ‘diffusers‘ (Hugging Face) son la base de herramientas populares. La visi´ on por computadora en Python tambi´ en se aplica en v´ ıdeo. Con OpenCV se puede leer un flujo de video (webcam, archivo, RTSP), procesar cada frame (por ejemplo, aplicar detecci´ on de objetos) y mostrar los resultados en tiempo real. Para aplicaciones m´ as complejas que requieren seguimiento de objetos a lo largo del tiempo, se usan algoritmos como SORT (Simple Online and Realtime Tracking) o DeepSORT, disponibles en Python. Otro campo emergente es la visi´ on 3D: procesamiento de nubes de puntos (LiDAR) y recons- trucci´ on 3D. Bibliotecas como ‘open3d‘ y ‘pyntcloud‘ (Python) permiten cargar, visualizar, filtrar y segmentar nubes de puntos, as´ ı como registrar (ICP) y reconstruir superficies. Estas capacidades son esenciales para veh´ ıculos aut´ onomos, rob´ otica y realidad aumentada. La integraci´ on con hardware es otro punto fuerte. Python puede controlar c´ amaras industriales (a trav´ es de ‘pyrealsense2‘ para Intel RealSense, ‘picamera‘ para Raspberry Pi, ‘gphoto2‘ para c´ amaras DSLR), y procesar las im´ agenes en tiempo real. En rob´ otica, ‘ROS‘ (Robot Operating System) tiene clientes Python (rospy) que publican y suscriben a t´ opicos de im´ agenes, y se pueden ejecutar nodos de visi´ on Python en el robot. El ecosistema de visi´ on en Python se complementa con herramientas para anotaci´ on de datos: ‘labelImg‘, ‘CVAT‘ (ambos con scripts Python), y para aumentaci´ on de datos (albumentations, imgaug) que generan variaciones de las im´ agenes de entrenamiento (rotaciones, recortes, cambios de brillo) para mejorar la robustez de los modelos. Un caso de ´ exito reciente es el modelo SAM (Segment Anything Model) de Meta, que permite segmentar cualquier objeto en una imagen con un solo clic o mediante prompts. La implementaci´ on en Python est´ a disponible y se puede integrar con aplicaciones existentes. Abraham Zamudio 86 PIT: Python Basico
  83. Sesion 2 SAM es un ejemplo de c´ omo los

    grandes modelos preentrenados est´ an simplificando tareas de visi´ on que antes requer´ ıan entrenamiento espec´ ıfico. Para la industria, Python se utiliza en sistemas de inspecci´ on visual (control de calidad, detecci´ on de defectos en l´ ıneas de producci´ on), reconocimiento de matr´ ıculas (ALPR), lectura de c´ odigos de barras y QR (bibliotecas ‘pyzbar‘), y sistemas de vigilancia inteligente. La capacidad de combinar visi´ on con otras disciplinas (NLP, IoT) desde el mismo lenguaje es una ventaja competitiva. En resumen, la visi´ on por computadora con Python es accesible gracias a OpenCV, poderosa gracias a los frameworks de deep learning, y vers´ atil para aplicaciones en tiempo real. Permite a desarrolladores e investigadores construir sistemas que interpretan el mundo visual con una productividad sin precedentes. 8.5. El papel de Python en la revoluci´ on de la IA Python no es el lenguaje m´ as r´ apido ni el m´ as adecuado para sistemas en tiempo real extremo, sin embargo, se ha convertido en el epicentro de la revoluci´ on de la inteligencia artificial. Este fen´ omeno se explica por una confluencia de factores t´ ecnicos, sociales e hist´ oricos que han hecho de Python el “pegamento” del ecosistema de IA. En esta secci´ on analizamos por qu´ e Python es insustituible en este campo y c´ omo ha moldeado el desarrollo de la IA. 1. Lenguaje de pegamento de alto nivel. Python es excelente para orquestar bibliotecas escritas en lenguajes compilados (C, C++, CUDA, Fortran). Los frameworks de IA como TensorFlow, PyTorch, scikit-learn, OpenCV, etc., tienen sus n´ ucleos en lenguajes de alto rendimiento, pero exponen una API en Python. Esto permite a los investigadores prototipar r´ apidamente sin sacrificar eficiencia. El cient´ ıfico puede escribir unas pocas l´ ıneas de Python que, por debajo, ejecutan operaciones vectorizadas en m´ ultiples n´ ucleos y GPUs. Esta arquitectura es la clave para la productividad. 2. Curva de aprendizaje suave. La inteligencia artificial es un campo intr´ ınsecamente complejo, que requiere entender ´ algebra lineal, c´ alculo, probabilidad y estad´ ıstica. A˜ nadir una sintaxis de programaci´ on cr´ ıptica o gesti´ on de memoria dificultar´ ıa enormemente la entrada. Python reduce la carga cognitiva, permitiendo que los profesionales se concentren en los modelos y algoritmos en lugar de en los detalles del lenguaje. Los estudiantes de cursos de IA (como el popular CS231n de Stanford) aprenden Python en semanas y luego se centran en redes neuronales. 3. Ecosistema de bibliotecas. La tabla peri´ odica de las bibliotecas de IA en Python es impresionante: NumPy: base de la computaci´ on num´ erica. SciPy: algoritmos cient´ ıficos. pandas: manipulaci´ on de datos tabulares. Abraham Zamudio 87 PIT: Python Basico
  84. Sesion 2 Matplotlib/Seaborn: visualizaci´ on. scikit-learn: machine learning cl´ asico.

    TensorFlow, PyTorch, JAX: deep learning. Keras: API de alto nivel (ahora en TensorFlow). Transformers (Hugging Face): NLP de ´ ultima generaci´ on. OpenCV, Pillow: visi´ on. NLTK, spaCy: NLP tradicional. Gensim: word embeddings. XGBoost, LightGBM, CatBoost: gradient boosting. Optuna, Hyperopt: optimizaci´ on de hiperpar´ ametros. MLflow, Kubeflow: gesti´ on del ciclo de vida. LangChain: orquestaci´ on de LLMs. Stable-Baselines3: reinforcement learning. Esta riqueza significa que pr´ acticamente cualquier algoritmo de IA ya est´ a implementado y probado. El programador rara vez necesita implementar desde cero; en su lugar, combina componentes existentes. 4. Comunidad y recursos. La comunidad Python de IA es masiva, activa y colaborativa. Los repositorios de GitHub contienen miles de proyectos de IA en Python, muchos con documentaci´ on extensa y ejemplos. Los foros (Stack Overflow, Reddit, Discord) resuelven dudas en minutos. Las conferencias (NeurIPS, ICML, ICLR, CVPR) publican c´ odigo Python junto con los art´ ıculos, haciendo la investigaci´ on reproducible. Las empresas (Google, Meta, Amazon, Microsoft, OpenAI) invierten fuertemente en herramientas Python de c´ odigo abierto, lo que crea un c´ ırculo virtuoso. 5. Reproducibilidad y ciencia abierta. Jupyter Notebook ha cambiado la forma de comunicar la investigaci´ on en IA. Los notebooks permiten incluir explicaciones textuales, ecuaciones LaTeX, c´ odigo ejecutable y resultados (gr´ aficos, tablas, m´ etricas) en un solo documento. Al compartir un notebook, cualquier investigador puede reproducir el experimento (si tiene acceso a los datos y la potencia de c´ omputo). Esto ha acelerado el progreso, ya que los avances se construyen sobre trabajos anteriores de manera m´ as fiable. 6. Integraci´ on con entornos de desarrollo modernos. Visual Studio Code, PyCharm, JupyterLab, Google Colab, Kaggle Kernels, todos soportan Python de primera clase. Colab y Kaggle ofrecen GPUs y TPUs gratuitas, permitiendo que cualquier persona con una cuenta de Google pueda entrenar modelos de deep learning sin invertir en hardware. Esta democratizaci´ on ha permitido que estudiantes y aficionados contribuyan al avance de la IA. Abraham Zamudio 88 PIT: Python Basico
  85. Sesion 2 7. Flexibilidad para la experimentaci´ on. La IA

    es un campo emp´ ırico: se prueba una hip´ otesis, se implementa un modelo, se entrena, se eval´ ua, se modifica. Python permite cambiar r´ apidamente la arquitectura, los hiperpar´ ametros o los datos. El tipado din´ amico, la reflexi´ on y la naturaleza interpretada facilitan la inspecci´ on y depuraci´ on. Los investigadores pueden ejecutar c´ odigo l´ ınea por l´ ınea, inspeccionar variables, y modificar el flujo en tiempo real (por ejemplo, con IPython). Esto es fundamental para una disciplina donde fallar r´ apido y aprender de los errores es parte del m´ etodo. 8. Puente entre la investigaci´ on y la producci´ on. Hist´ oricamente, hab´ ıa una brecha entre los prototipos de investigaci´ on (en MATLAB, R, Python) y los sistemas de produc- ci´ on (en C++, Java). Python ha reducido esa brecha: el mismo c´ odigo de investigaci´ on se puede empaquetar y desplegar en producci´ on usando frameworks como TensorFlow Serving, TorchServe, FastAPI, o incluso compilarlo a TensorFlow Lite para m´ oviles. Bibliotecas como Numba y Cython permiten acelerar partes cr´ ıticas. As´ ı, Python sirve a lo largo de todo el ciclo de vida del modelo. 9. Impacto en la educaci´ on. Casi todos los cursos modernos de IA utilizan Python. Los estudiantes aprenden con libros como “Hands-On Machine Learning with Scikit-Learn, Keras & TensorFlow” (Aur´ elien G´ eron) o “Deep Learning with Python” (Fran¸ cois Chollet). Los MOOCs en Coursera, edX y Udacity ense˜ nan IA con Python. Esto produce una nueva generaci´ on de profesionales que ya dominan Python y que lo llevar´ an a la industria. 10. Efecto de red (network effect). Cuanto m´ as se usa Python en IA, m´ as bibliotecas, herramientas y expertos se generan, lo que a su vez atrae a m´ as usuarios. Este efecto de red es casi imparable. Incluso lenguajes que intentan competir (Julia, R, MATLAB) tienen cuotas de mercado en nichos espec´ ıficos, pero Python sigue creciendo. Los grandes modelos de lenguaje (LLMs) generan c´ odigo Python de manera natural, lo que refuerza a´ un m´ as su dominio. Desaf´ ıos y futuro. Python no es perfecto para IA. El Global Interpreter Lock (GIL) limita el paralelismo de hilos en CPU, aunque el computo pesado se delega a bibliotecas que liberan el GIL. La velocidad de ejecuci´ on de Python puro es lenta, pero las bibliotecas optimizadas compensan. El consumo de memoria puede ser alto. La falta de tipos est´ aticos (aunque con anotaciones y mypy) puede causar errores en producci´ on. Sin embargo, estos inconvenientes son menores comparados con las ventajas. Proyectos como Mojo (un superconjunto de Python para IA de alto rendimiento) y PyPy (compilador JIT) buscan mitigar las limitaciones, manteniendo la compatibilidad. En conclusi´ on, Python no es solo un lenguaje de programaci´ on para IA; es el andamiaje sobre el que se construye toda la revoluci´ on. Permiti´ o que la inteligencia artificial pasara de los laboratorios a las aplicaciones cotidianas, y sigue siendo la herramienta de elecci´ on para investigadores, ingenieros y estudiantes. Sin Python, el progreso en IA ser´ ıa mucho m´ as lento y fragmentado. Con Python, el futuro de la IA es colaborativo, reproducible y accesible para todos. Abraham Zamudio 89 PIT: Python Basico
  86. Cap´ ıtulo 9 Python en el mundo empresarial 9.1. Automatizaci´

    on de tareas repetitivas En el entorno empresarial actual, la eficiencia operativa es un factor cr´ ıtico para la competiti- vidad. Las organizaciones dedican una cantidad significativa de recursos humanos a tareas repetitivas, rutinarias y propensas a errores: introducci´ on de datos en sistemas heredados, generaci´ on de informes peri´ odicos, extracci´ on de informaci´ on de correos electr´ onicos, migra- ci´ on de archivos entre plataformas, y un largo etc´ etera. Python se ha consolidado como la herramienta de elecci´ on para automatizar estas tareas, gracias a su sintaxis clara, su amplia biblioteca est´ andar y su ecosistema de bibliotecas de terceros que permiten interactuar con pr´ acticamente cualquier sistema o formato de archivo. La automatizaci´ on de tareas repetitivas con Python abarca desde scripts simples de unas pocas l´ ıneas hasta sistemas complejos orquestados con flujos de trabajo programados. En su nivel m´ as b´ asico, un empleado puede escribir un script que lea un archivo CSV, realice algunas transformaciones y genere un informe en Excel, ahorrando horas de trabajo manual. A medida que las organizaciones maduran en su adopci´ on de Python, construyen bibliotecas internas de automatizaci´ on y las integran con sus pipelines de datos y sistemas de gesti´ on empresarial. Uno de los dominios m´ as comunes es la automatizaci´ on de hojas de c´ alculo y documentos. La biblioteca ‘openpyxl‘ permite leer y escribir archivos Excel (archivos .xlsx) sin necesidad de tener Microsoft Excel instalado. Con ‘openpyxl‘ se pueden modificar celdas, aplicar formatos, crear gr´ aficos, y trabajar con f´ ormulas. Para archivos m´ as antiguos (.xls) se utiliza ‘xlrd‘ y ‘xlwt‘. Alternativamente, ‘pandas‘ proporciona funcionalidades de alto nivel para leer y escribir Excel, CSV, JSON, y muchos otros formatos, con una l´ ınea de c´ odigo. Por ejemplo, consolidar decenas de archivos Excel con la misma estructura en un ´ unico informe agregado se reduce a: 1 import pandas as pd 2 import glob 3 4 archivos = glob.glob("ventas_ *. xlsx") 5 lista_dfs = [pd.read_excel(arch) for arch in archivos] 91
  87. Sesion 2 6 consolidado = pd.concat(lista_dfs , ignore_index =True) 7

    consolidado.groupby("producto")["ventas"].sum().to_excel(" reporte_consolidado .xlsx") La automatizaci´ on del correo electr´ onico es otra ´ area de gran impacto. La biblioteca ‘imaplib‘ o ‘poplib‘ permite acceder a bandejas de entrada, y ‘smtplib‘ permite enviar correos. Para procesar correos entrantes, se pueden buscar mensajes con un asunto determinado, extraer archivos adjuntos, y luego procesar su contenido. Por ejemplo, un script puede monitorear una direcci´ on de correo de pedidos, descargar archivos adjuntos (por ejemplo, pedidos en PDF o XML), extraer los datos y registrarlos en una base de datos. Para facilitar el manejo, existen bibliotecas de alto nivel como ‘imbox‘ o ‘mail-parser‘. El env´ ıo de correos puede incluir adjuntos, HTML, e incluso embeber gr´ aficos generados con ‘matplotlib‘. Esto permite automatizar el env´ ıo de informes diarios o alertas basadas en condiciones (por ejemplo, si las ventas caen por debajo de un umbral). La automatizaci´ on de la interacci´ on con aplicaciones web (web scraping y automatizaci´ on de navegadores) es esencial para extraer datos de sitios sin API o para automatizar tareas en portales internos. La biblioteca ‘requests‘ permite realizar peticiones HTTP de forma sencilla y parsear respuestas HTML con ‘BeautifulSoup‘ o ‘lxml‘. Para sitios que requieren JavaScript o interacci´ on (clics, formularios), se utiliza ‘selenium‘, que controla un navegador real (Chrome, Firefox, Edge) de forma program´ atica. Un script con Selenium puede iniciar sesi´ on en un portal, navegar a una p´ agina, extraer una tabla, y luego cerrar el navegador. Esto es especialmente ´ util para tareas que los humanos realizan repetidamente, como descargar informes diarios de plataformas externas. La manipulaci´ on de archivos y directorios es una tarea b´ asica pero fundamental. El m´ odulo ‘os‘ y ‘shutil‘ permiten mover, copiar, renombrar y eliminar archivos, as´ ı como crear directorios y recorrer ´ arboles de directorios con ‘os.walk‘. Para operaciones m´ as avanzadas, ‘pathlib‘ ofrece una interfaz orientada a objetos. Un script t´ ıpico de organizaci´ on de archivos puede recorrer una carpeta de descargas, clasificar los archivos por extensi´ on o por nombre y moverlos a subcarpetas correspondientes (Im´ agenes, Documentos, Videos, etc.). Otro ejemplo com´ un es la limpieza de archivos temporales o la rotaci´ on de logs, manteniendo solo los ´ ultimos N d´ ıas. La automatizaci´ on de la entrada de datos en sistemas heredados (que no tienen API) se puede lograr mediante ‘pyautogui‘ o ‘keyboard‘. Estas bibliotecas simulan movimientos del rat´ on, clics y pulsaciones de teclado. Se utilizan con precauci´ on, ya que requieren que la aplicaci´ on est´ e en primer plano y son fr´ agiles ante cambios en la interfaz. Sin embargo, para tareas muy estables y sin alternativas, pueden ahorrar cientos de horas. Por ejemplo, extraer datos de una aplicaci´ on de terminal (mainframe) y transferirlos a un ERP moderno. La programaci´ on de tareas (scheduling) permite ejecutar scripts autom´ aticamente en momentos espec´ ıficos. En sistemas Unix/Linux, el cron es el m´ etodo tradicional; se puede a˜ nadir una l´ ınea al crontab para ejecutar ‘python /ruta/script.py‘ cada d´ ıa a las 2 AM. En Windows, se utilizan las tareas programadas de Windows (Task Scheduler) o servicios como ‘schtasks‘. Para una soluci´ on multiplataforma y m´ as rica en funcionalidades (dependencias entre tareas, reintentos, logs), se emplean ‘Apache Airflow‘, ‘Prefect‘, o ‘Dagster‘. Estas herramientas, escritas en Python, permiten definir flujos de trabajo (DAGs) donde cada nodo es una tarea Abraham Zamudio 92 PIT: Python Basico
  88. Sesion 2 Python. Por ejemplo, un DAG podr´ ıa descargar

    datos, transformarlos, validarlos, y cargarlos en una base de datos, con manejo de errores y alertas. La integraci´ on con bases de datos es omnipresente en la automatizaci´ on empresarial. Python cuenta con ‘sqlite3‘ para bases de datos ligeras embebidas, ‘psycopg2‘ para PostgreSQL, ‘mysql- connector-python‘ para MySQL/MariaDB, ‘pyodbc‘ para SQL Server y otras bases mediante ODBC, y ‘sqlalchemy‘ como capa de abstracci´ on ORM. Con estas bibliotecas, un script puede consultar, insertar, actualizar o eliminar registros. La automatizaci´ on t´ ıpica incluye la extracci´ on de datos de sistemas transaccionales, su transformaci´ on (limpieza, agregaci´ on) y la carga en un data warehouse o en un sistema de reportes (ETL). La automatizaci´ on de la impresi´ on y generaci´ on de documentos PDF es otro campo. La biblioteca ‘reportlab‘ permite generar PDFs desde cero, incluyendo tablas, gr´ aficos y texto con formato. ‘fpdf‘ es otra alternativa m´ as simple. Para rellenar formularios PDF (como facturas o contratos), se puede usar ‘pdfrw‘ o ‘fillpdf‘. Tambi´ en es com´ un generar PDFs a partir de plantillas HTML/CSS utilizando ‘pdfkit‘ (que envuelve wkhtmltopdf) o ‘weasyprint‘. Los scripts automatizan la generaci´ on de facturas, albaranes, n´ ominas o informes personalizados para cada cliente, que luego se env´ ıan por correo. La automatizaci´ on de la carga y descarga desde servicios en la nube (Google Drive, Dropbox, SharePoint, AWS S3) es f´ acil con bibliotecas espec´ ıficas. Por ejemplo, ‘pydrive‘ para Google Drive, ‘dropbox‘ para Dropbox, ‘boto3‘ para AWS S3, ‘Office365-REST-Python-Client‘ para SharePoint. Un script puede descargar archivos compartidos por proveedores, procesarlos y luego subir los resultados a un bucket S3. Esto permite construir pipelines de datos completamente automatizados. En el ´ ambito de la gesti´ on de redes y sistemas, los administradores utilizan Python para automatizar tareas como el aprovisionamiento de usuarios (crear cuentas, asignar grupos, configurar permisos), la monitorizaci´ on de recursos (CPU, memoria, disco) y la generaci´ on de alertas. La biblioteca ‘paramiko‘ proporciona cliente SSH para ejecutar comandos en servidores remotos. ‘fabric‘ (y su sucesor ‘invoke‘) permite definir tareas de despliegue y administraci´ on con sintaxis Python. Por ejemplo, un script puede conectarse a una flota de servidores, actualizar el sistema operativo, reiniciar servicios y verificar que todo funcione correctamente. La automatizaci´ on de copias de seguridad y sincronizaci´ on de archivos es crucial. Con ‘rsync‘ (llamado desde Python con ‘subprocess‘) o con ‘shutil.copytree‘ se pueden realizar copias de seguridad incrementales. Para copias de seguridad en la nube, ‘boto3‘ permite subir archivos a S3 con versionado. Los scripts pueden programarse para ejecutarse diariamente, comprimir directorios y eliminar copias antiguas seg´ un pol´ ıticas de retenci´ on. Un caso de uso de alto valor es la automatizaci´ on de la conciliaci´ on bancaria. Los extractos bancarios (en formato CSV, Excel o PDF) se descargan autom´ aticamente (a veces mediante web scraping o APIs de bancos), se leen con pandas, se comparan con los registros contables internos (por ejemplo, desde un ERP), y se generan informes de discrepancias. Python puede incluso generar asientos contables autom´ aticos para cuadrar las diferencias. La automatizaci´ on de procesos de negocio (BPA) con Python no solo ahorra tiempo, sino Abraham Zamudio 93 PIT: Python Basico
  89. Sesion 2 que reduce los errores humanos (errores de copia,

    omisiones, c´ alculos incorrectos) y mejora la trazabilidad (los scripts pueden registrar cada paso en logs). Adem´ as, libera a los empleados para que se concentren en tareas de mayor valor estrat´ egico. Sin embargo, la automatizaci´ on con Python debe realizarse con cuidado. Los scripts deben ser robustos: manejar excepciones, validar entradas, tener logs, y no depender de configuraciones fr´ agiles (como rutas absolutas que pueden cambiar). Se recomienda usar control de versiones (Git) para los scripts y documentarlos adecuadamente. Tambi´ en es importante considerar la seguridad: los scripts que manejan datos sensibles (como credenciales bancarias) deben usar variables de entorno o gestores de secretos (Vault, AWS Secrets Manager), nunca credenciales en texto plano. En resumen, Python es una navaja suiza para la automatizaci´ on de tareas repetitivas en el mundo empresarial. Su curva de aprendizaje permite que analistas de negocio y no programa- dores escriban sus propias automatizaciones, mientras que los equipos de TI pueden construir sistemas robustos y escalables. La inversi´ on inicial en escribir un script suele amortizarse en semanas o incluso d´ ıas, por el tiempo ahorrado y la reducci´ on de errores. Las empresas que abrazan Python para la automatizaci´ on ganan una ventaja operativa significativa. 9.2. Desarrollo web y servicios digitales Python es uno de los lenguajes m´ as utilizados para el desarrollo web y la construcci´ on de servicios digitales, tanto en el backend (servidor) como en el frontend (aunque en este ´ ultimo predominan JavaScript y TypeScript). Su ecosistema de frameworks web permite desde peque˜ nas APIs hasta aplicaciones empresariales masivas con millones de usuarios. Las caracter´ ısticas que hacen de Python una excelente opci´ on para desarrollo web incluyen su legibilidad, su amplia colecci´ on de bibliotecas, su capacidad de prototipado r´ apido, y su madurez en el manejo de bases de datos, autenticaci´ on, seguridad y despliegue. Los frameworks web Python m´ as destacados son Django, Flask, FastAPI, y en menor medida Pyramid, Tornado, y web2py. Cada uno ocupa un nicho diferente en el espectro de complejidad y flexibilidad. Django es el framework de alto nivel “todo incluido” (batteries-included). Proporciona un ORM (Object-Relational Mapping) propio, un sistema de administraci´ on (admin) generado autom´ aticamente, autenticaci´ on, manejo de formularios, internacionalizaci´ on, protecci´ on contra ataques comunes (CSRF, XSS, SQL injection), y un sistema de plantillas. Django sigue el patr´ on MTV (Model-Template-View), similar a MVC. Es ideal para aplicaciones grandes y complejas con muchos requisitos est´ andar. Django fue utilizado por Instagram, Pinterest, The Washington Post, Spotify (algunos servicios), y muchos sitios con alto tr´ afico. La curva de aprendizaje es m´ as empinada que Flask, pero una vez dominado, permite desarrollar r´ apidamente aplicaciones robustas. Un ejemplo m´ ınimo de una vista Django: 1 # views.py 2 from django.http import HttpResponse 3 from django.shortcuts import render 4 from .models import Producto 5 Abraham Zamudio 94 PIT: Python Basico
  90. Sesion 2 6 def lista_productos (request): 7 productos = Producto.objects.filter(activo=True)

    8 return render(request , ’productos/lista.html ’, {’productos ’: productos }) Flask es un microframework ligero y flexible. Proporciona lo esencial (enrutamiento, solicitude- s/respuestas, sesiones) y deja al desarrollador elegir las bibliotecas para ORM (SQLAlchemy), autenticaci´ on (Flask-Login), formularios (WTForms), etc. Es ideal para APIs, aplicaciones peque˜ nas o servicios que requieren control fino. Flask es muy utilizado en startups y para prototipos. Su simplicidad hace que sea f´ acil de aprender. Un ejemplo m´ ınimo: 1 from flask import Flask , jsonify 2 3 app = Flask(__name__) 4 5 @app.route(’/api/status ’) 6 def status (): 7 return jsonify ({"status": "ok"}) 8 9 if __name__ == ’__main__ ’: 10 app.run() FastAPI es el framework moderno para construir APIs con Python, aprovechando las anotacio- nes de tipo y el est´ andar ASGI (Asynchronous Server Gateway Interface). Es extremadamente r´ apido (compite con Node.js y Go) porque utiliza Starlette para la parte web y Pydantic para la validaci´ on de datos. Genera documentaci´ on interactiva autom´ atica (Swagger UI y ReDoc). Soporta endpoints as´ ıncronos, WebSockets, y dependencias inyectadas. FastAPI se ha vuelto muy popular en proyectos de machine learning, donde se sirven modelos como APIs, y en microservicios. Ejemplo: 1 from fastapi import FastAPI 2 from pydantic import BaseModel 3 4 app = FastAPI () 5 6 class Item(BaseModel): 7 nombre: str 8 precio: float 9 10 @app.post("/items/") 11 def crear_item(item: Item): 12 return {"mensaje": f"Item {item.nombre} creado con precio {item.precio}" } Adem´ as de los frameworks, Python ofrece potentes bibliotecas para tareas web espec´ ıficas: Requests: para consumir APIs externas de manera sencilla. BeautifulSoup y Scrapy: para web scraping (extracci´ on de datos de sitios web). Celery: para colas de tareas as´ ıncronas (procesamiento en segundo plano de tareas largas como env´ ıo de correos, generaci´ on de informes, etc.). Abraham Zamudio 95 PIT: Python Basico
  91. Sesion 2 Redis (biblioteca redis-py): para almacenamiento en cach´ e

    y manejo de sesiones. SQLAlchemy: ORM y toolkit SQL que abstrae diferencias entre bases de datos. Alembic: migraciones de esquema de base de datos para SQLAlchemy. Gunicorn y uWSGI: servidores WSGI para desplegar aplicaciones Python en produc- ci´ on. Nginx (como proxy inverso) y Supervisor para gestionar procesos. El desarrollo web con Python se despliega com´ unmente en plataformas como Heroku, Pytho- nAnywhere, DigitalOcean, AWS (Elastic Beanstalk, EC2, Lambda), Google Cloud Platform (App Engine, Cloud Run) y Microsoft Azure. La contenedorizaci´ on con Docker facilita el despliegue consistente. Muchas empresas utilizan Kubernetes para orquestar contenedores de aplicaciones Python. Un ´ area en crecimiento es el desarrollo de aplicaciones web as´ ıncronas con ASGI. Frameworks como FastAPI, Quart (versi´ on as´ ıncrona de Flask) y Django 3.x+ con soporte ASGI permiten manejar muchas conexiones concurrentes con eficiencia, ideal para WebSockets y aplicaciones en tiempo real. Los servicios digitales construidos con Python abarcan: Sitios web institucionales y corporativos (con Django o Flask). Sistemas de gesti´ on de contenidos (CMS) personalizados. E-commerce (con frameworks como Django-SHOP, Oscar, o integraciones con Stripe/- PayPal). APIs RESTful y GraphQL (con Django REST Framework, FastAPI, o Graphene para GraphQL). Paneles de administraci´ on y dashboards (con Dash de Plotly para visualizaciones interactivas). Plataformas de aprendizaje en l´ ınea (LMS) con Django. Sistemas de gesti´ on de proyectos y colaboraci´ on (similar a Trello, Asana). Backends para aplicaciones m´ oviles (APIs que sirven datos a apps iOS/Android). Microservicios que exponen funcionalidades espec´ ıficas (por ejemplo, un servicio de geocodificaci´ on, un servicio de recomendaci´ on). En el mundo empresarial, Python tambi´ en se utiliza para construir portales de clientes (client portals), sistemas de gesti´ on de relaciones con clientes (CRM), y software de planificaci´ on de recursos empresariales (ERP) a medida. Por ejemplo, Odoo, un ERP de c´ odigo abierto, est´ a escrito en Python y utiliza su propio framework. Muchas empresas personalizan Odoo para adaptarlo a sus necesidades. La seguridad es una preocupaci´ on primordial en el desarrollo web. Los frameworks Python incorporan defensas contra vulnerabilidades comunes: Django protege contra inyecci´ on SQL Abraham Zamudio 96 PIT: Python Basico
  92. Sesion 2 (mediante ORM y consultas parametrizadas), Cross-Site Scripting (escapado

    autom´ atico de plantillas), Cross-Site Request Forgery (tokens CSRF), y clickjacking (cabeceras X-Frame- Options). Sin embargo, el desarrollador debe seguir buenas pr´ acticas: nunca almacenar contrase˜ nas en texto plano (usar bcrypt o PBKDF2), validar todas las entradas del usuario, usar HTTPS, mantener las dependencias actualizadas, y realizar pruebas de penetraci´ on. El rendimiento de las aplicaciones web Python puede ser excelente si se siguen buenas pr´ acticas: usar cach´ e (redis, memcached), optimizar consultas a la base de datos (evitar N+1 queries), usar paginaci´ on, y considerar el uso de un CDN para contenido est´ atico. Para aplicaciones de alta concurrencia, se puede escalar horizontalmente a˜ nadiendo m´ as servidores detr´ as de un balanceador de carga. El desarrollo de servicios digitales con Python no se limita al backend. Herramientas como Streamlit y Gradio permiten a los cient´ ıficos de datos e ingenieros crear interfaces web interactivas para sus modelos de machine learning con muy poco c´ odigo. Por ejemplo, en unas decenas de l´ ıneas se puede subir una imagen y obtener la predicci´ on de un clasificador. Esto facilita la adopci´ on de IA en entornos empresariales sin necesidad de un equipo de frontend. En resumen, Python es un pilar fundamental del desarrollo web y los servicios digitales en las empresas. Su ecosistema maduro, su productividad y su capacidad de integraci´ on con otros sistemas lo convierten en una opci´ on segura para proyectos desde peque˜ nas APIs hasta plataformas de misi´ on cr´ ıtica. Muchas empresas construyen su negocio digital sobre Python, aprovechando la abundancia de bibliotecas y la facilidad para contratar desarrolladores. 9.3. Finanzas, marketing y an´ alisis predictivo Los departamentos de finanzas, marketing y an´ alisis de negocio han experimentado una revoluci´ on gracias a la adopci´ on de Python como herramienta de an´ alisis y modelado predictivo. Tradicionalmente, estos campos utilizaban hojas de c´ alculo (Excel) y software estad´ ıstico especializado (SAS, SPSS, EViews). Sin embargo, estas herramientas presentan limitaciones en cuanto a volumen de datos, reproducibilidad, automatizaci´ on y capacidad para implementar modelos complejos. Python ofrece una soluci´ on unificada que permite desde la limpieza de datos hasta la implementaci´ on de modelos de machine learning en producci´ on. Aplicaciones en finanzas. En el sector financiero, Python se utiliza para: An´ alisis de series temporales: precios de acciones, tipos de cambio, tasas de inter´ es, etc. Bibliotecas como ‘pandas‘ (con funcionalidades de ventana m´ ovil, rezagos, dife- rencias), ‘statsmodels‘ (modelos ARIMA, SARIMA, GARCH, cointegraci´ on), y ‘arch‘ (GARCH) son esenciales. Los analistas financieros pueden cargar datos hist´ oricos (por ejemplo, desde Yahoo Finance con ‘yfinance‘), realizar an´ alisis exploratorio, ajustar modelos y generar previsiones. Gesti´ on de riesgos: c´ alculo de Value at Risk (VaR), Expected Shortfall (CVaR), backtesting de modelos de riesgo. Python permite implementar simulaciones de Monte Carlo y m´ etodos param´ etricos. Bibliotecas como ‘pyportfolioopt‘ optimizan carteras con Abraham Zamudio 97 PIT: Python Basico
  93. Sesion 2 restricciones de riesgo. Adem´ as, se pueden calcular

    m´ etricas de rendimiento (Sharpe ratio, Sortino ratio, drawdown m´ aximo). Valoraci´ on de derivados financieros: opciones, futuros, swaps. El modelo Black- Scholes se implementa f´ acilmente. Para opciones ex´ oticas o americanas, se utilizan ´ arboles binomiales o m´ etodos de diferencias finitas (resueltos con SciPy). Python permite construir un pricer completo con pocas l´ ıneas. Trading algor´ ıtmico: desarrollo y backtesting de estrategias automatizadas. Bibliotecas como ‘backtrader‘, ‘zipline‘, ‘vectorbt‘ permiten simular estrategias sobre datos hist´ oricos, evaluar comisiones, slippage, y generar se˜ nales de compra/venta. Las estrategias pueden ser desde medias m´ oviles hasta aprendizaje por refuerzo. Una vez validadas, se pueden conectar a brokers mediante APIs (Interactive Brokers, OANDA, Alpaca) y ejecutar operaciones en tiempo real. An´ alisis de estados financieros: procesamiento de balances, ratios financieros, de- tecci´ on de anomal´ ıas contables (modelos de Beneish, M-score). Python con ‘pandas‘ permite automatizar el c´ alculo de indicadores y comparaciones entre empresas. Cumplimiento normativo y detecci´ on de fraudes: los modelos de machine learning (´ arboles de decisi´ on, redes neuronales, XGBoost) se entrenan con transacciones hist´ oricas etiquetadas para detectar operaciones sospechosas. Estos modelos se integran en sistemas de tiempo real con baja latencia. Aplicaciones en marketing. El marketing moderno es intensivo en datos, y Python proporciona las herramientas para extraer valor de los datos de clientes, campa˜ nas y canales: Segmentaci´ on de clientes: mediante t´ ecnicas de clustering (k-means, DBSCAN, agru- pamiento jer´ arquico) con ‘scikit-learn‘. Los clientes se agrupan seg´ un su comportamiento de compra, datos demogr´ aficos, interacciones digitales, etc. Esto permite personalizar ofertas y comunicaciones. An´ alisis de cohortes: seguimiento de grupos de clientes a lo largo del tiempo (retenci´ on, valor de vida LTV). Con ‘pandas‘ se pueden crear tablas pivote y calcular m´ etricas como la tasa de retenci´ on mes a mes. Modelos de atribuci´ on: determinar qu´ e canales de marketing (b´ usqueda pagada, redes sociales, email, referencias) contribuyen m´ as a las conversiones. Python permite implementar modelos de atribuci´ on lineales, basados en posici´ on, o modelos markovianos y de Shapley. An´ alisis de sentimiento en redes sociales: mediante NLP (ver cap´ ıtulo 7) se extrae el sentimiento de los tweets, comentarios, o rese˜ nas hacia una marca o producto. Esto alimenta dashboards de reputaci´ on online. Optimizaci´ on de campa˜ nas publicitarias: machine learning para predecir la proba- bilidad de clic (CTR) o conversi´ on, y ajustar las pujas en tiempo real (programmatic bidding). Modelos de uplift (incrementalidad) identifican qu´ e clientes son m´ as sensibles a un tratamiento. Abraham Zamudio 98 PIT: Python Basico
  94. Sesion 2 Sistemas de recomendaci´ on: como los que usa

    Amazon o Netflix. Se pueden construir desde filtros colaborativos (matriz de usuarios-productos) hasta modelos de factori- zaci´ on matricial o redes neuronales. La biblioteca ‘surprise‘ y ‘implicit‘ facilitan la implementaci´ on. Pruebas A/B y an´ alisis estad´ ıstico: Python con ‘scipy.stats‘ permite calcular tama˜ nos de muestra, realizar pruebas de hip´ otesis (t-test, chi-cuadrado) e interpretar resultados. Librer´ ıas como ‘statsmodels‘ proporcionan regresi´ on log´ ıstica para analizar la influencia de variables. An´ alisis predictivo general. El an´ alisis predictivo es el proceso de usar datos hist´ ori- cos para hacer predicciones sobre eventos futuros. Python, con ‘scikit-learn‘, ‘XGBoost‘, ‘LightGBM‘, ‘Prophet‘ (Facebook), y ‘TensorFlow‘ (para series largas o datos complejos), es la plataforma l´ ıder. Los casos de uso empresarial son numerosos: Predicci´ on de demanda: en cadenas de suministro y retail. Modelos de series tempo- rales (ARIMA, Exponential Smoothing) o modelos de regresi´ on con variables ex´ ogenas (precios, promociones, estacionalidad). ‘Prophet‘ maneja autom´ aticamente festivos y cambios de tendencia. Churn prediction (predicci´ on de abandono de clientes): clasificaci´ on binaria (abandona o no) basada en caracter´ ısticas como antig¨ uedad, frecuencia de uso, quejas, etc. Los modelos permiten intervenir (ofrecer descuentos, mejoras) antes de que el cliente se vaya. Evaluaci´ on de cr´ edito y scoring: determinar la probabilidad de impago de un solicitante de cr´ edito. Modelos de regresi´ on log´ ıstica, ´ arboles de decisi´ on o XGBoost se entrenan con historial crediticio, ingresos, deuda, etc. Son un requisito normativo en muchos pa´ ıses. Mantenimiento predictivo: en manufactura, se usan sensores para monitorear equipos; los modelos predicen fallos antes de que ocurran, permitiendo programar el manteni- miento y evitar paradas no planificadas. T´ ecnicas de detecci´ on de anomal´ ıas y pron´ ostico de vida ´ util restante (RUL). Optimizaci´ on de precios: modelos de elasticidad que estiman c´ omo cambia la demanda con el precio, y algoritmos de optimizaci´ on para fijar precios que maximicen ingresos o beneficios. Herramientas espec´ ıficas. Adem´ as de las bibliotecas ya mencionadas, el ecosistema Python incluye: Statsmodels: modelos estad´ ısticos y econom´ etricos (OLS, GLM, modelos de series temporales). Prophet: desarrollado por Facebook, f´ acil de usar para series temporales con estaciona- lidad y festivos. Abraham Zamudio 99 PIT: Python Basico
  95. Sesion 2 PyMC y Bambi: inferencia Bayesiana, muy ´ util

    en marketing para modelar la incerti- dumbre. Optuna: optimizaci´ on de hiperpar´ ametros para cualquier modelo. Shap y Eli5: explicabilidad de modelos. Integraci´ on con flujos de trabajo empresariales. Los modelos predictivos desarrollados en Python rara vez se quedan en un notebook. Se integran en los procesos operativos mediante: APIs (FastAPI, Flask) que exponen el modelo para que otros sistemas (CRM, ERP) consulten predicciones. ETLs programados (Apache Airflow) que ejecutan predicciones peri´ odicamente (por ejemplo, cada noche actualizar la propensi´ on a compra de todos los clientes). Incorporaci´ on en dashboards (Power BI, Tableau) mediante scripts Python que generan datos agregados. La adopci´ on de Python en finanzas, marketing y an´ alisis predictivo ha permitido a las empresas pasar de la intuici´ on a la toma de decisiones basada en datos. La capacidad de procesar grandes vol´ umenes de informaci´ on, de probar m´ ultiples modelos r´ apidamente, y de desplegar soluciones escalables convierte a Python en un activo estrat´ egico para estas ´ areas. 9.4. Startups y transformaci´ on digital Las startups tecnol´ ogicas y las empresas en proceso de transformaci´ on digital han encontrado en Python un aliado invaluable. La raz´ on principal es la velocidad de desarrollo: Python permite pasar de la idea a un producto m´ ınimo viable (MVP) en semanas, en lugar de meses. Esto es cr´ ıtico en entornos con financiamiento limitado y competencia acelerada. Adem´ as, el ecosistema de bibliotecas y frameworks reduce la necesidad de reinventar la rueda. Python en startups. Desde sus inicios, muchas startups exitosas utilizaron Python como lenguaje principal. Ejemplos ic´ onicos: Instagram: comenz´ o con Django en Python. Cuando fue adquirida por Facebook, ya ten´ ıa millones de usuarios y su backend segu´ ıa siendo Python. La empresa optimiz´ o el rendimiento con t´ ecnicas como la fragmentaci´ on de bases de datos y la escritura de algunas partes en Cython, pero el n´ ucleo sigui´ o siendo Python. Dropbox: el cliente de escritorio y gran parte del backend estaban escritos en Python. Dropbox lleg´ o a contratar a Guido van Rossum (creador de Python) para mejorar el rendimiento. Spotify: utiliza Python para an´ alisis de datos, backend de recomendaciones y muchas herramientas internas. Reddit: originalmente escrito en Lisp, luego migrado a Python. Reddit utiliza el framework web Pylons (antecesor de Pyramid). Abraham Zamudio 100 PIT: Python Basico
  96. Sesion 2 Quora: la plataforma de preguntas y respuestas utiliza

    Python con el framework web propio llamado ”live”. Stripe: el procesador de pagos online utiliza Python para su backend y para las bibliotecas de integraci´ on con los comercios. Las startups valoran de Python: Productividad: menos c´ odigo para implementar la misma funcionalidad que en Java o C++. Flexibilidad: el tipado din´ amico y la naturaleza interpretada permiten cambios r´ apidos durante la fase de descubrimiento. Contrataci´ on: es m´ as f´ acil encontrar desarrolladores Python competentes que especia- listas en lenguajes m´ as ex´ oticos. Ecosistema para escalar: cuando la startup crece, existen herramientas como Celery para colas, Redis para cach´ e, bases de datos soportadas por Django ORM, etc. Integraci´ on con ciencia de datos: muchas startups basan su negocio en IA (reco- mendaciones, personalizaci´ on, an´ alisis predictivo), y Python es el lenguaje natural para eso. Transformaci´ on digital en empresas establecidas. Las grandes empresas que comenza- ron con tecnolog´ ıas heredadas (mainframes COBOL, bases de datos propietarias, aplicaciones en C++ o Java) est´ an adoptando Python para modernizar sus sistemas. La transformaci´ on digital implica: Modernizaci´ on de aplicaciones monol´ ıticas: se reescriben partes del sistema en Python como microservicios. Por ejemplo, un banco puede reescribir el motor de c´ alculo de intereses en Python, manteniendo el sistema de cuentas en COBOL pero comunic´ andose mediante API. ETL y data pipelines: Python es el lenguaje de facto para extraer, transformar y cargar datos entre sistemas antiguos y data warehouses modernos (Snowflake, BigQuery). Automatizaci´ on de flujos de trabajo: las empresas reemplazan procesos manuales o semiautom´ aticos (Excel con macros) por scripts Python robustos y documentados. Portales de autoservicio para clientes y empleados: construidos con Django o FastAPI, que permiten consultar informaci´ on que antes requer´ ıa llamadas telef´ onicas o correos. Integraci´ on de sistemas legacy con APIs: usando Python como middleware, se exponen interfaces modernas (REST, GraphQL) sobre sistemas antiguos (por ejemplo, bases de datos VSAM o colas IBM MQ). Desaf´ ıos de Python en empresas. No todo es perfecto. Las empresas que adoptan Python enfrentan desaf´ ıos: Abraham Zamudio 101 PIT: Python Basico
  97. Sesion 2 Rendimiento: para ciertas operaciones intensivas en CPU, Python

    puede ser un cuello de botella. Soluciones: usar NumPy/Cython/Numba, o escribir extensiones en C++, o delegar a servicios especializados. Tipado din´ amico: en proyectos grandes con muchos desarrolladores, los errores de tipo pueden pasar a producci´ on. Se mitiga con anotaciones de tipo (type hints) y herramientas como mypy, adem´ as de pruebas exhaustivas. Gesti´ on de dependencias: la proliferaci´ on de bibliotecas puede llevar a conflictos de versiones (”dependency hell”). Se usan entornos virtuales (venv, virtualenv) o contenedores Docker, y gestores como poetry o pipenv. Curva de aprendizaje para equipos tradicionales: desarrolladores que vienen de Java pueden tener que adaptarse al estilo pythonico (list comprehensions, duck typing). No obstante, las ventajas suelen superar ampliamente los inconvenientes, sobre todo en proyectos donde la agilidad y la capacidad de respuesta al mercado son prioritarias. Buenas pr´ acticas para startups y empresas. Para tener ´ exito con Python en entornos empresariales, se recomienda: Usar control de versiones (Git) desde el d´ ıa uno. Establecer un estilo de c´ odigo consistente (PEP 8) y utilizar linters (flake8, pylint) y formateadores (black). Escribir pruebas unitarias (unittest, pytest) y de integraci´ on. Configurar integraci´ on continua (GitHub Actions, GitLab CI, Jenkins) para ejecutar pruebas autom´ aticamente. Documentar el c´ odigo y mantener un README actualizado. Monitorear las aplicaciones en producci´ on (logs, m´ etricas con Prometheus, dashboards con Grafana). Realizar code reviews antes de fusionar cambios. Capacitar a los equipos en Python avanzado y en las bibliotecas espec´ ıficas del dominio. La transformaci´ on digital con Python no es solo t´ ecnica; es cultural. Implica adoptar meto- dolog´ ıas ´ agiles (Scrum, Kanban), fomentar la colaboraci´ on entre equipos de negocio y TI, y aceptar la experimentaci´ on y el fracaso r´ apido. Python, por su naturaleza accesible, ayuda a derribar silos y permite que analistas de negocio contribuyan directamente con scripts o notebooks. En conclusi´ on, Python es el combustible de la nueva econom´ ıa digital. Tanto para startups que construyen el futuro desde cero como para empresas tradicionales que se reinventan, Python proporciona la agilidad, la potencia y el ecosistema necesario para competir en un mundo donde el software lo es todo. Abraham Zamudio 102 PIT: Python Basico
  98. Sesion 2 9.5. Empresas tecnol´ ogicas que utilizan Python La

    adopci´ on de Python por parte de las empresas tecnol´ ogicas m´ as grandes y exitosas del mundo es una prueba irrefutable de su robustez, escalabilidad y versatilidad. Estas empresas no solo utilizan Python en proyectos internos o prototipos, sino en sistemas de misi´ on cr´ ıtica que manejan miles de millones de solicitudes diarias. A continuaci´ on, se analiza c´ omo algunas de ellas aprovechan Python. Google. Google fue uno de los primeros grandes adoptantes de Python. Aunque el motor de b´ usqueda y la infraestructura principal est´ an escritos en C++ y Java, Python se utiliza extensivamente para: Sistemas de construcci´ on y administraci´ on: el sistema de revisi´ on de c´ odigo de Google (Mondrian) est´ a escrito en Python. Herramientas de automatizaci´ on interna y scripts de mantenimiento de cl´ usteres. La biblioteca de machine learning TensorFlow (aunque el n´ ucleo es C++, la API principal es Python). Google App Engine originalmente soportaba Python como primer lenguaje. Los cursos internos de formaci´ on y muchos prototipos de investigadores se escriben en Python. Google tambi´ en ha contribuido enormemente al ecosistema Python (por ejemplo, Google contribuye a la PSF, patrocina eventos, y desarrolla bibliotecas como Google API Client para Python). Facebook (Meta). Meta utiliza Python en varias ´ areas: La infraestructura de operaciones (scripts de despliegue, monitoreo, administraci´ on de servidores) tiene una gran cantidad de c´ odigo Python. El framework de desarrollo web Tornado (escrito originalmente por desarrolladores de Facebook) se usa para aplicaciones as´ ıncronas. La biblioteca PyTorch (creada por Meta) se ha convertido en el est´ andar de la industria para deep learning, con Python como interfaz. Herramientas internas de an´ alisis de datos y business intelligence. Proyectos como ”Django”no son tan prevalentes, pero Python est´ a presente en el backend de servicios menos cr´ ıticos. Netflix. Netflix es famoso por su arquitectura de microservicios basada en la nube (AWS). Python se utiliza principalmente para: An´ alisis de datos y recomendaciones: la mayor´ ıa de los pipelines de machine learning est´ an en Python (con NumPy, pandas, scikit-learn, etc.). Abraham Zamudio 103 PIT: Python Basico
  99. Sesion 2 Herramientas de seguridad y monitorizaci´ on. El sistema

    de gesti´ on de la cadena de entrega de contenido (CDN) tiene componentes escritos en Python. Scripts de automatizaci´ on de infraestructura. Adem´ as, Netflix ha contribuido a la comunidad con bibliotecas como Metaflow (para gestionar flujos de datos y ML) y Lemur (gesti´ on de certificados SSL). Spotify. Spotify utiliza Python para: Procesamiento de datos a gran escala (con Apache Beam, y SDK en Python). Sistemas de recomendaci´ on y personalizaci´ on (machine learning). Muchos servicios de backend, especialmente los que no requieren latencia extremada- mente baja (se usan con asyncio). Herramientas internas de desarrollo y despliegue continuo. Spotify tambi´ en es conocido por su uso de backend en Java (para el sistema de streaming de audio), pero Python es crucial en el lado de datos. Amazon. Amazon (AWS) ofrece soporte de primera clase para Python en sus servicios (SDK boto3), y la empresa lo utiliza internamente para: Herramientas de automatizaci´ on de infraestructura (similar a Google). Procesamiento de datos (con AWS Glue, que soporta Python). An´ alisis de comportamiento de clientes. Desarrollo de prototipos para nuevos servicios. Sin embargo, Amazon es predominantemente Java y C++ en sus sistemas centrales. Microsoft. Microsoft ha pasado de ser una empresa hostil al c´ odigo abierto a un gran colaborador. Python es ahora ciudadano de primera clase en Azure (Azure Functions, Machine Learning, Cognitive Services). Microsoft contribuye al desarrollo de Python (a trav´ es de la Python Software Foundation), mantiene el repositorio de Python en GitHub (junto con la PSF), y ha desarrollado herramientas como VS Code con extensiones Python, el propio int´ erprete Python para Windows (que se incluye en Visual Studio), y la biblioteca ‘msal‘ para autenticaci´ on. Internamente, Microsoft utiliza Python en productos como Bing (parte de los algoritmos de b´ usqueda), Excel (ciertas funciones nuevas), y Power BI (scripts de transformaci´ on de datos). Instagram. Como se mencion´ o, Instagram est´ a construido sobre Django y Python. Maneja cientos de millones de usuarios activos diarios. Su capacidad de escalar Python se debe a optimizaciones de base de datos, cach´ e, y un uso intensivo de microservicios. Instagram ha Abraham Zamudio 104 PIT: Python Basico
  100. Sesion 2 compartido p´ ublicamente c´ omo utiliza la monitorizaci´

    on y la instrumentaci´ on para mantener la latencia baja. Reddit. Reddit utiliza Python en casi todo su backend. La combinaci´ on de Python y PostgreSQL (con cach´ e de memcached) maneja un tr´ afico masivo. Reddit emplea t´ ecnicas como la agregaci´ on de solicitudes y la escritura as´ ıncrona para mantener la capacidad de respuesta. Otros ejemplos. Otras empresas tecnol´ ogicas notables que emplean Python incluyen: Uber: para an´ alisis de datos, machine learning, y sus sistemas de backtesting. Stripe: la mayor´ ıa de sus bibliotecas de cliente y el backend est´ an en Python. Pinterest: utiliza Django y Python para la l´ ogica de negocio y servicios. Yelp: el backend principal est´ a en Python (con Pyramid). Bitbucket: la popular plataforma de alojamiento de repositorios Git (originalmente escrita en Python con Django, aunque luego migr´ o partes a otros lenguajes). Dropbox: el cliente de escritorio y gran parte del backend siguen siendo Python. Quora: Python con su propio framework ”live”. Lecciones aprendidas. De estos casos se extraen lecciones sobre c´ omo usar Python a gran escala: Perfilamiento y optimizaci´ on: identificar cuellos de botella y reescribir partes en C/C++ o Cython es una pr´ actica com´ un. Instagram, por ejemplo, utiliza Cython para algunas funciones. Arquitectura de microservicios: en lugar de un monolito Python, se distribuye la carga entre muchos servicios peque˜ nos, cada uno escalable independientemente. Asincron´ ıa: para E/S intensiva, frameworks as´ ıncronos (FastAPI, Sanic, async Django) mejoran la concurrencia. Cach´ e: usar Redis o memcached para resultados costosos. Monitoreo y logs: implementar m´ etricas detalladas para detectar degradaciones. Pruebas exhaustivas: para evitar regresiones, dado que Python es din´ amico. La presencia de Python en empresas tecnol´ ogicas l´ ıderes asegura su evoluci´ on continua y su soporte a largo plazo. Los ingenieros de estas empresas contribuyen a las bibliotecas que toda la comunidad usa, creando un c´ ırculo virtuoso. Si una organizaci´ on est´ a considerando Python para un proyecto cr´ ıtico, el ´ exito comprobado en estas compa˜ n´ ıas deber´ ıa disipar cualquier duda. En resumen, Python no es solo un lenguaje para aficionados o para scripts peque˜ nos; es una herramienta de nivel empresarial probada en las mayores cargas de trabajo del planeta. Su Abraham Zamudio 105 PIT: Python Basico
  101. Sesion 2 adopci´ on por parte de empresas tecnol´ ogicas

    ic´ onicas es el mejor aval para cualquier equipo que quiera construir software robusto, mantenible y escalable. Abraham Zamudio 106 PIT: Python Basico
  102. Cap´ ıtulo 10 Python y el desarrollo de habilidades laborales

    10.1. Nuevas profesiones digitales La digitalizaci´ on de la econom´ ıa ha dado lugar a una constelaci´ on de profesiones que hace una d´ ecada eran inexistentes o marginales. Analista de datos, ingeniero de machine learning, desarrollador de inteligencia artificial, cient´ ıfico de datos, ingeniero de DevOps, especialista en ciberseguridad, desarrollador de blockchain, arquitecto de nube, ingeniero de prompt (prompt engineer), especialista en automatizaci´ on de procesos (RPA), y un largo etc´ etera. En la mayor´ ıa de estas nuevas profesiones, Python no es solo un lenguaje m´ as, sino el idioma franco que conecta el conocimiento del dominio con la implementaci´ on computacional. Este cap´ ıtulo explora c´ omo Python ha catalizado la aparici´ on de estos roles y c´ omo las habilidades en Python se han convertido en un requisito casi universal. Analista de datos. El analista de datos es probablemente el rol digital de m´ as r´ apido crecimiento. Su misi´ on es examinar grandes vol´ umenes de datos, extraer insights y comuni- carlos a trav´ es de visualizaciones e informes. Python, con bibliotecas como pandas, NumPy, Matplotlib, Seaborn y Plotly, es la herramienta principal para la limpieza, transformaci´ on y an´ alisis de datos. Un analista de datos en Python debe dominar: Lectura y escritura de datos desde formatos diversos (CSV, Excel, JSON, SQL, Parquet). Limpieza de datos: manejo de valores nulos, detecci´ on y tratamiento de outliers, conver- si´ on de tipos. Agregaciones y pivotes con pandas (groupby, pivot table, merge, concat). An´ alisis estad´ ıstico descriptivo (media, mediana, desviaci´ on est´ andar, cuantiles, correla- ciones). Visualizaci´ on de datos: histogramas, diagramas de dispersi´ on, gr´ aficos de cajas, mapas de calor, series temporales. 107
  103. Sesion 2 Generaci´ on de dashboards interactivos (con Streamlit, Dash,

    o integraci´ on con Power BI mediante scripts Python). Comunicaci´ on de resultados: el analista debe ser capaz de explicar hallazgos a equipos no t´ ecnicos, pero el an´ alisis t´ ecnico se realiza en Python. La demanda de analistas de datos que usan Python se ha multiplicado por diez en los ´ ultimos cinco a˜ nos, seg´ un informes de LinkedIn y Burning Glass. Sectores como finanzas, marketing, log´ ıstica, salud y retail compiten por estos profesionales. Cient´ ıfico de datos. El cient´ ıfico de datos va un paso m´ as all´ a del analista: no solo describe y visualiza, sino que construye modelos predictivos y prescriptivos. Es un rol que combina estad´ ıstica avanzada, machine learning y conocimiento de negocio. Python es el lenguaje de facto para el cient´ ıfico de datos, con bibliotecas como scikit-learn, XGBoost, LightGBM, TensorFlow, PyTorch, StatsModels y Prophet. Las competencias t´ ıpicas incluyen: Selecci´ on y preparaci´ on de caracter´ ısticas (feature engineering). Entrenamiento y validaci´ on de modelos (regresi´ on, clasificaci´ on, clustering, series tem- porales). Optimizaci´ on de hiperpar´ ametros (GridSearchCV, RandomizedSearchCV, Optuna). Evaluaci´ on de modelos (m´ etricas de rendimiento, curvas ROC, matrices de confusi´ on, calibraci´ on). Interpretaci´ on de modelos (SHAP, LIME, importance plots). Despliegue de modelos en producci´ on (aunque a menudo colaboran con ingenieros de ML). Comunicaci´ on de incertidumbre y limitaciones de los modelos. La demanda de cient´ ıficos de datos supera con creces la oferta, y los salarios se encuentran entre los m´ as altos del sector tecnol´ ogico. Python es la habilidad t´ ecnica m´ as solicitada en las ofertas de empleo para ciencia de datos. Ingeniero de machine learning (ML Engineer). Este rol se sit´ ua en la intersecci´ on entre la ciencia de datos y la ingenier´ ıa de software. El ingeniero de ML es responsable de llevar los modelos de machine learning a producci´ on, garantizando escalabilidad, baja latencia, monitorizaci´ on y actualizaci´ on continua. Python es esencial en este rol, pero se complementa con conocimientos de: APIs y microservicios (FastAPI, Flask, TensorFlow Serving, TorchServe). Contenedores (Docker) y orquestaci´ on (Kubernetes). Bases de datos vectoriales (FAISS, Pinecone, Weaviate) y cach´ es (Redis). Pipelines de datos (Apache Airflow, Prefect, Kubeflow, Metaflow). Plataformas cloud (AWS SageMaker, Google Vertex AI, Azure ML). Abraham Zamudio 108 PIT: Python Basico
  104. Sesion 2 MLOps: integraci´ on continua y despliegue continuo para

    modelos, versionado de datos y modelos (DVC, MLflow), monitorizaci´ on de drift. El ingeniero de ML debe escribir Python de alta calidad, con pruebas, tipado y documentaci´ on, porque su c´ odigo se ejecuta en entornos cr´ ıticos. Desarrollador de inteligencia artificial (IA). Un desarrollador de IA se enfoca en la implementaci´ on de algoritmos de IA, a menudo en dominios espec´ ıficos como visi´ on por computadora, procesamiento de lenguaje natural o rob´ otica. Python es el lenguaje de elecci´ on gracias a frameworks como OpenCV, transformers (Hugging Face), PyTorch, TensorFlow, y bibliotecas de rob´ otica como ROS (con interfaz Python). Las tareas incluyen: Entrenamiento de redes neuronales profundas para clasificaci´ on de im´ agenes, detecci´ on de objetos, segmentaci´ on sem´ antica. Fine-tuning de modelos de lenguaje (BERT, GPT, LLaMA) para tareas de NLP. Implementaci´ on de sistemas de visi´ on por computadora en tiempo real (procesamiento de video, seguimiento de objetos). Construcci´ on de agentes de aprendizaje por refuerzo (con Stable-Baselines3). Integraci´ on de modelos de IA con hardware (c´ amaras, sensores, actuadores). Estos profesionales suelen tener formaci´ on en ciencias de la computaci´ on, matem´ aticas o f´ ısica, y su demanda es alt´ ısima en empresas de tecnolog´ ıa, automoci´ on, salud y defensa. Ingeniero de DevOps / SRE (Site Reliability Engineer). Aunque tradicionalmente asociado con scripting en Bash y herramientas de configuraci´ on, Python se ha convertido en un pilar de DevOps. Los ingenieros de DevOps escriben scripts en Python para automatizar despliegues, orquestar contenedores, gestionar infraestructura como c´ odigo (con AWS CDK, Pulumi, Terraform (que tiene HCL pero se puede llamar desde Python), monitorear sistemas y responder a incidentes. Bibliotecas como boto3 (AWS), google-cloud-sdk, paramiko, requests, y herramientas como Ansible (aunque usa YAML, los m´ odulos est´ an escritos en Python) hacen de Python un lenguaje indispensable. Adem´ as, muchos sistemas de CI/CD (GitLab CI, Jenkins con pipelines scripted) permiten escribir l´ ogica en Python. Especialista en automatizaci´ on (RPA). La automatizaci´ on rob´ otica de procesos (RPA) ha pasado de ser un nicho a una disciplina generalizada. Los especialistas en RPA utilizan Python para automatizar tareas repetitivas en entornos empresariales. A diferencia de herra- mientas de RPA comerciales (UiPath, Automation Anywhere) que tienen interfaces visuales, Python con bibliotecas como PyAutoGUI, Selenium, pywinauto, y pandas permite construir automatizaciones m´ as flexibles, econ´ omicas y f´ aciles de integrar con otros sistemas. Estos profesionales dise˜ nan robots que interact´ uan con aplicaciones de escritorio, navegadores web, archivos y correos electr´ onicos, siguiendo flujos de trabajo complejos. Ingeniero de datos (Data Engineer). El ingeniero de datos construye pipelines de extracci´ on, transformaci´ on y carga (ETL) que alimentan los sistemas de an´ alisis y machine Abraham Zamudio 109 PIT: Python Basico
  105. Sesion 2 learning. Python es uno de los lenguajes principales

    para esta tarea, junto con SQL y Scala. Bibliotecas como pandas, Dask, PySpark (API Python de Apache Spark), y frameworks como Apache Airflow (escrito en Python) o Dagster son herramientas habituales. El ingeniero de datos debe dise˜ nar bases de datos (SQL y NoSQL), gestionar particiones, optimizar consultas y garantizar la calidad de los datos. Python le permite escribir transformaciones complejas de forma legible y mantenible. Desarrollador web backend. Aunque no es nueva, la profesi´ on de desarrollador web backend ha evolucionado con Python como protagonista en startups y empresas tecnol´ ogicas. Frameworks como Django, Flask y FastAPI permiten construir APIs, sitios web y aplicaciones web con alta productividad. Un desarrollador backend Python debe dominar la creaci´ on de endpoints RESTful o GraphQL, la autenticaci´ on (JWT, OAuth), la conexi´ on a bases de datos (SQLAlchemy, Django ORM), el manejo de asincron´ ıa (asyncio, FastAPI), y el despliegue en la nube. La demanda de estos profesionales es constante y bien remunerada. Ingeniero de prompt (Prompt Engineer). Es una profesi´ on muy reciente, surgida con los grandes modelos de lenguaje (LLMs). El ingeniero de prompt dise˜ na, optimiza y eval´ ua las instrucciones (prompts) que se env´ ıan a modelos como GPT-4, Claude o Gemini para obtener respuestas ´ utiles y seguras. Python es la herramienta principal para interactuar con las APIs de estos modelos, automatizar la generaci´ on de prompts, realizar pruebas A/B y construir cadenas de llamadas (con LangChain). Aunque algunos consideran que es un rol transitorio, actualmente es muy demandado y bien pagado. Profesiones emergentes adicionales. Otras profesiones digitales donde Python juega un papel importante incluyen: Arquitecto de soluciones cloud (dise˜ na sistemas usando SDK de Python para AWS/A- zure/GCP). Analista de ciberseguridad (scripts de an´ alisis de logs, detecci´ on de intrusiones, pruebas de penetraci´ on con Scapy, Impacket, etc.). Desarrollador de juegos (aunque no es el lenguaje principal, se usa para herramientas, scripting y prototipado con Pygame o Godot con GDScript similar). Investigador en computaci´ on cu´ antica (con Qiskit, Cirq, PennyLane). Especialista en IoT (Internet de las Cosas) con Raspberry Pi, MicroPython, Cir- cuitPython. En todos estos casos, Python no es solo una herramienta; es el habilitador que permite a profesionales de distintos dominios (matem´ aticos, f´ ısicos, economistas, bi´ ologos) convertirse en creadores de software. La curva de aprendizaje suave de Python hace posible la reconversi´ on profesional hacia roles digitales, democratizando el acceso a estas profesiones. Abraham Zamudio 110 PIT: Python Basico
  106. Sesion 2 10.2. Programaci´ on como competencia transversal Tradicionalmente, la

    programaci´ on se consideraba una habilidad especializada reservada a los ingenieros inform´ aticos. Sin embargo, en la econom´ ıa digital actual, la capacidad de escribir c´ odigo se ha convertido en una competencia transversal valorada en pr´ acticamente todas las disciplinas. Un contable que sabe Python puede automatizar la conciliaci´ on bancaria; un bi´ ologo puede procesar secuencias gen´ eticas; un periodista puede hacer scraping de datos para una investigaci´ on; un arquitecto puede generar modelos param´ etricos; un psic´ ologo puede analizar encuestas con estad´ ıstica avanzada. Python, por su claridad y su ecosistema de bibliotecas, es el lenguaje que est´ a haciendo posible esta transversalidad. Programaci´ on para no programadores. El t´ ermino “programador” evoca a alguien que se dedica profesionalmente a escribir c´ odigo. Pero existe un espectro mucho m´ as amplio de usuarios que programan de manera incidental, como parte de su trabajo principal. Son los llamados “programadores de fin de semana”, “cient´ ıficos ciudadanos” o “trabajadores del conocimiento aumentados”. Para ellos, Python ofrece: Una sintaxis que se parece al pseudoc´ odigo, f´ acil de recordar incluso si no se usa a diario. Un REPL (Read-Eval-Print Loop) que permite probar peque˜ nos fragmentos de c´ odigo de forma interactiva. Jupyter Notebooks que combinan explicaciones, c´ odigo y resultados, ideales para an´ alisis exploratorio. Bibliotecas de alto nivel que encapsulan complejidad: con pandas.read_csv() se carga un archivo sin necesidad de entender flujos de E/S a bajo nivel. En las universidades, muchas carreras no t´ ecnicas (econom´ ıa, biolog´ ıa, psicolog´ ıa, sociolog´ ıa, ciencias pol´ ıticas, dise˜ no) han incorporado Python en su curr´ ıculo. Por ejemplo, en la London School of Economics, los estudiantes de econom´ ıa aprenden Python para an´ alisis de datos; en Harvard, el curso “CS50” es tomado por estudiantes de todas las especialidades; en el MIT, el “Introduction to Computational Thinking” usa Python. Esta tendencia es imparable: en diez a˜ nos, saber programar ser´ a tan b´ asico como saber usar un procesador de textos. Beneficios de la programaci´ on transversal. La integraci´ on de Python en disciplinas no t´ ecnicas aporta ventajas tanto a los individuos como a las organizaciones: Automatizaci´ on de tareas repetitivas: un profesional puede reducir dr´ asticamente el tiempo dedicado a tareas rutinarias (generar informes, limpiar datos, extraer informaci´ on) y dedicarse a labores de mayor valor. Reproducibilidad: los an´ alisis hechos con scripts son transparentes y se pueden revisar, a diferencia de los clics en Excel que no dejan rastro. Colaboraci´ on interdisciplinar: un bi´ ologo y un estad´ ıstico pueden compartir un notebook de Python y entender el an´ alisis del otro, algo dif´ ıcil con software propietario. Abraham Zamudio 111 PIT: Python Basico
  107. Sesion 2 Escalabilidad: lo que funciona en una muestra peque˜

    na se puede aplicar a miles de archivos simplemente a˜ nadiendo un bucle. Innovaci´ on: las personas con conocimiento del dominio (domain experts) pueden explorar hip´ otesis por s´ ı mismas, sin depender de un equipo de TI que puede tener otros prioritarios. Ejemplos por disciplina. Biotecnolog´ ıa y gen´ omica: un investigador puede usar Biopython para analizar secuencias de ADN, identificar patrones, o descargar datos de GenBank. Sin Python, necesitar´ ıa software comercial costoso o escribir scripts en Perl. Econom´ ıa y finanzas: un analista puede descargar datos de indicadores macroecon´ omi- cos del Banco Mundial mediante la API wbdata, calcular correlaciones y generar gr´ aficos para un informe, todo en un notebook reproducible. Periodismo de datos: un periodista puede hacer scraping de tablas de un sitio web (con pandas.read html), limpiarlas y crear visualizaciones para un art´ ıculo. Casos famosos incluyen los Panama Papers, donde se utiliz´ o Python para analizar millones de documentos. Arquitectura y dise˜ no: con bibliotecas como Rhino.Compute (para Grasshopper) o FreeCAD, los arquitectos pueden generar geometr´ ıas param´ etricas, optimizar el uso de materiales y simular la iluminaci´ on natural. Ciencias sociales: un soci´ ologo puede analizar encuestas con estad´ ıstica multivariante (statsmodels), realizar an´ alisis de redes sociales (NetworkX), o aplicar procesamiento de lenguaje natural a entrevistas textuales. Educaci´ on: los profesores pueden crear ejercicios interactivos con Jupyter, corregir autom´ aticamente tareas de programaci´ on con nbgrader, y analizar el rendimiento de los estudiantes con pandas. Barreras y soluciones. A pesar de sus ventajas, la adopci´ on transversal de Python enfrenta barreras: Miedo inicial a la programaci´ on: muchas personas no t´ ecnicas perciben la progra- maci´ on como dif´ ıcil o propia de “genios”. Python mitiga esto con su sintaxis amigable y la gran cantidad de recursos para principiantes. Falta de tiempo para aprender: los profesionales tienen agendas cargadas. Soluciones: cursos cortos y orientados a tareas (“Python para analistas en 2 d´ ıas”), tutoriales de 10 minutos, y entornos que ocultan la complejidad (Google Colab). Soporte institucional: las organizaciones deben proporcionar formaci´ on, tiempo para practicar y reconocimiento a quienes adquieren estas habilidades. Algunas empresas tienen programas de “upskilling” en Python. Abraham Zamudio 112 PIT: Python Basico
  108. Sesion 2 Integraci´ on con flujos de trabajo existentes: Python

    debe coexistir con Excel, SPSS o Tableau. Se pueden generar archivos Excel desde pandas, o leer datos desde SPSS con ‘pyreadstat‘. La clave es no forzar un cambio radical, sino mostrar c´ omo Python complementa y mejora las herramientas actuales. El papel de las certificaciones. Para acreditar la competencia transversal en Python, han surgido certificaciones como PCAP (Certified Associate in Python Programming) de Python Institute, y certificaciones espec´ ıficas de proveedores (Google IT Automation with Python, DataCamp certifications). Aunque no son obligatorias, ayudan a los profesionales a destacar sus habilidades en el mercado laboral. Conclusi´ on sobre transversalidad. La programaci´ on como competencia transversal ya no es una opci´ on, sino una necesidad en un mundo laboral digitalizado. Python, por su accesibilidad y potencia, es el veh´ ıculo ideal para esta transformaci´ on. Las organizaciones que fomentan el aprendizaje de Python en todos los departamentos ganan en productividad, inno- vaci´ on y capacidad de respuesta. Los individuos que a˜ naden Python a su caja de herramientas multiplican su valor profesional y abren puertas a nuevas oportunidades. 10.3. Empleabilidad y demanda de programadores Python El mercado laboral para profesionales que saben Python es extraordinariamente robusto y sigue creciendo. Seg´ un el ´ ındice TIOBE, Python es el lenguaje m´ as popular; en Stack Overflow Developer Survey, Python es el lenguaje m´ as deseado y el m´ as utilizado en ciencia de datos; en LinkedIn, las ofertas que mencionan Python superan a cualquier otro lenguaje. Esta secci´ on analiza las cifras, los perfiles m´ as demandados, los salarios y las perspectivas futuras. Datos de demanda. Informes de Burning Glass, Indeed y LinkedIn coinciden en que la demanda de habilidades Python ha crecido entre un 30 % y un 50 % anual en los ´ ultimos cinco a˜ nos. Algunos datos concretos: En EE.UU., hay m´ as de 150.000 ofertas de trabajo activas que requieren Python (Indeed, 2024). Muchas de ellas son para puestos que no son estrictamente de desarrollo: analista de datos, cient´ ıfico de datos, ingeniero de ML, DevOps, etc. En Europa, la demanda es similar, con especial intensidad en Londres, Berl´ ın, ´ Amsterdam, Par´ ıs y Barcelona. En Am´ erica Latina, la demanda crece aceleradamente, especialmente en M´ exico, Brasil, Argentina, Colombia y Chile, impulsada por el nearshoring de servicios tecnol´ ogicos. En Asia, India y China producen cientos de miles de programadores Python al a˜ no, pero la demanda interna tambi´ en es alta. Perfiles m´ as demandados. Los puestos que m´ as requieren Python, ordenados por n´ umero de ofertas y salario medio (aproximado en EE.UU.): Abraham Zamudio 113 PIT: Python Basico
  109. Sesion 2 1. Cient´ ıfico de datos (Data Scientist): 120.000

    - 180.000 USD/a˜ no. Requiere Python + estad´ ıstica + ML + visualizaci´ on. 2. Ingeniero de machine learning (ML Engineer): 140.000 - 200.000 USD/a˜ no. Python + MLOps + cloud + sistemas distribuidos. 3. Desarrollador backend (Python Backend Developer): 100.000 - 150.000 USD/a˜ no. Python + Django/Flask/FastAPI + bases de datos + APIs. 4. Analista de datos (Data Analyst): 70.000 - 110.000 USD/a˜ no. Python (pandas, matplotlib) + SQL + visualizaci´ on. 5. Ingeniero de datos (Data Engineer): 120.000 - 170.000 USD/a˜ no. Python + SQL + Airflow/Spark + cloud. 6. Ingeniero de DevOps / SRE: 120.000 - 180.000 USD/a˜ no. Python + Docker/K8s + CI/CD + cloud. 7. Desarrollador de IA/Deep Learning: 130.000 - 190.000 USD/a˜ no. Python + Py- Torch/TensorFlow + visi´ on/NLP. 8. Desarrollador full stack (con Django/React): 100.000 - 140.000 USD/a˜ no. Python + JavaScript/React + HTML/CSS. 9. Especialista en automatizaci´ on (RPA): 80.000 - 120.000 USD/a˜ no. Python + Selenium + herramientas de RPA. 10. Ingeniero de prompts (Prompt Engineer): 100.000 - 200.000 USD/a˜ no (variable, rol nuevo). Python + LLMs + LangChain. Los salarios son considerablemente m´ as bajos en otras regiones, pero a´ un as´ ı se encuentran entre los m´ as altos de las econom´ ıas locales. Habilidades complementarias. Saber Python solo no basta; los empleadores buscan combinaciones de habilidades: Python + SQL (bases de datos relacionales) es casi universal. Python + Pandas + NumPy para an´ alisis de datos. Python + Flask/Django para web. Python + TensorFlow/PyTorch para deep learning. Python + AWS/Azure/GCP (SDK) para cloud. Python + Git + GitHub/GitLab para control de versiones. Python + Docker + Kubernetes para despliegue. Conocimientos de estad´ ıstica, ´ algebra lineal y c´ alculo para ciencia de datos. Habilidades blandas: comunicaci´ on, trabajo en equipo, resoluci´ on de problemas. Abraham Zamudio 114 PIT: Python Basico
  110. Sesion 2 Oferta de profesionales. La oferta de programadores Python

    no crece al mismo ritmo que la demanda. La escasez de talento es especialmente aguda en perfiles senior y en combinaci´ on con conocimientos espec´ ıficos (por ejemplo, ingenieros de ML con experiencia en producci´ on). Esto eleva los salarios y crea un mercado de candidatos muy favorable. Las universidades est´ an produciendo m´ as graduados con Python, pero no suficientes para cubrir la demanda. Adem´ as, la reconversi´ on profesional (bootcamps, cursos online) est´ a ayudando a llenar el gap, especialmente en niveles junior. Tendencias que impulsan la demanda. Explosi´ on de la inteligencia artificial: empresas de todos los sectores quieren implementar IA, y Python es el lenguaje principal. Transformaci´ on digital post-pandemia: la aceleraci´ on digital ha creado una necesi- dad permanente de automatizaci´ on y an´ alisis de datos. Econom´ ıa de datos: las empresas se dan cuenta de que los datos son un activo, y necesitan profesionales que los exploten. Computaci´ on en la nube: migrar a la nube implica escribir scripts de infraestructura y pipelines de datos. Startups tecnol´ ogicas: Python es el lenguaje preferido por su velocidad de desarrollo, y las startups crean empleo. Educaci´ on y formaci´ on: la ense˜ nanza de Python en colegios y universidades crea un c´ ırculo virtuoso: m´ as estudiantes, m´ as demanda de profesores, m´ as necesidad de contenido educativo, etc. Proyecci´ on futura. Las proyecciones a 5-10 a˜ nos indican que la demanda de habilidades Python continuar´ a creciendo, aunque quiz´ as a un ritmo algo menor. La automatizaci´ on de la programaci´ on (IA generativa de c´ odigo) podr´ ıa reducir la necesidad de programadores para tareas rutinarias, pero tambi´ en crear´ a nuevas oportunidades en supervisi´ on, integraci´ on y dise˜ no de sistemas. La capacidad de Python para adaptarse a nuevos paradigmas (computaci´ on cu´ antica, computaci´ on neurom´ orfica, etc.) sugiere que seguir´ a siendo relevante. Los perfiles m´ as especializados (MLOps, LLM engineering) ver´ an un crecimiento explosivo. Recomendaciones para profesionales. Para quienes deseen mejorar su empleabilidad con Python: Aprender Python a fondo (no solo lo b´ asico, sino buenas pr´ acticas, pruebas, manejo de excepciones). Especializarse en un dominio (datos, web, automatizaci´ on, IA) y construir un portafolio de proyectos. Contribuir a proyectos open source para ganar experiencia real y visibilidad. Obtener certificaciones reconocidas si se carece de t´ ıtulo universitario. Abraham Zamudio 115 PIT: Python Basico
  111. Sesion 2 Mantenerse actualizado con las nuevas bibliotecas y frameworks.

    Desarrollar habilidades de comunicaci´ on para explicar el trabajo t´ ecnico a audiencias no t´ ecnicas. En resumen, el mercado laboral para Python est´ a boyante y seguir´ a si´ endolo en el futuro previsible. Los profesionales que invierten en dominar Python obtienen un retorno excelente en t´ erminos de empleabilidad, salario y satisfacci´ on laboral. 10.4. Trabajo remoto y econom´ ıa digital La pandemia de COVID-19 aceler´ o una tendencia que ya ven´ ıa gest´ andose: el trabajo remoto generalizado. Para los profesionales de Python, el trabajo remoto no es una novedad, sino una caracter´ ıstica inherente a la econom´ ıa digital. Python, al ser un lenguaje interpretado, multiplataforma y con abundantes herramientas de colaboraci´ on, se adapta perfectamente al trabajo distribuido. Esta secci´ on explora c´ omo Python facilita el trabajo remoto, las oportu- nidades laborales globales, los desaf´ ıos y las herramientas que hacen posible la colaboraci´ on remota efectiva. Python y el trabajo remoto: ventajas t´ ecnicas. Multiplataforma: el mismo c´ odigo Python funciona en Windows, macOS y Linux. Esto elimina la fricci´ on cuando los miembros del equipo usan diferentes sistemas operativos. Entornos virtuales y contenedores: con ‘venv‘, ‘conda‘ o ‘Docker‘, se puede replicar exactamente el entorno de desarrollo en cualquier m´ aquina, garantizando que “funciona en mi equipo” no sea una excusa. Despliegue en la nube: las aplicaciones Python se despliegan f´ acilmente en servicios cloud (AWS, GCP, Azure, Heroku, DigitalOcean) a los que se accede remotamente. Herramientas de colaboraci´ on: Jupyter Notebooks pueden alojarse en servidores compartidos (JupyterHub), y servicios como Google Colab permiten edici´ on colaborativa en tiempo real. Control de versiones: Git (y GitHub/GitLab/Bitbucket) es est´ andar, y Python tiene excelentes integraciones (pre-commit hooks, herramientas de linting como flake8 que se ejecutan en CI). Oportunidades laborales globales. El trabajo remoto desacopla la ubicaci´ on geogr´ afica del empleo. Un desarrollador Python en Argentina puede trabajar para una empresa en Estados Unidos, cobrando en d´ olares y benefici´ andose de un tipo de cambio favorable. Esto ha dado lugar al fen´ omeno del “talento global”. Las plataformas de empleo remoto (We Work Remotely, RemoteOK, Remotive, Turing) publican diariamente cientos de ofertas para Python en modo remoto. Algunas empresas son “remote-first” (GitLab, Basecamp, Automattic, Zapier) y gran parte de su c´ odigo est´ a en Python. Para los profesionales, el trabajo remoto ofrece: Abraham Zamudio 116 PIT: Python Basico
  112. Sesion 2 Flexibilidad horaria (compatibilidad con familia, estudios, segundos empleos).

    Ahorro de tiempo y dinero en desplazamientos. Posibilidad de vivir en zonas de menor costo de vida mientras se gana salario de ciudad cara. Acceso a mercados laborales m´ as amplios, sin necesidad de visa de trabajo. Para las empresas, el trabajo remoto permite: Acceder a un pool global de talento, sin limitaciones geogr´ aficas. Reducir costos de oficinas y servicios. Aumentar la retenci´ on al ofrecer flexibilidad. Desaf´ ıos del trabajo remoto con Python. No todo es positivo. El trabajo remoto presenta desaf´ ıos que los equipos Python deben abordar: Comunicaci´ on as´ ıncrona: la falta de interacci´ on cara a cara puede llevar a malenten- didos. Se mitiga con documentaci´ on clara, comentarios en el c´ odigo, y herramientas de comunicaci´ on (Slack, Discord, Microsoft Teams). Aislamiento: los programadores pueden sentirse solos. Las reuniones virtuales informa- les, las pair programming sessions peri´ odicas y las retrospectivas ayudan. Zonas horarias: coordinar reuniones en tiempo real puede ser dif´ ıcil. Se establecen ho- rarios n´ ucleo (core hours) donde todos est´ an disponibles. Para la colaboraci´ on as´ ıncrona, se usan herramientas como GitHub issues, proyectos, y documentaci´ on compartida. Seguridad: el acceso remoto a sistemas internos debe ser seguro (VPN, SSH con llaves, autenticaci´ on de dos factores). Los secretos (API keys, contrase˜ nas) no deben subirse al repositorio; se usan variables de entorno o gestores de secretos. Mantenimiento de la cultura de equipo: la cultura de empresa se diluye sin interacciones informales. Actividades virtuales de team building y eventos presenciales espor´ adicos (retiros) ayudan. Herramientas Python para el trabajo remoto. JupyterHub: permite a equipos compartir notebooks en un servidor central. ´ Util para an´ alisis de datos colaborativo. Binder: convierte cualquier repositorio de GitHub con notebooks en un entorno ejecu- table en la nube. VS Code Live Share: permite edici´ on colaborativa en tiempo real de c´ odigo Python (y otros lenguajes). Streamlit Sharing (ahora Streamlit Community Cloud): despliega dashboards de Python con un clic y los comparte p´ ublicamente o con el equipo. Abraham Zamudio 117 PIT: Python Basico
  113. Sesion 2 GitHub Codespaces: entornos de desarrollo completos en la

    nube, preconfigurados con Python. Pytest y CI/CD: las pruebas automatizadas en cada push (GitHub Actions, GitLab CI) garantizan que el c´ odigo remoto no rompa la aplicaci´ on. Logging y monitorizaci´ on: bibliotecas como ‘structlog‘, ‘sentry-sdk‘ (para errores) y ‘prometheus-client‘ permiten monitorizar aplicaciones desplegadas remotamente. Econom´ ıa digital y Python. El trabajo remoto es una manifestaci´ on de la econom´ ıa digital, donde el valor se crea y distribuye a trav´ es de redes digitales. Python es un componente central de esta econom´ ıa por varias razones: Plataformas digitales: Python se usa en el backend de muchas plataformas que facilitan el trabajo remoto (por ejemplo, GitHub, GitLab, Slack, Zoom (partes), Dropbox). Comercio electr´ onico y fintech: las transacciones econ´ omicas en l´ ınea est´ an impul- sadas por Python en sistemas de pago, log´ ıstica y fraude. Econom´ ıa gig (freelance): plataformas como Upwork, Fiverr y Toptal conectan a programadores Python con clientes. Python es uno de los lenguajes m´ as demandados en estas plataformas. Educaci´ on online: MOOC y bootcamps que ense˜ nan Python generan ingresos y forman a la pr´ oxima generaci´ on de trabajadores remotos. El futuro del trabajo remoto en Python. La tendencia es clara: el trabajo remoto ha llegado para quedarse, aunque con modelos h´ ıbridos en algunas empresas. Python, por su naturaleza, seguir´ a siendo un lenguaje privilegiado para el trabajo remoto debido a su ecosistema de colaboraci´ on y despliegue. Los profesionales que dominen Python y tambi´ en las habilidades de comunicaci´ on remota (escritura clara, gesti´ on del tiempo, proactividad) estar´ an muy bien posicionados. Para los pa´ ıses en desarrollo, el trabajo remoto en Python representa una oportunidad de desarrollo econ´ omico sin precedentes. Un programador en una regi´ on con bajo costo de vida puede acceder a salarios globales, inyectando divisas y elevando el nivel de vida. Gobiernos y organizaciones est´ an empezando a reconocer esto, facilitando el acceso a internet de alta velocidad, educaci´ on tecnol´ ogica y servicios financieros para recibir pagos internacionales. En conclusi´ on, Python es el habilitador t´ ecnico del trabajo remoto en la econom´ ıa digital. Su facilidad de despliegue, su ecosistema de herramientas colaborativas y su ubicuidad en la industria lo convierten en la opci´ on natural para equipos distribuidos. El profesional que sabe Python no solo tiene acceso a un mercado laboral local, sino a todo el planeta. El trabajo remoto, combinado con Python, est´ a creando una fuerza laboral global m´ as resiliente, diversa y eficiente. Abraham Zamudio 118 PIT: Python Basico
  114. Cap´ ıtulo 11 Los desaf´ ıos de la sociedad programada

    11.1. Dependencia tecnol´ ogica La sociedad contempor´ anea ha alcanzado un nivel de dependencia del software y los sistemas computacionales que no tiene precedentes en la historia. Desde el suministro de energ´ ıa el´ ectrica hasta el abastecimiento de agua, pasando por las comunicaciones, el transporte, la banca, la salud y la educaci´ on, pr´ acticamente todos los sectores cr´ ıticos funcionan sobre plataformas digitales gobernadas por c´ odigo. Esta dependencia tecnol´ ogica, si bien ha tra´ ıdo enormes beneficios en eficiencia y conectividad, tambi´ en genera vulnerabilidades sist´ emicas que pueden desencadenar fallos catastr´ oficos. Python, como uno de los lenguajes m´ as utilizados en la infraestructura digital, est´ a presente en muchos de estos sistemas, aunque a menudo en capas de orquestaci´ on y an´ alisis m´ as que en el n´ ucleo de tiempo real. Comprender los riesgos de la dependencia tecnol´ ogica es esencial para dise˜ nar sociedades m´ as resilientes. Infraestructura cr´ ıtica basada en software. Los sistemas de control industrial (SCADA) que gestionan plantas el´ ectricas, refiner´ ıas, oleoductos y plantas de tratamiento de agua dependen cada vez m´ as de software conectado a redes. Aunque muchos de estos sistemas utilizan lenguajes como C++ o ladder logic, las capas de supervisi´ on, registro y an´ alisis suelen emplear Python. Por ejemplo, scripts en Python se utilizan para extraer datos de sensores, generar alarmas y comunicarse con sistemas corporativos. Un fallo en estos scripts (por ejemplo, un bucle infinito que consuma toda la CPU) podr´ ıa retrasar la detecci´ on de una condici´ on an´ omala. Peor a´ un, una actualizaci´ on mal dise˜ nada podr´ ıa detener el sistema de monitorizaci´ on. La dependencia se manifiesta tambi´ en en la cadena de suministro de software. La mayor´ ıa de las aplicaciones modernas dependen de cientos de bibliotecas de c´ odigo abierto (en Python, los paquetes PyPI). Una vulnerabilidad en una biblioteca ampliamente utilizada (como ‘log4j‘ en Java, pero en Python podr´ ıa ser ‘requests‘ o ‘numpy‘) puede propagarse a miles de proyectos. El incidente de ‘event-stream‘ en Node.js (2018) o el de ‘colors‘ (2022) muestran c´ omo un mantenedor malicioso o comprometido puede introducir c´ odigo da˜ nino. En Python, el ecosistema PyPI ha sufrido ataques de typosquatting (paquetes con nombres similares a 119
  115. Sesion 2 populares) y envenenamiento de dependencias. La dependencia ciega

    de estas bibliotecas sin auditor´ ıa crea un riesgo sist´ emico. Puntos ´ unicos de fallo (single points of failure). La centralizaci´ on de servicios en la nube (AWS, Azure, GCP) ha creado puntos ´ unicos de fallo a gran escala. Cuando un regi´ on de AWS se cae (como ocurri´ o en us-east-1 en 2021), miles de servicios basados en Python (desde Netflix hasta Slack) quedan inoperativos. La dependencia de servicios externos (APIs de pago, mapas, autenticaci´ on) implica que una interrupci´ on en un proveedor puede paralizar una cadena entera de valor. Por ejemplo, una aplicaci´ on Python que depende de la API de Stripe para procesar pagos no puede funcionar si Stripe tiene una ca´ ıda, incluso si el resto del c´ odigo es perfecto. Las fallos en cascada son otro riesgo. Un peque˜ no error en un servicio Python (por ejemplo, una fuga de memoria en un microservicio) puede hacer que ese servicio consuma toda la memoria del contenedor, sea reiniciado por Kubernetes, y si el reinicio es frecuente, puede saturar el plano de control o desencadenar reinicios en otros servicios que dependen de ´ el. En sistemas altamente acoplados, una falla menor puede amplificarse. P´ erdida de habilidades humanas. La dependencia tecnol´ ogica tambi´ en erosiona las habilidades humanas. Por ejemplo, la navegaci´ on GPS ha hecho que muchas personas pierdan la capacidad de orientarse con mapas f´ ısicos o con referencia al sol y las estrellas. En el ´ ambito del software, la dependencia de frameworks de alto nivel (como Django o FastAPI) puede hacer que los programadores olviden c´ omo funciona HTTP por debajo o c´ omo optimizar consultas SQL manualmente. Cuando ocurre una crisis (por ejemplo, un corte de internet que impide acceder a Stack Overflow o a la documentaci´ on en l´ ınea), muchos desarrolladores se quedan paralizados. La p´ erdida del conocimiento de bajo nivel (gesti´ on de memoria, algoritmos de bajo nivel, protocolos de red) crea una fragilidad oculta. Ejemplos hist´ oricos de fallos por dependencia. Corte de AWS S3 en 2017: un comando mal escrito por un administrador (no Python espec´ ıficamente) caus´ o la ca´ ıda de miles de sitios web y servicios. Muchas empresas que depend´ ıan exclusivamente de S3 para almacenar activos est´ aticos quedaron inaccesibles durante horas. Outage de Cloudflare en 2022: un cambio de configuraci´ on en el balanceador de carga provoc´ o una ca´ ıda global que afect´ o a millones de sitios. Cloudflare utiliza Python en algunas partes de su pila (por ejemplo, en herramientas de an´ alisis). Bug de la biblioteca ‘requests‘: una versi´ on antigua de ‘requests‘ ten´ ıa un problema con la verificaci´ on de certificados SSL que hac´ ıa que las conexiones fueran inseguras. Muchas aplicaciones que nunca actualizaron quedaron vulnerables. El caso de ‘numpy‘ y ‘pandas‘ con dependencias en C: aunque no son fallos catastr´ oficos, la cadena de dependencias de estas bibliotecas (que a su vez dependen de ‘libopenblas‘, ‘libgfortran‘, etc.) puede romperse al actualizar el sistema operativo, dejando inutilizable el entorno de datos. Abraham Zamudio 120 PIT: Python Basico
  116. Sesion 2 Estrategias de mitigaci´ on. Para reducir la dependencia

    tecnol´ ogica y aumentar la resi- liencia, las organizaciones y la sociedad pueden adoptar varias medidas: Redundancia y failover: no depender de un ´ unico proveedor de nube; implementar estrategias multi-cloud o h´ ıbridas (nube + on-premise). Para servicios cr´ ıticos, tener un plan de contingencia que funcione sin conexi´ on. Auditor´ ıa de dependencias: usar herramientas como ‘pip-audit‘, ‘safety‘ o ‘depen- dabot‘ para escanear vulnerabilidades en las bibliotecas Python. Mantener un archivo ‘requirements.txt‘ o ‘poetry.lock‘ con versiones exactas y actualizar regularmente. Copia de seguridad de documentaci´ on: descargar localmente la documentaci´ on de las bibliotecas clave y tener acceso a ella sin internet. Algunos equipos mantienen una instancia local de ReadTheDocs. Simulaci´ on de fallos (chaos engineering): probar deliberadamente la interrupci´ on de servicios dependientes (por ejemplo, usando ‘chaostoolkit‘ que tiene m´ odulos Python) para ver c´ omo reacciona el sistema. Formaci´ on en fundamentos: los programas de formaci´ on deben incluir no solo frameworks de alto nivel, sino tambi´ en conceptos de bajo nivel (sockets, gesti´ on de memoria, algoritmos). En Python, esto puede implicar estudiar c´ omo se implementan las listas, diccionarios, y el GIL. Dise˜ no para el apag´ on: pensar en c´ omo operar sin electricidad ni internet durante un tiempo limitado. Para sistemas cr´ ıticos (hospitales, torres de control a´ ereo), mantener sistemas anal´ ogicos de respaldo. Python y la resiliencia. El propio ecosistema Python ofrece herramientas para construir sistemas m´ as resilientes: ‘tenacity‘ (biblioteca para reintentos con backoff) permite que un servicio reintente conexiones fallidas antes de declarar una falla. ‘circuit-breaker‘ (patr´ on implementado en ‘pybreaker‘) evita llamadas repetidas a un servicio que est´ a claramente ca´ ıdo. ‘asyncio‘ con timeouts permite manejar operaciones lentas sin bloquear todo el sistema. ‘structlog‘ y ‘sentry-sdk‘ proporcionan trazabilidad para diagnosticar fallos. Sin embargo, la resiliencia no es solo t´ ecnica; es tambi´ en organizativa. Las empresas deben tener planes de continuidad de negocio que incluyan la posibilidad de que el c´ odigo Python falle inesperadamente. La dependencia tecnol´ ogica es un hecho, pero gestionarla de manera consciente es lo que separa a las organizaciones robustas de las fr´ agiles. Reflexi´ on final. La sociedad programada no es intr´ ınsecamente mala; la dependencia tecnol´ ogica ha tra´ ıdo avances enormes. Pero como cualquier herramienta poderosa, el software debe ser utilizado con responsabilidad y previsi´ on. La pregunta no es si podemos vivir sin tecnolog´ ıa (no podemos), sino c´ omo podemos dise˜ nar sistemas que toleren fallos, que preserven Abraham Zamudio 121 PIT: Python Basico
  117. Sesion 2 habilidades de respaldo y que no concentren el

    riesgo en puntos ´ unicos. Python, como lenguaje ubicuo, tiene la responsabilidad de promover pr´ acticas de desarrollo que consideren estos desaf´ ıos desde el inicio. 11.2. Seguridad inform´ atica y privacidad La ubicuidad del software en la vida cotidiana ha convertido la seguridad inform´ atica y la privacidad en preocupaciones centrales. Cada d´ ıa, millones de personas conf´ ıan datos sensibles (financieros, m´ edicos, de ubicaci´ on, comunicaciones personales) a aplicaciones y servicios escritos en Python (y otros lenguajes). Un fallo de seguridad puede exponer esta informaci´ on a actores maliciosos, con consecuencias que van desde el robo de identidad hasta el espionaje industrial o la manipulaci´ on electoral. Python, aunque no es intr´ ınsecamente inseguro, requiere que los desarrolladores adopten pr´ acticas rigurosas para evitar vulnerabilidades comunes. Esta secci´ on analiza las principales amenazas, las t´ ecnicas de ataque, y las medidas defensivas, con ´ enfasis en c´ omo escribir c´ odigo Python seguro y respetuoso de la privacidad. Vulnerabilidades comunes en aplicaciones Python. Al igual que otros lenguajes, Python es susceptible a una serie de vulnerabilidades si no se maneja con cuidado. Las m´ as frecuentes incluyen: Inyecci´ on de comandos (command injection): cuando un programa construye comandos del sistema operativo a partir de entradas del usuario sin sanitizar. En Python, funciones como ‘os.system()‘, ‘subprocess.Popen()‘ con ‘shell=True‘ son peligrosas. Ejemplo vulnerable: 1 import os 2 user_input = input("Introduce el nombre del archivo: ") 3 os.system("ls " + user_input) # Si user_input = "; rm -rf /", ejecuta comando malicioso 4 Inyecci´ on SQL: similar a la anterior, pero en consultas a bases de datos. Usar cadenas formateadas directamente es un error. La soluci´ on son consultas parametrizadas. Cross-Site Scripting (XSS): en aplicaciones web Python (Flask, Django), si se renderiza HTML sin escapar el contenido, un atacante puede inyectar scripts malicio- sos. Los frameworks modernos escapan autom´ aticamente, pero el desarrollador puede deshabilitarlo sin querer. Deserializaci´ on insegura: la funci´ on ‘pickle.loads()‘ puede ejecutar c´ odigo arbitrario durante la deserializaci´ on. Nunca se debe unpickle datos de fuentes no confiables. Alternativas: JSON, o usar ‘pickle‘ con firmas criptogr´ aficas. Fallo de autenticaci´ on y sesi´ on: almacenar contrase˜ nas en texto plano, usar tokens predecibles, o no implementar autenticaci´ on de dos factores. Fallo en la gesti´ on de permisos: dar a un usuario m´ as privilegios de los necesarios (principio de m´ ınimo privilegio). Por ejemplo, una API que permite eliminar registros Abraham Zamudio 122 PIT: Python Basico
  118. Sesion 2 de cualquier usuario en lugar de solo los

    propios. Exposici´ on de datos sensibles en logs o errores: imprimir contrase˜ nas, tokens o n´ umeros de tarjeta de cr´ edito en trazas de error. Los logs pueden ser accedidos por personal no autorizado. Path traversal: permitir que un usuario especifique rutas de archivos sin restricciones, pudiendo leer archivos del sistema (‘../../etc/passwd‘). Ataques a la cadena de suministro. El ecosistema PyPI, con m´ as de 400.000 paquetes, es un vector de ataque atractivo. Un atacante puede subir un paquete con nombre similar a uno popular (typosquatting), o comprometer la cuenta de un mantenedor y subir una versi´ on maliciosa. Por ejemplo, en 2021 se encontraron paquetes maliciosos que robaban variables de entorno (incluyendo claves AWS) y las enviaban a un servidor externo. La herramienta ‘pip-audit‘ y las verificaciones de integridad (hashes) ayudan, pero la responsabilidad ´ ultima recae en el desarrollador: solo incluir bibliotecas confiables y con un historial transparente. Privacidad: recolecci´ on de datos y consentimiento. El Reglamento General de Pro- tecci´ on de Datos (GDPR) en Europa y leyes similares en otros pa´ ıses (CCPA en California, LGPD en Brasil) imponen obligaciones estrictas sobre c´ omo se recogen, procesan y almacenan los datos personales. Las aplicaciones Python deben: Obtener consentimiento expl´ ıcito antes de recoger datos (por ejemplo, cookies de rastreo). Permitir a los usuarios acceder, rectificar y eliminar sus datos (derecho al olvido). Notificar brechas de seguridad en un plazo m´ aximo (72 horas en GDPR). Minimizar la recogida de datos: solo los estrictamente necesarios. Anonimizar o seudonimizar los datos siempre que sea posible. En la pr´ actica, los desarrolladores Python utilizan herramientas como ‘anon‘ (anonymization library) o implementan t´ ecnicas de privacidad diferencial (con ‘diffprivlib‘). Sin embargo, la anonimizaci´ on no es trivial: a menudo se puede reidentificar a individuos combinando m´ ultiples fuentes de datos (ataques de linkage). Por ello, la mejor pr´ actica es no recoger datos personales en primer lugar, a menos que sea absolutamente necesario. Seguridad en el c´ odigo Python: buenas pr´ acticas. Validaci´ on de entradas: nunca confiar en datos del usuario. Usar ‘validators‘ o expresiones regulares para restringir formatos. Uso de par´ ametros en lugar de concatenaci´ on: para SQL, usar ORM (SQLAlchemy) o cursor.execute("SELECT␣*␣FROM␣users␣WHERE␣id␣=␣?",␣(user_id,)). Aplicar el principio de m´ ınimo privilegio: ejecutar procesos con la menor cantidad de permisos posible (no como root). Usar contenedores Docker con usuarios no root. Abraham Zamudio 123 PIT: Python Basico
  119. Sesion 2 Cifrado de datos sensibles: en reposo (usar ‘cryptography‘

    o ‘PyNaCl‘) y en tr´ ansito (siempre TLS/SSL). No guardar claves de cifrado en el c´ odigo fuente; usar variables de entorno o servicios como AWS KMS, HashiCorp Vault. Almacenamiento de contrase˜ nas: nunca en texto plano. Usar funciones hash lentas con sal: ‘bcrypt‘, ‘argon2‘ o ‘scrypt‘. La biblioteca ‘passlib‘ facilita la integraci´ on. Protecci´ on contra CSRF: en formularios web, usar tokens CSRF (Django los incluye por defecto; Flask requiere ‘Flask-WTF‘). Cabeceras de seguridad HTTP: configurar cabeceras como ‘Content-Security- Policy‘, ‘X-Frame-Options‘, ‘X-Content-Type-Options‘, ‘Strict-Transport-Security‘. Los frameworks permiten configurarlas f´ acilmente. Actualizaciones regulares: mantener Python y las bibliotecas actualizadas para recibir parches de seguridad. Herramientas como ‘pip-review‘ o ‘dependabot‘ automatizan la detecci´ on. Pruebas de seguridad din´ amicas y est´ aticas. An´ alisis est´ atico: herramientas como ‘bandit‘ (espec´ ıfica para Python) escanean el c´ odigo en busca de patrones inseguros (ejecuci´ on de comandos, uso inseguro de pickle, etc.). ‘pylint‘ y ‘flake8‘ con plugins de seguridad ayudan. An´ alisis din´ amico: ejecutar la aplicaci´ on en un entorno de pruebas y lanzar ataques simulados. Herramientas como ‘OWASP ZAP‘ o ‘Burp Suite‘ pueden configurarse para aplicaciones web Python. Fuzzing: enviar entradas aleatorias o malformadas a la aplicaci´ on para descubrir fallos. ‘python-afl‘ o ‘hypothesis‘ pueden generar casos de prueba. Ejemplo de c´ odigo vulnerable vs seguro. Supongamos una funci´ on que descarga un archivo de una URL proporcionada por el usuario: 1 # VULNERABLE: path traversal e inyeccion de comandos 2 import requests 3 def descargar_archivo (url , nombre_destino ): 4 r = requests.get(url) 5 with open(nombre_destino , ’wb’) as f: 6 f.write(r.content) 7 8 # SEGURO: validar URL , sanitizar nombre de archivo 9 import requests 10 import re 11 from pathlib import Path 12 13 def descargar_archivo_seguro (url , nombre_destino ): 14 if not url.startswith ((’https ://’, ’http ://’)): 15 raise ValueError("URL invalida") 16 # Evitar path traversal 17 nombre_limpio = re.sub(r’[^a-zA -Z0 -9_.-]’, ’’, nombre_destino ) 18 if not nombre_limpio : Abraham Zamudio 124 PIT: Python Basico
  120. Sesion 2 19 raise ValueError("Nombre de archivo invalido") 20 ruta

    = Path(’/tmp/descargas ’) / nombre_limpio 21 ruta.parent.mkdir(exist_ok=True) 22 r = requests.get(url , timeout =10) 23 r. raise_for_status () 24 ruta.write_bytes(r.content) Privacidad y anonimizaci´ on con Python. Un caso pr´ actico: se tiene un dataset con nombres, direcciones y c´ odigos postales. Para publicarlo de forma an´ onima, se pueden aplicar t´ ecnicas: Generalizaci´ on: reemplazar edades exactas por rangos (20-30, 30-40). Enmascaramiento: mostrar solo los primeros d´ ıgitos del c´ odigo postal. Ruido diferencial: a˜ nadir peque˜ nas perturbaciones aleatorias a los valores num´ ericos. La biblioteca ‘pandas‘ permite estas transformaciones con facilidad. Sin embargo, se debe verificar que la anonimizaci´ on sea efectiva mediante ataques de reidentificaci´ on simulados. Desaf´ ıos emergentes. Con la inteligencia artificial y el machine learning, surgen nuevas amenazas a la privacidad: los modelos pueden memorizar ejemplos de entrenamiento, y un atacante puede extraer informaci´ on sensible (por ejemplo, si el modelo fue entrenado con registros m´ edicos). T´ ecnicas como el aprendizaje federado y la privacidad diferencial (implementadas en ‘TensorFlow Privacy‘) ayudan, pero no son triviales. Responsabilidad del desarrollador. La seguridad no es un a˜ nadido, sino un requisito desde el dise˜ no (¨ security by design¨ ). Los desarrolladores Python deben recibir formaci´ on en seguridad, realizar revisiones de c´ odigo (code reviews) con enfoque en seguridad, y mantener una mentalidad defensiva. La herramienta ‘safety‘ permite comprobar vulnerabilidades cono- cidas en las dependencias. Adem´ as, las organizaciones deber´ ıan tener un proceso de reporte de vulnerabilidades (bug bounty) y un plan de respuesta a incidentes. En conclusi´ on, la seguridad inform´ atica y la privacidad son desaf´ ıos continuos en la sociedad programada. Python ofrece un ecosistema rico para construir aplicaciones seguras, pero la res- ponsabilidad ´ ultima recae en el desarrollador. Las buenas pr´ acticas, las pruebas automatizadas y la concienciaci´ on sobre amenazas son la mejor defensa contra los riesgos. 11.3. Brecha digital y acceso al conocimiento A pesar de la proliferaci´ on de la tecnolog´ ıa digital, el acceso a ella sigue siendo profundamente desigual. La brecha digital no solo separa a quienes tienen conexi´ on a Internet de quienes no, sino que tambi´ en abarca diferencias en la calidad de la conexi´ on, la disponibilidad de dispositivos adecuados, las habilidades digitales y la capacidad para utilizar el software de manera productiva. Python, como herramienta de programaci´ on accesible, podr´ ıa ser un gran igualador, pero tambi´ en puede exacerbar las desigualdades si no se implementan pol´ ıticas Abraham Zamudio 125 PIT: Python Basico
  121. Sesion 2 inclusivas. Esta secci´ on analiza las dimensiones de

    la brecha digital, sus causas y consecuencias, y las iniciativas para cerrarla, con especial atenci´ on al papel de Python en la democratizaci´ on del conocimiento tecnol´ ogico. Dimensiones de la brecha digital. Los expertos suelen distinguir tres niveles de brecha digital: 1. Brecha de acceso: falta de infraestructura (electricidad, redes de banda ancha), dispositivos (computadoras, tel´ efonos inteligentes) y costos asequibles. Seg´ un la UIT (Uni´ on Internacional de Telecomunicaciones), alrededor de un tercio de la poblaci´ on mundial a´ un no tiene acceso a Internet, concentrado en regiones rurales de ´ Africa, Asia y Am´ erica Latina. 2. Brecha de habilidades: incluso con acceso f´ ısico, muchas personas carecen de las competencias digitales b´ asicas (manejo de sistemas operativos, b´ usqueda de informaci´ on, uso de ofim´ atica) o avanzadas (programaci´ on, an´ alisis de datos, seguridad inform´ atica). Esta brecha afecta desproporcionadamente a mayores, personas con baja educaci´ on formal, y mujeres en muchos pa´ ıses. 3. Brecha de uso: diferencia en c´ omo las personas utilizan la tecnolog´ ıa: mientras unos la emplean para crear contenido, aprender, teletrabajar y participar en la econom´ ıa digital, otros la usan solo para consumo pasivo (redes sociales, entretenimiento). Esta brecha se relaciona con la capacidad de aprovechar las oportunidades econ´ omicas de la digitalizaci´ on. Python como herramienta de inclusi´ on. Python tiene caracter´ ısticas que lo hacen id´ oneo para reducir la brecha digital: Costo cero: es software libre y de c´ odigo abierto; cualquier persona puede descargarlo, usarlo y distribuirlo sin pagar licencias. Bajos requisitos de hardware: Python se ejecuta en equipos modestos (Raspberry Pi, ordenadores viejos con Linux ligero). Incluso se puede usar en la nube gratuitamente (Google Colab, Replit) desde un navegador, sin necesidad de instalar nada. Curva de aprendizaje suave: su sintaxis legible reduce la frustraci´ on inicial, permi- tiendo que personas sin experiencia previa puedan escribir programas ´ utiles en pocas horas. Comunidad global de apoyo: existen grupos de usuarios en casi todos los pa´ ıses, y recursos traducidos a decenas de idiomas. Aplicaciones pr´ acticas: con Python se pueden automatizar tareas cotidianas, analizar datos de la comunidad, o crear peque˜ nas aplicaciones que resuelven problemas locales (por ejemplo, un sistema de control de inventario para una cooperativa agr´ ıcola). Sin embargo, el mero acceso a Python no es suficiente. Para que sea realmente inclusivo, se necesitan: Abraham Zamudio 126 PIT: Python Basico
  122. Sesion 2 Contenido educativo en idiomas locales: muchos tutoriales y

    documentaci´ on est´ an en ingl´ es. Existen esfuerzos como la documentaci´ on oficial traducida al espa˜ nol, franc´ es, japon´ es, etc., pero no cubren todos los idiomas. Curr´ ıculos contextualizados: ense˜ nar Python con ejemplos relevantes para el en- torno del estudiante (agricultura, salud, peque˜ na empresa) aumenta la motivaci´ on y la retenci´ on. Formaci´ on de formadores: capacitar a profesores locales en Python para que puedan multiplicar el conocimiento. Infraestructura de acceso comunitario: centros de c´ omputo p´ ublico, bibliotecas con computadoras, o programas de donaci´ on de equipos reacondicionados. Ejemplos de iniciativas para cerrar la brecha digital con Python. Raspberry Pi y Python: la Fundaci´ on Raspberry Pi ha distribuido millones de computadoras de bajo costo (35 USD) que vienen con Python preinstalado. Se utilizan en escuelas de pa´ ıses en desarrollo para ense˜ nar programaci´ on y computaci´ on b´ asica. One Laptop Per Child (OLPC): aunque ya no est´ a activo, su software inclu´ ıa Python y entornos de programaci´ on visual. Django Girls: talleres gratuitos de un d´ ıa para ense˜ nar a mujeres a construir su primer sitio web con Python y Django. Han llegado a cientos de ciudades en todo el mundo. PyLadies: cap´ ıtulos locales que ofrecen mentor´ ıa y recursos para mujeres interesadas en Python. Code for Africa: utiliza Python para construir herramientas c´ ıvicas (presupuestos abiertos, seguimiento de proyectos gubernamentales) y capacita a periodistas de datos. Programa “Python para todos” de la Universidad de Michigan: se ofrece gratis en Coursera y ha sido traducido a varios idiomas; incluye material descargable para zonas con conectividad limitada. Desaf´ ıos persistentes. A pesar de estos esfuerzos, la brecha digital no se reduce tan r´ apido como ser´ ıa deseable. Factores estructurales como la pobreza, la corrupci´ on en la asignaci´ on de fondos para infraestructura, y la falta de electricidad fiable en zonas rurales siguen siendo barreras. Adem´ as, la brecha de habilidades es m´ as dif´ ıcil de cerrar que la brecha de acceso: ense˜ nar programaci´ on requiere docentes calificados, un lujo en muchas regiones. La pandemia de COVID-19 evidenci´ o dram´ aticamente la brecha digital: estudiantes sin acceso a Internet o dispositivos no pudieron seguir la educaci´ on remota, aumentando la desigualdad educativa. Muchos gobiernos lanzaron programas de distribuci´ on de tablets o port´ atiles, pero a menudo sin contenido educativo de calidad ni formaci´ on para los docentes. Python apareci´ o en algunos curr´ ıculos, pero no de manera masiva. Abraham Zamudio 127 PIT: Python Basico
  123. Sesion 2 El riesgo de una brecha digital de segundo

    orden. A medida que la inteligencia artificial y la automatizaci´ on avanzan, surge una nueva brecha: la capacidad de interactuar con sistemas de IA (saber hacer prompts, entender sus limitaciones) y de desarrollar soluciones basadas en IA. Python es la puerta de entrada a estas tecnolog´ ıas. Quienes no aprendan Python quedar´ an relegados a ser consumidores pasivos de IA, mientras que quienes lo dominen podr´ an crear y controlar los sistemas. Esto podr´ ıa exacerbar la desigualdad econ´ omica. Pol´ ıticas recomendadas. Para abordar la brecha digital de manera integral, se requieren pol´ ıticas a varios niveles: Infraestructura universal: considerar el acceso a Internet como un servicio p´ ublico b´ asico, financiando redes comunitarias, Wi-Fi p´ ublico y subvenciones para hogares de bajos ingresos. Dispositivos asequibles: promover la fabricaci´ on local de equipos de bajo costo, o la reutilizaci´ on de equipos donados con sistemas operativos ligeros (Linux + Python). Alfabetizaci´ on digital obligatoria en la escuela: incluir Python en los curr´ ıculos de primaria y secundaria, no como una materia aislada, sino integrada con matem´ aticas, ciencias y proyectos interdisciplinarios. Formaci´ on continua para adultos: ofrecer cursos gratuitos de Python en centros comunitarios, bibliotecas y plataformas en l´ ınea, con certificaciones accesibles. Apoyo a la producci´ on de contenido local: financiar la traducci´ on y adaptaci´ on de recursos educativos de Python a lenguas ind´ ıgenas y regionales. Investigaci´ on sobre brecha digital: recopilar datos desagregados para identificar grupos vulnerables y evaluar el impacto de las intervenciones. Python y la educaci´ on inclusiva. La comunidad Python ha desarrollado herramientas espec´ ıficas para entornos con recursos limitados. Por ejemplo, ‘mu‘ es un editor de Python dise˜ nado para principiantes que funciona bien en Raspberry Pi y en ordenadores antiguos. ‘Jupyter Notebook‘ puede ejecutarse en el navegador sin necesidad de instalar nada mediante ‘JupyterLite‘ o ‘Colab‘. Adem´ as, los libros de texto gratuitos como .Automate the Boring Stuff with Python.est´ an disponibles en varios idiomas y formatos (PDF, HTML) para descarga offline. Sin embargo, la adopci´ on de estas herramientas en escuelas requiere tambi´ en formaci´ on de docentes. Programas como C ¸oding for Kids.o C ¸oderDojo¨ utilizan Python como lenguaje principal y proporcionan planes de lecciones listos para usar. Conclusi´ on. La brecha digital es un problema complejo que no se resolver´ a solo con tecnolog´ ıa, pero Python puede ser parte de la soluci´ on. Su naturaleza abierta, su ecosistema de aprendizaje y su comunidad global ofrecen una base s´ olida para construir puentes hacia la inclusi´ on digital. El verdadero desaf´ ıo es pol´ ıtico y social: asignar recursos, formar educadores y garantizar que las oportunidades lleguen a quienes m´ as las necesitan. Solo entonces la Abraham Zamudio 128 PIT: Python Basico
  124. Sesion 2 programaci´ on se convertir´ a en una verdadera

    herramienta de emancipaci´ on y no en un nuevo factor de exclusi´ on. 11.4. ´ Etica en el desarrollo de software A medida que el software se infiltra en todos los aspectos de la vida, las decisiones que toman los desarrolladores (a veces de forma inconsciente) tienen profundas implicaciones ´ eticas. Un algoritmo puede discriminar a minor´ ıas, una aplicaci´ on puede manipular el comportamiento de los usuarios, un sistema de vigilancia puede violar derechos fundamentales, un veh´ ıculo aut´ onomo puede tener que elegir entre dos v´ ıctimas en un accidente. Python, como lenguaje utilizado para implementar muchos de estos sistemas, no es intr´ ınsecamente ´ etico o no ´ etico, pero la forma en que se utiliza puede promover o perjudicar valores como la justicia, la transparencia, la rendici´ on de cuentas y el respeto a la autonom´ ıa humana. Esta secci´ on explora los dilemas ´ eticos m´ as relevantes en el desarrollo de software, con ejemplos concretos y propuestas para integrar la ´ etica en el ciclo de vida del software. Algoritmos sesgados y discriminaci´ on. Los sistemas de machine learning aprenden de datos hist´ oricos, que pueden contener sesgos humanos. Por ejemplo, un algoritmo de selecci´ on de personal entrenado con curr´ ıculums de los ´ ultimos 10 a˜ nos puede penalizar a mujeres o minor´ ıas si en esos a˜ nos hubo discriminaci´ on. En Python, bibliotecas como ‘scikit-learn‘ o ‘TensorFlow‘ no advierten sobre el sesgo; es responsabilidad del desarrollador detectarlo y mitigarlo. Un caso famoso es el sistema de predicci´ on de reincidencia COMPAS (utilizado en EE.UU.), que mostraba un sesgo racial (etiquetaba a afroamericanos como de alto riesgo de reincidencia con m´ as frecuencia que a blancos). Aunque COMPAS no estaba escrito en Python, es un ejemplo de las consecuencias de ignorar la ´ etica. Para detectar sesgos, se pueden usar bibliotecas como ‘fairlearn‘ (Microsoft) o ‘AIF360‘ (IBM), que ofrecen m´ etricas de equidad (por ejemplo, paridad demogr´ afica, igualdad de oportunidades) y algoritmos de mitigaci´ on (repesado, adversario). Por ejemplo: 1 from fairlearn.metrics import selection_rate 2 from sklearn.metrics import accuracy_score 3 # Calcular tasa de seleccion por grupo 4 sr_white = selection_rate (y_pred[y_white], y_true[y_white ]) 5 sr_black = selection_rate (y_pred[y_black], y_true[y_black ]) 6 if abs(sr_white - sr_black) > 0.05: 7 print("Posible sesgo en la tasa de seleccion") Sin embargo, la equidad es un concepto normativo: no existe una ´ unica definici´ on. El desarro- llador debe discutir con las partes interesadas qu´ e criterio de equidad es apropiado para el contexto. Transparencia y explicabilidad. Muchos modelos de IA (especialmente redes neuronales profundas) son “cajas negras”: incluso sus creadores no pueden explicar por qu´ e toman una decisi´ on determinada. Esto es problem´ atico en dominios como la salud (un m´ edico necesita justificar un diagn´ ostico) o las finanzas (un banco debe explicar por qu´ e rechaz´ o un pr´ estamo). Abraham Zamudio 129 PIT: Python Basico
  125. Sesion 2 Python ofrece bibliotecas como ‘SHAP‘ y ‘LIME‘ para

    generar explicaciones locales (por qu´ e se predijo un caso concreto). Pero la explicabilidad tiene un costo computacional y a veces reduce la precisi´ on. El desarrollador debe equilibrar rendimiento y transparencia seg´ un el contexto ´ etico. Privacidad y vigilancia. El software puede ser utilizado para vigilancia masiva, identi- ficaci´ on facial en espacios p´ ublicos, seguimiento de movimientos, an´ alisis de redes sociales, etc. Aunque estas aplicaciones pueden tener usos leg´ ıtimos (seguridad, prevenci´ on del delito), tambi´ en pueden vulnerar derechos humanos. El desarrollador de Python que contribuye a un sistema de reconocimiento facial debe preguntarse: ¿qui´ en tendr´ a acceso a los datos? ¿Se informa a las personas? ¿Existe un mecanismo de apelaci´ on? ¿El sistema tiene sesgos que afecten desproporcionadamente a ciertos grupos? La comunidad Python ha visto controversias: por ejemplo, cuando Amazon ofreci´ o su servicio de reconocimiento facial (Rekognition) a la polic´ ıa, los empleados protestaron; Microsoft retir´ o su base de datos de rostros (MS Celeb) por preocupaciones ´ eticas. El c´ odigo Python en s´ ı no es malo, pero su aplicaci´ on puede serlo. Manipulaci´ on del comportamiento. Muchas aplicaciones utilizan t´ ecnicas de persua- si´ on (dark patterns) para que los usuarios realicen acciones que no desean (comprar m´ as, compartir m´ as datos, mantenerse enganchados). Por ejemplo, notificaciones push frecuentes, desplazamiento infinito, eliminaci´ on de botones de cancelaci´ on. Los desarrolladores Python pueden implementar estas t´ ecnicas, pero deber´ ıan cuestionarse si respetan la autonom´ ıa del usuario. Los c´ odigos de conducta profesional (ACM, IEEE) instan a dise˜ nar sistemas que empoderen a los usuarios, no que los manipulen. Responsabilidad y rendici´ on de cuentas. Cuando un software falla y causa da˜ nos (un coche aut´ onomo atropella a un peat´ on, un sistema de diagn´ ostico m´ edico da un falso negativo), ¿qui´ en es responsable? ¿El desarrollador que escribi´ o el c´ odigo? ¿El equipo de pruebas? ¿La empresa? ¿El algoritmo mismo? La ley a´ un no est´ a clara. Los desarrolladores Python pueden implementar registros de auditor´ ıa (logging) y sistemas de trazabilidad para determinar qu´ e decisi´ on se tom´ o y por qu´ e. Pero la responsabilidad ´ ultima probablemente recaer´ a en los humanos que dise˜ naron, entrenaron y desplegaron el sistema. C´ odigo de ´ etica para desarrolladores. La Association for Computing Machinery (ACM) y el IEEE tienen c´ odigos de ´ etica que incluyen principios como: Contribuir al bienestar de la sociedad. Evitar da˜ nos. Ser honesto y digno de confianza. Ser justo y no discriminar. Respetar la privacidad. Mantener la confidencialidad. Abraham Zamudio 130 PIT: Python Basico
  126. Sesion 2 La Python Software Foundation (PSF) tiene un c´

    odigo de conducta para su comunidad, pero no un c´ odigo de ´ etica espec´ ıfico para el uso del lenguaje. Sin embargo, los desarrolladores Python pueden adoptar los principios anteriores. Integraci´ on de la ´ etica en el ciclo de desarrollo. Para que la ´ etica no sea una reflexi´ on tard´ ıa, se propone: An´ alisis de impacto ´ etico antes de empezar a codificar: identificar las partes intere- sadas, los valores en juego, los posibles riesgos. Pruebas de sesgo y equidad como parte de la integraci´ on continua (CI). Incluir m´ etricas de equidad en los informes de calidad. Documentaci´ on de supuestos y limitaciones: por ejemplo, en un modelo de ML, especificar para qu´ e poblaciones es v´ alido y cu´ al es la precisi´ on esperada por subgrupo. Canales de denuncia para que los empleados puedan reportar usos no ´ eticos del software sin represalias. Comit´ es de ´ etica en las organizaciones, que revisen proyectos sensibles (como vigilancia, salud, cr´ edito) y tengan poder de veto. Ejemplo de caso pr´ actico. Una empresa desarrolla una aplicaci´ on Python que analiza las publicaciones en redes sociales de los candidatos a un puesto de trabajo para predecir su estabilidad emocional. ¿Es ´ etico? Posibles problemas: privacidad (los candidatos no han dado consentimiento), validez (la correlaci´ on entre publicaciones y rendimiento laboral es d´ ebil), discriminaci´ on (puede penalizar a quienes expresan emociones negativas en momentos dif´ ıciles). Un desarrollador ´ etico deber´ ıa rechazar implementar esta funcionalidad o al menos solicitar una revisi´ on ´ etica. El papel de la educaci´ on. La mayor´ ıa de los curr´ ıculos de programaci´ on (incluyendo los de Python) se centran en aspectos t´ ecnicos, ignorando la ´ etica. Es necesario incorporar m´ odulos de ´ etica del software, con estudios de caso, dilemas morales y t´ ecnicas de an´ alisis. Tambi´ en se debe ense˜ nar a los estudiantes a reconocer conflictos de inter´ es y a defender sus principios en el entorno laboral. Conclusi´ on. Python es una herramienta poderosa que puede usarse para el bien o para el mal. Los desarrolladores que escriben c´ odigo Python tienen la responsabilidad de considerar las consecuencias ´ eticas de su trabajo. No se trata de evitar todo riesgo (eso ser´ ıa paralizante), sino de hacer expl´ ıcitos los valores, consultar a las partes afectadas y adoptar medidas de mitigaci´ on cuando sea posible. La ´ etica no es un lujo, sino una parte esencial de la ingenier´ ıa de software profesional en la sociedad programada. Al final, el c´ odigo no es neutral: refleja las decisiones humanas que lo crearon. Abraham Zamudio 131 PIT: Python Basico
  127. Cap´ ıtulo 12 El futuro de Python y la programaci´

    on 12.1. Automatizaci´ on e inteligencia artificial avanzada El futuro de la programaci´ on est´ a indisolublemente ligado a la automatizaci´ on inteligente y a la inteligencia artificial avanzada. Python, que ya es el lenguaje dominante en IA, evolucionar´ a para integrar a´ un m´ as profundamente capacidades de razonamiento automatizado, generaci´ on de c´ odigo y sistemas aut´ onomos. En esta secci´ on exploramos c´ omo la IA est´ a cambiando la forma de programar, el papel de Python en la creaci´ on de agentes inteligentes y las implicaciones para los desarrolladores. Programaci´ on aumentada por IA. Las herramientas de generaci´ on de c´ odigo basadas en grandes modelos de lenguaje (LLMs), como GitHub Copilot, Amazon CodeWhisperer y Google’s Codey, ya est´ an transformando la productividad de los desarrolladores. Estas herramientas, entrenadas en enormes corpus de c´ odigo Python (entre otros lenguajes), pueden autocompletar funciones, generar documentaci´ on, sugerir refactorizaciones e incluso escribir pruebas unitarias. En el futuro, esperamos que la colaboraci´ on entre humano e IA sea a´ un m´ as estrecha: el programador expresar´ a la intenci´ on en lenguaje natural o mediante especificaciones de alto nivel, y la IA generar´ a el c´ odigo Python correspondiente. Python es especialmente adecuado para esto porque su sintaxis limpia y su tipado din´ amico (aunque con anotaciones opcionales) facilitan la generaci´ on por parte de modelos. Sin embargo, la generaci´ on autom´ atica de c´ odigo plantea desaf´ ıos en t´ erminos de correcci´ on, seguridad y comprensi´ on. Los modelos pueden producir c´ odigo que parece correcto pero contiene bugs sutiles o vulnerabilidades. Por ello, se necesitar´ an t´ ecnicas de verificaci´ on autom´ atica (por ejemplo, generaci´ on de tests, an´ alisis est´ atico integrado) que tambi´ en podr´ ıan ser impulsadas por IA. Python se beneficiar´ a de herramientas como ‘pytest‘ combinadas con IA para generar casos de prueba que cubran todos los caminos. Agentes aut´ onomos y orquestaci´ on. La automatizaci´ on no se limitar´ a a l´ ıneas de c´ odigo sueltas, sino a sistemas completos de agentes aut´ onomos. Frameworks como ‘LangChain‘, ‘AutoGPT‘ y ‘BabyAGI‘ (muchos escritos en Python) permiten crear agentes que planifican, 133
  128. Sesion 2 ejecutan acciones, observan resultados y ajustan su comportamiento.

    Estos agentes pueden utilizar herramientas (navegador, calculadora, APIs) y pueden escribir y ejecutar c´ odigo Python sobre la marcha. En el futuro, los desarrolladores construir´ an flujos de trabajo donde m´ ultiples agentes colaboran, cada uno especializado en una tarea (por ejemplo, un agente que escribe c´ odigo, otro que lo revisa, otro que lo despliega). Python ser´ a el pegamento que orquesta a estos agentes, aprovechando su ecosistema de bibliotecas para comunicarse (mensajer´ ıa, colas) y para ejecutar c´ odigo de forma segura en entornos aislados (sandbox). Un caso de uso avanzado: un agente aut´ onomo recibe una petici´ on en lenguaje natural: “Optimiza el rendimiento de este script Python que procesa im´ agenes”. El agente puede ejecutar el script, perfilarlo con ‘cProfile‘, identificar cuellos de botella, buscar soluciones en su base de conocimiento (o en la web), generar c´ odigo optimizado (quiz´ as usando NumPy o Cython), probarlo y entregar la soluci´ on. Todo ello sin intervenci´ on humana. Este escenario ya es posible de forma rudimentaria, y se volver´ a habitual en los pr´ oximos a˜ nos. Automatizaci´ on de pruebas y despliegue. La integraci´ on continua y el despliegue continuo (CI/CD) ser´ an cada vez m´ as inteligentes. Los pipelines escritos en Python (con herramientas como ‘GitHub Actions‘, ‘GitLab CI‘, ‘Jenkins‘ con scripts Python) podr´ an analizar el impacto de los cambios, predecir la probabilidad de fallos (usando ML sobre datos hist´ oricos) y decidir autom´ aticamente si desplegar o no. Tambi´ en podr´ an generar autom´ aticamente entornos de prueba aislados, ejecutar pruebas de caos (chaos engineering) y revertir despliegues problem´ aticos. Python, con bibliotecas como ‘dask‘ para computaci´ on distribuida y ‘mlflow‘ para gestionar modelos, ser´ a central en estos sistemas. Inteligencia artificial explicable y depuraci´ on autom´ atica. A medida que los sistemas de IA se integran en el proceso de desarrollo, la necesidad de entender por qu´ e la IA tom´ o cierta decisi´ on ser´ a crucial. Python cuenta con bibliotecas de explicabilidad (‘SHAP‘, ‘LIME‘, ‘captum‘) que se integrar´ an en los IDEs para mostrar, por ejemplo, por qu´ e el autocompletado sugiri´ o una determinada funci´ on. Tambi´ en surgir´ an depuradores autom´ aticos que, ante un fallo, utilizan t´ ecnicas de inferencia (como la b´ usqueda de contraejemplos o la s´ ıntesis de programas) para localizar y corregir el error. Python, al ser din´ amico, permite la instrumentaci´ on en tiempo de ejecuci´ on para recopilar trazas que alimentan estos sistemas. El futuro del propio Python: Mojo y otros. Uno de los desarrollos m´ as prometedores es el lenguaje **Mojo**, creado por Chris Lattner (creador de Swift, LLVM). Mojo es un superconjunto de Python que ofrece rendimiento de C/C++ mediante compilaci´ on avanzada, tipado est´ atico opcional, y acceso de bajo nivel a memoria y SIMD. Mojo es compatible con la sintaxis de Python (se puede escribir ‘print(”Hola”)‘ y funciona) pero a˜ nade caracter´ ısticas como ‘fn‘ para funciones de alto rendimiento, ‘struct‘ para tipos similares a C, y la capacidad de escribir kernels para GPUs. Mojo podr´ ıa eventualmente reemplazar a Python en tareas computacionalmente intensivas (como entrenamiento de redes neuronales) mientras mantiene la familiaridad. Sin embargo, la comunidad Python es enorme y Mojo a´ un es joven; la transici´ on, si ocurre, llevar´ a a˜ nos. Otra evoluci´ on es **Python JIT**: se est´ an explorando compiladores just-in-time para Abraham Zamudio 134 PIT: Python Basico
  129. Sesion 2 CPython, como ‘PyPy‘ (ya existente) o ‘Pyston‘, y

    optimizaciones dentro de CPython 3.11+ que mejoran el rendimiento sin romper retrocompatibilidad. El rendimiento de Python seguir´ a mejorando, reduciendo la necesidad de recurrir a C. Automatizaci´ on de la propia evoluci´ on del lenguaje. En un futuro lejano, podr´ ıamos ver lenguajes que se auto-mejoran: un sistema Python que analiza sus propias implementacio- nes, detecta ineficiencias o vulnerabilidades y propone parches al equipo de desarrollo central. Aunque esto roza la ciencia ficci´ on, ya existen herramientas autom´ aticas de refactorizaci´ on (como ‘rope‘, ‘black‘ para formato) y de detecci´ on de bugs (‘pylint‘, ‘bandit‘). La integraci´ on de IA podr´ ıa llevar estas herramientas a un nivel superior. Impacto en los roles profesionales. La automatizaci´ on avanzada reducir´ a la necesidad de programadores que realizan tareas repetitivas y predecibles, pero aumentar´ a la demanda de profesionales capaces de definir los objetivos, supervisar los agentes de IA, validar el c´ odigo generado, y abordar problemas complejos que requieren creatividad y juicio ´ etico. Los programadores Python deber´ an especializarse en orquestaci´ on de IA, en integraci´ on de sistemas, y en dise˜ no de prompts eficaces. Tambi´ en surgir´ a la figura del “ingeniero de agentes” (agent engineer) que construye y entrena a los asistentes aut´ onomos. Conclusi´ on. La automatizaci´ on y la IA avanzada no har´ an obsoleto a Python, sino que lo potenciar´ an. Python ser´ a el lenguaje en el que se escribir´ an los orquestadores de agentes inteligentes, las herramientas de generaci´ on de c´ odigo y los sistemas de verificaci´ on autom´ atica. Los desarrolladores que dominen Python y entiendan las capacidades y limitaciones de la IA estar´ an en una posici´ on privilegiada para liderar la pr´ oxima revoluci´ on tecnol´ ogica. 12.2. Programaci´ on para no especialistas Una de las tendencias m´ as significativas en la evoluci´ on de la programaci´ on es la creciente simplificaci´ on y accesibilidad para personas sin formaci´ on t´ ecnica. Python ya ha dado grandes pasos en esta direcci´ on, pero el futuro promete entornos a´ un m´ as amigables, lenguajes de dominio espec´ ıfico (DSL) basados en Python, y herramientas de programaci´ on visual que generan c´ odigo Python subyacente. La meta es permitir que los expertos en dominios espec´ ıficos (m´ edicos, abogados, contables, artistas) puedan crear software personalizado sin necesidad de convertirse en desarrolladores profesionales. Entornos de programaci´ on de alto nivel. Actualmente, herramientas como ‘Jupyter Notebook‘ y ‘Google Colab‘ permiten a los cient´ ıficos (de datos, bi´ ologos, f´ ısicos) escribir c´ odigo Python mezclado con explicaciones. El futuro ver´ a entornos a´ un m´ as integrados, donde la ayuda contextual, la generaci´ on autom´ atica de c´ odigo y la correcci´ on de errores est´ en potenciadas por IA. Por ejemplo, un analista financiero podr´ ıa escribir en un notebook: “carga los datos de ventas del ´ ultimo trimestre y calcula el crecimiento intermensual”. La IA traducir´ ıa eso a Python (pd.read_csv, groupby, pct_change), lo ejecutar´ ıa y mostrar´ ıa el resultado, todo ello sin que el analista tenga que conocer la sintaxis exacta. Abraham Zamudio 135 PIT: Python Basico
  130. Sesion 2 Adem´ as, se popularizar´ an los **asistentes de

    programaci´ on por voz** y por lenguaje natural. Integraciones con asistentes virtuales permitir´ an decir “crea una funci´ on en Python que ordene esta lista de diccionarios por el campo ’fecha’” y el c´ odigo se generar´ a autom´ aticamente. Python, por su legibilidad, es ideal como objetivo de estos sistemas. Lenguajes de dominio espec´ ıfico (DSL) sobre Python. En lugar de aprender Python gen´ erico, los usuarios pueden aprender un subconjunto o una sintaxis especializada para su campo. Por ejemplo, ‘PyMC‘ permite especificar modelos probabil´ ısticos con una sintaxis casi matem´ atica; ‘SymPy‘ permite manipulaci´ on simb´ olica como en matem´ aticas; ‘Pandas‘ ya es un DSL para manipulaci´ on de datos. En el futuro, veremos DSL a´ un m´ as declarativos: en lugar de bucles, el usuario escribir´ a “para cada cliente, si el saldo es negativo, enviar alerta”. El sistema subyacente (en Python) optimizar´ a la ejecuci´ on. Otra tendencia son los **frameworks de bajo c´ odigo** (low-code) que generan aplicaciones completas a partir de modelos visuales. Plataformas como ‘Streamlit‘ y ‘Gradio‘ ya permiten crear dashboards interactivos con muy pocas l´ ıneas. El futuro a˜ nadir´ a componentes visuales drag-and-drop que se traducen a c´ odigo Python, de modo que el usuario puede alternar entre la vista visual y el c´ odigo. Educaci´ on programaci´ on para todos. En el futuro, la programaci´ on ser´ a una materia obligatoria desde la escuela primaria, pero no como un fin en s´ ı mismo, sino como una herramienta transversal. Python ser´ a el lenguaje vehicular. Los ni˜ nos aprender´ an a automatizar tareas matem´ aticas, a crear peque˜ nos juegos y a analizar datos de experimentos cient´ ıficos. La progresi´ on ser´ a gradual: primero con bloques visuales (Scratch), luego con Python textual pero con entornos muy guiados (como ‘Mu‘ o ‘Thonny‘), y finalmente con proyectos aut´ onomos. La formaci´ on de docentes ser´ a clave; se espera que los futuros profesores tengan competencias b´ asicas en Python. Democratizaci´ on de la anal´ ıtica de datos. El an´ alisis de datos se convertir´ a en una com- petencia universal, similar al uso de hojas de c´ alculo hoy. Python con ‘pandas‘ y ‘Seaborn‘ ser´ a la herramienta est´ andar, pero con capas de abstracci´ on que oculten la complejidad. Por ejemplo, en lugar de escribir df.groupby(’categoria’)[’ventas’].mean().plot(kind=’bar’), el usuario podr´ ıa usar una funci´ on plot_bars(df,␣x=’categoria’,␣y=’ventas’,␣agg=’mean’). Bibliotecas como ‘Plotly Express‘ ya siguen este camino. La inteligencia artificial sugerir´ a autom´ aticamente la mejor visualizaci´ on seg´ un los datos. Programaci´ on para el ciudadano. Aplicaciones c´ ıvicas: un ciudadano podr´ ıa programar un script para consultar datos abiertos del gobierno (por ejemplo, evoluci´ on del gasto en salud) y generar un informe. Las herramientas de programaci´ on para no especialistas deber´ an ser seguras (sandbox) y f´ aciles de compartir. Python, con ‘Pyodide‘ (Python en WebAssembly), permite ejecutar c´ odigo Python directamente en el navegador sin servidor, facilitando la distribuci´ on de programas interactivos. Desaf´ ıos. La programaci´ on para no especialistas no est´ a exenta de riesgos. El c´ odigo generado autom´ aticamente puede contener errores que el usuario no est´ a capacitado para Abraham Zamudio 136 PIT: Python Basico
  131. Sesion 2 detectar. La dependencia de asistentes de IA puede

    atrofiar la comprensi´ on fundamental. Adem´ as, existe el peligro de que los usuarios malintencionados utilicen estas facilidades para crear malware o realizar actividades da˜ ninas. Por ello, los entornos deber´ an incluir sandboxing, limitaciones de recursos y revisiones autom´ aticas de seguridad. Conclusi´ on. La tendencia hacia la programaci´ on para no especialistas es imparable. Python, por su dise˜ no limpio y su ecosistema, liderar´ a este movimiento. En el futuro, la programaci´ on ser´ a una herramienta cotidiana al alcance de millones de personas, no solo de una ´ elite t´ ecnica. Esto transformar´ a la educaci´ on, el trabajo y la participaci´ on ciudadana, empoderando a los individuos para resolver sus propios problemas computacionales. 12.3. Integraci´ on con rob´ otica e Internet de las Cosas La cuarta revoluci´ on industrial, impulsada por la rob´ otica y el Internet de las Cosas (IoT), requiere lenguajes de programaci´ on que sean a la vez eficientes y f´ aciles de usar. Python est´ a ganando terreno en este dominio gracias a versiones ligeras (MicroPython, CircuitPython) y a bibliotecas de control y comunicaci´ on. El futuro ver´ a una integraci´ on a´ un m´ as profunda, donde Python ser´ a el lenguaje de orquestaci´ on de enjambres de robots y de sistemas ciberf´ ısicos complejos. MicroPython y CircuitPython. Estas implementaciones de Python est´ an optimizadas para microcontroladores con recursos limitados (RAM medida en kilobytes, almacenamiento en cientos de kilobytes). Permiten programar dispositivos como el ESP8266, ESP32, Raspberry Pi Pico, y placas Adafruit. Un futuro previsible es que MicroPython se convierta en el firmware est´ andar para muchos dispositivos IoT, reemplazando a C/C++ en tareas de nivel medio. La raz´ on es la productividad: un prototipo que en C tomar´ ıa semanas se puede desarrollar en horas con MicroPython. Adem´ as, la sintaxis familiar permite que los makers y aficionados (no necesariamente ingenieros electr´ onicos) puedan crear sus propios dispositivos conectados. Ejemplo de c´ odigo MicroPython para leer un sensor de temperatura y enviarlo por MQTT: 1 import machine 2 import onewire , ds18x20 3 import time 4 from umqtt.simple import MQTTClient 5 6 ds_pin = machine.Pin (4) 7 ds_sensor = ds18x20.DS18X20(onewire.OneWire(ds_pin)) 8 roms = ds_sensor.scan () 9 client = MQTTClient("device123", "mqtt.broker.com") 10 client.connect () 11 12 while True: 13 ds_sensor.convert_temp () 14 time.sleep_ms (750) 15 for rom in roms: 16 temp = ds_sensor.read_temp(rom) 17 client.publish(b"sensors/temp", str(temp).encode ()) Abraham Zamudio 137 PIT: Python Basico
  132. Sesion 2 18 time.sleep (60) Rob´ otica educativa y de

    servicios. Python se est´ a convirtiendo en el lenguaje est´ andar en plataformas rob´ oticas como ROS (Robot Operating System). ROS2 tiene soporte nativo para Python y permite construir desde robots de laboratorio hasta drones aut´ onomos. En el futuro, la rob´ otica ser´ a m´ as accesible: kits de rob´ otica para ni˜ nos incluir´ an Python como lenguaje de programaci´ on, con bibliotecas de alto nivel para control de motores, sensores de distancia y visi´ on por computadora (OpenCV). La rob´ otica de servicios (aspiradoras, cortac´ espedes, asistentes de almac´ en) tambi´ en ser´ a programable en Python, permitiendo a los usuarios personalizar comportamientos. Orquestaci´ on de enjambres. Cuando se tienen decenas o cientos de dispositivos IoT (sensores, actuadores) o robots colaborativos, se necesita un lenguaje de orquestaci´ on que coordine sus acciones. Python, con su facilidad para manejar hilos, asincron´ ıa (asyncio) y comunicaci´ on distribuida (MQTT, ZeroMQ, gRPC), es ideal para este rol. Un sistema central escrito en Python puede enviar comandos a cada nodo, recopilar datos y tomar decisiones en tiempo real. Por ejemplo, un enjambre de drones agr´ ıcolas: un script Python decide qu´ e ´ areas requieren riego, asigna drones, calcula rutas optimizadas y monitorea la ejecuci´ on. Edge computing y Python. La computaci´ on en el borde (edge computing) procesa datos cerca de donde se generan, reduciendo latencia y ancho de banda. Python, con sus capacidades de ML (TensorFlow Lite Micro) puede ejecutar modelos de inferencia en dispositivos de gama baja (por ejemplo, una c´ amara inteligente que detecta personas sin enviar video a la nube). El futuro ver´ a un aumento de dispositivos con aceleradores de hardware (TPU, GPU) para ejecutar Python eficientemente. Frameworks como ‘TensorFlow Lite‘ ya permiten convertir modelos entrenados en Python a formatos optimizados para microcontroladores. Desaf´ ıos. Python en IoT y rob´ otica enfrenta limitaciones de memoria y velocidad. Aunque MicroPython mejora, todav´ ıa no es adecuado para tareas de tiempo real estricto (menos de 1 ms). Para esos casos, se necesitar´ a una combinaci´ on de Python para la l´ ogica de alto nivel y C/C++ para los controladores de tiempo real. Adem´ as, la seguridad es cr´ ıtica: un dispositivo IoT comprometido puede ser usado para ataques DDoS o para acceder a redes dom´ esticas. Python debe incorporar mecanismos de actualizaci´ on segura (firmware over-the-air) y cifrado de comunicaciones. Conclusi´ on. La integraci´ on de Python con rob´ otica e IoT democratizar´ a la creaci´ on de sistemas ciberf´ ısicos. Desde aficionados hasta grandes industrias, Python permitir´ a prototipar r´ apidamente y desplegar soluciones inteligentes. La combinaci´ on de MicroPython en el borde y Python en la nube proporcionar´ a una pila completa de desarrollo para la cuarta revoluci´ on industrial. Abraham Zamudio 138 PIT: Python Basico
  133. Sesion 2 12.4. Python en la educaci´ on del futuro

    La educaci´ on est´ a experimentando una transformaci´ on digital que se acelerar´ a en las pr´ oximas d´ ecadas. Python jugar´ a un papel central en la alfabetizaci´ on computacional de las nuevas generaciones, no solo como un lenguaje de programaci´ on, sino como una herramienta para el pensamiento cr´ ıtico, la resoluci´ on de problemas y la creatividad. En esta secci´ on exploramos c´ omo se ense˜ nar´ a Python en el futuro, qu´ e cambios curriculares se esperan y c´ omo la tecnolog´ ıa educativa potenciar´ a el aprendizaje. Python como primera lengua en todos los niveles. Actualmente, muchos colegios introducen la programaci´ on con Scratch (bloques) y luego migran a Python. En el futuro, Python podr´ ıa ense˜ narse desde los 10 a˜ nos, con entornos visuales que permitan alternar entre bloques y texto. La ventaja de Python es que, incluso en sus formas m´ as simples, se pueden crear programas interesantes (juegos con ‘pygame‘, dibujos con ‘turtle‘). A los 14-16 a˜ nos, los estudiantes manejar´ an bibliotecas como ‘pandas‘ para analizar datos reales (por ejemplo, cambio clim´ atico) y ‘matplotlib‘ para visualizar. A nivel universitario, Python ser´ a la herramienta com´ un en todas las carreras, desde humanidades hasta ingenier´ ıa. Aprendizaje adaptativo y tutor´ ıa inteligente. Las plataformas de aprendizaje basadas en IA podr´ an personalizar la ense˜ nanza de Python para cada estudiante. Un sistema de tutor´ ıa inteligente (ITS) evaluar´ a las fortalezas y debilidades del alumno, y generar´ a ejercicios adaptados. Por ejemplo, si un estudiante tiene dificultades con los bucles ‘while‘, el sistema le presentar´ a m´ as ejercicios de ese tipo, con pistas interactivas. Adem´ as, la retroalimentaci´ on ser´ a inmediata y detallada: no solo “error”, sino “parece que olvidaste incrementar el contador, lo que causa un bucle infinito”. Python, por su naturaleza interpretada, facilita la ejecuci´ on de c´ odigo en el navegador y la recopilaci´ on de m´ etricas de aprendizaje. Evaluaci´ on autom´ atica y gamificaci´ on. Herramientas como ‘nbgrader‘ (para Jupyter) permiten crear tareas calificables autom´ aticamente, incluyendo pruebas unitarias, an´ alisis de estilo y detecci´ on de plagio. En el futuro, la evaluaci´ on ser´ a m´ as hol´ ıstica: se medir´ a no solo la correcci´ on, sino la eficiencia, la legibilidad y la creatividad. La gamificaci´ on (puntos, insignias, tablas de clasificaci´ on) motivar´ a a los estudiantes a superar desaf´ ıos de programaci´ on. Plataformas como ‘CheckiO‘ y ‘CodeCombat‘ ya usan Python; en el futuro estar´ an integradas en el curr´ ıculo escolar. Ense˜ nanza de Python con proyectos interdisciplinarios. En lugar de ense˜ nar Python de forma abstracta, los proyectos se conectar´ an con otras materias. Por ejemplo, en clase de biolog´ ıa, los estudiantes usar´ an Python para modelar el crecimiento de una poblaci´ on (ecuaciones log´ ısticas); en historia, analizar´ an textos de la antig¨ uedad con procesamiento de lenguaje natural; en arte, generar´ an patrones fractales con turtle. Esto requiere que los docentes de otras disciplinas tambi´ en est´ en familiarizados con Python, lo que llevar´ a a programas de formaci´ on continua. Python ser´ a el puente entre la computaci´ on y el resto del conocimiento. Abraham Zamudio 139 PIT: Python Basico
  134. Sesion 2 Entornos de desarrollo colaborativo y social. El futuro

    del aprendizaje de Python ser´ a social y colaborativo. Plataformas como ‘Replit‘ y ‘Google Colab‘ ya permiten edici´ on colabo- rativa en tiempo real. Se a˜ nadir´ an funciones de comentarios en l´ ınea, chat integrado y control de versiones simplificado. Los estudiantes podr´ an compartir sus proyectos f´ acilmente con compa˜ neros y recibir retroalimentaci´ on. Los docentes podr´ an monitorizar el progreso de toda la clase en un tablero, identificar estudiantes con dificultades y ofrecer ayuda personalizada. Inclusi´ on y diversidad. La educaci´ on del futuro debe garantizar que Python sea accesible para estudiantes con discapacidades. Por ejemplo, entornos de programaci´ on con lectores de pantalla compatibles, modos de alto contraste, y entrada por voz. Tambi´ en se necesitan materiales en lenguas ind´ ıgenas y adaptaciones culturales. La comunidad Python ya tiene iniciativas como “PyLadies“ y “Django Girls“, que deber´ ıan expandirse a todas las regiones. La equidad de g´ enero tambi´ en es crucial: se debe combatir los estereotipos y fomentar la participaci´ on femenina en programaci´ on. Formaci´ on de docentes. El factor m´ as cr´ ıtico para el ´ exito de Python en educaci´ on es la preparaci´ on de los docentes. En el futuro, los grados de magisterio incluir´ an competencias digitales avanzadas, incluyendo programaci´ on en Python. Se ofrecer´ an cursos de actualizaci´ on continua y comunidades de pr´ actica. Los docentes no necesitar´ an ser programadores expertos, pero s´ ı entender los conceptos fundamentales y poder guiar a los estudiantes en proyectos. Python como herramienta de evaluaci´ on del pensamiento computacional. El pensamiento computacional (descomposici´ on, abstracci´ on, algoritmos) se evaluar´ a mediante problemas de Python. Se est´ an desarrollando r´ ubricas estandarizadas para medir estas habilidades. En el futuro, las pruebas estandarizadas (como PISA) podr´ ıan incluir un m´ odulo de programaci´ on en Python. Esto incentivar´ a a los sistemas educativos a invertir en infraestructura y formaci´ on. Conclusi´ on. Python ser´ a el veh´ ıculo de la alfabetizaci´ on computacional en la educaci´ on del futuro. No se tratar´ a de formar programadores, sino de ciudadanos capaces de entender y utilizar la tecnolog´ ıa de forma cr´ ıtica y creativa. La integraci´ on de IA en el aprendizaje, los proyectos interdisciplinarios y la formaci´ on docente son las palancas para lograr este objetivo. Python, por su simplicidad y potencia, es la elecci´ on natural. 12.5. Tendencias emergentes en el desarrollo de softwa- re El desarrollo de software est´ a en constante evoluci´ on, y Python se adapta para seguir siendo relevante. En esta secci´ on analizamos tendencias como la computaci´ on cu´ antica, los lenguajes espec´ ıficos de dominio (DSL), la verificaci´ on formal, la programaci´ on funcional, el desarrollo para hardware especializado y las arquitecturas serverless. Python ya tiene presencia en muchas de estas ´ areas y se espera que su papel se consolide. Abraham Zamudio 140 PIT: Python Basico
  135. Sesion 2 Computaci´ on cu´ antica. Aunque la computaci´ on

    cu´ antica a´ un est´ a en etapas tempranas, Python ya es el lenguaje est´ andar para interactuar con procesadores cu´ anticos a trav´ es de frameworks como ‘Qiskit‘ (IBM), ‘Cirq‘ (Google), ‘PennyLane‘ (Xanadu) y ‘Braket‘ (AWS). Estos frameworks permiten construir circuitos cu´ anticos, simularlos en ordenadores cl´ asicos y ejecutarlos en hardware real. Python act´ ua como capa de alto nivel, mientras que los compiladores optimizan para el hardware subyacente. En el futuro, a medida que los orde- nadores cu´ anticos escalen, Python seguir´ a siendo la interfaz preferida para investigadores y desarrolladores, gracias a su ecosistema de bibliotecas cient´ ıficas y su facilidad de uso. Ejemplo de un circuito cu´ antico simple en Qiskit: 1 from qiskit import QuantumCircuit , transpile , assemble , Aer 2 from qiskit. visualization import plot_histogram 3 4 qc = QuantumCircuit (2) 5 qc.h(0) 6 qc.cx(0, 1) 7 qc.measure_all () 8 simulator = Aer.get_backend(’qasm_simulator ’) 9 job = simulate(qc , shots =1024) 10 counts = job.result ().get_counts () 11 plot_histogram (counts) Verificaci´ on formal y lenguajes de especificaci´ on. A medida que el software es m´ as cr´ ıtico (coches aut´ onomos, sistemas m´ edicos), se demandar´ an t´ ecnicas de verificaci´ on formal que prueben matem´ aticamente la correcci´ on del c´ odigo. Python se puede integrar con asistentes de prueba como ‘Coq‘, ‘Isabelle‘ o ‘Why3‘ a trav´ es de generaci´ on de c´ odigo o anotaciones. Tambi´ en existen bibliotecas como ‘py2many‘ que traducen Python a lenguajes verificables. Una tendencia emergente es el uso de **tipos dependientes** y **contratos** (precondiciones, postcondiciones, invariantes) dentro de Python, mediante decoradores o bibliotecas como ‘deal‘ o ‘icontract‘. En el futuro, los desarrolladores Python podr´ ıan escribir especificaciones formales junto al c´ odigo y usar solvers autom´ aticos (Z3, CVC4) para verificar su cumplimiento. Programaci´ on funcional en Python. Aunque Python no es un lenguaje puramente funcional, ha ido incorporando caracter´ ısticas como ‘lambda‘, ‘map‘, ‘filter‘, ‘functools.reduce‘, ‘itertools‘ y comprensiones. La programaci´ on funcional promueve la inmutabilidad y la ausencia de efectos secundarios, lo que facilita la concurrencia y la verificaci´ on. En el futuro, Python podr´ ıa a˜ nadir soporte nativo para tipos de datos inmutables m´ as eficientes y optimizaciones para recursion de cola (tail call). Bibliotecas como ‘toolz‘ y ‘fn.py‘ ya extienden las capacidades funcionales. La tendencia hacia el procesamiento de flujos de datos (data pipelines) favorece el estilo funcional. Desarrollo para hardware especializado. Adem´ as de CPUs y GPUs, el futuro traer´ a aceleradores de IA (TPUs, NPUs), FPGAs y procesadores neurom´ orficos (como Intel Loihi). Python ser´ a el lenguaje de orquestaci´ on, mientras que los kernels de alto rendimiento se escribir´ an en lenguajes espec´ ıficos (por ejemplo, Verilog para FPGAs, o CUDA para GPUs). Bibliotecas como ‘XLA‘ (acelerador lineal algebraico) y ‘TVM‘ (compilador de deep learning) Abraham Zamudio 141 PIT: Python Basico
  136. Sesion 2 permiten compilar Python a c´ odigo optimizado para

    distintos backends. Los desarrolladores Python escribir´ an algoritmos de alto nivel y el sistema se encargar´ a de mapearlos al hardware disponible. Serverless y funciones como servicio (FaaS). La computaci´ on serverless permite ejecutar funciones Python sin gestionar servidores. Plataformas como AWS Lambda, Google Cloud Functions y Azure Functions soportan Python. En el futuro, el serverless ser´ a a´ un m´ as integrado: los frameworks web (Django, FastAPI) podr´ an desplegarse autom´ aticamente como funciones, escalando a cero cuando no hay tr´ afico. Python se beneficia de tiempos de inicio m´ as r´ apidos y de herramientas como ‘Zappa‘ (para desplegar Django en Lambda). Se esperan mejoras en el tama˜ no de las capas de dependencias (para reducir el tiempo de cold start) y en el soporte de bibliotecas nativas. WebAssembly (Wasm) y Python. WebAssembly permite ejecutar c´ odigo de alto rendi- miento en el navegador. Proyectos como ‘Pyodide‘ portan el int´ erprete de Python (CPython) a Wasm, permitiendo ejecutar c´ odigo Python directamente en el navegador, sin servidor. Esto abre posibilidades para aplicaciones interactivas, notebooks, y juegos. En el futuro, la integraci´ on entre Python y Wasm ser´ a m´ as estrecha: se podr´ an compilar m´ odulos Python a Wasm (con ‘py2wasm‘), y se podr´ a llamar a funciones Wasm desde Python y viceversa. Python se convertir´ a en un lenguaje de primera clase para el desarrollo web de alto rendimiento. Blockchain y contratos inteligentes. Aunque los contratos inteligentes se escriben a menudo en lenguajes espec´ ıficos (Solidity para Ethereum), existen entornos como ‘Ethereum‘ con ‘Web3.py‘ para interactuar con la blockchain desde Python. Tambi´ en hay blockchains que soportan Python como lenguaje de contrato (NEO, Tezos con Ligo). En el futuro, Python podr´ ıa utilizarse para desarrollar contratos m´ as complejos, gracias a la verificaci´ on formal y a la legibilidad. Python tambi´ en es popular para construir aplicaciones descentralizadas (dApps) y herramientas de an´ alisis de blockchain. Desarrollo dirigido por modelos (MDE). La ingenier´ ıa dirigida por modelos permite generar c´ odigo autom´ aticamente a partir de modelos abstractos (UML, DSL). Python es un lenguaje popular como target de generaci´ on, y tambi´ en como lenguaje para escribir los generadores (con ‘Jinja2‘, ‘Mako‘). En el futuro, veremos plataformas low-code/no-code que generan aplicaciones Python completas. Los desarrolladores se centrar´ an en el modelado y en la personalizaci´ on de los generadores, mientras que el c´ odigo base se generar´ a autom´ aticamente. Conclusi´ on. El futuro del desarrollo de software es poli´ edrico, con m´ ultiples tendencias que convergen. Python, gracias a su flexibilidad y a su ecosistema, est´ a bien posicionado para adaptarse y prosperar. Los desarrolladores Python deber´ an mantenerse al d´ ıa con estas tendencias, pero su inversi´ on en aprender Python seguir´ a siendo valiosa durante d´ ecadas. La clave est´ a en la capacidad de Python para integrarse con nuevos paradigmas y para servir como lenguaje de orquestaci´ on de sistemas heterog´ eneos. Abraham Zamudio 142 PIT: Python Basico
  137. Conclusiones 1. La programaci´ on como herramienta de transformaci´ on

    social A lo largo de este extenso recorrido por los lenguajes de programaci´ on y, en particular, por Python, hemos podido constatar un hecho ineludible: el software se ha convertido en el principal agente de transformaci´ on social de nuestro tiempo. Desde la manera en que nos comunicamos hasta la forma en que trabajamos, aprendemos, nos relacionamos con el gobierno y gestionamos nuestra salud, el c´ odigo est´ a presente en cada intersticio de la vida contempor´ anea. La programaci´ on, que hace apenas unas d´ ecadas era una actividad de nicho reservada a especialistas en laboratorios y grandes centros de c´ alculo, se ha expandido hasta convertirse en una competencia ciudadana fundamental, comparable a la lectoescritura o al c´ alculo matem´ atico. La transformaci´ on social impulsada por la programaci´ on no es ´ unicamente t´ ecnica; es profun- damente cultural, econ´ omica y pol´ ıtica. Las plataformas digitales han redefinido el concepto de comunidad, permitiendo la colaboraci´ on global a una escala nunca antes vista. El software de c´ odigo abierto ha demostrado que la producci´ on colectiva y el intercambio libre de cono- cimiento no solo son viables, sino que generan bienes de calidad superior a los producidos por grandes corporaciones en muchos casos. Python, como uno de los proyectos de c´ odigo abierto m´ as exitosos, encarna este esp´ ıritu colaborativo. Miles de contribuyentes an´ onimos han construido un ecosistema que rivaliza con cualquier soluci´ on propietaria, y lo han hecho sin m´ as recompensa que la satisfacci´ on de crear algo ´ util y la pertenencia a una comunidad. La programaci´ on tambi´ en ha democratizado la capacidad de innovaci´ on. Antes, para desarrollar una soluci´ on tecnol´ ogica se necesitaban costosas licencias de software, hardware especializado y equipos numerosos. Hoy, un adolescente con una computadora modesta y acceso a Internet puede escribir un programa Python que automatice un proceso, analice datos p´ ublicos o cree un peque˜ no negocio digital. Esta desintermediaci´ on est´ a generando una nueva ola de emprendedores, cient´ ıficos ciudadanos y activistas tecnol´ ogicos que no dependen de grandes estructuras para materializar sus ideas. El lenguaje Python, con su baj´ ısima barrera de entrada, ha sido un factor clave en esta democratizaci´ on. Sin embargo, la transformaci´ on social no es autom´ atica ni inherentemente positiva. El software puede ser utilizado para la vigilancia masiva, la manipulaci´ on de la opini´ on p´ ublica, la exclusi´ on de minor´ ıas y la concentraci´ on del poder econ´ omico. La diferencia entre una herramienta de liberaci´ on y una de opresi´ on reside en los valores y las intenciones de quienes la construyen y despliegan. Por ello, la programaci´ on no puede ense˜ narse como una mera t´ ecnica neutral. Debe 143
  138. Sesion 2 ir acompa˜ nada de una reflexi´ on ´

    etica sobre el impacto de las soluciones tecnol´ ogicas. Python, al ser accesible, permite que personas de diversas disciplinas (humanidades, ciencias sociales, derecho) participen en el dise˜ no del software, aportando perspectivas que contrarresten el reduccionismo tecnocr´ atico. La transformaci´ on social tambi´ en se manifiesta en la creaci´ on de nuevas formas de organizaci´ on laboral. El trabajo remoto, impulsado por herramientas digitales (muchas escritas en Python), ha permitido que personas en regiones desfavorecidas accedan a mercados laborales globales. El freelance en plataformas como Upwork o Fiverr, donde Python es uno de los lenguajes m´ as demandados, ofrece alternativas al empleo tradicional. A su vez, la automatizaci´ on de tareas repetitivas desplaza ciertos trabajos, generando tensiones que las sociedades deben gestionar con pol´ ıticas de recapacitaci´ on y renta b´ asica. La programaci´ on, lejos de ser ajena a estos debates, es su causa y su posible soluci´ on. El impacto en la educaci´ on es quiz´ as el m´ as profundo a largo plazo. Los sistemas educativos que integran programaci´ on desde edades tempranas no solo forman futuros tecn´ ologos, sino que ense˜ nan a todos los estudiantes a pensar de manera algor´ ıtmica, a descomponer problemas complejos y a validar soluciones. Estas habilidades, conocidas como pensamiento computacio- nal, son valiosas en cualquier dominio, desde la literatura hasta la biolog´ ıa. Python, por su legibilidad, se ha convertido en la lengua franca de esta nueva alfabetizaci´ on. Pa´ ıses como Estonia, Finlandia y Corea del Sur han incluido Python en sus curr´ ıculos nacionales, y los resultados preliminares muestran mejoras en la resoluci´ on de problemas y en la creatividad. Por ´ ultimo, la programaci´ on est´ a transformando la relaci´ on entre los ciudadanos y el Estado. El gobierno abierto, los datos abiertos y las plataformas de participaci´ on ciudadana dependen de software que permite la transparencia y la rendici´ on de cuentas. Python se utiliza para construir portales de transparencia, para analizar presupuestos p´ ublicos, para visualizar estad´ ısticas oficiales y para desarrollar herramientas de fiscalizaci´ on colaborativa. Esta capacidad de empoderamiento c´ ıvico es una de las dimensiones m´ as prometedoras de la revoluci´ on digital. En s´ ıntesis, la programaci´ on ha pasado de ser una herramienta t´ ecnica especializada a convertirse en un agente de transformaci´ on social omnipresente. Python, por su dise˜ no inclusivo y su comunidad comprometida, encarna lo mejor de este movimiento: la convicci´ on de que el conocimiento debe ser libre, que la tecnolog´ ıa debe ser accesible y que el c´ odigo puede construirse colectivamente para el bien com´ un. Aceptar este papel transformador implica tambi´ en asumir la responsabilidad de guiar el cambio hacia direcciones ´ eticas y sostenibles. 2. Python como s´ ımbolo de accesibilidad e innovaci´ on Entre la constelaci´ on de lenguajes de programaci´ on existentes, Python ha alcanzado un estatus simb´ olico que trasciende sus m´ eritos t´ ecnicos. Es, para millones de personas, el primer lenguaje que aprenden; para muchos m´ as, la herramienta cotidiana que resuelve problemas reales; para la industria, la base de la inteligencia artificial y el an´ alisis de datos; y para la academia, el veh´ ıculo de la ciencia reproducible. Este s´ ımbolo de accesibilidad e innovaci´ on no es casual, sino el resultado de una filosof´ ıa de dise˜ no deliberada y de una gobernanza comunitaria que ha sabido equilibrar estabilidad y evoluci´ on. Abraham Zamudio 144 PIT: Python Basico
  139. Sesion 2 La accesibilidad de Python se manifiesta en su

    sintaxis, que se lee casi como pseudoc´ odigo en ingl´ es. Un programa elemental como el cl´ asico “Hola mundo” requiere una sola l´ ınea, sin necesidad de clases, m´ etodos p´ ublicos, punto y coma o llaves. Esta reducci´ on de la carga cognitiva inicial ha permitido que personas sin formaci´ on t´ ecnica se acerquen a la programaci´ on con una sensaci´ on de logro r´ apida. La curva de aprendizaje es suave, y los conceptos fundamentales (variables, condicionales, bucles, funciones) se pueden dominar en pocas sesiones. Para quienes ense˜ nan, Python elimina la necesidad de explicar aspectos irrelevantes para el principiante, como la gesti´ on de memoria o la compilaci´ on separada. Pero la accesibilidad no se limita a la sintaxis. Python es gratuito, de c´ odigo abierto, y funciona en todas las plataformas mayoritarias (Windows, macOS, Linux) sin modificaciones. El int´ erprete se puede instalar en segundos, y la biblioteca est´ andar “bater´ ıas incluidas” proporciona soluciones para tareas comunes sin tener que buscar bibliotecas externas. Para los que reci´ en comienzan, no hay barreras econ´ omicas ni t´ ecnicas que impidan escribir su primer programa. Adem´ as, la comunidad ha producido una cantidad ingente de recursos educativos gratuitos: libros, tutoriales interactivos, videos, foros de preguntas y respuestas. Un estudiante en una aldea remota con una computadora vieja y una conexi´ on intermitente puede acceder a materiales de calidad y recibir ayuda de personas de todo el mundo. La innovaci´ on, por su parte, es la otra cara de Python. A pesar de su simplicidad, el lenguaje no es limitado. Su naturaleza din´ amica y su modelo de objetos unificado permiten t´ ecnicas avanzadas de metaprogramaci´ on, decoradores y generadores. El ecosistema de bibliotecas cient´ ıficas (NumPy, SciPy, pandas, scikit-learn, TensorFlow, PyTorch) ha convertido a Python en la plataforma de facto para la inteligencia artificial y el an´ alisis de datos. En estos dominios, Python compite con lenguajes compilados (C++, Julia) ofreciendo una productividad muy superior, gracias a que los n´ ucleos computacionalmente intensivos est´ an escritos en lenguajes r´ apidos, mientras que la l´ ogica de orquestaci´ on permanece en Python. Esta combinaci´ on de alto nivel (productividad) y bajo nivel (rendimiento) es la clave de la innovaci´ on sostenida. La innovaci´ on tambi´ en se refleja en la capacidad de Python para adaptarse a nuevos paradigmas. El soporte para programaci´ on as´ ıncrona (asyncio) lleg´ o en la versi´ on 3.4 y se ha ido refinando. Las anotaciones de tipos (type hints) introducidas en PEP 484 permiten a quienes deseen un tipado m´ as est´ atico utilizar herramientas como mypy, sin imponerlo a quienes prefieren la flexibilidad din´ amica. La reciente adici´ on de pattern matching (match/case) en Python 3.10 acerca el lenguaje a la programaci´ on funcional y a la manipulaci´ on de estructuras de datos algebraicas. Cada nueva versi´ on a˜ nade caracter´ ısticas que mantienen a Python a la vanguardia, sin romper la retrocompatibilidad de manera traum´ atica (salvo la transici´ on Python 2 a 3, ya superada). El s´ ımbolo de accesibilidad e innovaci´ on tiene implicaciones profundas para la industria y la sociedad. Para las empresas, Python representa una reducci´ on de costos de desarrollo y una aceleraci´ on en el tiempo de llegada al mercado. Las startups que utilizan Python pueden iterar r´ apidamente, probar hip´ otesis con prototipos funcionales y pivotar sin incurrir en deuda t´ ecnica excesiva. Grandes corporaciones como Google, Meta, Amazon, Netflix y Spotify conf´ ıan en Python para ´ areas cr´ ıticas, demostrando que la accesibilidad no est´ a re˜ nida con la escalabilidad. Para los gobiernos, Python es una herramienta para la modernizaci´ on del Estado, la apertura de datos y la prestaci´ on de servicios digitales a los ciudadanos. Abraham Zamudio 145 PIT: Python Basico
  140. Sesion 2 Sin embargo, el s´ ımbolo tambi´ en conlleva

    riesgos. La popularidad masiva de Python atrae a personas que buscan atajos y soluciones m´ agicas. Existe una tendencia a creer que porque un problema se puede resolver con unas pocas l´ ıneas de Python, no es necesario entender los fundamentos subyacentes (estructuras de datos, complejidad algor´ ıtmica, seguridad). Esto puede llevar a c´ odigo ineficiente, vulnerable o dif´ ıcil de mantener. Adem´ as, la sobreabundancia de bibliotecas puede generar dependencia excesiva y dificultad para depurar problemas que ocurren en capas profundas. La comunidad debe promover buenas pr´ acticas, formaci´ on continua y una actitud cr´ ıtica hacia el propio lenguaje. En conclusi´ on, Python no es solo un lenguaje; es un emblema de lo que la tecnolog´ ıa puede lograr cuando se dise˜ na pensando en las personas. Su accesibilidad ha abierto las puertas de la programaci´ on a millones de personas que nunca se habr´ ıan atrevido a escribir una l´ ınea de c´ odigo. Su capacidad de innovaci´ on ha impulsado avances en inteligencia artificial, ciencia de datos, automatizaci´ on y desarrollo web. En un mundo cada vez m´ as digital, Python simboliza la posibilidad de que la tecnolog´ ıa no sea una ´ elite remota, sino una herramienta al alcance de todos para construir un futuro mejor. 3. La importancia de formar ciudadanos digitales La expresi´ on “ciudadano digital” ha pasado de ser un t´ ermino acad´ emico a una necesidad pr´ actica. Un ciudadano digital no es simplemente alguien que usa Internet o tiene un tel´ efono inteligente; es una persona que comprende los principios b´ asicos del funcionamiento de la tecnolog´ ıa, que puede evaluar cr´ ıticamente la informaci´ on que recibe, que protege su privacidad y la de los dem´ as, que participa en los espacios digitales de manera ´ etica y constructiva, y que es capaz de utilizar la programaci´ on para resolver problemas y expresar su creatividad. La formaci´ on de ciudadanos digitales es, probablemente, la tarea educativa m´ as urgente del siglo XXI, y Python tiene un papel central en ella. En primer lugar, la formaci´ on ciudadana digital requiere una alfabetizaci´ on computacional que vaya m´ as all´ a del manejo de aplicaciones de ofim´ atica. Los ciudadanos deben entender qu´ e es un algoritmo, c´ omo funcionan los sistemas de recomendaci´ on, por qu´ e sus datos tienen valor, y qu´ e riesgos conlleva la inteligencia artificial. Python, al ser un lenguaje tangible con el que se pueden construir peque˜ nos algoritmos (desde un ordenador de burbuja hasta un clasificador bayesiano), permite a los estudiantes experimentar de primera mano c´ omo se toman las decisiones automatizadas. Esta experiencia pr´ actica es mucho m´ as efectiva que la mera teor´ ıa. Por ejemplo, implementar un sistema de recomendaci´ on muy simple (basado en vecinos) con unas pocas l´ ıneas de Python ayuda a comprender por qu´ e ciertos contenidos aparecen en el feed de redes sociales y c´ omo se pueden producir sesgos. En segundo lugar, la formaci´ on ciudadana implica aprender a proteger la propia privacidad y seguridad en l´ ınea. Con Python, los estudiantes pueden escribir scripts que simulen ataques b´ asicos (como el envenenamiento de cookies o la inyecci´ on SQL) en entornos controlados, entendiendo as´ ı por qu´ e ciertas pr´ acticas (como usar la misma contrase˜ na en m´ ultiples sitios) son peligrosas. Tambi´ en pueden construir herramientas que cifren sus archivos o que se comuniquen de forma an´ onima (usando Tor desde Python). La mejor defensa contra la vigilancia masiva no es la ignorancia, sino el conocimiento de c´ omo funcionan los sistemas. Abraham Zamudio 146 PIT: Python Basico
  141. Sesion 2 En tercer lugar, la participaci´ on democr´ atica

    en la era digital exige la capacidad de contrastar informaci´ on, detectar noticias falsas y participar en debates fundamentados. Python facilita el desarrollo de herramientas de verificaci´ on de hechos: por ejemplo, se puede extraer informaci´ on de m´ ultiples fuentes (web scraping), comparar declaraciones de pol´ ıticos con datos oficiales, o visualizar la propagaci´ on de un bulo en redes sociales. Un ciudadano formado no tiene por qu´ e ser un experto programador, pero s´ ı debe ser capaz de utilizar estas herramientas o, al menos, de interpretar sus resultados. Los periodistas de datos, que cada vez m´ as utilizan Python, son un ejemplo de c´ omo la programaci´ on se convierte en una extensi´ on de la ciudadan´ ıa activa. En cuarto lugar, la formaci´ on ciudadana digital incluye el desarrollo de habilidades para la resoluci´ on de problemas de la comunidad. Los problemas locales (gesti´ on de residuos, optimizaci´ on de rutas de transporte escolar, seguimiento de quejas vecinales) pueden abordarse con soluciones digitales modestas, programadas en Python. Un grupo de estudiantes o vecinos puede crear una aplicaci´ on para reportar baches, o un tablero para monitorizar la calidad del aire, o un bot para informar sobre los horarios del transporte p´ ublico. Estas experiencias no solo resuelven problemas concretos, sino que empoderan a las personas y fortalecen el tejido social. En quinto lugar, la ´ etica digital debe ser parte esencial de la formaci´ on. Python, como cualquier herramienta, puede usarse para fines buenos o malos. Los ciudadanos deben aprender a identificar dilemas ´ eticos: ¿es leg´ ıtimo hacer scraping de datos de una web sin permiso? ¿c´ omo se debe tratar la informaci´ on personal en un proyecto comunitario? ¿qu´ e responsabilidad tiene un desarrollador de software por el mal uso de su c´ odigo? En muchos curr´ ıculos de Python se ha incorporado la discusi´ on de casos de estudio (por ejemplo, el reconocimiento facial en espacios p´ ublicos, o los algoritmos de calificaci´ on crediticia discriminatorios). La formaci´ on ciudadana no puede eludir estas preguntas. La implementaci´ on de programas de formaci´ on ciudadana digital con Python enfrenta desaf´ ıos. El principal es la falta de docentes capacitados. En muchos pa´ ıses, los profesores de inform´ atica son escasos y a menudo no tienen una formaci´ on pedag´ ogica actualizada. Se necesitan inversiones masivas en formaci´ on del profesorado, en materiales curriculares adaptados a cada contexto cultural, y en infraestructura (ordenadores, conectividad). Tambi´ en es crucial involucrar a las familias y a la comunidad en general, porque la educaci´ on digital no puede limitarse al aula. Otro desaf´ ıo es la brecha digital de acceso. No basta con ense˜ nar Python si los estudiantes no tienen una computadora en casa o una conexi´ on fiable a Internet. Las escuelas deben proporcionar estos recursos, y los gobiernos deben garantizar que ning´ un ni˜ no quede rezagado. Iniciativas como la Raspberry Pi (que cuesta 35 d´ olares) y sistemas operativos ligeros pueden ayudar en entornos de bajos recursos. Adem´ as, la formaci´ on ciudadana digital no debe ser exclusiva de la educaci´ on formal. Los adultos, especialmente los mayores, necesitan oportunidades de aprendizaje a lo largo de la vida. Los centros comunitarios, las bibliotecas p´ ublicas y las organizaciones no gubernamentales pueden ofrecer talleres de Python para adultos, con ejemplos pr´ acticos como la b´ usqueda de empleo en l´ ınea, la gesti´ on de citas m´ edicas o el teletrabajo. En resumen, formar ciudadanos digitales es mucho m´ as que ense˜ nar a programar. Implica Abraham Zamudio 147 PIT: Python Basico
  142. Sesion 2 desarrollar un conjunto de competencias que abarcan el

    pensamiento computacional, la ´ etica, la seguridad, la participaci´ on democr´ atica y la resoluci´ on de problemas comunitarios. Python, por su accesibilidad y su potencia, es el veh´ ıculo ideal para este aprendizaje. Los ciudadanos digitales del futuro no ser´ an aquellos que simplemente consumen tecnolog´ ıa, sino aquellos que la entienden, la controlan y la utilizan para construir una sociedad m´ as justa, transparente y participativa. La inversi´ on en esta formaci´ on es la inversi´ on m´ as rentable que puede hacer una sociedad para afrontar los desaf´ ıos del siglo XXI. 4. Reflexiones sobre el futuro tecnol´ ogico de la humanidad Al concluir este an´ alisis profundo sobre la importancia de los lenguajes de programaci´ on y el papel protag´ onico de Python, es inevitable proyectar la mirada hacia el futuro. ¿Qu´ e nos depara la tecnolog´ ıa en las pr´ oximas d´ ecadas? ¿C´ omo evolucionar´ a la programaci´ on? ¿Cu´ al ser´ a el lugar de Python en ese escenario? ¿Y cu´ al ser´ a el impacto sobre la humanidad, su organizaci´ on social, su econom´ ıa y su cultura? Estas reflexiones finales no pretenden ser profec´ ıas, sino m´ as bien un ejercicio de prospectiva fundamentada en las tendencias actuales y en la historia de la innovaci´ on. Una primera constataci´ on es que la aceleraci´ on tecnol´ ogica no muestra signos de disminuir. La ley de Moore, que durante d´ ecadas predijo la duplicaci´ on de transistores cada dos a˜ nos, puede estar llegando a sus l´ ımites f´ ısicos, pero la innovaci´ on en arquitecturas (chips 3D, computaci´ on cu´ antica, neurom´ orfica, fot´ onica) continuar´ a proporcionando aumentos de capacidad. Los lenguajes de programaci´ on deber´ an adaptarse a estas nuevas arquitecturas. Python, con su capacidad de orquestar bibliotecas de alto rendimiento, est´ a bien posicionado, pero es probable que surjan variantes optimizadas (como Mojo) que mantengan la sintaxis Python mientras explotan el hardware paralelo. La programaci´ on heterog´ enea (CPU + GPU + TPU + FPGA) ser´ a com´ un, y Python ser´ a la capa de abstracci´ on que oculte la complejidad. La inteligencia artificial, especialmente los grandes modelos de lenguaje (LLMs), transformar´ a radicalmente la forma de programar. Los asistentes de c´ odigo ya son una realidad, y en el futuro ser´ an agentes aut´ onomos capaces de entender requerimientos en lenguaje natural, generar c´ odigo completo, ejecutar pruebas y desplegar aplicaciones. Los programadores humanos pasar´ an de escribir l´ ıneas de c´ odigo a definir objetivos, supervisar agentes y resolver problemas que la IA no puede abordar. Python, como el lenguaje en el que est´ an escritos muchos de estos asistentes (LangChain, AutoGPT) y como el target de generaci´ on de c´ odigo, seguir´ a siendo central. Sin embargo, la necesidad de aprender sintaxis podr´ ıa disminuir, dando paso a una programaci´ on m´ as declarativa e intencional. Parad´ ojicamente, esto podr´ ıa hacer que Python sea a´ un m´ as accesible para no especialistas. La automatizaci´ on inteligente reemplazar´ a muchas tareas laborales, tanto f´ ısicas como cogniti- vas. Esto plantea un desaf´ ıo existencial para la sociedad: ¿c´ omo garantizar que los beneficios de la automatizaci´ on se distribuyan equitativamente? Los lenguajes de programaci´ on, al ser las herramientas de automatizaci´ on, se convierten en un factor de poder. Quienes controlen el c´ odigo, las bibliotecas y los ecosistemas tendr´ an una influencia descomunal. Python, al ser de c´ odigo abierto y gobernado por una fundaci´ on sin ´ animo de lucro, ofrece una alternativa a los monopolios de las grandes corporaciones. Pero la comunidad debe ser vigilante para Abraham Zamudio 148 PIT: Python Basico
  143. Sesion 2 que Python no sea cooptado por intereses particulares.

    La diversidad de financiamiento (donaciones, patrocinios, servicios) es clave. La educaci´ on ser´ a el campo de batalla principal. Si la formaci´ on en pensamiento computacional y programaci´ on se limita a las ´ elites, la brecha digital se convertir´ a en una brecha de poder. Por el contrario, si se universaliza, podemos asistir a un florecimiento de la creatividad y la resoluci´ on de problemas a nivel local. Python, con su tradici´ on de inclusi´ on (PyLadies, Django Girls, grupos de usuarios en todo el mundo), tiene el potencial de liderar este movimiento. Los gobiernos deben incorporar Python en los curr´ ıculos nacionales, financiar la formaci´ on de docentes y garantizar el acceso a dispositivos y conectividad. La sostenibilidad ambiental es otra reflexi´ on ineludible. Los centros de datos y el entrenamiento de grandes modelos de IA consumen enormes cantidades de energ´ ıa y agua. Python, al ser m´ as lento que lenguajes compilados, puede fomentar una computaci´ on menos eficiente si no se utilizan las bibliotecas adecuadas (NumPy, etc.). En el futuro, la huella de carbono del c´ odigo ser´ a una m´ etrica relevante. Los desarrolladores Python deber´ an optimizar no solo por tiempo de ejecuci´ on, sino por energ´ ıa. Herramientas de perfilado energ´ etico (como ‘carbon-lang‘ o ‘eco2AI‘) se integrar´ an en los IDEs. Tambi´ en se extender´ a la pr´ actica de “green coding”: elegir algoritmos m´ as eficientes, apagar recursos no utilizados, y preferir el c´ omputo en el borde (edge) sobre la nube cuando sea posible. La ´ etica y la gobernanza de la IA ser´ an temas centrales. A medida que los sistemas tomen decisiones aut´ onomas con impacto en vidas humanas (pr´ estamos, diagn´ osticos, sentencias judi- ciales, contrataciones), se necesitar´ an est´ andares de transparencia, explicabilidad y auditor´ ıa. Python, con bibliotecas como ‘SHAP‘, ‘LIME‘ y ‘captum‘, permite implementar explicabilidad, pero la responsabilidad ´ ultima recae en los desarrolladores y en las organizaciones. Es probable que surjan regulaciones (como el Reglamento de IA de la UE) que exijan ciertos requisitos t´ ecnicos. Los lenguajes de programaci´ on deber´ an adaptarse para facilitar el cumplimiento normativo (por ejemplo, trazabilidad de decisiones, inmutabilidad de registros). Python, gracias a su flexibilidad, puede incorporar estas caracter´ ısticas sin grandes cambios. El futuro tambi´ en traer´ a nuevas formas de interacci´ on humano-m´ aquina. La realidad aumen- tada, las interfaces cerebro-computadora, los asistentes de voz avanzados y la computaci´ on ubicua cambiar´ an la manera en que damos instrucciones a las m´ aquinas. La programaci´ on tal como la conocemos (teclear c´ odigo en un editor) podr´ ıa ser reemplazada por comandos de voz, gestos o pensamiento. Pero los conceptos subyacentes (algoritmos, estructuras de datos, control de flujo) permanecer´ an. Python, con su legibilidad, podr´ ıa ser el lenguaje intermedio en el que se traduzcan las intenciones del usuario. La capacidad de Python para ser incrustado en otros entornos (embebido en aplicaciones, en navegadores con Pyodide) lo hace adaptable. Finalmente, una reflexi´ on m´ as amplia sobre el papel de la tecnolog´ ıa en la condici´ on humana. No debemos olvidar que la tecnolog´ ıa es un medio, no un fin. Los lenguajes de programaci´ on son herramientas para resolver problemas humanos, no para reemplazar la reflexi´ on, la empat´ ıa, la creatividad y la solidaridad. Python, con su filosof´ ıa de legibilidad y comunidad inclusiva, nos recuerda que el c´ odigo es para las personas, no al rev´ es. En un mundo cada vez m´ as mediado por algoritmos, la capacidad de construir, modificar y cuestionar el software es una defensa contra la opresi´ on tecnol´ ogica. La ciudadan´ ıa digital activa es la mejor garant´ ıa de Abraham Zamudio 149 PIT: Python Basico
  144. Sesion 2 que el futuro tecnol´ ogico de la humanidad

    sea uno en el que la tecnolog´ ıa sirva a la justicia, la libertad y la dignidad. En conclusi´ on, el futuro de la programaci´ on, y de Python en particular, es brillante pero lleno de desaf´ ıos. La tecnolog´ ıa nunca ha sido neutral, y nunca lo ser´ a. Los desarrolladores, educadores, legisladores y ciudadanos deben trabajar juntos para orientar el cambio tecnol´ ogico hacia direcciones ´ eticas y sostenibles. Python, como s´ ımbolo de accesibilidad e innovaci´ on, tiene un papel que jugar en esta construcci´ on colectiva. El futuro no est´ a escrito; lo escribimos, l´ ınea por l´ ınea, en el c´ odigo que creamos y en las decisiones que tomamos. Abraham Zamudio 150 PIT: Python Basico