Los cuatro lenguajes pioneros: COBOL

Los cuatro lenguajes pioneros: COBOL

Hoy debes estar programando en tu Python, Java, PHP, <%= pon tu lenguaje preferido aquí %>, y ya debes haber pensado: ¿Cómo surgieron los lenguajes de programación? ¿Cómo era en la época del comienzo de las computadoras? ¿Por qué los idiomas son tan diferentes entre sí?

Para responder a sus preguntas, hicimos una serie de artículos sobre los orígenes de los lenguajes de programación con los cuatro lenguajes fundadores: Fortran, COBOL, LISP y ALGOL, el contexto histórico, sus influencias en la actualidad y, un poco de código. , porque somos programadores.

Comencemos nuestra aventura con el principio de todo: ¡el lenguaje COBOL!

Contexto histórico

Década de 1950: inicio de la Guerra Fría, inversiones masivas en desarrollo de armamento, ciencia y carrera especial. En estos usos, las computadoras ya hacían mucho trabajo científico y se introducían a escala comercial.

Todavía no había computadoras personales y mucho menos teléfonos celulares. En esta década, IBM, Burroughs, Siemens y otros fabricantes ya vendían computadoras gigantes y carísimas a gobiernos y grandes empresas. El modelo de negocio de estos fabricantes era la venta de hardware a alto costo y el software solía ser un problema para la empresa propietaria de la computadora. La computadora se hizo exactamente para las necesidades de cada fabricante.

IBM 704 - Um computador top para a época com capacidade de 40.000 instruções por segundo. Foram fabricadas apenas 123 unidades.
IBM 704 - Una buena computadora para la época, capaz de 40.000 instrucciones por segundo. Solo se fabricaron 123 unidades.

La programación en este momento era difícil porque el software solo se creaba con un ensamblaje específico para cada computadora y cada fabricante, es decir, el software hecho para una máquina IBM no funcionaría en un Elliot.

Además, Assembly es un lenguaje de bajo nivel en el que el programador necesita colocar instrucciones específicas para que cada procesador realice el cálculo, llevando los datos a la memoria y realizando cada cálculo con las instrucciones del procesador. Esto dejó a las computadoras inaccesibles para científicos, ingenieros o especialistas no tecnológicos que querían enfocarse en cálculos matemáticos o comerciales.

Instrucciones de código de una IBM 704 para hacer un cálculo.

La entrada de datos era muy rudimentaria y todavía usaba tarjetas perforadas, las salidas eran impresoras de matriz de puntos muy lentas (Imagínese lo terrible que era depurar en ese momento).

Tarjeta perforada como entrada para computadoras.


Sin embargo, nuestros 4 idiomas cambiaron todo:

  • COBOL inauguró la computación comercial;
  • Fortran fue el iniciador de lenguaje enfocado en científicos;
  • LISP trabajó con los inicios de la inteligencia artificial;
  • ALGOL describió algoritmos e influyó en muchos lenguajes modernos.

Comencemos la aventura en la informática empresarial con COBOL.

Llegada de la Computación Comercial

Una de las razones para comprar una computadora súper cara a partir de la década de 1950 fue la informática comercial. ¿Pero qué es esto? Como sabemos, las empresas y los gobiernos necesitan hacer mucho procesamiento:

  • Cálculo de impuestos sobre productos y transacciones.
  • Cálculo de nómina.
  • Transacciones financieras entre empresas.
  • Control de inventario.
  • Cálculo contable.

Y muchas otras aplicaciones más. Sin embargo, tuvimos algunos problemas: los lenguajes de la época eran muy difíciles y Fortran aún era un recién llegado totalmente enfocado al cálculo matemático. Además, un código hecho para una máquina no funcionaba en otra máquina de otro fabricante, es decir, no teníamos portabilidad de código.

En este contexto nació COBOL.

COBOL

IDENTIFICATION DIVISION.

PROGRAM-ID. HELLOCOBOL.

 

PROCEDURE DIVISION.

DISPLAY "HELLO, COBOL!".

STOP RUN.

HELLO, COBOL!

Grace Hopper y su equipo trabajando en COBOL.


Ante el problema de la necesidad de crear software con fines comerciales, el Departamento de Defensa de EE. UU. patrocinó un proyecto para crear un lenguaje para el procesamiento de datos. El equipo de Grace Hopper en 1959 creó el lenguaje común orientado a los negocios, el acrónimo de COBOL (COmmon Business-Oriented Language). Más información sobre Grace Hopper aquí (en portugués).

A diferencia de los demás lenguajes de esta lista, COBOL no captó la atención de los informáticos de la época. No fue hasta la década de 1970 que COBOL se convirtió en el lenguaje preferido para el procesamiento comercial debido a su portabilidad y facilidad de programación.

Innovaciones y Código

Hoy en día, es natural que el código en Java o Python se ejecute tanto en una Mac como en una PC, pero en 1959 esto no era factible y esta fue la primera hazaña de COBOL: fue uno de los primeros lenguajes en ser portátil, es decir, para ejecutarse en 2 computadoras que fueron hechas por diferentes fabricantes. Solo para tener una base de comparación, el lenguaje Java, que nació con una fuerte propuesta de portabilidad, apareció recién en 1995, 36 años después.

