¿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
Comentarios
  1. viko360

    Y asi sera por el resto de nuestrs tiempos
    “Crear una chapuza para tratar de arreglar otra anterior”

    Responder

  2. ¿Qué rayos es una chapuza?

    Responder

    • raz

      ^^ Estas haciendo una ahora mismo.

      Responder

      • ¬¬

        Responder

        • ¿Os dais cuenta de que habéis tenido un problema por diferencias de lenguaje en un articulo sobre los problemas del lenguaje de programación? XD

          Responder

          • jose

            nooo, acabo de observar una paradoja ahora toda la realidad comenzara a desmoronarce.

      • Yo

        q tonto

        Responder

    • Yabo

      Si no eres capaz de inferir el significado del contexto, probablemente no deberías estar leyendo esto.

      Responder

      • 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.

        Responder

        • errepunto

          Tampoco es tan complicado

          http://lema.rae.es/drae/?val=chapuza

          😉

          (en España se usar ese término para describir a algo hecho rápido y mal)

          Responder

          • nomecreona

            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.

        • 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.

          Responder

          • errepunto

            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 🙂

          • 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.

          • German

            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.

      • 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…

        Responder

        • nomecreona

          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.

          Responder

    • Yo también tuve que buscar en internet a ver que era “Chapuza: Trabajo hecho sin técnica ni cuidado o con un acabado deficiente”.

      Responder

    • Sande

      Chapuza = lo que has hecho da miedo XD

      Responder

    • Sergio

      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.

      Responder

      • David

        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».

        Responder

  3. errepunto

    Prolog está a un lado marginado. Donde debe estar 😀

    Responder

  4. Harlo

    Chapuza en otras palabras quiere decir que es una mierda.

    Responder

    • David

      Una chapuza es algo q se hace rápido, más o menos funciona pero dista de la perfección.

      Responder

    • pame

      es es en mexico

      Responder

  5. El nivel de humor de las razones para crear los lenguajes va aumentando con el tiempo XD

    Responder

  6. Muy buen post…una chapuza detrás de otra!

    Responder

  7. Me parece incompleto en cuanto a contenido.
    Algunos motivos tampoco me parecen muy convincentes, son mas bien subjetivos.

    Responder

    • Perico

      Dirías que el post es una chapuza? Vas a hacer uno nuevo para mejorarlo porque este da miedo?

      Responder

  8. kastle

    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.

    Responder

  9. jangel

    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++.

    Responder

  10. class chapuza
    {static void Main (string[] args)
    string chapuza = (esperanto) mierda total}

    Realizo casting para entenderlo mejor… 🙂

    Responder

    • Perico de los Palotes

      ¡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)

      Responder

      • Arriba Python!!

        Responder

        • Armando

          Python es una mierda.

          Responder

          • Sergio

            Tu afirmación es incorrecta, Python es un lenguaje interpretado de programación.

          • Piton

            Python puede programar la mierda si quiere… es como Chuck Norris…

  11. David

    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/

    Responder

  12. Andy

    Te falta Forth.

    Responder

  13. topo

    Lo que es una chapuza es traducir library como librería

    Responder

  14. Mister lala

    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.

    Responder

    • jangel

      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.

      Responder

      • Mister lala

        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.

        Responder

    • Mr. T

      ¿Que prolog no se ha usado a nivel empresarial? Dios mio… Debes de ser bastante joven me parece a mi para decir algo así.

      Responder

      • Mister lala

        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

        Responder

        • ferran

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

          Responder

  15. Basa

    Que grande!

    y cuanta chapuza 🙁

    Responder

  16. Todos tenemos miedo de Fortran…

    Responder

  17. C siempre será mejor que C++… 😉

    Responder

  18. Isaias

    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?

    Responder

  19. Os habeis fijado que no ha dicho “Cobol da miedo”, “Cobol es una chapuza” o “Cobol no hay quien lo mantenga”?

    Responder

    • Igor

      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!

      Responder

  20. Anónimo

    No hace ni gracia. Ni puta idea.

    Responder

  21. Programador

    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++

    Responder

    • Gilgamesh

      Decir que ‘PASCAL = C’ hace llorar al Niño Jesús… y mucho!

      Responder

    • Igor

      PHP = Java? Y el “mejor” C++? Se ha inventado la maquina del tiempo? En que a;o estamos?

      Responder

  22. Kenrae

    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.

    Responder

    • Igor

      Por suerte los peores se distinguen pronto.

      Responder

  23. P4NCH1

    – 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!

    Responder

    • nomecreona

      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.

      Responder

  24. azzurro

    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.

    Responder

  25. pandafrikis

    el mejor, QBASIC, de lejos

    Responder

  26. lulu_cestmoi

    ¿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…

    Responder

  27. Y los lenguajes graficos?
    Y los lenguajes funcionales?

    Aqui os dejo el futuro de la programacion
    http://nimotoons.com
    Saludos

    Responder

  28. El futuro de la programación: Chapuzing++ 😛

    Responder

  29. German

    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.

    Responder

  30. anonimo

    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.

    Responder

  31. Capture the LoL

    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.

    Responder

  32. Leon

    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.

    Responder

  33. Fernando

    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

  34. DavidRemoto

    ¿alguien sabe con qué programa se hizo el diagrama de la foto?

    Gracias!

    Responder

Deja un comentario