Jämförelse av programmeringsspråk

Programmeringsspråk används för att kontrollera beteendet hos en maskin (ofta en dator ). Precis som naturliga språk följer programmeringsspråk reglerna för syntax och semantik .

Det finns tusentals programmeringsspråk och nya skapas varje år. Få språk blir någonsin så populära att de används av fler än ett fåtal personer, men professionella programmerare kan använda dussintals språk i en karriär.

De flesta programmeringsspråk är inte standardiserade av en internationell (eller nationell) standard, även ofta använda sådana, som Perl eller Standard ML (namnet till trots). Anmärkningsvärda standardiserade programmeringsspråk inkluderar ALGOL , C , C++ , JavaScript (under namnet ECMAScript ), Smalltalk , Prolog , Common Lisp , Scheme ( IEEE -standard), ISLISP , Ada , Fortran , COBOL , SQL och XQuery .

Allmän jämförelse

Följande tabell jämför allmän och teknisk information för ett urval av vanliga programmeringsspråk . Se de enskilda språkens artiklar för ytterligare information.

Språk Ursprungligt syfte Nödvändigt Objektorienterad Funktionell Procedurmässigt Generisk Reflekterande Händelsestyrd Andra paradigm Standardiserad ?
1C: Programmeringsspråk för företag Applikation , RAD , företag, allmänt , webb , mobil Ja Nej Ja Ja Ja Ja Ja Objektbaserad , prototypbaserad programmering Nej
ActionScript Applikation, klientsida , webb Ja Ja Ja Ja Nej Nej Ja prototypbaserad
Ja 1999-2003, ActionScript 1.0 med ES3, ActionScript 2.0 med ES3 och partiellt ES4-utkast, ActionScript 3.0 med ES4-utkast, ActionScript 3.0 med E4X
Ada Applikation, inbäddad , realtid , system Ja Ja Nej Ja Ja Nej Nej Samtidigt , distribuerat ,
Ja 1983, 2005, 2012, ANSI, ISO, GOST 27831-88
Aldor Mycket domänspecifik , symbolisk datoranvändning Ja Ja Ja Nej Nej Nej Nej Nej
ALGOL 58 Ansökan Ja Nej Nej Nej Nej Nej Nej Nej
ALGOL 60 Ansökan Ja Nej Nej Ja Ja Nej Nej
Ja 1960, IFIP WG 2.1 , ISO
ALGOL 68 Ansökan Ja Nej Ja Ja Ja Nej Nej Samverkande
Ja 1968, IFIP WG 2.1 , GOST 27974-88 ,
Ateji PX Parallell applikation Nej Ja Nej Nej Nej Nej Nej pi kalkyl Nej
APL Ansökan, databehandling Ja Ja Ja Ja Ja Ja Ja Array-orienterad , tyst
Ja 1989, ISO
assembleringsspråk Allmän Ja Nej Nej Nej Nej Nej Nej Vilken syntax som helst är vanligtvis mycket specifik, relaterad till målprocessorn
Ja 1985 IEEE 694-1985
AutoHotkey GUI-automatisering ( makron ), mycket domänspecifik Ja Ja
Nej Ja Nej Nej Ja Nej
AutoIt GUI-automatisering (makron), mycket domänspecifik Ja Nej Nej Ja Nej Nej Ja Nej
Ballerina Integration, agilt, server-side , allmänt Ja Ja Ja Ja Nej Nej Ja Samtidig, transaktionell, statiskt och starkt typad programmering, diagrammatisk/visuell programmering
De facto standard via Ballerina Language Specification
Våldsamt slag Skal , skript Ja Nej Nej Ja Nej Nej Nej
Eventuellt POSIX.2
GRUNDLÄGGANDE Ansökan, utbildning Ja Nej Nej Ja Nej Nej Nej
Ja 1983, ANSI, ISO, ECMA
BeanShell Applikation, skript Ja Ja Ja Nej Nej Ja Nej
Nej Pågår, JCP
SALIGHET Systemet Nej Nej Nej Ja Nej Nej Nej Nej
BlitzMax Applikation, spel Ja Ja Nej Ja Nej Ja Nej Nej
Bua Applikation, spelskript Nej Ja Nej Nej Nej Nej Nej Nej
C Applikation, system, allmänt ändamål, drift på låg nivå Ja Nej Nej Ja Nej Nej Nej
Ja 1989, ANSI C89, ISO/IEC C90, ISO/IEC C95, ISO/IEC C99, ISO/IEC C11, ISO/IEC C17, ISO/IEC C2x
C++ Applikation, system Ja Ja Ja Ja Ja Nej Nej
Ja 1998, ISO/IEC C++98, ISO/IEC C++03, ISO/IEC C++11, ISO/IEC C++14, ISO/IEC C++17, ISO/IEC C++20 , ISO/IEC C++23
C# Application, RAD, business, client-side, general, server-side, web, game programmering Ja Ja Ja Ja Ja Ja Ja Strukturerad, samtidig
Ja 2000, ECMA, ISO
Clarion Allmänt, affärer, webb Ja Ja Ja Nej Nej Nej Nej Okänd
Rena Allmän Nej Nej Ja Nej Ja Nej Nej Nej
Clojure Allmän Nej Nej Ja Nej Nej Nej Nej Samverkande Nej
CLU Allmän Ja Ja Nej Ja Ja Nej Nej Nej
COBOL Ansökan, affärer Ja Ja Nej Ja Nej Nej Nej
Ja 1968 ANSI X3.23, 1974, 1985; ISO/IEC 1989:1985, 2002, 2014
Kobra Applikation, företag, allmänt, webb Ja Ja Ja Nej Ja Ja Nej Nej
ColdFusion (CFML) webb Nej Ja Nej Ja Nej Nej Nej Nej
Vanlig Lisp Allmän Ja Ja Ja Ja Ja Ja Ja Utökningsbar syntax, array-orienterade , syntaktiska makron , flera utskick , samtidiga
Ja 1994, ANSI
COMAL 80 Utbildning Ja Nej Nej Ja Nej Nej Nej Nej
Kristall Generell mening Ja Ja Ja Ja Nej Nej Nej Alfastadiet Nej
Curry Ansökan Nej Nej Ja Nej Ja Nej Nej lat utvärdering , icke-determinism De facto standard via Curry Language Report
Cython Tillämpning, allmän, numerisk beräkning Ja Ja Ja Nej Nej Ja Nej Aspektorienterad Nej
D Applikation, system Ja Ja Ja Ja Ja Ja Nej Generativ, samtidig Nej
Pil Applikation, webb, serversida, mobil, IoT Ja Ja Ja Ja Ja Nej Ja Strukturerad
Ja ECMA-408 standard
Dylan Ansökan Nej Ja Ja Nej Nej Nej Nej Nej
Eiffel Allmänt, applikation, företag, klientsida, serversida, webb (EWF) Ja Ja Ja Nej Ja Ja Erl-G Ja agenter Distribuerad SCOOP , Void-safe
Ja 2005, ECMA, ISO
ELAN Utbildning Ja Nej Nej Ja Nej Nej Nej Strukturerad , stegvis förfining Nej
Elixir Ansökan, distribuerad Nej Nej Ja Nej Nej Ja Ja Samtidigt, fördelat Nej
Erlang Ansökan, distribuerad Nej Nej Ja Nej Nej Ja Ja Samtidigt, fördelat Nej
Eufori Ansökan Nej Nej Nej Ja Nej Ja Nej Nej
Faktor Allmän Ja Nej Kan ses som Nej Ja Ja Nej Stackorienterad Nej
FP Nej Nej Ja Nej Nej Nej Nej Nej
F# Ansökan Ja Ja Ja Ja Ja Ja Ja Nej
Vidare Allmän Ja Nej Kan ses som Ja Nej Nej Nej Stackorienterad
Ja 1994, ANSI
Fortran Tillämpning, numerisk beräkning Ja Ja Ja Ja Ja Nej Nej Array-baserad, vektoriserad, samtidig, infödd distribuerad/delat minne parallellism
Ja 1966, ANSI 66, ANSI 77, MIL-STD-1753, ISO 90, ISO 95, ISO 2003, ISO/IEC 1539-1:2010 (2008), ISO/IEC JTC1/SC22/WG5 N2145 (2018)
FreeBASIC Tillämpning, numerisk beräkning Ja Ja Nej Ja Ja Nej Nej Nej
Gambas Ansökan Ja Ja Nej Nej Nej Nej Ja Nej
Game Maker-språk Applikation, spelprogrammering Ja Ja Nej Nej Nej Nej Ja Nej
GLBasic Applikation, spel Ja Ja Nej Ja Nej Nej Nej Enkel objektorienterad Nej
Applikation, webb, serversida Ja Kan ses som Nej Ja Ja Ja Ja Samverkande De facto standard via Go Language Specification
Gosu Applikation, allmänt, skript, webb Ja Ja Nej Nej Ja Ja Nej Nej
GraphTalk Ansökan Nej Ja Nej Nej Nej Nej Nej Logik Nej
Häftig Applikation, allmänt, skript, webb Ja Ja Ja Ja Ja Ja Ja Meta-programmering Pågår, JCP
Hamn Applikation, affärer, databehandling, allmänt, webb Ja Ja Ja Ja Ja Ja Nej Deklarativ Nej
Haskell Ansökan Nej Nej Ja Nej Ja Nej Nej Lat utvärdering
Ja 2010, Haskell 2010
Haxe Applikation, allmänt, webb Ja Ja Ja Nej Ja Ja Nej Nej
HyperNext Ansökan, utbildning Nej Nej Nej Ja Nej Nej Ja Svagt skrivet Nej
HyperTalk Tillämpning, RAD, allmänt Nej Ja Nej Nej Nej Nej Ja Svagt skrivet Okänd
Io Applikation, värddriven scripting Ja Ja Nej Nej Nej Nej Nej Nej
IPL Allmän Nej Nej Ja Nej Nej Nej Nej Okänd
ISLISP Allmän Ja Ja Ja Nej Ja Nej Nej
Ja 1997, 2007, ISO
J Ansökan, databehandling Ja Ja Ja Ja Ja Ja Ja Array-orienterad, funktionsnivå , tyst, samtidig Nej
JADE Ansökan, distribuerad Ja Ja Nej Nej Nej Nej Nej Nej
Java Applikation, affär, klientsida, allmän, mobil utveckling, serversida, webb Ja Ja Ja Ja Ja Ja Ja Samverkande De facto standard via Java Language Specification
JavaScript Klientsida, serversida, webb Ja Ja Ja Ja Nej Ja Ja prototypbaserad
Ja 1997-2022, ECMA-262
Glädje Forskning Nej Nej Ja Nej Nej Nej Nej Stackorienterad Nej
jq "awk för JSON" Nej Nej Ja Nej Nej Nej Nej Tyst , Backtracking , Streaming , PEG Nej
Julia Allmän, teknisk beräkning Ja Ja Ja Ja Ja Ja Nej Multipel sändning, meta, skalär och array-orienterad, parallell, samtidig, distribuerad ("moln") Nej
K Databehandling, affärer Nej Nej Nej Nej Nej Nej Nej Array-orienterad, tyst Okänd
Kotlin Applikation, mobilutveckling, serversida, klientsida, webb Ja Ja Ja Ja Ja Ja Ja De facto standard via Kotlin Language Specification
Ksh Skal, skript Ja Ja Nej Ja Nej Nej Nej Flera varianter, anpassade programmerbara, dynamiska laddningsbara moduler
Ja 1992, POSIX.2
LabVIEW (G) Tillämpning, industriell instrumentering-automation Ja Ja Ja Nej Nej Nej Ja Dataflöde , visuellt Nej
Läspa Allmän Nej Nej Ja Nej Nej Nej Nej Okänd
LiveCode Tillämpning, RAD, allmänt Nej Ja Nej Nej Nej Nej Ja Svagt skrivet Nej
Logtalk Artificiell intelligens, tillämpning Nej Ja Nej Nej Nej Ja Ja Logik Nej
Linden Scripting Language (LSL) Virtuella världar innehåll skript och animering Ja Nej Nej Ja Nej Nej Ja Skript finns i objekt i världen De facto referens är Second Life- implementeringen av LSL .
Lua Applikation, inbäddat skript Ja Ja Ja Ja Nej Ja Nej Aspektorienterad, prototypbaserad Nej
Lönn Symbolisk beräkning, numerisk beräkning Ja Ja Ja Ja Nej Nej Nej Distribuerad Nej
Mathematica Symboliskt språk Ja Ja Ja Ja Ja Ja Ja Logik, distribuerad Nej
MATLAB Mycket domänspecifik, numerisk beräkning Ja Ja Nej Ja Nej Nej Nej Nej
Modula-2 Applikation, system Ja Nej Nej Nej Ja Nej Nej
Ja 1996, ISO
Modula-3 Ansökan Ja Ja Nej Nej Ja Nej Nej Nej
Påssjuka (M) Allmänt, tillämpning, databaser Ja Godkänd för nästa standard Nej Ja Partially Thru Indirection och Xecute Ja Godkänd för nästa standard Samtidig , multi-användare , NoSQL , transaktionsbearbetning
Ja 1977 ANSI, 1995, ISO 2020
Nim Applikation, allmänt, webb, skript, system Ja Ja Ja Ja Ja Ja Nej Flera utskick, Samtidigt, meta Nej
Oberon Applikation, system Ja Ja Nej Nej Nej Nej Nej Nej
Objekt Pascal Applikation, allmänt, mobilapp, webb Ja Ja Nej Ja Ja Ja Ja Strukturerad Nej
Mål-C Tillämpning, allmän Ja Ja Nej Ja Nej Ja Nej Samverkande Nej
OCaml Tillämpning, allmän Ja Ja Ja Ja Ja Nej Nej Nej
Occam Allmän Ja Nej Nej Ja Nej Nej Nej Samtidigt, processorienterat Nej
Opa Webbapplikationer Ja Nej Ja Nej Ja Nej Nej Distribuerad Nej
OpenLisp Allmänt, Embedded Lisp Engine Ja Ja Ja Nej Ja Nej Nej
Ja Ersätter ISLISP , ISO
Syre Ansökan Ja Ja Nej Nej Ja Nej Nej Nej
Oz-Mozart Ansökan, distribution, utbildning Ja Ja Ja Nej Nej Nej Nej Samtidigt, logik Nej
Pascal Ansökan, utbildning Ja Nej Nej Ja Nej Nej Nej
Ja 1983, ISO
Perl Applikation, skript, textbehandling, webb Ja Ja Ja Ja Ja Ja Nej Nej
PHP Serversidan, webbapplikation, webb Ja Ja Ja Ja Nej Ja Nej De facto standard via språkspecifikation och Requests for Comments (RFC)
PL/I Ansökan Ja Ja Nej Ja Nej Nej Nej
Ja 1969, ECMA-50 (1976)
Plus Applikation, systemutveckling Ja Nej Nej Ja Nej Nej Nej Nej
Postskriptum Grafik, sidbeskrivning Ja Nej Nej Ja Nej Nej Nej Konkatenativ , stackorienterad
Ja Som PostScript Reference Manual
PowerShell Administration, tillämpning, allmänt, scripting Ja Ja Ja Ja Nej Ja Nej Rörledning Nej
Prolog Applikation, artificiell intelligens Nej Nej Ja Ja Nej Ja Nej Logik, deklarativ
Ja 1995, ISO/IEC 13211-1:1995, TC1 2007, TC2 2012, TC3 2017
PureBasic Ansökan Nej Nej Nej Ja Nej Nej Nej Nej
Pytonorm Applikation, allmänt, webb, skript, artificiell intelligens, vetenskaplig beräkning Ja Ja Ja Ja Ja Ja Ja Aspektorienterad De facto standard via Python Enhancement Proposals (PEP)
R Ansökan, statistik Ja Ja Ja Ja Nej Ja Nej Nej
Racket Utbildning, allmänt, manus Nej Ja Ja Ja Nej Ja Nej Modulär, logik, meta Nej
Raku Skript, textbearbetning, lim Ja Ja Ja Ja Ja Ja Nej Aspektorienterad, array, lat utvärdering, multipelutsändning, metaprogrammering Ja
RIKTIGT grundläggande Ansökan Nej Nej Nej Ja Nej Nej Nej Okänd
Rebol Distribuerad Ja Ja Ja Ja Nej Ja Ja Uppringd Nej
REXX Skript Ja Ja ( NetRexx och Object REXX dialekter) Nej Ja Nej Nej Nej
Ja 1996 (ANSI X3.274-1996)
RPG Applikation, system Ja Nej Nej Ja Nej Nej Nej Nej
Ringa Ansökan Ja Ja Ja Ja Ja Ja Ja metaprogrammering, deklarativ, naturligt språk Nej
Rubin Applikation, skript, webb Ja Ja Ja Nej Nej Ja Nej Aspektorienterad
Ja 2011(JIS X 3017), 2012(ISO/IEC 30170)
Rost Applikation, serversida, system, webb Ja Ja Ja Ja Ja Nej Ja Samverkande Nej
S Ansökan, statistik Ja Ja Ja Ja Nej Nej Nej Nej
Slang Applikation, numeriskt, skript Ja Nej Nej Ja Nej Nej Nej Nej
Scala Applikation, distribuerad, webb Ja Ja Ja Nej Ja Ja Ja De facto standard via Scala Language Specification (SLS)
Schema Utbildning, allmänt Ja Nej Ja Nej Nej Nej Nej meta, töjbar-syntax
0 Ja 1975-2013, R RS, R 1 RS, R 2 RS, R 3 RS, R 4 RS, R 5 RS, R 6 RS, R 7 RS Small Edition
Frö7 Applikation, allmänt, skript, webb Ja Ja Nej Nej Ja Ja Nej Multiparadigm, utbyggbart, strukturerat Nej
Simula Utbildning, allmänt Ja Ja Nej Nej Nej Nej Ja diskret händelsesimulering , flertrådad (kvasiparallell) programexekvering
Ja 1968
Liten Basic Applikation, utbildning, spel Ja Nej Nej Nej Nej Nej Ja Komponentorienterad Nej
Småprat Applikation, allmänt, affärer, artificiell intelligens, utbildning, webb Ja Ja Ja Ja Nej Ja Ja Samtidigt, deklarativt
Ja 1998, ANSI
SNOBOL Textbehandling Nej Nej Nej Nej Nej Nej Nej Okänd
Standard ML Ansökan Ja Nej Ja Nej Ja Nej Nej
Ja 1997, SML '97
Snabb Tillämpning, allmän Ja Ja Ja Ja Ja Ja Ja Samtidigt, deklarativt, protokollorienterat Nej
Tcl Applikation, skript, webb Ja Ja Ja Ja Nej Ja Ja Nej
Visual Basic Applikation, RAD, utbildning, företag, allmänt, (Inkluderar VBA), kontorsautomation Ja Ja Nej Nej Ja Nej Ja Komponentorienterad Nej
Visual Basic .NET Applikation, RAD, utbildning, webb, företag, allmänt Ja Ja Ja Ja Ja Ja Ja Strukturerad, samtidig Nej
Visual FoxPro Ansökan Nej Ja Nej Nej Nej Nej Nej Datacentrerad, logik Nej
Visuell prolog Ansökan Ja Ja Ja Nej Nej Nej Ja Deklarativ, logik Nej
Wolfram språk Symboliskt språk Ja Ja Ja Ja Ja Ja Ja Logik, distribuerad Nej
XL Ja Ja Nej Nej Nej Nej Nej konceptprogrammering Nej
Xojo Applikation, RAD, allmänt, webb Ja Ja Nej Ja Nej Ja Ja Nej
XPath / XQuery Databaser, databehandling, scripting Nej Nej Ja Nej Nej Nej Nej Trädorienterad
Ja 1999 W3C XPath 1, 2010 W3C XQuery 1, 2014 W3C XPath/XQuery 3.0
Zeek Domänspecifik, applikation Ja Nej Nej Nej Nej Nej Ja Nej
Zig Applikation, allmänt, system Ja Nej Ja Ja Ja Ja Ja Samverkande Nej
Zsh Skal, skript Ja Nej Nej Ja Nej Nej Nej Laddbara moduler Nej

