¿Qué intentaba arreglar cada lenguaje de programación?

En su artículo What Languages Fix, Paul Graham, autor de Hackers & Painters y fundador de Y Combinator examinaba hace unos años algunos de los lenguajes de programación más conocidos desde una óptica interesante: los problemas que sus creadores intentaban solucionar al crearlos.

Hoy me he vuelto a encontrar con este texto y he dedicado unos minutos a traducirlo y a crear una representación gráfica en forma de línea de tiempo que podéis ver a continuación.

  • Algol: Ensamblador trabaja a muy bajo nivel
  • Pascal: Argol no tiene suficientes tipos de datos
  • Modula: Pascal es limitado para programación de sistemas
  • Simula: Algol no es lo bastante bueno para simulaciones
  • Smalltalk: No todo en Simula es un objeto
  • Fortran: Ensamblador trabaja a muy bajo nivel
  • Cobol: Fortran da miedo
  • PL/1: Fortran no tiene suficientes tipos de datos
  • Ada: A todos los lenguajes que existen les falta algo
  • Basic: Fortran da miedo
  • APL: Fortran no es lo bastante bueno manipulando arrays
  • J: APL requiere su propio juego de caracteres
  • C: Ensamblador trabaja a muy bajo nivel
  • C++: C trabaja a muy bajo nivel
  • Java: C++ es una chapuza. Y Microsoft nos va a aplastar
  • C#: Sun controla Java
  • Lisp: Las máquinas de Turing son una forma extraña de describir computación
  • Scheme: MacLisp es una chapuza
  • T: Scheme no tiene librerías
  • Common Lisp: Hay demasiados dialectos de Lisp
  • Dylan: Scheme no tiene librerías, y la sintaxis de Lisp da miedo
  • Perl: Los shell scripts/awk/sed no parecen lenguajes de programación
  • Python: Perl es una chapuza
  • Ruby: Perl es una chapuza, y la sintaxis de Lisp da miedo
  • Prolog: La programación no se parece lo suficiente a la lógica

