COBOL fue uno de los primeros idiomas que aprendí: si ignora innumerables versiones de Basic, tres o cuatro idiomas ensambladores y una variante de Forth, fue en mis primeros cinco y aprendí simultáneamente con Pascal. IOW, estoy respondiendo desde mi experiencia personal usando el lenguaje.
EDITAR Debo decir que la experiencia antigua . Nunca utilicé el idioma después de finales de los 80, aunque compré un libro nuevo (para reemplazar el viejo que tiré con disgusto) para tener algo a lo que referirme para que mis historias de horror no se distorsionaran demasiado. Pero no tengo idea de cómo ha evolucionado el idioma al menos en los últimos 20 años.
Obviamente, para muchas personas, es solo esa visión de "lo viejo es malo" lo que jonsca ya ha descrito, y también mucho más una actitud de pasatiempo de tercera mano. Pero hay problemas reales subyacentes a eso.
Ser demasiado prolijo es un problema real: hay demasiado desorden en la forma de entender el código. Este es, con mucho, el mayor problema. Las personas que se ven en el MOVE
, ADD
y MULTIPLY
declaraciones etc en terror tienen una visión ligeramente exagerada de esto, cierto - la COMPUTE
declaración se acerca más a las asignaciones en otros idiomas. Pero todavía hay mucho desorden en todas esas divisiones y secciones. Una de las primeras cosas que aprendí en COBOL fue comenzar siempre copiando un SKELETON.COB estándar de una página de tamaño A4.
COBOL hace tener algunas características interesantes, pero esas características (por ejemplo, la PIC
cosa) tienden a ser lo que es ahora más parte de los DBMS más que el lenguaje de programación, y que me parece que por lo general ser una mejor manera de separar dichas responsabilidades. Además, algunas bibliotecas en otros lenguajes usan algo comparable a PIC
(por ejemplo, printf y scanf en la biblioteca estándar de C). Podría decirse que lo mejor se ha mantenido, pero lo peor cayó.
Además, para cada característica agradable, había al menos una intolerable. Por ejemplo, no importa cuán trivial sea un bucle, debe mover el cuerpo a un procedimiento separado. Las PERFORM ... UNTIL ...
declaraciones y similares son declaraciones únicas, no estructuras de bloque. En cierto sentido, COBOL fue una muestra de la programación estructurada antes de la invención de la programación estructurada - no era una GO TO
, pero de uso se desanimó (al menos cuando yo COBOL), pero bucle en particular, simplemente no fue manejado tan bien.
De hecho, el lenguaje que usé después de COBOL que más me lo recordó fue ... dBase. Como en Ashton-Tate dBase III +. En estos días, es más probable que las personas recuerden todos los clones ahora muertos o moribundos (Clipper, FoxPro, etc.) que dieron lugar al nombre genérico xBase, y todavía hay un descendiente vivo en xHarbour. El punto es que estos eran lenguajes de bases de datos, pero nada como SQL.
Incluso entonces, donde cada programa COBOL que opera en una base de datos particular necesita incluir una copia de la especificación de esa base de datos (y las copias podrían terminar siendo inconsistentes), ese no es realmente el caso en xBase donde la base de datos conoce su propia estructura.
Teniendo eso en cuenta, entonces, COBOL no es tan terrible si lo acepta por lo que es. Pero lo que no es es un lenguaje para escribir estructuras de datos. Es por eso que COBOL sufrió mucho en los tiempos de las guerras santas C vs. Pascal: ambas partes podrían estar de acuerdo en que COBOL no fue bueno para reinventar el árbol binario nuevamente.
Ah, y una cosa que nunca olvidaré es cómo mi primer libro de texto de COBOL no describió el SORT
comando, diciendo que estaba fuera del alcance del libro, aparentemente, o el autor no pudo hacer frente a la idea de ordenar, o consideraba que era más de lo que las pequeñas mentes de los estudiantes de COBOL podían hacer frente [ver edición al final]. Ese tipo de cosas hizo muy difícil tomar COBOL en serio.
Un aspecto extraño de esto fue la Programación Estructurada de Jackson, que también me vi obligado a aprender aproximadamente al mismo tiempo, y específicamente para usar con COBOL. Parte de esto fue dibujar un diagrama de estructura para la entrada, luego un diagrama de estructura para la salida, luego dibujar el diagrama de estructura intermedia para el código. Claramente se esperaba que la clasificación fuera un problema ya resuelto: no se podría derivar un algoritmo de clasificación de esta manera. Por lo tanto, era extraño que el libro de texto recomendado dijera que todo el concepto de clasificación estaba más allá de mi pequeña mente, mientras que al mismo tiempo se me enseñó algo así como una docena de algoritmos de clasificación diferentes y cómo implementarlos en Pascal.
Los problemas que JSP puede manejar son probablemente una buena guía para las cosas que COBOL puede hacer relativamente bien. Pero incluso entonces, eso no significa necesariamente que JSP o COBOL sean buenas maneras de manejar esos problemas.
EDITAR el 30 de julio de 2014
Acabo de recibir un impulso de reputación, recordándome que está aquí. Como sucede, debido a la recolección de libros antiguos alimentados por la nostalgia, ahora puedo corregir un punto WRT el SORT
comando.
El libro que usé originalmente como texto recomendado cuando aprendí COBOL fue "Programación metódica en COBOL" de Ray Welland. Esto no cubre COBOL 85 (aunque hubo una edición posterior "Programación metódica en COBOL-85" que todavía nunca he visto).
los comentarios a continuación indican que "se suponía que debía ordenar los archivos de entrada antes de leerlos, u ordenar el archivo de salida después de generarlo, utilizando la utilidad de clasificación que viene con el sistema operativo". De mi respuesta a eso, me perdí el punto "vino con el sistema operativo". Kindall estaba sugiriendo algo similar a la filosofía de Unix AFAICT, con COBOL utilizado para los bits para los que es bueno, utilidades del sistema operativo como una utilidad de clasificación utilizada para otras cosas, y presumiblemente usando un lenguaje de lote / scripting / shell para pegar los bits. Esto tiene mucho más sentido en un mundo antiguo donde el software interactivo era raro o inexistente, por lo que estaría enviando lotes de trabajo (de ahí el "lenguaje por lotes") de todos modos.
Lo siguiente se cita de la página 165-166 de "Programación metódica en COBOL" ...
El uso de archivos seriales ordenados implica que es necesario tener un medio para ordenar los registros dentro de un archivo en un orden específico por clave. La mayoría de los sistemas informáticos más grandes tienen una utilidad de clasificación que clasificará un archivo dada la posición, el tipo y el tamaño de cada uno de los elementos de datos que forman la clave.
También hay una instalación para clasificar registros desde un programa COBOL, pero esto está fuera del alcance de este libro por dos razones:
(a) la interfaz con el sistema operativo es a menudo bastante compleja y varía de un sistema a otro,
(b) el módulo de clasificación es una parte opcional de ANS '74 COBOL y no puede implementarse en sistemas COBOL para computadoras más pequeñas.
Por lo tanto, se supondrá que existen facilidades para clasificar los archivos en un orden específico y se considerará el problema de actualizar dichos archivos.
En resumen, un poco correcto es: la suposición era que, por lo general, la clasificación se realizaría fuera de COBOL. Incluso puede haber una justificación real para excluir la clasificación de un lenguaje de programación alrededor de 1974 para computadoras pequeñas.
Lo que dije anteriormente fue básicamente lo que obtienes después de unos 20 años de no poder verificar los hechos debido a tirar el libro.
Sin embargo, aún debo señalar que estudié formalmente COBOL de este libro recomendado que cubría el estándar de 1974 (no el estándar de 1985) en 1988 y 1989. La tercera edición de "COBOL para estudiantes" (Parkin, Yorke, Barnes) - la primera edición que cubre COBOL 85 no se publicó hasta 1990. No estoy seguro, pero creo que la edición COBOL 85 de "Programación Metodológica" no se publicó hasta 1994.
Pero eso no necesariamente representa al mundo COBOL arrastrando los pies, bueno, no tanto de todos modos. La adopción de nuevos estándares lleva tiempo para cualquier idioma, incluso ahora.