Comparación de linguaxes de programación

As linguaxes de programación utilízanse para controlar o comportamento dunha máquina (a miúdo un ordenador). Do mesmo xeito que as linguas naturais, as linguaxes de programación seguen regras de sintaxe e semántica.
Existen miles de linguaxes de programación e créanse novas cada ano. Poucas linguaxes se fan o suficientemente populares como para ser usadas por máis dunhas poucas persoas, pero os programadores profesionais poden usar ducias de linguaxes nunha carreira.
A maioría das linguaxes de programación non están estandarizadas por un estándar internacional (ou nacional), mesmo as máis utilizadas, como Perl ou Standard ML (a pesar do nome). Entre as linguaxes de programación estandarizadas máis destacadas inclúense ALGOL, C, C++, JavaScript (co nome ECMAScript), Smalltalk, Prolog, Common Lisp, Scheme (estándar IEEE), ISLISP, Ada, Fortran, COBOL, SQL, e XQuery. Comparación xeral
A seguinte táboa compara información xeral e técnica para unha selección de linguaxes de programación de uso común. Consulta os artigos das linguaxes individuais para obter máis información. E/S e chamadas de sistema a proba de fallos
A maioría de linguas de programación imprimirán unha mensaxe de erro ou lanzan unha excepción se falla unha operación de entrada/saída ou outra chamada ao sistema (por exemplo, chmod, kill) a menos que o programador teña disposto explicitamente unha xestión diferente destes eventos. Polo tanto, estas linguaxes fallan sen incidentes neste aspecto.
Algunhas linguaxes (na súa maioría antigas) requiren que os programadores engadan explicitamente comprobacións para este tipo de erros. Psicoloxicamente, diferentes sesgos cognitivos (por exemplo, sesgos de optimismo) poden afectar tanto a principiantes como a expertos e levalos a omitir estas comprobacións. Isto pode levar a un comportamento erróneo.
A E/S a proba de fallos é unha característica de 1C: Enterprise, Ada (excepcións), ALGOL (excepcións ou valor de retorno dependendo da función), Ballerina, C#, Common Lisp (sistema "condicións e reinicios"), Curry, D (lanzamento en caso de fallo), Erlang, Fortran, Go (a non ser que o resultado se ignore explicitamente), Gosu, Harbour, Haskell, ISLISP, Java, Julia, Kotlin, LabVIEW, Mathematica, Objective-C (excepcións), OCaml (excepcións), OpenLisp, PHP, Python, Raku, Rebol, Rexx (con manexo opcional de trampas signal on. .. ), Ring, Ruby, Rust (a non ser que o resultado se ignore explicitamente), Scala, Smalltalk, Standart ML, Swift ≥ 2. 0 (excepcións), Tcl, Visual Basic, Visual Basic. NET, Visual Prolog, Wolfram Language, Xojo, XPath/XQuery (excepcións), e Zeek. Sen E/S a proba de fallos: AutoHotkey (o nivel de erro global debe comprobarse explicitamente), C, COBOL, Eiffel (en realidade depende da biblioteca e non está definido pola linguaxe), GLBasic (xeralmente provocará que o programa se peche), RPG, Lua (algúns funciona non advirte ou botar excepcións), e Perl.
Algunhas comprobacións de E/S están integradas en C++ (as transmisións de STL producen erros, pero as API de C como stdio ou POSIX non) e Object Pascal, en Bash é opcional. Expresividade
A literatura sobre linguaxes de programación contén unha abundancia de afirmacións informais sobre o seu poder expresivo relativo, pero Nonn existe un marco para formalizar tales afirmacións nin para derivar consecuencias interesantes. Esta táboa proporciona dúas medidas de expresividade de dúas fontes diferentes. Unha medida adicional de expresividade, en bytes GZip, pódese atopar Non xogo Computer Language Benchmarks. Benchmarks
Os benchmarks están deseñados para imitar un tipo particular de carga de traballo nun compoñente ou sistema. Os programas informáticos empregados para compilar algúns dos datos do benchmark desta sección poden non estar totalmente optimizados, e a relevancia dos datos é controvertida. Os benchmarks máis precisos son aqueles que se adaptan á túa situación particular. Os datos de benchmarks doutras persoas poden ter algún valor para outras, pero a interpretación axeitada supón moitos desafíos. O sitio web Computer Language Benchmarks Game advirte contra a sobrexeneralización a partir de datos de benchmarks, pero contén un gran número de micro-benchmarks de fragmentos de código achegados polos lectores, cunha interface que xera varios gráficos e táboas que comparan linguaxes de programación e tipos de probas específicos. Cronoloxía de comparacións de linguaxes específicas
1974 – Notas comparativas sobre Algol 68 e PL/I: S. H. Valentine, novembro de 1974
1976 – Avaliación de ALGOL 68, JOVIAL J3B, Pascal, Simula 67, e TACPOL fronte a TINMAN: Requisitos para unha linguaxe de programación común de orde superior.
1977 – Unha comparación de PASCAL e ALGOL 68: Andrew S. Tanenbaum, xuño 1977.
1993 – Cinco pequenas linguaxes e como creceron: BLISS, Pascal, ALGOL 68, BCPL & C: Dennis M. Ritchie, abril de 1993.
2009 – En Go: oh, adiante: Que tal se resistirá o Go de Google á linguaxe de programación da marca X? : David Given, novembro de 2009.