-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 El 2008-06-17 a las 21:44 +0200, Camaleón escribió:
El 17/06/08, Carlos E. R. escribió:
No cuela.
A ver, ventajas: son robustas a los campos magnéticos y electricos. Durabilidad garantizada y demostrada durante siglos si se tienen a cubierto de humedad, insectos, e incendios. Desventajas: si se desordenan, la has liado. Son lentas de leer y más de escribir. Son "write once", o sea, ROM. Capacidad de almacenamiento muy reducida, del orden de bytes por cada cartulina.
¿Sigo? No es que sean antiguas, es que realmente hay tecnologías mejores; y no sólo eso, sino que esa tecnología antigua no tiene la misma capacidad y resultados que la actual, no es capaz de seguir el ritmo actual. No es simplemente "son viejas".
Cobol es como la tarjeta perforada: no es que sea "malo" por ser "sólo anticuado" es que simplemente hay tecnologías mejores y más eficientes para el procesamiento de los datos.
¿Mejores en qué sentido? ¿En qué son mejores? Si me dices: hay cosas mejores para presentaciones web. Cierto, las hay, esas cosas no se hacen en cobol. Se hacen en otras cosas... que interrogan por detrás mediante programas en cobol al sistema existente. Los avances que yo veo son mayormente en sistemas de presentación de datos y en sistemas interactivos. En eso se ha avanzado mucho. Pero cuando lo que tienes que hacer es con una lista de empleados y de horas y de contratos y de gastos generar la nómina del mes... un programa en cobol lo sigue haciendo muy bien y sin errores. Y diseñar una aplicación de nóminas es algo que le debe dar pánico a cualquier programador responsable. Es un lenguaje diseñado para ciertas tareas, no es un lenguaje de propósito general. La pregunta es: ¿En qué es malo el cobol y que otras cosas modernas hay para hacer mejor las tareas para las que fué diseñado? Teniendo en cuenta que el propio lenguaje ha sido rediseñado y mejorado.
Al igual que la ficha, tiene ventajas: robustez y fiabilidad e inconvenientes: paradigma de programación obsoleto y poco eficiente [1] (si es que no has leído lo mejor, hombre... sí, eso de Chomsky :-P que un lenguaje de programación no sólo vive de la gestión de la "memoria" o de los "punteros"), así como técnicamente limitado [2].
Hay que leer "todo", no sólo lo que uno "quiere" leer ;-)
*** [1] Paradigmas de lenguajes informáticos
Los lenguajes informáticos se construyen, en última instancia, en términos de un conjunto de conceptos fundamentales que norman la forma de entender la resolución de problemas. Estos conceptos introducen, en analogía con Jun (1962), un paradigma de programación.
Los lenguajes como FORTRAN, COBOL o ALGOL-60 son miembros del denominado paradigma imperativo. En este paradigma, los conceptos centrales son el de estado (variable o región de memoria que puede consultarse y actualizarse) y el de instrucción (unidad de ejecución que, eventualmente, conduce a la modificación del estado).
Por su parte, el lenguaje Simula-67 (Dahl, 1970), desarrollado en el Norwegian Computer Center por Ole-Johan Dahl y Kristan Nygaard, constituye los orígenes del denominado paradigma orientado a objetos, que puede, a su vez, considerarse como una evolución del paradigma imperativo inicial.
(...)
La aparición del lenguaje LISP, en la década de los 50, puso de manifiesto la posibilidad de prescindir del concepto de estado, conduciendo a un paradigma funcional (Backus, 1978) en el que los programas se conciben como descripción de funciones (en el sentido matemático del término), mientras que la ejecución de los mismos viene dada por una regla que permite aplicar esas funciones a sus argumentos. Dicho paradigma conduce, de esta forma, a un estilo más declarativo de comunicación con la máquina que, en el límite, prima la descripción del problema frente a la descripción de su solución.
Por último, a finales de los 60 y principios de los 70, se desarrolló también otro de los grandes paradigmas vigentes en la actualidad: el paradigma lógico. Dicho paradigma es, al igual que el funcional, un paradigma declarativo.
(...)
De esta forma, llegó a quedar claro que un tipo de resolución lineal restringido a cláusulas definidas tenía la eficiencia y orientación al objetivo requeridas. Esta aproximación, que fue primero descrita como una herramienta para aplicaciones de procesamiento del lenguaje natural, dio luego lugar a un sistema deductivo que fue el primer sistema PROLOG.
Blablabla. Ya tuve bastante con un compañero de piso que me hablaba de las gramáticas formales de chomski a las tres de la madrugada. ¡No gracias! Eso se lo dejo a los filósofos de la informática. En todo caso, los lenguajes "modernos" de esa parrafada no son precisamente "el C". El C es tan antiguo, conceptualmente, como el cobol. Es ejecución lineal, variables y código, casi como assembler, y el assembler es el lenguaje más antiguo de los existentes. Eso de arriba son academicismos. Jupe... si a mi me hablaron del lisp como algo moderno... y es más viejo que yo O:-)
...
[2] Cobol: Not Dead Yet There are good reasons why Cobol still runs many of the world's largest data centers
Ese me lo leí entero desde el primer dia, lo mencioné yo.
(...)
But Cobol is also a procedural language in an object-oriented world. While it's well suited to batch operations, the language isn't as good a fit for developing interactive applications or Web-based front ends. And it has a major image problem. Outside of the mainframe data center, Cobol is viewed today by many Java, Visual Basic and C# programmers as an obsolete and inferior language, a vestige from the dark ages of big iron.
Analicemos. Lo de la web ya lo he dicho. Lo de que "Outside of... " es lo que vengo diciendo desde el principio: lo peor que dicen de él es que es viejo. ¡VIEJO! Traduzcamoslo como que "no está de moda". Si me dijeran: es que su sintaxis es muy rara, no es lo que estoy acostumbrado. Vale, ese sí puede ser un motivo. Pero es rara porque no se estudia. A mi también me parece rara. Leches, en las universidades se estudian lenguajes que luego no tienen aplicación en el mundo real, como el "Modula". Y en cambio se usan lenguajes que no se estudian, como python, Perl, cgi...
(...)
When Cobol applications are migrated over to Windows, Unix or distributed systems, they remain in Cobol because rewriting them is expensive and risky, not because Cobol might be the best choice for the application... ***
Es decir, que la mayoría de las empresas lo sigue "manteniendo" (que no "desarrollando sobre él") no porque sea "técnicamente mejor" ni el más adecuado, sino porque el cambio no les merece la pena. Ya sabes, eso de "mejor malo conocido".
Si fuera realmente malo, no lo usarían. Es bueno, en el sentido de que hace la tarea que se le encomienda, bien hecha, y volver a diseñar esas tareas en lenguajes modernos, que se van a quedar también anticuados igual antes de que terminen de cambiar todo el software, pues no merece la pena, no es rentable ni justificable en un mundo empresarial. Y si sigues leyendo esos artículos, verás que no sólo migran y mantienen esos antiguos programas, sino que les añaden cosas y más programas. Porque es más sencillo y barato y "mejor" hacerlo en cobol, que... en C, por ejemplo. Aunque a la "academia" le parezca una barbaridad. Sigo sin ver motivos reales que justifiquen esa maldad, salvo el desconocimiento y el no estar de moda. Yo no programaría en cobol porque no lo conozco. Uno de los que he leído decía que ellos podían enseñar a gente a programar en cobol. Que lo que necesitaban no era realmente programadores, sino gente que entienda de negocios, y que pueda luego expresarlo en código con una formación posterior. - -- Saludos Carlos E.R. -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.4-svn0 (GNU/Linux) iD8DBQFIWEgOtTMYHG2NR9URAiqzAJ9uqszshBY6yVJblSC6Qx1vmq0G1wCfUWe2 Km4KqpuTcdy3JbT7uQLgOb8= =hwhw -----END PGP SIGNATURE-----