29 noviembre 2018

Programación para las masas


Acabo de terminar, corregí y subí el segundo curso a BGL Academia Online, se llama Cualquiera Puede Programar y se trata justamente de eso, de enseñar a cualquier persona que nunca en su vida haya escrito una sola línea de código -si tiene alguna experiencia mejor- a hacer programas sin necesidad de comprar e instalar ningún complicado lenguaje con sus dlls librerías y todo lo demás. Nada de eso es necesario, para hacer programas, incuso algunos bastante complicados, solo se necesita tener instalado el Microsoft Office en cualquiera de sus versiones, nada más. Si quieren verlo está justo debajo del curso de Empresas Individuales, pueden entrar con el botón de "Invitado"

La historia del Visual Basic es fascinante, más para mí que lo adopté desde que apareció en el año... a ver, debe haber sido alrededor de 1991, cuando yo trabajaba vendiendo mis programas en los tribunales y los servicios públicos. Un día leí un artículo de mi guru de entonces, el gran Jerry Pournelle, que escribía con entusiasmo sobre el lenguaje que recién había aparecido, me interesó, lo conseguí y lo instalé. Fue amor a primera vista, en menos de media hora ya estaba escribiendo código con soltura,. Nunca otro lenguaje me llegó a impresionar tanto, tal vez Python se le acercó, pero de lejos.

El lenguaje lo inventó un arquitecto llamado Allan Cooper y llamó de inmediato la atención de Bill Gates, quien le compró los derechos y puso a Cooper al frente de una de las operaciones más largas y exitosas en la historia del software comercial y de aplicaciones. Cooper fue un genio y tiene muy buen ganado su puesto en el Hall de la Fama del Museo de Historia de la Computación. su idea fue disruptiva en varias cosas y creo que él solo es el que ha roto y reemplazado más paradigmas.

Su primera idea genial fue separar el diseño de las interfases (ventanas) del código de los componentes. Su segundo aporte inmenso fue el desarrollo de los componentes .vbx que cualquiera podía hacer como cajas cerradas de código de propósito general, con entradas y salidas para usarlas como bibliotecas programas propios o para venderlas a terceros. 

No hubo nada más maravilloso para mi, que durante un montón de años estuve acumulando "subrutinas" para propósito general, que cuando hice mis primeros componentes. Que Elizabeth Taylor o Demi Moore, la verdadera belleza está en la idea de los componentes, nunca ha existido nada más lindo que eso.

El Visual Basic desde el comienzo fue repudiado, hasta aborrecido por los profesores de computación. Durante muchos años los profesores de informática no lo enseñaron porque lo consideraban "poco digno", así me dijo un profesor bien famosillo en su época, en un encuentro informático en Santiago. Pero fue nada menos que Linus Tovalds, el inventor del Linux quien puso las cosas en su lugar cuando dijo 

"(...)por ejemplo, personalmente creo que Visual Basic hizo más por la programación qu lo que hicieron los lenguajes orientados a objetos, aunque la gente se ria del VB y diga que es un mal lenguaje y lleven décadas hablando de la orientación a objetos. Pero no, Visual Basic no fue un gran lenguaje pero sus interfaces sencillas con las bases de datos fueron fundamentalmente imás importantes que toda la programación orientada a objetos"

Esa fue una batalla que duró años porque los profesors defendían furiosamente los lenguajes orientados a objetos y hablaban pestes del VB, Sin embargo nunca conocí un profesional de la programación de aplicaciones que no lo hubiese usado, la mayoría lo tuvieron que aprender por su cuenta. Luego apareció una multitud de lenguajes "visuales" es decir basados en la idea de Cooper de diseñar las pantallas primero y después programar los componentes.

