La Silenciosa Resistencia del BASIC

 
"Yerba mala nunca muere"
(dicho popular)
 Lenguajes  de programación hubo y va a seguir habiendo cada vez más. También algunos menos. Hay lenguajes de esos que todos oyeron hablar pero nadie vio jamás una mínima sintáxis como para reconocerlos: ADA, ALGOL, PL/I… Otros que nadie vio pero la sintaxis se la imagina: Modula-2. Creado por Niklaus Wirth, el papá del Pascal, debe ser parecido al Pascal (claro, la pregunta es cómo lo vamos a distinguir si efectivamente se parece al Pascal…)

Hay lenguajes que fueron un caño en su época ("un caño" en argentino es que fueron "lo máximo"), como el Lenguaje C. En su momento se veían tan potentes que daban a pensar que eran "el lenguaje del futuro". Que iban a desbancar a lenguajes más mediopelo como el BASIC o jurásicos como el COBOL. En su época, el C marcaba lo que la evolución de aquel entonces indicaba. La consigna de Brian Kernighan y Denis Ritchie parecía ser "hace falta un lenguaje tan potente como el Assembler pero de alto nivel como el BASIC". Comparado con el Assembler, era de alto nivel sin duda. Que en paz descanse

Después surgió el paradigma Orientado a Objetos (OO) de la mano del SmallTalk pero nos agarró a todos demasiado estructurados por Yourdon. Marche pa’ fuera. Así fue que un individuo de nombre impronunciable (puras consonantes) extendió el C para hacer C++, un lenguaje "casi" orientado a objetos si no fuera que con un puntero podíamos meternos en cualquier parte de un objeto y hacer lo que se nos diera la gana (ma qué encapsulamiento ni que ocho cuartos)

El problema con C++ fue el mismo que con SmaillTalk: una cuestión de timing. Por aquel entonces las universidades no enseñaban orientación a objetos como algo curricular sino que en alguna materia de Análisis de Sistemas se explicaba la filosofía (y en mi caso personal me acuerdo que no entraba en el examen). Intentar aprenderlo por uno no era tarea fácil! La sintaxis era lo de menos: la filosofía, para quien venía del mundo estructurado, no era trivial. Hasta el ejercicio de las figuras geométricas donde Poligono era la clase de la que todas heredaban salvo Cuadrado que heredaba de Rectangulo que heredaba de Cuadrilatero se entendía todo. Más allá de eso…

A todo esto, BASIC que desde la época de la Texas (TI-99/4A) le había ganado al LOGO, sin perjuicio de que en la Sinclair y la Commodore ni siquiera tuvo rival, había entrado en la PC como GW-BASIC primero y como Quick Basic después. Pero con la masificación de Windows 3.1, una transformación que lo dejó estructurado en Modules (es decir, arrivederci GOTO) lo relanzó como Visual Basic. BASIC quiere decir Beginners All-Purpose Symbolic Instruction Code (Código de Instrucciones Simbólicas para Todo Propósito de Principiantes). Si de principiantes se trató, la historia que veremos va a mostrar que la mayoría nunca quiso dejar el chupete

Mientras tanto, en el ámbito laboral, OO era algo que la mayoría desconocía, y el COBOL firme como rulo de estatua

James Gosling, un científico de Sun Microsystems concientizado de las complejidades inherentes a C++ que le impedían penetración masiva en el ámbito empresarial (igual que al C) creó Java, un lenguaje del que una de las primeras definiciones escuchadas por el Río de la Plata fue "es un C++ menos menos" (un C++ con menos cosas). Esas menos cosas eran los punteros y algunas otras cosas peligrosas para dejarlas al alcance de tontos como la mayoría de nosotros somos (ni los más ni los menos, pero en la mitad de la tabla de tontos por ahí debemos andar). Una máquina virtual nos administraba el ambiente donde nuestra aplicación se iba a ejecutar (incluso podíamos dejar tirada memoria en cualquier lado que luego nos recolectaba la basura y la reciclaba)