71 comentarios en «¿Qué intentaba arreglar cada lenguaje de programación?»

      1. Sí puedo, nada más quería una definición más formal, pero como de costumbre, los españoles siempre están usando su propio léxico esperando que todo el mundo lo entienda.

          1. No es que en España se use esa palabra para lo que indicas, es que en ESPAÑOL existe esa palabra y en España se habla español.

            De hecho es una palabra de uso común y habitual.

        1. Lo siento, no tenía ni idea de que era algo exclusivo de España.

          Cuando pasan estas cosas, obviamente, no lo hacemos con intención de molestar. Es simple desconocimiento, porque tampoco se puede esperar que tanto unos como otros estemos al tanto de todas las diferencias de vocabulario que tenemos de unos países a otros.

          Eso sí, espero acordarme la próxima vez.

          1. En cada zona hispanoparlante (ya no digo ni país :D) hay expresiones propias, y no creo que sea un problema. Tan solo hay que explicar su significado y así todos aprendemos una expresión nueva 🙂

          2. No es exclusivo de españa. Aunque acá no se usa mucho, cualquier persona con un vocabulario por encima del promedio sabe que chapuza es una chapucería.

          3. Es cierto, estoy con vos. Parece que es pecado preguntar de buena manera, y no creo que sea algo referido a los españoles, sino al nivel cultural. Es decir, si algo es obvio para nosotros, pensamos que debe ser obvio para el resto, y hacemos sentir al otro que si no intuye nuestra obviedad, es un tonto. Sigue preguntando.

      2. En México chapuza termino no tan usado se refiere a robo – estafa… como pueden ver dista de la definición en el articulo… no hay que menospreciar a los demas solo porque tenemos léxico distinto…

        1. El termino chapuza era originariamente del Español. En sucesivas revisiones de la RAE, se han ido incorporando palabras del ambito sudamericano (latinoamericano tambien lo llaman -sic-), basicamente por la cantidad de poblacion que lo usa (en una zona concreta), y por «hermanarse» las lenguas (aun recuerdo esta frase).

          El significado principal de chapuza es el de algo mal realizado. El resto son variaciones LOCALES a las zonas. Si en esas zonas se han pensado que su uso es el principal, pues si, alli porque la realidad es otra.

    1. chapuza

      f. Labor mal hecha; chapucería.
      Trabajo no profesional y de poca importancia:
      he contratado al cuñado del conserje para que me haga todas las chapuzas de la casa.

      1. En Argentina no decimos chapuza, pero sí decimos que algo es chapucero. El significado es el mismo que le dan ustedes, algo que está hecho de mala gana, «así nomás».

  1. Menuda porquería. Esto es una chapuza, lo otro es una chapuza, este tiene el monopolio… ¿C++ es una chapuza? Buajaja……. menuda sarta de tonterías.

  2. Kastle, lo de que C++ es una chapuza se refiere a que cuando James Gosling creó el lenguaje Java lo hizo teniendo en mente mejorar carácteristicas y eliminar arcaísmos presentes en C++.

    1. ¡Ese lenguaje que has usado es una chapuza!

      class chapuza:
      def __init__(self, language):
      self.language = language

      def __str__(self):
      return str(self.language)

      print chapuza(tulenguaje)

  3. Un comentario para los que se sulfuran por la falta de rigor: Creo que este artículo hay que tomárselo «con un poco de sal», como dicen. ¡Es más bien humorístico! Si te lo tomas así, es un artículo divertido que te puede alegrar el día como ha hecho con el mío (¡gracias!).

    Es un poco como eso que viaja por ahí de dispararte en el pie.

    http://achtung00.wordpress.com/2007/06/01/como-dispararte-en-el-pie-en-varios-lenguajes-de-programacion/

  4. Este artículo sí que es una chapuza y de bajo nivel.

    c y c++ están al mismo bajo nivel, sólo que c++ permite añadir el paradigma de orientación a objetos .

    Visual c++ añadió las MFC para poder programar para windows.

    java subió el nivel de abstracción de c++, añadiendo los «interfaces» e incluyendo librerías gráficas y una sintaxis más amena para tratar tipos complejos. Igualmente, era un intento de comerle terreno a Visual c++.

    c# añadió los delegados y simplificó la sintaxis y los tipos equiparando y superando a java. Aparte de que Visual Studio es una herramienta poderosísima que permite integrar el historial del código, el manejo de grupos de trabajo, etc.

    lisp, prolog, haskell, gopher y otros tantos son lenguajes que no han tenido proyección ninguna en el mundo empresarial, y que han quedado acotados al mundo académico.

    1. Lo de que C# tiene una sintaxis simplificada con respecto a Java y que lo ha superado será por que tú lo digas.

      Se nota que estás en el mundillo de VS.

      Microsoft tiene muy buenos editores, pero si trabajaras con Eclipse te darías cuenta que hace, y con creces, lo que has comentado de VS y muchísimas más cosas. Y si nos metemos en la infinidad de plugins que tiene ya ni te cuento.

      Ese es el problema de VS, que al ser de Microsoft los usuarios estamos condicionados a este fabricante. Sin embargo Eclipse, al ser open source, tiene miles de plugins y muchos son de una calidad excepcional.

      1. java y c# son ambos lenguajes de muy alto nivel, que son confortables para el programador porque disponen de muchos recursos que no tienes que implementar tú.

        Yo estuve trabajando dos años con el java development kit 1.1.5 en los inicios de java, después varios años con Visual C++, y ahora llevo 4 años y medio con C#. Hablo desde mi experiencia personal, evidentemente. No voy de gurú por la vida.

        No conozco eclipse, pero sí Vísual Studio y sus herramientas satélite, y facilitan mucho el trabajo en equipo. Lo que sí te puedo decir es que mi breve experiencia programando en linux ha sido aborrecible, probablemente por no disponer en aquel entonces de herramientas adecuadas.

        Respecto al debate software libre – software propietario, sinceramente me la pela. Lo paga la empresa, y yo con trabajar y comer todos los días ya estoy contento. Al señor Bill Gates le besaría los pies en agradecimiento.

      1. Llevo programando profesionalmente desde finales de los 90, y prolog siempre ha sido una cosa residual.

        Pero pongamos cifras a mi argumento. Esos viejos sistemas de los 80 y los 90 necesitan mantenimiento. He mirado en infojobs en este momento ofertas según el lenguaje. Este es el resultado:

        java = 1064
        javascript = 648
        C# = 351
        BASIC = 261
        C++ = 249
        COBOL = 131

        Y aquí podríamos poner el corte, porque para los otros lenguajes tenemos:

        FORTRAN = 4
        PASCAL = 1
        PROLOG = 1
        LISP = 0
        HASKEL = 0

        1. Mr la la la , despeus de leer las tonterias que se dicen , te doy gracias por tus explicaciones coherentes , cuanto absurdo hay , gracias.

  5. J va por delante de C, y Java es más extenso que J. Entonces si C es cero, C++ sera 1.

    ¿Quién es el chapucero que dice que no a esto?

    1. Lo que ocurre es que le tienen tanto miedo a Cobol que ni siquiera han intentado crear un lenguaje para sustituirlo. Es el Chuck Norris de los lenguajes de programacion!

  6. De casi todos los lenguajes modernos que he usado, Perl da miedo, PASCAL = C, (Turbo Pascal)Delphi = C++ y dotnet = Java. Python me pareció un Perl+PASCAL+BASIC, Fortran = BASIC, Php = Java tirando a C, JavaScript = Java ligero flexible, MathLab da miedo. El mejor lenguaje de programación, C++

  7. No existe «el mejor lenguaje de programación», depende de la tarea que quieras realizar.

    Mis preferidos, según qué pretendas hacer, son C++, C#, Java y Python. Y por supuesto ensamblador. Todos ellos y alguno más los utilizo en mi trabajo, según qué interese en cada proyecto.

  8. – En la lista falta B, el lenguaje en el que C se basó.

    – También tuve que buscar que significaba «chapuza».

    – De acuerdo con @Kenrae, no existe «el mejor lenguaje de programación» pero, en mi caso me quedo con C y PHP (con esos 2 hago todo lo que necesito :P).

    Saludos!

    1. y B se baso previamente en A y otros.

      No existe el mejor lenguaje de programacion, pero si existe el lenguaje de programacion que mejor se adapta para un tipo de tarea determinada.

      Ademas, no solo es el lenguaje en si, sino la curva de aprendizaje, el soporte que dicho lenguaje tiene o le dan, escalabilidad, mantenmiento, etc.

      Yo uso ensamblador. Para ciertas cosas es insustituible, para otras cosas aunque me gustaria usar ensamblador, mejor uso C, pues el beneficio obtenido del ensamblador lo voy a perder con el tiempo de implementacion y su mantenibilidad, cosa que gano con C. A menudo los mezclo.
      Si quisiera portabilidad, podria usar C o Java, pero con C debere tener mas cuidado al diseñar esto, pero entoces perdere velocidad y precision, que segun el software puede no importar o si.

      Lo que ocurre, es que como en la mayoria de otros ambitos de la vida, la eleccion de un lenguaje suele convertirse en la tipica competicion de «quien la tiene mas grande».

      Yo siempre selecciono el lenguaje segun criterios objetivos y argumentados (si, trabajo con diferentes lenguajes), dentro de los que conozco. Os puedo decir que en ADA se hacen tareas en 5 minutos que en C, Java, Prolog, etc. se tardarian dias. Pero en prolog se pueden hacer cosas en 5 minutos que en ADA, C, Java se tardarian dias. Y en C se hacen cosas que con Java no pueden hacerse facilmente, y con Prolog seria una locura.

      PHP no es mas que una forma de acceder facilmente a bases de datos usando sintaxis de C, orientada para propositos muy especificos. Javascript igual que VBS, para scripts pero cada uno usando la sintaxis del lenguaje del que toman el nombre.

      No olvidemos que todo lenguaje tiene unas partes bien definidas: sintaxis y semantica, y lo mas importante: todos los lenguajes de programacion buscan ante todo no ser ambigüos. Si el lenguaje natural fuera asi (sin ambiguedades, podriamos usarlo para programar.
      Muchos comparten semantica, adoptan sintaxis de otros y la gente acaba con la picha hecha un lio por no razonar con lo que tienen xDDD.
      A mas alto nivel del lenguaje, mas ambiguedad introduce y mas recursos hacen falta para deshacerla, tambien se vuelven mas ineficientes pero a cambio al aproximarse al lenguaje natural (mucho o poco), los humanos pueden aprenderlo mas facilmente y resolver los problemas desde perspectivas mas naturales para ellos.

      Todo depende de lo que queramos hacer, las especificaciones, los requisitos, etc. El tema de los lenguajes no es nada trivial.

      Tambien hay una guerra comercial detras, que demasiado a menudo afecta, como es el caso de C# y las multiples extensiones de Java. Un ejemplo de semantica muy parecida pero sintaxis diferente aunque ambos heredan del C/C++. Ahi lo que prima es quien se impone en el mercado, no dar una buena herramienta. Cosas del comercio.

      Salu2.

  9. Perl es una navaja suiza que puedes llevarte gratis a todos lados. Su sintaxis criptica y ambigua es herencia de su crecimiento desordenado.
    Me cago en las tablets.

  10. ¿Y por qué no decimos cada uno cuales sabemos?

    Yo empecé con Basic, después Cobol, despues Visual Basic (que no aparece) y despues C… si, hace años que no programo…

  11. Guaauu leyendo comentarios me doy cuenta de que hay gente que ha de saber muchísimo de lenguajes de programación y paradigmas, ya que eligen uno en base al problema que quieran resolver. Para un newbie como yo es mas simple, veo los recursos con los que cuento($) he implemento. Si necesito hacer una simple pagina web, php+cms, si necesito hacer algo para escritorio python + wxpython, algún proyecto web python + django, y durante toda mi historia laboral como empleado fue java. Me encantaría conocer lenguajes exóticos como Prolog, R, Cloujure, Erlang, Goo, y poder decir, este problema se resuelve con este lenguaje o este paradigma.

  12. Yo solo daré un pequeña opinión, en mi país (Venezuela), no existe o no se usa la palabra chapuza y me pareció una falta de respecto que alguien preguntara su significado y se burlaron de el por no conocerlo. Hay que darse cuenta que hay muchos países de habla hispana y que lo significado de una palabra varían de país a o país; o simplemente no se use esa palabra. Sean mas tolerantes es lo único que pido.

  13. Un anónimo que se siente ofendida o despechada por no saber una palabra que ni le va ni le viene y pide respeto y tolerancia? ….. mmmm LOL

    Si no sabes una palabra la buscas en un diccionario y si te ofendes, ajo y agua…

    P.D. Ajo y agua, significa = a joderse y aguantarse.

  14. Leyendo los comentarios de arriba hacia abajo fui viendo los distintos grados de estupidez de quienes comentan. Todo empieza por alguien que no sabe y pregunta que corno es una chapuza, y la gran manada esrupida lejos de explicarle al visitante, mas bien lo molestan, hasta que llega el estupido por excelencia que le dice que hacer una chapuza es hacer una chapuceria. Asi que si nuestro heroe no sabia que significa chapuza ahora tiene que enfrentarse a la chapuceria. Y la miles de idioteces que se dicen unos a otros sobre si el mejor es españa o cual pais. Al final parece que nadie se dio cuenta que en esta pagina se habla de lenguajes de programacion y nadie a dicho nada de esto por andar en chapuzas haciendo chapucerias.

  15. Como bien han dicho ya no existe el mejor lenguaje, siempre dependerá de la tarea a realizar, el entorno, el tiempo disponible y los conocimientos del programador.

    En mi caso he programado en Ensamblador (x86, x81, 6502), Logo (qué tiempos con la tortuga…), Basic (QB, QuickBasic, VisualBasic, VisualBasic Script), JavaScript, C, Pascal, PHP, AppleScript, BAT/CMD (archivos de lotes de DOS/Windows), AutoIt.

    También he tocado algo de Java, Python, Bash, y alguno más.

    Ahora mismo casi todo es PHP, AutoIt, CMD, VBS o JavaScript.

    Para los que menosprecian lo que el PHP puede hacer decirles que tengo algún servicio de Windows programado con PHP, además de innumerables scripts de linea de comando tanto para Windows como para GNU/Linux.

    Cuando una tarea supera cierto nivel de complejidad que un CMD/Bash no pueda resolver en poco tiempo utilizo PHP. Si necesito un ejecutable compacto, utilizo AutoIt.

    En mi curro no tengo mucho tiempo para programar los scripts necesarios y estos tienen que funcionar sin problemas pues se encargan de todo tipo de tareas: desde tareas de mantenimiento parando y arrancando servicios hasta procesos críticos en el flujo de producción de la empresa… y me enorgullece decir que los más críticos están hechos con PHP que me ha dado la velocidad de desarrollo y la facilidad de mantenimiento necesaria además de demostrar ser robustos como rocas.

    Un saludo

Responder a Programador Cancelar respuesta

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.