Obviamente que VB no es la panacea y para algunos tipos de programación simplemente no sirve, hoy, la programación en web con Java Script, en cierto modo ha tomado el lugar que antes tuvo el VB. Obviamente Visual Basic no sirve para programación de sistemas, sin embargo hasta el día de hoy creo que no existe mejor herramienta para programar aplicaciones, especialmente comerciales como son los front-end de bases de datos, es decir la enorme mayoría de las aplicaciones. Eso es lo que notó Linus Tovards: la combinación de VB con las bases de datos es explosiva.

Pero todavía faltaba lo más genial de todo. No se quien tuvo la idea pero supongo que debe haber sido del mismo Bill Gates y esta si que es una idea maravillosa: permitir que los documentos, hojas de cálculo, presentaciones, etc. generadas por la suite Office pudiesen llevar código "incrustado" en ellas. Es decir, un documento del Word además del texto, en algún lugar podía aadmitir instrucciones para ejecutar un programa.

En el modelo trdicional para que funcione un programa primero tenemos que instalar el compilador o intérprete y el entorno de desarrollo, que implica cientos a miles de archivos de software. Lo genial es que todo eso, desde hace años, está incluído en el MS Office así es que donde tengamos instalado Office, en prácticamente todos los computadores personales del mundo, podremos ejecutar los programas, que estarán "incrustados"en los documentos de Office.

¿Por qué siendo un invento tan maravilloso no lo aprovechó todo el mundo? En pate por la forma en que ha evoluionado la computación, la programación de aplicaciones locales está tendiendo a desaparecer y ha sido reemplazada por las aplicaciones web, es decir, el mismo concepto existe ahora, pero el entorno es la web y el intérprete de los programas es el propio explorador de Internet.

Igual, siempre se necesitarán programar aplicaciones localmente para problemas de nicho, poco usuales o tareas sencillas y repetirivas como las micro-aplicaciones. Por ejemplo un contador puede transformar una hoja de Excel en un programa completo de contabilidad, un transportista puede controlar fácilmnte la bitácora de sus camiones, un pequeño comerciante su inventario, etc.

Hay muchas aplicaciones de nicho, para los notarios y archiveros por ejemplo, que necesiten hacer escritos automáticos con rapidez y que queden registrados automáticamente en el disco, para poder rcuperarlos con facilidad, etc.

Recuerdo que un amigo notario de Costa Rica una vez me pidió una muestra para hacer sus documentos cn rapidez, quedamos en que me lo iba a comprar, cuando lo recibió estaba feliz porque le funcionaban perfecto, la cosa es que aprendió a hacerlas el mismo y nunca me pagó un peso, así es que se cumplió el dicho "nadie sabe para quien trabaja"

En fin, las entradas de ayer y de hoy no le van a interesar a nadie pero que me importa, soy soltero y escribo lo que quiero.