Java nació con otras premisas como la de ser una especificación estándar que luego varios vendedores implementasen en diferentes plataformas. Este santo grial se venía persiguiendo sin éxito desde el C de Kernighan y Ritchie, pero en aquella ocasión falló porque cuando se usaba C para manejo directo de la memoria, nos encontrábamos con particularidades como que la arquitectura x86 guardaba el byte más significativo de un word o de un doble word a lo último, no al principio. Aquel incauto que creyera que por escribir código ANSI C estaba garantizandose el Paraíso no sabía el infierno que le esperaba si pretendía cambiar de arquitectura física. El otro casque, como dirían en España, que tuvo C es que no faltó aquella arquitectura que para transmitir un byte por el bus de datos, usara 7 de los 8 hilos para datos y 1 para checksum, por lo que en estas plataformas un byte eran 7 bits!! Esto motivó a franceses y españoles en sus bibliografías técnicas a referirse a octets u octetos respectivamente, y evitar así esa inoportuna ambigüedad de la palabra byte

Gracias a la ventana de oportunidades que abrió Internet, sumado a la problemática del año 2000 (Y2K) que motivó a varias empresas a empezar de cero, Java logró ganar un lugar importante en la empresa. Con todo, ese "C++ menos menos" se fue desvirtuando con las idas y vueltas de la especificación J2EE, que lo dotó de APIs potentísimas, robustas y escalables… siempre y cuando encontremos primero alguien que las entienda (y mejor aún si ya sabe, más allá de lo que el estándar indique, qué cosas se recomienda no hacer, conozca de patrones de diseño, etc). No voy a despotricar contra la plataforma que me dio de comer durante más de cinco años porque ya me descargué acá

Mientras tanto, Microsoft obligada por el éxito y avance de J2EE que eclipsaba su plataforma de misión crítica de aquel entonces, Windows DNA, lanzó la plataforma .NET mostrando claramente el aprendizaje de una moraleja: lenguajes va a seguir habiendo toda la vida y los desarrolladores van a ir segmentando su expertise en algunos de ellos, no en todos

.NET es una plataforma parecida a Java en cuanto a que tiene un entorno de ejecución administrado, pero es bien distinta en cuanto a que admite que los desarrolladores son una fauna heterogénea y la clave es poder contenerlos a todos. No hay, por consiguiente, una única sintaxis para ejecutar comandos. Habrá todas las que sean necesarias. Además, más allá del propósito general de los lenguajes masivos, ciertos lenguajes basados en paradigmas alternativos como el Prolog (paradigma relacional) pueden servir para expresar reglas de negocio o inferir tendencias en sistemas comerciales. Que se suban también! La semana pasada Microsoft liberó la beta 1 de su compilador de Python para la plataforma .NET 2.0

Anders Hejlsberg, que años antes había dotado de objetos a Pascal creando Delphi (que suena mejor que Pascal++), se acopló entonces para crear un lenguaje que significase la evolución de su Delphi, Java y C++. Con esos tres padres se fecundó C#. Está pensado para desarrolladores con fuertes habilidades (skills) en orientación a objetos que vengan de lenguajes o plataformas similares

Pero el gran golazo de .NET fue no haberse olvidado de la masa, de las mayorías postergadas: Visual Basic++ tampoco lucía bien así que lo llamaron simplemente Visual Basic .NET. El viejo y querido BASIC, aquel que más de una vez habremos dicho "cuando todos sepan C va a morir", "ahora que salió PowerBuilder lo van a dejar de usar", "vas a ver que Java en unos años más lo va a matar"…

Visual Basic .NET es el lenguaje .NET más usado a nivel local y a nivel mundial, y el responsable del rápido crecimiento de la plataforma .NET en todos los ámbitos a un ritmo tal que algunas voces autorizadas se atreven a insinuar que "Java podría ser el nuevo COBOL" (en unos párrafos más se va a entender mejor qué significa esa apreciación)

Qué es lo que mantiene a BASIC vigente? La simplicidad. En tanto que C, C++, Java, C#, Delphi y otros quisieron sorprender por el lado de la grandilocuencia, lo políticamente correcto, las grandes teorías filosóficas, sorprendieron tanto que fueron pocos los que pudieron salir de la sorpresa

BASIC es aristotélico: hace filosofía a partir de cosas mundanas. Reconocibles, distinguibles y entendibles por todos. Los otros lenguajes también hacen filosofía. Pero en este caso es platónica. Viene del mundo de las ideas, del más allá. Hay que inspirarse mucho para entenderlas