Typ system

Felsäkra I/O och systemanrop

De flesta programmeringsspråk kommer att skriva ut ett felmeddelande eller skicka ett undantag om en in-/utdataoperation eller annat systemanrop (t.ex. chmod , kill ) misslyckas, såvida inte programmeraren uttryckligen har ordnat med olika hantering av dessa händelser. Således misslyckas dessa språk säkert i detta avseende.

Vissa (oftast äldre) språk kräver att programmerare uttryckligen lägger till kontroller för dessa typer av fel. Psykologiskt kan olika kognitiva fördomar (t.ex. optimismbias ) påverka både nybörjare och experter och få dem att hoppa över dessa kontroller. Detta kan leda till felaktigt beteende .

Failsafe I/O är en funktion i 1C:Enterprise , Ada (undantag), ALGOL (undantag eller returvärde beroende på funktion), Ballerina , C# , Common Lisp ("villkor och omstarter"-system), Curry , D (kastning vid fel ), Erlang , Fortran , Go (om inte resultatet uttryckligen ignoreras), Gosu , Harbor , Haskell , ISLISP , Java , Julia , Kotlin , LabVIEW , Mathematica , Objective-C (undantag), OCaml (undantag), OpenLisp , PHP , Python , Raku , Rebol , Rexx (med valfri signal på ... fällhantering), Ring , Ruby , Rust (om inte resultatet uttryckligen ignoreras), Scala , Smalltalk , Standard ML [ citat behövs ] , Swift ≥ 2.0 (undantag), Tcl , Visual Basic , Visual Basic .NET , Visual Prolog , Wolfram Language , Xojo , XPath / XQuery (undantag) och Zeek .