14 comentarios:

  1. Bah, veo tu Alan Cooper y te subo a un Anders Heljsberg.

    Por ahí por el 91 Visual Basic era la nueva joyita de Microsoft, y Excel estaba en el proceso de reemplazar su lenguaje de macros con algo más moderno. La decisión de usar Visual Basic era natural, así que no se sabe a quien se le prendió la ampolleta (es como obvio que quieres hacer sinergía entre tus productos). Pero la persona que estuvo a cargo de ese proyecto fue Joel Spolsky. Acá hay una historia entretenida sobre eso: https://www.joelonsoftware.com/2006/06/16/my-first-billg-review/

    ResponderBorrar
  2. sumamente interesante, en estos momentos estoy ayudando a automatizar la academia de yoga de una amiga con excel y vba. del pago mejor no hablo, pero sospecho que se lo imaginan. una pista, clases de yoga no son.

    ResponderBorrar
  3. VB, me costó ene aprenderlo ya que no había mucha información en aquel entonces. de hecho fue "la llave" para poder entrar al sistema publico (recien estaba aprendiendolo cuando ingresé pero dije que sí sabía) pero por tiempo y un poco de mareo decidí no seguir indagando. Me incliné por Deplhi, que era como la "contracara" de VB pero también decidí dejarlo de lado.

    Ahora necesito con urgencia un buen curso de programación web en HTML5, su buena dosis de tiempo y mucha paciencia para poder desarrollarlo. lo otro ¿como lograste hacer lo de tu servidor?

    ResponderBorrar
  4. Demi More, por componentes o entera, sin duda. Mejor entera.
    El VB fue mi límite, pasé del Basica al Foxbase y cuando debía llegar al VB descubrí que mi trabajo era otro y ya no encontré tiempo para programar. Debería tomar su curso... Uls

    ResponderBorrar
  5. Leus, Heljsberg es del Pascal, el mundo de los programadores se divide entre los que nos gusta el Fortan (Basic, Python y lo demás) y los que les gusta el Pascal (C, C#, Java, etc.). Yo nunca me sentí cómodo con esas absurdas llavecitas y la indentación obligatoria (bueno, el Python también la tiene)

    Creo que el concepto de colocar un lenguaje full en lugar de un lenguaje de macros dentro de un documento fue lo más genial, mal que mal todos los progamas se escriben en texto plano, así es que daba lo mismo, la diferencia era poner un intérprete mucho más poderoso en la aplicacion, en este caso en el Office. Creo que eso fue copiado después al poner un intérprete en los browser y es la base de toda la programación web. El Visual C# es una copia del Visual Basic nada más, para los que prefieren Pascal:D

    Creo que el Basic, que fue tan vilipendiado en su época, volvió en gloria ymajestad con Python, que es un lenguaje del mismo estilo, el que sabe Basic sabe Python automáticamente, claro que aprender a indentar bien friega un poco pero es una práctica buena y necesaria, creo que estuvo bien que la hicieran obligtoria. ¡Bueno el link!

    Anónimo, avísame si necesitas un ayudante, trabajo encantado por las propinas en clases de lo que sea, de preferencia si son de lo que yo me imagino.

    José, lo bueno del VBA es que no necesitas instalar nada, si tienes el Office ya tienes todo lo que se necesita listo para funcionar y el lenguaje es full: puedes conectar a bases de datos desde una hoja Excel, hacer un browser con un par de líneas de código, todo.

    Para aprender HTML 5 o casi cualquier cosa, la Catedral de la Programación es https://www.w3schools.com Allí está todo y gratis. Te recomiendo hincar el diente a Java Script y Python, creo que son "los lenguajes del futuro" (chiste), no, en verdad creo que son importantes, Java Script ha evolucionado de manera muy parecida al Basic, de manera independiente de las universidades y profesores, es un lenguaje hecho principalmente por y para programadores prácticos, creo que es lo más útil que se puede aprender hoy. También es un concepto muy bonito.

    Mi servidor lo compré por 8 dólares, durante 4 años en eBay, es full, tiene de todo: ancho de banda ilimitado muchos gigas de disco solido, Softaculous, Cpanel, todo. En eBay está la papa, lo mismo para comprar software legal de Microsoft.

    Ulschmidt, ¡Demi More! uhhh
    El VBA es el mejor lenguaje que existe hoy para aplicaciones de pequeños negocios y no cuesta nada aprenderlo, en el primer curso (que acabode publicar) está todo lo que necesita saber alguien para partir programando, todo lo fundamental para casi cualquier aplicación comercial, lo demás es una extensión nomás, el curso total es solo 1 hora 20 minutos en 10 lecciones entre 5 y 14 minutos cada una, es muy liviano.

    En estos días subiré la segunda parte que enseña a hacer aplicaciones completas en Excel, grabando archivos de texto plano en el disco. Con eso se pueden hacer inventarios, contabilidad y todo eso



    ResponderBorrar
  6. a propósito del link que mandó Leus, yo había leído hace un montón de años atrás (no me acuerdo donde) esa anécdota de Bill Gates cuando se dio cuenta del bug de la fecha en el proyecto del Visual Basic, nada que decir, un crak

    ResponderBorrar
  7. De ahí vinieron las copias mejores, como el Delphi o C++ Builder (que era C++ nada más). Pero sí, lo más práctico del mundo es VB, a años luz de Java que está orientado a otras cosas.

    ResponderBorrar
  8. Si, Java es enredado pero Java Script (que no tiene casi nada que ver con Java) es re sencillo y creo que es indispensable de aprender hoy porque cada vez se programa más en la web usando el browser como intérprete, esa es una idea tan potente como poner un lenguaje completo dentro del MS Office

    ResponderBorrar
  9. De hecho se puede usar JavaScript para desarrollar aplicaciones de escritorio, hay frameworks para eso. Pero nada supera el entorno de Microsoft para estos casos.

    ResponderBorrar
  10. Delphi es una joyita. Estos gallos recién hace dos meses vieron la luz y luego de 20 años sacaron una versión gratuita. Te permite, con el mismo código, escribir aplicaciones para Windows, Mac, Android y iPhones.

    Como lenguaje, Java es mucho más fácil que Javascript puh. Los frameworks y toda la infraestructura existente son difíciles, pero el lenguaje en sí es muy simple. Y con un IDE como IntelliJ cualquiera parece capo, la cuestión casi se programa sola...

    VBA tiene sus cosas, mi programa de facturación electrónica permite ser programado desde VBA (y, por ejemplo, emitir facturas electrónicas desde Excel :-D)

    ResponderBorrar
  11. Unknown, ni me imaginaba que se pudier desarrollar para escritorio en Javascript, igual como dices, para eso los productos Microsoft la llevan por lejos.

    Leus, es que depende mucho del entorno y del tipo de cosas que estés programando. También, tiene que ver con el gusto personal y la costumbre, algunos se sienten más cómodos con las llaves y la indentación, otros no. No se pueden comparar lenguajes que tienen orientaciones distintas.

    Ahora, la programación de escritorio para aplicaciones pequeñas (inventarios, cuentas corrientes, etc.) es algo que ha ido quedando fuera de uso con el tiempo, porque las aplicaciones estanda se han hecho cada vez más potentes y ergonómicas. Por ejemplo el Excel es una aplicación increíblemente poderosa, muy pocos llegan a ocupar todo su potencial pero en economía y estadística por ejemplo, peude tener funcionalidades parecidas al SSPS o al R, lo mismo comointerfaz de base de datos, etc.

    Entonces la programación de escritorio que a comienzos de la computación era la única que existía- va uedando relegada a aplicaciones de nicho, muy específicas para el almacén de la esquina y las clases de yoga ¡exijo mi puesto de ayudante en clases de yoga!

    ResponderBorrar
  12. A propósito de Heljsberg, leo que fue el que cuando lo contrató Microsoft, desarrolló la tecnología .net que reemplazó a la maravillosa tecnología .com, ¡maldita sea su puta madre! ah, solo bromeo.

    Y Delphi ¿no es el Turbo Pascal enchulado? (tratando de iniciar una guerra santa jaja)

    ResponderBorrar
  13. Para aportar algo al tema Javascript. Por estos días es posible utilizar javascript para aplicaciones web que se ejecuten desde el lado del navegador, desde el servidor (usando NodeJS) y aplicaciones de escritorio usando frameworks como Electron.
    Slds.

    ResponderBorrar
  14. Hola Antoio, así es, resulta increíble como ha crecido Java Script, empujado por los propios usuarios. creo que la posibilidad de ejecutar aplicaciones en el lado del navegador de manera fácil fue lo que lo despegó de sus primeros competidores, no tengo idea a quien se le habrá ocurrido primero que el browser se un intérprete, pero la idea es genial.

    P.D. no había visto tus comentarios en Google+ que no lo veo nunca, ahora los voy a ver :D

    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"