Como garantía de que Microsoft nunca baja la apuesta sobre la comunidad BASIC, un equipo del comité de Patterns & Practices, comandado por Eugenio Pace, distribuyó unas guías para apoyar el proceso de migración desde VB6 a VB.NET, así como también una herramienta de estimación de esfuerzos

COBOL está en la línea del BASIC: simple (más allá de que sólo se pueda escribir desde la columna 8 y antes de empezar la lógica esté todo ese preámbulo de la ENVIRONMENT DIVISION, DATA SECTION, FILE SECTION, etc). También lo ayuda el hecho de que es el principal lenguaje disponible en el mainframe, plataforma de hardware tan cara que quien ya haya hecho la inversión no va a cambiarla así como así. Mi paso por una telco argentina en la segunda mitad de los ’90 me mostró que había dos estándares: COBOL y CCOBOL era conocido por todos, incluso el que no lo conocía lo terminaba aprendiendo dado que había que mantener fuertes porciones de lógica de aplicación. C, que se usaba para el framework de bajo nivel sobre el que se montaba la lógica de negocio en COBOL, era entendido por varios menos aunque se presumía que, al igual que con el COBOL, llegado un punto lo íbamos a conocer todos. Hasta que una vuelta un valiente se puso las pilas y desarrollo el primer caso de uso de negocio completo en C. Comparado con la legibilidad del COBOL, nadie más volvió a intentarlo. Lo que sí, por la salud del COBOL, ojalá que no muera el mainframe. Los que resisten desde aquella trinchera tienen su propio sitio web: http://www.cobug.com. No me quisieron responder cuando les pregunté en qué lo codificaron

Personalmente el lenguaje de mi devoción fue Java. Pero fue una mujer muy difícil de seducir. Tan misteriosa y atrayente como cruel (el tema es que esa clase de amores dañinos nunca se olvidan). Hoy tengo J#, un lenguaje .NET que respeta fielmente su sintaxis, pero lo cierto es que C# es el heredero del mío cuore

Lenguajes como Clipper y Visual FoxPro son de la familia del BASIC, pero no prosperaron principalmente por la falta de soporte. Computer Associates se puede sentir satisfecha de que cuando el DOS se retiraba de la escena tenía en Clipper el lenguaje más pragmáticamente popular. Ojalá algún día expliquen qué quisieron hacer con Visual Objects, la versión de Clipper para Windows (las malas lenguas dicen que no les compilaba ni a ellos)

Visual FoxPro, por decisión de Microsoft, sigue evolucionando en forma separada a la plataforma .NET si bien puede interoperar con la misma. Podríamos decir que COBOL tuvo más suerte

Me quiero despedir apelando a vuestra nostalgia, con algunas líneas de código (fueron probadas en un emulador deTMS9900, el procesador de la Texas Instruments 99/4A)

> 10 REM *********************
> 20 REM * COMIENZO PROGRAMA *

> 30 REM *********************
> 40 PRINT "YERBA MALA NUNCA MUERE!!"
> 50 PRINT "PULSE ENTER"
> 60 INPUT K$
> 70 END
> 80 REM ****************
> 90 REM * FIN PROGRAMA *
> 100 REM ****************
> RUN
YERBA MALA NUNCA MUERE!!

** READY **

Forever ready   :’-)

Esta entrada fue publicada en Software Management. Guarda el enlace permanente.

4 respuestas a La Silenciosa Resistencia del BASIC

  1. Carlos Rubén dijo:

    Aguante la Commodore 64!!!!
    Diegum! Saludos de tu ex recurso Carlos Mercado (Año 2000 en Novamens)

  2. Diego dijo:

    El Charly Market!!! Por dónde andás, mastro? Sabés q te perdí el rastro, todas las cuentas me rebotan
    Un abrazo, Carlitos

  3. Diego dijo:

    Ah la la, si es por eso ahora deschavo yo:
     
    Mi primer libro de computación fue "Alas para la Mente", del Ing. Horacio Reggini (1982). Me lo compraron mis papis en 1983 cuando tenía 13. Era de lenguaje LOGO
     
    Dos reportajes a Reggini, posta, acá
     
    http://weblog.educ.ar/educacion-tics/cuerpoentrevista.php?idEntrev=92
    http://roble.pntic.mec.es/~apantoja/nombres/entreggi.htm

Replica a Diego Cancelar la respuesta