Otra característica llamativa es su sintaxis con una estructura muy similar a la escritura del idioma inglés, lo que permitió a muchos programadores aprender el lenguaje rápidamente y enfocarse más en las reglas de negocios y procesamiento que en el hardware en el que trabajaban.

Veamos un código "pequeño" en COBOL que asigna valores a 4 variables:

            IDENTIFICATION DIVISION.

            PROGRAM-ID. VARIAVEIS.


            DATA DIVISION.

              *> Esta sessão se define as variáveis

              WORKING-STORAGE SECTION.

              *> Define um número com sinal, 3 dígitos,

              *> e dois números decimais. Será 0 por padrão

              *> S: SINAL

              *> 9: valores numéricos

              *> V: PONTO DECIMAL

              *> Foi atribuído o valor -123.45.

              *> 01 no início descreve registro de entrada

              01 PRIMEIRA-VAR PIC S9(3)V9(2) VALUE -123.45.

              *> define uma string de 6 caracteres

              *> inicializa com abcdef

              01 SEGUNDA-VAR PIC A(6) VALUE 'ABCDEF'.

              *> Podemos agrupar variáveis

        01 ENDERECO-REVELO.

    05 NUMERO PIC 9(4) VALUE  2537.

      05 RUA PIC X(15) VALUE 'AV. PAULISTA'.

       05 CIDADE PIC X(15) VALUE 'SAO PAULO'.

       05 PAIS PIC X(15) VALUE 'BRASIL'.

      

            *> Aqui o código é executado

            PROCEDURE DIVISION.

              DISPLAY "1a VARIAVEL :"PRIMEIRA-VAR.

              DISPLAY "2a VARIAVEL :"SEGUNDA-VAR.

              DISPLAY "GROUP VAR :"ENDERECO-REVELO.

              STOP RUN.

Esto imprimirá:

1a VARIAVEL :-123.45

2a VARIAVEL :ABCDEF

GROUP VAR :2537AV. PAULISTA   SAO PAULO      BRASIL  


Me gustaría llamar la atención sobre la estructura de COBOL. Todo es posicional, incluida la salida.

Vemos en la dirección que el texto ocupa exactamente el espacio reservado para él. Dato curioso: aún hoy COBOL mantiene la estructura posicional y el límite de 80 columnas por línea (¡Y tú quejándote de la sangría de Python!).

Otro punto a destacar del código COBOL es la organización y para ello utiliza el concepto de divisiones:

  • División de identificación de programas,
  • División de datos para declaración de variables y
  • División de la ejecución del código.

Todo muy bien organizado para el procesamiento de datos.

Curiosidades

Uno de los culpables del Millennium BUG fue COBOL. La razón era simple: como las computadoras tenían poca memoria y disco, los años se representaban con 2 dígitos en lugar de 4, por lo que 1994 pasó a ser solo 94. Con la llegada del año 2000, esto se convertiría en un problema para el cálculo de años, porque `99 > 00` sería falso. Para resolver este problema a gran escala, se llamó a varios programadores de COBOL jubilados para solucionar el problema y, como vimos, el Millenium Bug fue una amenaza que nunca sucedió.

Otro dato curioso es la propia verbosidad de COBOL. Hay 300 palabras reservadas para describir comandos y acciones. En comparación, el lenguaje C tiene 37 palabras reservadas y Python tiene 33 palabras reservadas. Debido a esta alta complejidad, otros lenguajes ganaron espacio.

Finalmente, un hecho que aún prevalece hoy en día es que el código COBOL no puede tener más de 80 caracteres por línea, incluidos los espacios. Aunque el límite es absurdo en las máquinas modernas, la limitación proviene de las tarjetas perforadas que eran la forma de ingresar software y datos en los mainframes antiguos.

¿Qué pasó con Cobol?

"¡Si está funcionando, no te metas con él!" es la máxima del área de la tecnología que se utiliza mucho para el software hecho en COBOL. Aplicaciones como procesamiento de transacciones bancarias, tarjetas de crédito y facturas todavía están en COBOL y permanecerán así durante bastante tiempo. Y aunque es un "abuelo de los lenguajes", COBOL se ejecuta en mainframes modernos.


Mainframes de grandes centros de datos. Puede ejecutar Chrome con muchas pestañas sin fallar.

Para tener una idea de la estabilidad de COBOL en este contexto, el 95% del procesamiento de tarjetas en cajeros automáticos a nivel mundial y el 80% de las transacciones financieras pasan por software hecho en COBOL, según una estimación hecha por Reuters.

En próximos capítulos

COBOL abrió muchas puertas a la informática comercial. Pero, ¿cómo empezó todo? ¿Cuál fue el primer lenguaje de alto nivel? En mi próxima publicación, hablaré sobre otro gran pionero del mundo dev: Fortran.