No Failsafe I/O : AutoHotkey (global ErrorLevel måste uttryckligen kontrolleras), C , COBOL , Eiffel (det beror faktiskt på biblioteket och det är inte definierat av språket), GLBasic (kommer i allmänhet att få programmet att krascha), RPG , Lua (vissa funktioner varnar eller kastar inte undantag), och Perl .

Viss I/O-kontroll är inbyggd i C++ ( STL iostreams ger upphov till fel men C API:er som stdio eller POSIX gör det inte) och Object Pascal , i Bash är det valfritt.

Uttrycksförmåga

Språk Uttalanden förhållande Linjer förhållande
C 1 1
C++ 2.5 1
Fortran 2 0,8
Java 2.5 1.5
Perl 6 6
Småprat 6 6,25
Pytonorm 6 6.5

Litteraturen om programmeringsspråk innehåller ett överflöd av informella påståenden om deras relativa uttryckskraft , men det finns inget ramverk för att formalisera sådana påståenden eller för att härleda intressanta konsekvenser. Denna tabell ger två mått på uttrycksfullhet från två olika källor. Ett ytterligare mått på uttrycksförmåga, i GZip-byte, finns i Computer Language Benchmarks Game.

Riktmärken

Barplot av log-tid för att producera en 1600² Mandelbrot som rapporterats i The Benchmarks Game

Benchmarks är utformade för att efterlikna en viss typ av arbetsbelastning på en komponent eller ett system. Datorprogrammen som används för att sammanställa en del av referensdata i det här avsnittet kanske inte har optimerats helt, och relevansen av data är omtvistad. De mest exakta riktmärkena är de som är anpassade till just din situation. Andra människors benchmarkdata kan ha ett visst värde för andra, men korrekt tolkning medför många utmaningar . Webbplatsen Computer Language Benchmarks Game varnar för övergeneralisering från benchmarkdata, men innehåller ett stort antal mikrobenchmarks av läsarbidragna kodsnuttar, med ett gränssnitt som genererar olika diagram och tabeller som jämför specifika programmeringsspråk och typer av tester.

Tidslinje för specifika språkjämförelser

Se även

För att visa alla sidor, underkategorier och bilder klicka på "►":

Vidare läsning