Sincronismo
Mi tocayo Tom Wilke dice que existe una especie de sincronía que hace que ciertas cosas ocurran en el momento justo, yo las veo como felics casualidades pero en fin Tom es psicoloco y se supone que sabe de esas cosas.
Este ciclo sicrónico partió el 20 con mi entrada "¿Y para qué sirven los ingenieros?", siguió el 21 con "Qué estudiaría hoy si tuviese 18 años" y ayer tuve el remate al encontrarme con la charla que dio Matt Welsh a los estudiantes de CS50 en la Universidad de Harvard a los alumnos que tomaban ese curso de ciencias de la computación.
Esa charla estuvo muy relacionada con las cosas que yo trataba en las dos entradas de mi blog, por ejemplo cuan útil resulta hoy en día estudiar en la universidad algunas carreras tecnológicas y el futuro laboral de los que hoy aprenden programación.
Muchas de las cosas que dijo Welsh fueron como si me estuviese leyendo la mente porque coinciden exactamente con algunas ideas que yo tengo sobre esos asunto. No es simplemente que esté de acuerdo con lo que dijo, sino que repite algunas ideas que yo -ingenuamente- pensaba que eran solo mías.
Por ejemplo los cambios en las herramientas disponibles para los ingenieros que no han sido correctamente asimilados por el paradigma que se usa en la enseñanza, es algo que los que estudiamos en los setentas podemos entender con mucha claridad.
Como afecta el cambio de herramientas
Recuerdo que cuando entré a estudiar para Técnico Electrónico en 1974, todos teníamos que llevar una regla de cálculo, en las primeras clases fueron con una regla gigante que se colgaba en el pizarrón donde teníamos que aprender a hacer las cuatro operaciones -hasta con tres decimales- aproximar correctamente, sacar cuadrados, raíces y logaritmos. Un semestre completo en eso.
Cuando entré a la universidad en 1978 las calculadoras se estaban empezando a popularizar y al principio estaba prohibido usarlas en las pruebas.
En 1980 yo estaba en el tercer año y vendía calculadoras junto con estudiar, así es que disponía de una Casio FX-702P, que no me dejaban usar -aunque ya habían soltado la mano con las calculadoras- porque era un verdadero torpedo electrónico.
Hasta entonces, las pruebas medían la capacidad de los estudiantes de memorizar decenas de fórmulas distintas para cada prueba, identificar cual era la aplicable y hacer el álgebra necesaria. Pero con un aparato capaz de guardar texto esas capacidades eran irrelevantes.
Un buen ingeniero tenía que ser experto en el dibujo técnico, nos decían que probablemente al entrar a la industria tendríamos que pasar el resto de la vida pegados a esas mesas de dibujo inclinadas, que eran la norma en toda oficina de ingeniería.
También debía ser capaz de hacer calculos aritméticos mentales, rápidamente y sabiendo aproximar los resultados a un nivel aceptable. Todo ingeniero en esos años era capaz de hacer esas cosas.
Los cambios que introdujo la calculadora y los computadores en la ingeniería han sido enormes pero han pasado medio inadvertidos, porque la academia sigue en grandes líneas, enseñando como si nada de eso hubiese pasado.
Las herramientas cambian y el modelo no se mueve
El paradigma académico hoy pretende que hay un corpus de conocimientos y habilidades que son fundamentales y que seguirán siéndolo a pesar de todos los cambios en la tecnología, esa es la Muralla China tras la que se atrincheran las universidades de todo el mundo y es lo que les permite seguir enseñando más o menos lo mismo durante décadas.
Es como si las universidades siguieran dando un semestre de "taller de código morse", aunque no se use hace décadas diran "no es el conocimiento específico, lo que importa es que adquieran rapidez, concentración, capacidad de atención y blablabla".
¿Sirve entrenar la mente?
Es como esos que dicen que enseñarles ajedrez a los niños los hará más inteligentes, no tengo nada contra el ajedrez que puede ser muy entretenido ¡pero es un maldito juego! Tal como gran parte de las matemáticas que -supuestamente- nos hacen más inteligentes.
La verdad que eso de entrenar el cerebro de los estudiantes es solo una excusa barata para no darse el trabajo de revisar críticamente qué sirve y qué no sirve, qué hay que eliminar y qué se debe agregar para vender un mejor servicio educativo.
Pero se escudan con esa estupidez que "la educación no es un negocio" para hacer perder montones de tiempo y plata a los estudiantes, facilitando la vida de los profesores, a costa de arruinar el futuro de generaciones y el desarrollo de todo el país.
Pero me estoy apartando del asunto, volvamos a la conferencia de Welsh donde dijo algunas ideas muy interesantes como:
Electrónica, ley de Moore y avance del software
La computación está intimamente ligada a la ingeniería electrónica, sus avances y limitaciones, pero los computines, engrupidos en sus capas de abstracción tienden a olvidarlo. En electrónica la Ley de Moore, que dice que los circuitos integrados hacen avances inmensos en muy poco tiempo, se ha cumplido desde hace varias décadas.
El software en comparación no ha avanzado prácticamente nada. Welsh muestra un programa escrito en Fortran en 1957 y para la misma tarea, uno escrito en Basic unos 10 años después, otro escrito en un lenguaje muy sofisticado (APL) en el año 1966 y el programa en RUST uno de los lenguajes usados en la actualidad.
Resulta que que ninguno de esos códigos es entendible a primera vista, incluso programadores expertos tienen que tomarse su tiempo para averiguar de que se trata. Además muchos son muy son muy similares. Años de avances en ciencias de la computación, estructuras de datos, lenguajes y todo eso y los códigos siguen siendo un dolor de cabeza mayor para escribir, depurar y mantener.
Por eso muchísimos de los programas críticos aún están escritos en Cobol, nadie ha podido traspasarlos todavía a un lenguaje un poco más inteligible. Y ni el UML, ni la programación orientada a objetos ni la chorrera de modas que han pasado por las aulas universitarias, que son defendidas a muerte por los que las aprendieron y no quieren aprender otras nuevas, ninguna de esas ha solucionado el problema.
Por eso a las grandes empresas de software cada codificador les cuesta más de 300.000 dólares al año y se pueden demorar varios años antes de tener un nuevo proyecto en producción. Y mientras más tiempo pasa mayor es la complejidad de los proyectos, empujados por un hardware cada vez más potente.
Los lenguajes de programación han avanzado poco y nada, nada en comparación con el hardware. Escribir un programa sigue siendo un asunto laborioso, irritante y tan difícil de revisar como era hace 50 años atrás, con la diferencia que hoy tienen miles o millones de líneas de código mintras que los antiguos solo tenían unos cientos, como mucho. Esto eleva el costo a las nubes.
De la programación tradicional a la inteligencia artificial
Aquí es donde la IA está haciendo un cambio fundamental porque permite generar código de manera automática en base a especificaciones en lenguaje natural que dicen cuales son los datos de entrada y cual es la salida que se requiere, Welsh da el siguiente ejemplo:
"Entrégueme un resumen en una o dos frases de la transcripción del siguiente segmento de video, NO use ningún otro conocimiento del mundo que tenga, incluya el título del podcast, el nombre del episodio y el nombre de los expositores, si se conoce"
Welsh afirma que un algoritmo así probablemente no se puede codificar en ninguno de los lenguajes de programación actuales, y probablemente tampoco en los futuros, pero un modelo de inteligencia artificial si puede hacerlo y genera un algoritmo para esto aunque no está escrito en ninguno de los lenguajes de programacion que existen, funciona, pero a su manera.
¿Y como funciona? Aprendiendo, si no nos entrega una respuesta adecuada se lo decimos y el modelo prueba otra forma, en ese sentido, además de usarlo, le estamos "enseñando" al modelo. En el fondo para funcionar, en lugar de seguir una secuencia de instrucciones, los modelos de IA completan frases.
Analizan el párrafo que ingresamos, lo comparan con billones de frases que contengan esas palabras o similares y elaboran un resultado del tipo "complete la oración" como el profesor Salomón de la tele. El proceso sería imposible para un ser humano, pero una máquina con gran capacidad de hardware y buenos motores de análisis de sintaxis pueden hacerlo sin problemas.
Aquí es donde la analogía con las calculadoras electrónicas vuelve en gloria y majestad. Con la aparición de las calculadoras no se extinguieron los ingenieros, pese a que casi todas las habilidades que eran fundamentales para la profesión quedaron obsoletas de un día para otro.
Tal vez llegue el día que cualquier persona que no sepa nada de construcción -por ejemplo- o de instalaciones eléctricas, etc. pueda entrar los requerimientos para hacerse una casa en lenguaje común y corriente y una aplicación se encague de todo lo demás: diseño, cálculos, planos, materiales, órdenes de compra, contratar trabajadores, etc, eso es perfectamente posible con el estado del arte que tenemos hoy.
Sin embargo arquitectos e ingenieros siguen ahí como si nada ¿terminarán siendo innecesarios? Puede ser, pero falta todavía para eso. Incluso los vehículos que se conducen solos, que son una aplicación para la que existe toda la técnica necesaria, todavía avanza a paso de tortuga. Estamos en una transición.
Otra cosa importante es que la inteligencia artificial está haciendo para los programadores exactamente lo mismo que lo que hicieron las calculadoras para los ingenieros en los ochentas. Existen aplicaciones como Copilot de Github que ya se están convirtiendo en las calculadoras del Siglo XXI para los programadores. Nunca había sido tan fácil y productivo programar como es hoy.
Por eso sigo creyendo que este es el momento ideal para aprender a programar. ¿Quedará obsoleto cualquier lenguaje que aprendan? Sin duda, ¿quedarán obsoletas el 70% de las habilidades que hacen hoy a "un buen programador"? Claro que si, eso es inevitable.
Pero tenemos un par de años de trabajos que estarán entre los mejor pagados y más fáciles del mundo. Google y otras grandes empresas de computación ya eliminaron el título profesional como requisito de contratación y lo reemplazaron por un proceso de entrevistas y pruebas.
Esas pruebas fundamentalmente miden la capacidad para entender un problema en lenguaje natural, en base a eso crear el algoritmo y codificarlo de la mejor manera posible. Eso es lo que se espera hoy de un buen programador.
La capacidad de crear el algoritmo donde lo único que se necesita saber es si el lenguaje de programación es capaz de solucionar el problema y cual es la secuencia que más "le acomoda", codificarlo es solo expresar ese algoritmo en una secuencia de instrucciones permitidas por el lenguaje.
Pero ahora existe la IA y Copilot, que pueden idear el algoritmo y codificarlo directamente en base a las especificaciones en lenguaje natural, esas habilidades para convertir problemas en algoritmos y codificarlos son el equivalente a la destreza de los antiguos ingenieros de hacer los cálculos correcta y rápidamente, usando la regla de cálculo o la Tabla Larsen. Ya son obsoletas.
Sin embargo los viejos ingenieros calculistas siguen vigentes y cotizados, porque se dan cuenta enseguida cuando el resultado de la calculadora parece sospechosamente malo, tienen el olfato y la experiencia para hacer el cálculo aproximado en la cabeza.
De manera parecida, a un buen programador, con cierta destreza para idear algoritmos, tal vez no llegue a usar esa destreza en el futuro, pero puede ser muy valiosa para alimentar y enseñar a los modelos de inteligancia artificial. Y para lo que haya que hacer a mano como complemeto, para eso está Copilot.
Al menos así es como yo lo veo, tal vez esto no interese a nadie leerlo pero a mi me divirtió mucho escribirlo. Alguna vez que me de un gustito ¿no?
La tabla Larsen, ¿como es posible que me embolinaran con tales tonteras? AL menos la regla de calculo es bonita, aun tengo la mia, y tiraba algo de pinta con las minas de castellano o teatro o algo asi.
ResponderBorrarRecordemos que no se engorda por lo que comemos y bebemos entre navidad y año nuevo, sino entre este y navidad. Buen provecho y salud
Jajaja la Tabla Larsen también servía, me acuerdo que cuando yo la llevaba en la micro me cuidava de ponerle el título hacia afuera y la regla de cálculo Aristos en el bolsillo de la camisa para que se viera, ¡cuanta tidiculez!
ResponderBorrarPero habían otros peores, me acuerdo de uno que se paseaba con el libraco "Magnetogydrodinamics" debajo del brazo, los pesados lo chaparon en primera con el sobrenombre "el sobaco ilustrado", esas eran cosas que cn suerte se veían en cuarto... y muy por encima si es que.
A todo esto vengo de donde mi amigo Waldeque que se abrió un vino Tarapacá que tenía guardado hace 20 años, milagro que estaba intacto, que empiece la fiesta!
ResponderBorrarSalud Don Tomas,
ResponderBorrarQue fantástico resumen de lo que es el futuro. Justamente el Geo , Andrew Anagnost, de Autodesk habla de ello.
https://adsknews.autodesk.com/en/views/regulating-artificial-intelligence/
Encontré el emulador de la fx702p
https://sourceforge.net/projects/fx702p/
Feliz Navidad y lo mejor para usted y su familia.
Si Centurio, parece que la IA va a tener un papel fundamental en la programación de aplicaciones, puede ser un cambio tan importante como fue la aparición de las calculadoras para los ingenieros.
BorrarQué buena la del emulador de la FX-702P ¡en CA Basic jajaja!
Salud y felices fiestas!
recuerdo de hace mucho tiempo que había una herramienta llamada case, se diseñaba, creo, el proceso de la empresa, y por atrás se armaba el software que haría funcionar lo diagramado, fue un completo fracaso; cuando fui encargado temporal de sistemas, me vinieron a vender toda clase de cuchufletas, a todas dije no, también dije no a sap, cuando empezó lo de la internet, todo se escondió con interfaces web, pero atrás es como dices, computadores del año de la callampa, y todos rezando para que no se vayan a dañar, no sé cuántas empresas XXL siguen trabajando así, en chile sospecho que son muchas; eso de copilot lo investigaré, para hacerme aplicaciones personales para facilitarme la vida, espero no sea otro humo tecnológico
ResponderBorrarAnónimo, CASE fue un fiasco, computación ayudada por software con "lowercase" y "uppercase" fue más o menos como los primeros Mackintosh, un desastre. La idea de inteligencia artificial tiene el mismo objetivo pero por medios radicalmente distintos, CASE es algoritmico y funciona como las pelotas, GPT o Copilot son modelos de aprendizaje y funcionan maravillosamente bien.
BorrarSAP es utra cosa, desarrollada por alemanes son programas comunes y corrientes (punto de venta, inventario, contabilidad) pero totalmente rígidos, a la alemana: es la empresa la que se tiene que acomodar al sistema y no el sistema a la empresa, no es software a la medida excepto los pocos cambios de sintonía fina que le pueden hacer los integradores, certificados por SAP.
Eso ha funcionado hasta cierto punto, como son un solo modelo, se ha instalado en miles de empresas y llevan muchos años funcionando, a estas alturas los programas ya no fallan.
Además son aplicaciones muy sencillas, del tipo de las que yo y todos los programadores antiguos hacíamos, de hecho SAP nos dejó fuera a muchos programadores tradicionales.
Hoy es el estandar en el mundo para esa clase de aplicaciones, ellos pueden garantizar que funcionan, peeeero...
Resulya que para implementar SAP la empresa debe ajustar profundamente todo su modelo administrativo, y muchas empresas no logran hacerlo, en algunos casos, por la naturaleza del negocio es imposible adaptar SAP a una empresa determinada: es un modelo muy alemán en su concepción, medio nazi "te adaptas o te vas"
Para hacer aplicaciones personales no te recomiendo Copilot, porque ese funciona más bien completando código, es decir que funciona mejor sobre un código escrito o bosquejado previanmente.
En estos casos, la mano es usar Chatgpt, GPT3 o cualquiera de esos. Yo anoche hice una prueba con Chatgpt pidiendo una aplicación esctita en Python para sacar datos de una web y me la entregó en segundos, con instrucciones y sugerencias, quedé muy impresionado.
Funciona con casi cualquier lenguaje, quedé super impresionado, creo que voy a hacer más pruebas y escribiré una entrada mostrando como se hace, es super sencillo
SAP parece que como libro mayor puede servir para algo, en paralelo me trataron de meter el SAP de oracle, no recuerdo el nombre, pero el tipo de ellos debió ser técnico, no vendedor, confesó todo, lo que un vendedor bueno no hace, finalmente había que llenarse de aplicaciones complementarias para alimentarlo, así no era negocio por ninguna parte, en esos tiempo el SAP era carísimo, te miraban la cara y te sacaban los dos ojos, ahora creo que casi lo regalan, pero te cagan con el contrato de mantenimiento o la implementación, en una empresa de seguros, del orden de mil empleados, tenían a 500 tratando de implementar la cosa, locura, en cencosud, el viejito alemán dijo que había que usar el producto alemán, tenían una cagada administrativa brutal, años después no sé si lo botaron completamente o sólo lo usan como libro mayor, el tema de manejo de bodegas XXL simplemente se iba de espalda, al final te llenas de aplicaciones complementarias y el bendito excel continua haciendo la pega
BorrarEl problema real de implementar sistemas en retail no es el software, bueno, puede ser parte del problema pero solo en pequeña medida, pero el problema base es la organización misma y su cultura organizacional.
BorrarLas estructuras de mando, responsabilidades que no están claramente establecidas, mandos improvisados o sin experiencia suficiente y cosas por el estilo. Es un milagro que las empresas de retail en Chile hayan podido implementar sistemas de punto de venta, ERP y cosas así, es un milagro porque son mayormente empresas familiares, con los miles de problemas que tienen estos negocios
es un problema mundial, todos los retailers usan algo que se llama manhattan, sap se va de espalda algo así como con 2000 sku, algunos retailers mantienen fácilmente 300 o 400 mil, sospecho que amazon mucho pero mucho más, igualmente influye mucho la gente, como en todo
BorrarAh claro, para inventarios y logística ¿también lo usan para punto de venta?
Borraren puntos de ventas tiendas físicas el estándar era hardware y software IBM, no sé si lo sigue siendo, online sospecho que manhattan ha desplazado a todo el mundo
Borrara mi me enseñaron desde el viejo "diagrama de flujos" y por un tiempo esperé un lenguaje gráfico, donde uno hiciera el diagrama y un traductor automático escribiera el programa. De hecho lo que te ocurre cuando empiezas a programar es que tu mismo dejas de hacer el diagrama de flujo. Uls
ResponderBorrarLos diagramas de flujo son súper útiles para diseñar pequeñas partes de un algoritmo que es difícil de visualizar, recuerdo por ejemplo el control de inventario de un bar donde los licores se rebajaban por porciones, había que idear algún algoritmo para la rebaja, toma física de inventario y comprar reposiciones que no era sencillo de codificar directamente, en esos casos el flujo sirve mucho.
BorrarPero para programas completos es redundante, tal como dices nadie lo usa porque el flujo puede terminar siendo más complicado que el propio código. Hay software que haces flujo y genera código y viceversa pero no tiene casi utilidad práctica, porque los flujos sirven más para garabatear soluciones, concepto de soluciones pequeñas, snippets de código, no para grandes procesos.
Y claro, en los viejos tiempos todo lo que fueras a programar debía estar precedido por un flujo, pero cuando los programas empezaron a tener miles de líneas y hasta millones, eso quedó KO
Lo que se usa hoy en lugar de flujos son comentar bien el código, las indentaciones en Python hacen que veas el flujo directamente en el código, por eso son obligatorias, parte de la documentación del sistema es tener u código claro.
BorrarPero si programas con IA eso ya ni se necesita, no necesitas preocuparte de la documentación, las buenas prñacticas ni nada de eso porque es la máquina la que produce los algoritmos, no el programador, lo hace en vase a experiencia ajena y la mantención del código deja de ser problema, la misma máquina puede producir unos cuantos miles de casos de uso y si falla en alguno se parte desde cero nuevamente, total, demora segundos en producir un código desde cero
¡BASE maldita sea! La v está justo al lado de la b: disteclia
BorrarSi existen , también se conoce como nodos, se utilizan mx en videojuegos para programar determinados eventos o acciones
BorrarMuy interesante esta recopilación de la evolución tecnológica, se agradece!
ResponderBorrarchas gracias por el comentario!
Borrar