Comparación de lenguajes de programación.

format_list_bulleted Contenido keyboard_arrow_down
ImprimirCitar

Los lenguajes de programación se utilizan para controlar el comportamiento de una máquina (a menudo una computadora). Al igual que los lenguajes naturales, los lenguajes de programación siguen reglas de sintaxis y semántica.

Existen miles de lenguajes de programación y cada año se crean otros nuevos. Pocos lenguajes llegan a ser lo suficientemente populares como para ser utilizados por más de unas pocas personas, pero los programadores profesionales pueden utilizar docenas de lenguajes a lo largo de su carrera.

La mayoría de los lenguajes de programación no están estandarizados por un estándar internacional (o nacional), ni siquiera los más utilizados, como Perl o Standard ML (a pesar del nombre). Los lenguajes de programación estandarizados notables incluyen ALGOL, C, C++, JavaScript (bajo el nombre ECMAScript), Smalltalk, Prolog, Common Lisp, Scheme (estándar IEEE), ISLISP, Ada, Fortran, COBOL, SQL y XQuery.

Comparación general

La siguiente tabla compara la información general y técnica de una selección de lenguajes de programación de uso común. Ver los idiomas individuales' artículos para más información.

Sistemas de tipos

E/S y llamadas al sistema a prueba de fallos

La mayoría de los lenguajes de programación imprimirán un mensaje de error o generarán una excepción si falla una operación de entrada/salida u otra llamada al sistema (por ejemplo, chmod, kill), a menos que el programador haya dispuesto explícitamente un manejo diferente de estos eventos. Por tanto, estos lenguajes fracasan con seguridad en este sentido.

Algunos lenguajes (en su mayoría antiguos) requieren que los programadores agreguen comprobaciones explícitas para este tipo de errores. Psicológicamente, diferentes sesgos cognitivos (por ejemplo, el sesgo de optimismo) pueden afectar tanto a principiantes como a expertos y llevarlos a saltarse estas comprobaciones. Esto puede llevar a un comportamiento erróneo.

E/S a prueba de fallos es una característica de 1C:Enterprise, Ada (excepciones), ALGOL (excepciones o valor de retorno según la función), Ballerina, C#, Common Lisp ("condiciones y reinicia" el sistema), Curry, D (arrojando en caso de falla), Erlang, Fortran, Go (a menos que el resultado se ignore explícitamente), Gosu, Harbour, Haskell, ISLISP, Java, Julia, Kotlin, LabVIEW, Mathematica, Objective-C (excepciones), OCaml (excepciones), OpenLisp, PHP, Python, Raku, Rebol, Rexx (con señal activada... opcional manejo de trampas), Ring, Ruby, Rust (a menos que el resultado se ignore explícitamente) , Scala, Smalltalk, Standard ML Swift ≥ 2.0 (excepciones), Tcl, Visual Basic, Visual Basic.NET, Visual Prolog, Wolfram Language, Xojo, XPath/XQuery (excepciones) y Zeek.

Sin E/S a prueba de fallos: AutoHotkey (el nivel de error global debe marcarse explícitamente), C, COBOL, Eiffel (en realidad depende de la biblioteca y no está definido por el lenguaje), GLBasic (generalmente provocará que el programa se bloquee), RPG, Lua (algunas funciones no advertir o lanzar excepciones) y Perl.

Algunas comprobaciones de E/S están integradas en C++ (los iostreams STL se activan en caso de falla, pero las API de C como stdio o POSIX no) y Object Pascal, en Bash es opcional.

Expresividad

Idioma ratio de estados financieros ratio de líneas
C11
C++2.51
Fortran20,8
Java2.51,5
Perl66
Smalltalk66.25
Python66.5

La literatura sobre lenguajes de programación contiene una gran cantidad de afirmaciones informales sobre su relativo poder expresivo, pero no existe un marco para formalizar tales afirmaciones ni para derivar consecuencias interesantes. Esta tabla proporciona dos medidas de expresividad de dos fuentes diferentes. Se puede encontrar una medida adicional de expresividad, en bytes GZip, en Computer Language Benchmarks Game.

Parámetros

Barplot of log-time to produce a 16002 Mandelbrot como se informó en El juego de parámetros

Los puntos de referencia están diseñados para imitar un tipo particular de carga de trabajo en un componente o sistema. Es posible que los programas informáticos utilizados para compilar algunos de los datos de referencia de esta sección no hayan sido completamente optimizados y se cuestiona la relevancia de los datos. Los puntos de referencia más precisos son aquellos que se adaptan a su situación particular. Los datos de referencia de otras personas pueden tener algún valor para otros, pero una interpretación adecuada plantea muchos desafíos. El sitio Computer Language Benchmarks Game advierte contra la generalización excesiva de los datos de referencia, pero contiene una gran cantidad de micro-benchmarks de fragmentos de código aportados por lectores, con una interfaz que genera varios gráficos y tablas que comparan lenguajes de programación específicos y tipos de pruebas.

Cronología de comparaciones de idiomas específicos

  • 1974 – Notas Comparativas sobre Algol 68 y PL/I – S. H. Valentine – Noviembre 1974
  • 1976 – Evaluación de ALGOL 68, JOVIAL J3B, Pascal, Simula 67 y TACPOL Versus TINMAN – Requisitos para un lenguaje común de programación de alto orden.
  • 1977 – Comparación de PASCAL y ALGOL 68 – Andrew S. Tanenbaum – Junio 1977.
  • 1993 – Cinco pequeños idiomas y cómo Grew – BLISS, Pascal, ALGOL 68, BCPL " C – Dennis M. Ritchie – abril de 1993.
  • 2009 – On Go – oh, vamos – ¿Qué tan bien Google's Go se enfrentará al lenguaje de programación de la Marca X? – David Given – Noviembre 2009
Más resultados...
Tamaño del texto:
undoredo
format_boldformat_italicformat_underlinedstrikethrough_ssuperscriptsubscriptlink
save