26 enero 2013

El Programador Casual sale de su cripta


Creo que les había contado que tomé el curso Python for Informatics con el profesor Charles Severance de la Universidad de Michigan. Dr. Chuck es un personaje, tuvo un show en la televisión pública sobre computación en los noventas y es muy bueno enseñando. Armó este curso como un experimento por iniciativa propia, claro que lleva varios años dedicado a plataformas educativas online como Sakay y Moodle y es un convencido de las bondades del Open Source.

Yo aprendí a programar de manera autodidacta y cada vez que traté de tomar algún curso formal lo dejaba al poco tiempo por aburrido o poco práctico así es que no tenía demasiadas esperanzas con este, pero resultó muy bueno. Cuando uno empieza con un lenguaje nuevo de computación son relativamente pocas las cosas importantes que tiene que aprender, la mayor parte se aprende en la práctica y si uno ya ha tenido experiencia codificando antes se da cuenta que al final todos los lenguajes son bastante parecidos, solo cambian el estilo y el énfasis.

Es igual que aprender un idioma nuevo, uno puede hacerlo de manera racional o sistemática, aprendiendo primero las palabras, luego las reglas de ortografía que las relacionan y finalmente los estilos y expresiones. Pero los niños no aprenden a hablar así, en lugar de eso usan un método que no es sistemático ni ordenado lógicamente sino que tratan directamente de usar el lenguaje imitando lo que escuchan, esta manera natural de aprender es más fácil aunque pueden adquirirse malas costumbres. Por ejemplo un niño puede aprender a hablar con groserías y equivocaciones gramáticas. Con los lenguajes de programación es lo mismo.

Hay dos grandes familias de lenguajes de alto nivel, unos se desarrollaron según el modelo de Fortran y los otros según el modelo de Pascal. Fortran es más antiguo y los lenguajes derivados (los distintos dialectos de Basic y Visual Basic) Son códigos muy legibles y con pocas restricciones. En los ochentas, a medida que aparecían programas más grandes y complicados estos lenguajes hicieron crisis y se empezó a usar primero la programación estructurada (Pascal) y luego los lenguajes orientados a objetos (C, C++, Java y otros por el estilo). En las universidades solo se enseñaban lenguajes orientados a objetos pero los lenguajes de la rama del Fortran no desaparecieron, pese a años de ataques desde las escuelas de informática Visual Basic sigue siendo casi un estándar en sistemas pequeños y medianos.

Con Internet todo cambió  y los programas pequeños volvieron a tener importancia. Aplicaciones como Facebook, Blogger o Twitter eran mucho más sencillas de programar que las aplicaciones antiguas y los prototipos se pueden programar en código de alto nivel. Facebook al principio se programó en PHP (luego cambió a C++) y Twitter en Ruby on Rails

Con el tiempo las dos familias de lenguajes van convergiendo, creo que Python es un buen ejemplo: está diseñado con el modelo de objetos pero es permisivo y legible, muy parecido al Visual Basic o al seudocódigo. Es uno de los lenguajes más legibles que he visto. Algunas características que me gustaron mucho son:

- La indentación sirve para cerrar ciclos, o sea es parte del código. Eso obliga a indentar bien y hacer los programas más cortos y legibles
- Las funciones para manejo de string y listas son buenísimas, especialmente split() que toma un string separado por espacios, comas o lo que sea y lo convierte en una lista ¿como no se le había ocurrido eso a los de Visual Basic? es una característica extraordinariamente útil
-Es interpretado, multiplataforma y de código abierto, no es restrictivo y se puede usar con el modelo de objetos, pogramación funcional o como a uno se le antoje, no tiene un solo paradigma. Se nota que no salió de un profesor universitario iluminado sino de alguien con esperiencia real codificando (a propósito Guido Van Rossun es el inventor)
-Tal vez lo más importante es el soporte que tiene de Google, es el lenguaje de la Google App Engine y uno de los lenguajes oficiales autorizados por Google a sus desarrolladores

