26 octubre 2011

Chau McCarthy


Me avisa mi viejo y computin amigo Leus -quien por poco inventa el blog- de la muerte de John McCarthy, creador de LISP, el segundo lenguaje de programación más antiguo después del Fortran (aunque tengo mis dudas con el Cobol, que todavía se usa).

Como no se casi nada de LISP me abstendré de comentarlo, solo diré que me cae bien todo lo que se hizo antes que apareciera la maldita teoría de objetos, el lenguaje C y esa nefasta basura que hace posible que usemos los complejos programas actuales. El Lisp estaba orientado a la inteligencia artificial, pensado como un lenguaje que produjera respuestas que para nosotros son tan triviales como el sentido común o la inferencia de soluciones a problemas sobre los que no tenemos experiencia previa.

MCarthy era matemático de origen, en este link que me mandó Leus aparecen no solo los papers más importantes que escribió sino también sus intereses hacia los temas de sustentabilidad y progreso. Hace varios años y contra las tendencias de la época en favor del catastrofismo ecológico, afirmó que la población tenderá a estabilizarse y que el progreso indefinido en riqueza material y desarrollo no solo es posible sino que muy probable. Parece que -afortunadamente- así se están dando las cosas. Como buen matemático afirmaba "el que se niega a hacer los cálculos está condenado a hablar tonteras", que buena frase.

Hace más de 10 años, irritado por el camino que estaba tomando la computación, escribí el manifiesto del programador hereje. Las ironías de la vida me llevaron después a enseñar la teoría de objetos, los casos de uso y de prueba, el modelamiento y estructura de datos y todas esas cosas que siempre desprecié. Peor todavía, cuando me tocó trabajar supervisando el complicado sistema de la Municipalidad de Tacna, tuve que reconocer que sin un estricto apego a todas esas porquerías la cosa jamás habría funcionado. Y que cada problema que aparecía era porque no se había cumplido con alguna de esas odiosas reglas.

Entonces me di cuenta de lo bajo que había caído el papel del programador, pero siempre conservé la fe en las microaplicaciones. Soluciones pequeñas para problemas muy específicos, desde el año 2007 que no escribía una sola línea de código pero hoy, que estaba tratando de comparar datos en una enorme planilla excel bajada de educacionsuperiorchile.cl, donde tienen disponibles varias bases de datos de las universidades chilenas, pero resultaba una tortura tratar de comparar dos datos.

¿Por que no hacer un pequeño programa? pensé. Y me encomendé al alma del finado McCarthy para que me ayudara, después de un rato de desempolvar mis recuerdos con el entrañable Visual Basic para Aplicaciones, tenía mi planilla programada para comparar datos con un par de clics, todo con una pocas líneas de código. Esta es la aplicación (clic para agrandar):


Y este es el código:
Como no va a ser lindo hacer algo práctico y útil con apenas 22 líneas de código. Ah pero esa clase de programación ya pasó de moda, ahora se usan los estereotipos y los casos, puaj. Hasta mañana.

P.D. si quieren la hoja excel con la aplicación, la pueden bajar de aquí, claro que tienen que bajar el nivel de seguridad del Excel a "medio" y responder "si" cuando les pregunte si quieren ejecutar macros. Para entrar al programa Herramientas, Macro, Editor de Visual Basic y para ejecutarlo la tecla F5.

