jueves, octubre 13, 2005

Dispárate en un pie y te volarás la cabeza: ¿Qué lenguaje usar?

El dilema de la elección de un lenguaje de programación

Justo antes de iniciar este blog estaba pensando en esa famosa frase que describe a C++:

C te facilita dispararte en el pie. C++ lo hace más difícil, pero cuando lo haces, te vuela la pierna entera. (Bjarne Stroustrup)

Esto a su vez me recuerda un correo electrónico que alguna vez recibí de algún amigo refieriéndose a esta dura decisión, el cual deseo compartir con todos los internautas.

Tarea a Realizar
Dispararse en el pie
LenguajeDescripción
C Te disparas en el pie.
C++ Creas accidentalmente unas docenas de operadores a ti mismo y todos te disparan en el pie.
FORTRAN Te disparas en cada dedo de los pies iterativamente hasta que se te acaben los dedos, entonces READ el NEXT pie y REPEAT. Si se te acabaran las balas, debes continuar con los intentos de disparo, ya que no hay capacidad de manipulación de excepciones.
Pascal El compilador no te permite dispararte en el pie.
Ada: Después empaquetar correctamente el pie, intentas cargar al mismo tiempo el revólver, apretar el gatillo, apuntar y disparate en el pie. Cuando lo intentas descubres que no puedes porque tu pie es del tipo equivocado.
COBOL USING un COLT 45, apunta REVOLVER en PIERNA.PIE, ENTONCES pon BRAZO.MANO.DEDO en COLT.GATILLO, APRIETA y DISPARA. THEN RETURN COLT a CARTUCHERA. CHECK ZAPATO.CORDON si necesita ser atado.
LISP (Te disparas en el apéndice que mantiene el revólver con que ((te disparas en el apéndice que mantiene el revólver con que (((te disparas en el apéndice que mantiene el revólver con que ((((te disparas en el apéndice que mantiene el revólver con que (((((te disparas en el apéndice que mantiene el revólver con que ((((((te disparas en el apéndice (...) ))))))
FORTH El pie se dispara a sí mismo.
Prolog Le dices a tu programa que quieres dispararte en el pie. El programa razona cómo lo hace, pero no entiendes la sintaxis.
BASIC: Dispárate en el pie con una pistola de agua. En sistemas grandes, continúa hasta que el agua cubra el cuerpo entero.
Visual Basic: En realidad sólo parece que te has disparado en el pie, pero te has divertido tanto que realmente no importa si has disparado o no.
Hypertalk: Pon la primera bala de revólver en el pie de la pierna izquierda. Responde el resultado.
Motif Te pasas días escribiendo una descripción UIL de tu pie, de la bala, de su trayectoria y los intrincados dibujos de las cachas de marfil del revólver. Pero cuando te dispones a apretar el gatillo, se atasca el revólver.
APL Te disparas en el pie, pero te pasas todo el día arrepentido pensando que podías haberlo con menos caracteres.
SNOBOL Si tuvieras éxito, dispárate en el pie izquierdo. Si fallara, dispárate en el pie derecho.
Unix % ls pie.c pie.h dedo.o dedo.c dedo.o % rm * .o rm:.o

No existe tal fichero o directorio % ls %

Concurrent Euclid Te disparas sobre cualquier miembro en vez del pie.
370 JCL Debes bajar el pie un MIS e incluir un documento de 400 páginas detallando exactamente cómo lo quieres disparar. Tres años después, tu pie regresa absolutamente frito.
Paradox No solamente puedes dispararte en el pie, tus usuarios también lo hacen.
ACCESS Intentas apuntar el revólver en tu pie, pero terminas por disparar en los agujeros de todos los diskettes de distribución de Borland.
Ensamblador Intentas dispararte en el pie solamente para descubrir que antes debes inventar el revólver, la bala, el gatillo y el pie.
Modula2 Después de comprender que es imposible hacerlo con este lenguaje, te disparas en la cabeza

A pesar de ser un texto burlesco y un tanto jocoso, presenta de manera divertida la realidad de los diferentes lenguajes de programación existentes. Pero entremos a analizar los pros y contras de cada uno de los lenguajes más importantes de la actualidad.

Lenguaje Características
C El lenguaje más poderoso en toda la historia, considerado un lenguaje de no muy alto nivel, y esto mismo le otorga gran parte de la potencia que posee. Es ideal para el desarrollo de programas a bajo nivel, tales como Sistemas Operativos, BIOS, y otros compiladores, ya que los binarios generados son bastante reducidos y optimizados (depende del programador). Además, en teoría, puede interactuar con prácticamente cualquier otro lenguaje de programación, compilador o programa.
C++ Posee toda la potencia del C pero con un valor agregado, la POO, la cual nos permite darle una mayor organización al software, lo que lo convierrte en un excelente lenguaje para el desarrollo de software de alto nivel.
FORTRAN Aunque debo aceptar que no soy un gurú de este lenguaje, cabe decir que este poderoso lenguaje ya casi en desuso, es el ideal para el desarrollo de sistemas científicos, pues toda su estructuración y filosofía lo permiten.
Pascal Mi favorito. Como rezaba alguna una campaña publicitaria de Borland:
Toda la facilidad de BASIC con la potencia de C++

Es un lenguaje altamente didáctico e ideal para la enseñanza, pues es bastante ordenado. Aunque para algunos es una ventaja que este lenguaje tenga tipos de datos estrictos, para esto es bastante molesto, pero no viene al caso debatir sobre este asunto, que puede ser expuesto en otro tema más adelante. Excelente para casi todo.
BASIC Es un lenguaje poco estructurado, poco práctico para el desarrollo de software. No lo recomiendo, y de hecho es prácticamente extinto como tal. Actualmente existen versiones y adaptaciones tales como VisualBASIC en sus diferentes sabores.
VB Como diría alguna vez:
Visual BASIC hace convierte al programador principiante en un verdadero experto y al experto en un completo inútil.
Es muy práctico para el rápido desarrollo de aplicaciones gráficos con interfaces sencillas. Aunque se pueden contruir sistemas bastante "robustos", no es práctico para el desarrollo de aplicaciones realmente potentes, posee demasiadas dependencias que convierten a la aplicación en una máquina para consumir recursos del PC.
Ensamblador El lenguaje más poderoso de todos, poco usado por los programadores en la actualidad, así por el contrario los electrónicos, ya que este lenguaje nos permite manejar el PC al más bajo nivel posible, manipular toda su estructura y programación.
Este lenguaje puede llegar a ser peligroso si no se sabe usar o por el contrario se conoce muy bien. Un ejemplo de esto son los "verdaderos virus", o quién no recuerda al legendario NATAS-BOOT, virus que eran una verdadera obra de arte, gracias a los avanzados conocimientos de este lenguaje que poseía el programador.
Ideal (entiéndase, necesario) para la programación de Sistemas Operativos y compiladores que requieran acceso al PC a bajo nivel.

Aunque habrá podido notar que no he mencionado varios de los lenguajes existentes, lo hago pues estos tal vez son los más conocidos y comerciales. Las diferencias radican en detalles que no vale la pena exponer por ahora.
Pero al final de cuentas, ¿cuál es el mejor lenguaje?.
R./ No hay mejor lenguaje.
¡Pero cómo es posible que no haya uno que sea el mejor!, senciallamente, porque cada lenguaje fue diseñado con un propósito en específico, y aunque en la actualidad muchos lenguajes como Delphi, C#, y VisualBASIC.Net ofrecen grandes facilidades para el desarrollo de sistemas cada uno tiene sus características que lo hace único, además cabe anotar que esto va de acuerdo al estilo de programación que se use.
No quiero inclinar a usar equis o ye lenguaje, pues no es mi propósito, pero para los que desean saber qué lenguaje uso, temo decir que varía según la necesidad, aunque como expuse anteriormente Pascal es mi favorito, debo aceptar que actualmente no lo uso. Por el contrario uso versiones derivadas de éste, como son: Delphi, Kylix, FreePascal, Lazarus, etc. y aun a pesar de todo, ninguno de los anteriores uso a menudo, pues también uso VB en su diferentes presentaciones, según sea la necesidad, Ensamblador, C/C++/C# y otros los cuales no vale la pena mencionar. Así que igualmente le invito a hacer lo mismo, que de seguro le traerá muchas satisfacciones.