Hace años que dejé la programación molesto del camino que había tomado desde que empezaron a aparecer los ingenieros en computación o de sistemas, la programación orientada a objetos, los modelos y bases de datos, llegué a pensar que se había convertido en una actividad aburrida, llena de petulantes y fanáticos inútiles de resolver problemas normales usando computadores. Solos servían para trabajar como hormigas en un cubículo en grandes sistemas.

El año 2005 le comenté eso a mi amigo Stephen Gutchneck, que es un programador extraordinario y me dijo que las cosas estaban cambiando, que con Internet y el XML iban a volver los archivos de datos en texto plano, las aplicaciones pequeñas y creativas como en los viejos tiempos. Al poco tiempo empezaron a aparecer las aplicaciones que usaban XML, recuerdo la mensajería instantánea de Dove y luego Gtalk. Desde entonces todo ha empezado a cambiar y lo siento un poco por los malditos ingenieros de sistemas que malgastaron su vida estudiando los objetos y el modelamiento de datos. Bah, en realidad no lo siento, están condenados a trabajar en su cubículo ensamblado rutinas tontas y repetitivas, se lo merecen, al menos los que fueron petulantes. Señores: el Programador Casual sale de su cripta, volverá a la vida y recargado.

17 comentarios:

  1. programador casual Reloaded, excelente!!

    ResponderBorrar
  2. Y si me gano lalotería y me compro una buena cámara empiezo a hacer cursos online YA! jaja

    ResponderBorrar
  3. Claro, el futuro es la educacion a distancia. "ni me movi de mi escritorio" Excelente.
    Aca seguiremos religiosamente los cursos del Doctor Bradanovic.

    ResponderBorrar
  4. Echa un vistazo!! :D

    http://www.python-madrid.es/post/camisetas-python-madrid/

    ResponderBorrar
  5. Ah yo aprendí Fortran IV en la universidad y Basic, Cobol, Foxbase afuera. la programación por objeto ni siquiera coamprendo qué es. Vi su página del Programador Casual que me pareció genial.
    Es mas hay un problema que no he podido resolver nunca. Probablemente no se pueda. Es así: dado un formularo cualquiera, escanearlo y luego escribire arriba desde el Word

    ResponderBorrar
  6. Cobol...ahí sigue sólido en los bancos y otras viejas instituciones con sus elegantes divisiones y práctica forma de declarar datos. Es cierto, Java y .NET si bien vinieron a facilitar enormemente las cosas con su imposición del paradigma orientado a objetos también hicieron fome el programar, ya no es entretenido como la vieja escuela. Clipper y otras bellezas pasaron a mejor vida, aunque C se resiste a morir y creo que va a ser vigente por mucho tiempo.

    ResponderBorrar
  7. Eva jajaja que buena! y el diseño es de Rubén, claro que para usar las camisetas con un lenguaje de programación hay que pesar más de 100 kilos, usar lentes y barba ¡a lo Stallman!

    Ulschmidt, muy bueno el Fortran y Cobol, padres de todos los que vinieron después. Ah y ahora los scanner vienen casi todos con un programa OCR que transforma imágenes en caracteres, escaneas algo y te lo pasa a Word altiro, claro que no son 100% exactos pero sirven, después al Word lo corriges.

    Sigfridus, claro, es por la clase de programas. Los sisteamas demasiado enredados es de locos programarlos con Visual Basic o algo así (he visto unos de gestión municipal monstruosos) pero ahora que está el SAP hasta eso se puede hacer con cierto orden y facilidad, claro que programar eso tiene menos brillo que un zapato de gamuza.

    Los viejos programas en Cobol siguen produciendo como burritos de carga, claro que tienen más parches que líneas originales de programa, cosa de ver lo que pasó el año 2000 con la fecha.

    ResponderBorrar
  8. Jajaja, Tomás deja de basurearnos, Visual .NET trae toda una plataforma detrás que se preocupa de las cosas demasiado técnicas que te hacen perder tiempo en tonteras en vez de pensar en que le gustaría tener al usuario y que es sería bueno para el negocio. Con los computadpres cada vez con mas capacidad, en general, no importa tanto que tan óptimo es un código, lo importante es el usuario, cuanto te demoras en tenerlo en producción y cuanta platita vamos a ganar con el.
    Claro que si necesitas código eficiente ahi tienes C donde puedes programar hasta el último BIT para que sea extremadamente rápido (especialmente en aplicaciones con alta transaccionalidad).
    Esto es una guerra santa, C, Java, .NET, etc.
    cada lenguaje es mejor en algunas cosas que los otros.

    David Ricardo cachaba hasta de computación :D

    ResponderBorrar
  9. Claro que si, cada lenguaje tiene su nicho, no hay mejores ni peores, depende de la aplicación nomás. Lo malo es que desde las universidades (la UTFSM por ejemplo) algunos profesores adoptaron la cosa como religión y formaron a un montón de fanáticos incapaces de darse cuenta que hay sistemas grandes y chicos y que ambos son importantes. Tengo amigos que estudiaron allá y hablan como canutos o veganos! por eso los palos ;D

    ResponderBorrar
  10. te dije, guerra santa. Así como Linux / Windows, Colo Colo / U. de Chile, tangananica o tangananá, etc.

    ResponderBorrar
  11. Si son puras tonteras. Me acuerdo de Horst Von Brandt despotricando contra Microsoft en la tele, cuando cada lenguaje y cada sistema tiene su gracia.

    Sería imposible o cosa de locos hacer un buen sistema operativo en un lenguaje de más alto nivel que el C++, que tiene la combinación perfecta para tener mucho control sobre los datos, programar de manera ordenada y metódica, crear bibliotecas y todo eso. Pero que es fome es fome :D

    ResponderBorrar
  12. Malandra en el teclado26 enero, 2013 17:42

    Dos lecturas que tal vez te resulten interesantes, Tommy Boy:

    http://www.tcl.tk/doc/scripting.html
    http://www.paulgraham.com/icad.html

    ResponderBorrar
  13. Excelentes los dos artículos, creo que dan justo en el punto. Pensar que tuvieron que pasar más de 14 años para que las cosas empezran a cambiar, yo en 1999 me quejaba amargamente de todo esto: http://bradanovic.loganmedia.com/pcasual/phereje.html

    ResponderBorrar
  14. Me tocó conocer a unos tipos ya no recuerdo si uruguayos o argentinos que se hicieron ricos "saltándose el SAP". Programaban pequeñas rutinas por fuera de SAP para hacer el funcionamiento más eficiente y ahorrar mucho dinero en científicos que cobran más de 600 dólares la hora para que el famoso SAP haga lo que dicen que hace.

    Creo que estos sistemas que sirven para todo y lo hacen todo terminarán siendo nuevos engendros en que cada empresa tendrá un legacy particular.

    ResponderBorrar
  15. El SAP es otro temazo de la programación: solo a los alemanes se les pudo haber ocurrido que las organizaciones deben adaptarse a un programa "one size fits all" es una idea descabellada pero tiene la ventaja para los directivos de las organizaciones que pueden comprar llave en mano. Pero los problemas vienen después cuando inevitablemente hay que hacer cambios porque las necesidades nunca permanecen estáticas y tienen que llamar al consultor que les saca un ojo de la cara por cada hora de trabajo.

    Al saltarse el SAP haciendo pequeñas aplicaciones paralelas, que trabajan reusando la información que entrega el SAP (yo he visto de esas hechas en VBA!!) es la solución lógica, pero entonces empiezan los problemas de los sistemas legados y todo eso.

    Aunque el SAP funciona a veces a mi no me gusta para nada esa idea de un sistema monoítico al que las organizaciones deben adaptarse. Es una idea muy de profesores universitarios, que no le han trabajado un día a nadie y dan cátedra de como se deben solucionar los problemas.

    ResponderBorrar
  16. SAP para empresas grandes es genial, las ordena increiblemente, y obvio que tienes que tener tu propio informatico que sepa SAP y pueda programar las "customizaciones" que sean necesarias, todo esto dentro del mismo SAP.

    desde 3000 dólares brutos mensuales encuentras un informatico-SAP

    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"