25 comentarios:

  1. excelente !,muy bueno el post

    ResponderBorrar
  2. Grax Max, interesante lo que planteaba McCarthy sobre la población y los alimentos

    ResponderBorrar
  3. "[John McCarthy; QEPD] "El que se niega a hacer los cálculos está condenado a hablar tonteras". ¡Qué sincera, directa y sencilla frase!"

    Mi Twitteo de hoy; gracias Bradanoide.

    ResponderBorrar
  4. Si, buena la frase. Yo ni siquiera capto lo que es la "programación por objetos" aunque he escuchado largamente que es la única forma de resolver las cosas como Ud. dice.

    ResponderBorrar
  5. Sergio, Ulschmidt la frase está excelente: sencillita y muy cierta. Ulschmidt, la teoría de objetos es una metodología para programar derivada de la teoría de conjuntos de matetemáticas En este link coloqué hace muchos añs una especie de "objetos para dummies" cuando recién estaba tratando de aprender de ese asunto. Eso lo escribí a fines de los 90 más o menos.

    ResponderBorrar
  6. slip no es la palabra snob de calzoncillo?...

    Ahora en serio, siempre me llamó la atención la computación, claro que cuando un viejo habla de este tema, los jovenes lo miran como si uno fuera primo del ET.

    Perdone mi básico conocimiento, pero los lenguajes son de dos tipos, el asembler y los otros.
    Otra cosa es la forma de desarrollar los algoritmos, inicialmente de maneral lineal para luego dar paso a lo modular (con simulación matematica para verificar su logica y resultado).
    Yo llegue hasta las areas comunes del glorioso Basic, sin antes pasar por los Cobol y los fortran, incluyendo uno poco difundido de la IBM para desarrollar report.

    Me dio sed, hasta luego,

    saludos fraternos,

    Nabuco.

    ResponderBorrar
  7. Don Nabuco ¿de donde habrá salido eso del "slip"? en los lugares donde se habla inglés al menos nadie entiende que slip significa underwear, es de esas palabras en inglés raras que alguien inventó acá.

    Es Ud. todo un informático correlija, mis respetos. Apostaría que le anduvo tirando los corridos a la contra-almirante Grace Hooper. ¡Saluti!

    ResponderBorrar
  8. Don Tomás Ud sabe que los caballeros no tienen memoria, y los viejos aunque quisieramos, el "alemán" no nos deja.

    Tengo entendido que el primer instituto privado de computación se creo en Valparaíso, (Holleith Institute of Comptation and Machines), y por esos años el guro era Perico Perez de la IBM y Sabndro Norero de la Católica.


    nabuco.

    ResponderBorrar
  9. A leer
    http://cachandochile.wordpress.com/2011/10/05/pouf-jumper-panty-slip-more-linguistic-giggles/

    ResponderBorrar
  10. Ah mi estimado don NAbuco, hagase el leso nomas, apuesto que la comodora Hooper sufrió de sus embates.

    Anónimo, jaja, otro dato más, ¿a quien se le habra ocurrido llamarle "slip" al calzoncillo?

    ResponderBorrar
  11. Yo también soy de los que odia a muerte la programación orientada a objetos. Encuentro mucho más lógica e intuitiva la antigua programación estructurada.

    Hasta la fecha sigo desarrollando pequeñas aplicaciones en VB de Excel y aplicaciones de Flash con ActionScript 1.0. Todas las versiones posteriores de ActionScript son con objetos y siempre hay que terminar escribiendo el doble de código que en el caso de la programación estructurada. Abajo la POO!.

    ResponderBorrar
  12. Comparto totalmente la opinión del correlija Claudio (cuando nos encontremos yo pago la primera botella, blanqueli o tintan me da lo mismo).
    Creo que la computación perdió horizonte en las aplicaciones aplicada a los objetos, disfruto la programación estructurada, es como tener ene amantes sin que ninguna se de cuenta, incluyendo el "modulo master".

    Además, a mi edad, los "placeres" son virtuales y las relaciones digitales.

    Nabuco transitorizado.

    ResponderBorrar
  13. Claudio, lo que pasa es que se perdió la distinción entre aplicaciones grandes y las pequeñas, desde que la computación se empezó a enseñar en la universidad como una carrera se instaló una ideología que hay solo una manera correcta de programar y que las "buenas prácticas" que son indispensables para los sistemas grandes y complicados también lo son para las aplicaciones sencillas. Por eso casi nadie hace programas pequeños y portables como los que permite el VBA o el antiguo Action Script, no les enseñan a programar así, los computines de ahora tienen un esquema orientado solo a los grandes sistemas.

    Don Nabuco, cuidado con los digitales correlija, no se vaya a equivocar con el dígito verificador!!!

    ResponderBorrar
  14. Un par de veces dí clases de computación en la década del 80, en secundarios. Uno de la rama civil con un cursado en computación clásica y breve podía hacer eso entonces. El otro día entre al negocio de un ex-alumno para que me repare una PC y le dijo a su socio - analista de sistemas - "este tipo me enseñó diagrama de flujos, podés cree?" como si el diagrama de flujos no fuera lo más intuitivo y fácil para la programación. Yo me apresuré a aclarar que nunca vi a nadie hacer el diagrama de flujos y que yo mismo no lo hacía - cuando programaba algo - aunque si lo tenía "in mente". "Es que ahora todo está orientado a la programación por objetos" dijo el otro, como si eso fuera la clave de la decadencia y abandono del diagrama de flujo.
    Me fuí sin entender nada, claro.

    ResponderBorrar
  15. Ah Ulschmidt, los diagramas de flujo lesantes eran indispensables. Los programas eran una larga lista de instrucciones, de arriba a abajo, na secuencia que empezaba, se ingresaban los datos, se procesaban y luego se tenía un resultado que aparecía en la pantalla o se imprimia en papel.

    Cuando se cambió a entornos visuales los progrmas dejaron de ser listas y se convirtieron en cosas que aprecen o desaparecen de la pantalla segun "acciones" que se hagan sobre esas cosas. Para programar ahora primero se definen pantallas y estructuras de datos (bases de datos) las pantallas tienen "cosas" como botones, cajas de texto, etc. a estas cosas se le programan los "eventos" por ejemplo un boton tiene propiedades (tamaño, color, ubicación, etc.) y eventos (clic, doble clic, etc) primero se diseñan las cosas y luego se le programan los eventos (por ejemplo al boton se le programa el evento clic)

    En la aplicación chiquita que mostré aqui se hace de esa manera: primero se inserta una ventana (from) la que se le agregan dos botones (comparar, limpiar), tres cajas de texto combinadas con lista (combo box para institución 1, institucion 2 y criterio), dos cajas de texto para mostrar los resultados (textbox1, twxtbox 2)

    Luego se programan los eventos, por ejemplo cuando la ventana se carga debe leer todos los nombres de las institiciones y guardarlas en los combo1 y combo 2, y leer los criterios y guardarlos en el combo 2. Ese modulo se programa en Sub Form_Activate.

    PAra el botón "comparar" se programa el evento "click", de modo que al hacer click recurere los valores que corresponden a las instituciones y el criterio y los despliegue en las textbox1 y textbox2. Eso se programa en Sub Bottom1_click

    Finalmente se programa el buttom2 para que limpie todas las vetanas, borrando cualquier cosa que este escrita en ellas.

    Como vez, no es una secuencia lineal de instrucciones sino que se hacen pequeños programas para cambiar las propiedades de los objetos de acuerdo a los eventos que ocurren

    ResponderBorrar
  16. Yo creo que Visual Basic y todas esas mamonerías similares orientadas a facilitarle la vida al programador, mataron el romanticismo de programar cosas realmente choras. Menos mal que Java, el hijo lejano de C, vino a poner las cosas en su lugar.

    ResponderBorrar
  17. Lee esto, perejil:

    "For example, I personally believe that Visual Basic did more for programming than Object-Oriented Languages did. Yet people laugh at VB and say it's a bad language, and they've been talking about OO languages for decades.
    And no, Visual Basic wasn't a great language, but I think the easy database interfaces in VB were fundamentally more important than object orientation is, for example."

    Adinina quien lo dijo... es que el que sabe, SABE.

    ResponderBorrar
  18. Yo no he dicho que Visual Basic es una inutilidad, simplemente digo que es tan útil, tan fácil de usar, que muchos olvidaron irse a más bajo nivel a hacer cosas ingeniosas fuera del paradigma visual. Menos mal apareció Java y la organización Apache, los que potenciaron bastante el mundo Open Source con decenas de proyectos interesantes, que funcionan bien y que en más de alguna ocasión algún computín ha usado. Y sí, las macros con Visual Basic en Excel me han facilitado en algunos aspectos la vida.

    ResponderBorrar
  19. bah, bah, calla insolente y hazle caso a Linus Tovalds. La belleza no está en la dificultad o el ingenio, sino en la simplicidad, simetria y potencia.

    ¿Por que se usa tan poco el VBA siendo tan útil? nunca lo he entendido, eso que tiene más de 10 años

    ResponderBorrar
  20. Además que el VBA tiene su versión completa para el Open Office: se llama OOB y es 100% orientado a objetos ¿queris empezar una guerra santa? dale nomás

    ResponderBorrar
  21. Ahhhh!!!....las mentes de rebaño que no pueden pensar por si solos!!! tenía razón el filósofo medieval Tomás El Calvo. X-D

    ResponderBorrar
  22. Bah, yo defendi al VB desde su aparición para las aplicaciones pequeñas y estaba solo contra el mundo, nadie lo consideraba un lenguaje "de verdad" a principios de los 90, con el tiempo la chusma lo fue adoptando y hoy casi todas las interfases de usuario se hacen en alguna forma de vb lo mismo que muchisimas integraciones con motores de base de datos

    ResponderBorrar
  23. Y claramente VBA no se ha usado, porque muchos no han descubierto como usarlo para facilitar la vida; sin mencionar que además lo puedes invocar desde .NET, que ya lo potencia bastante.

    ResponderBorrar
  24. Ya ya ya!!!....para la otra diga que Bill Gates le robó la idea del VBA. X-D

    ResponderBorrar
  25. ¡Ese maldito ladrón de ideas! Bromas aparte el VB fue durante muchos años el proyecto de Bill Gates y una muestra de su tremenda vision estratégica al ir contra la corriente de todo el mundo académico en el mundo.

    La idea clave del VB fue agregar una capa de abstracción con la programación visual, manteniendo muchos de los vicios del Basic que lo hacen tan económico en código.

    Cuando desde las escuelas de computación trataron de reventar al VB desarrollando el Delphi (un Pascal Visual) fueron un fracaso, porque no tenían esa vision de economía de código que ha hecho tan exitoso al Basic en el tiempo.

    La idea de Gates fue siempre adaptar al VB al modelo de objetos (cosa que se hizo finalmente con el ,Net y el C#) y no hacer a los lenguajes "tipo C" como base para programas de negocio y aplicaciones de ese tipo.

    Es una visión distinta a todo el mainstream que se enseñaba en las universidades y se impuso por los hechos. Creo que es ridículo codificar una aplicación comercial típica en C o en Java, tan ridiculo como hacer un sistema operativo o una aplicación compleja usando Visual Basic, el nicho del VB es claro y Gates lo identificó bien desde el principio.

    A todo esto el compró el VB que fue desarrollado por otra firma, creo que se llamaban Cooper Asociates o algo asi, no es producto original de Microsoft

    ResponderBorrar

"Send me a postcard, drop me a line
Stating point of view
Indicate precisely what you mean to say
Yours sincerely, wasting away
Give me your answer, fill in a form
Mine for evermore
Will you still need me, will you still feed me
When I'm sixty-four"