| Programmiersprachenlisten |
|---|
|
Dies ist eine Liste bedeutender Programmiersprachen , gruppiert nach ihren wichtigsten Sprachattributen. Da eine Sprache mehrere Attribute besitzen kann, kann sie in mehreren Gruppen enthalten sein.
agentenorientierte Programmiersprachen
Die agentenorientierte Programmierung ermöglicht es dem Entwickler, Softwareagenten zu erstellen, zu erweitern und zu verwenden . Dabei handelt es sich um Abstraktionen von Objekten, die mit anderen Agenten kommunizieren können.
Array-Sprachen
Array-Programmiersprachen (auch Vektor- oder mehrdimensionale Programmiersprachen genannt) verallgemeinern Operationen auf Skalaren , sodass sie transparent auf Vektoren , Matrizen und höherdimensionale Arrays angewendet werden können .
Aspektorientierte Programmiersprachen
Die aspektorientierte Programmierung ermöglicht es Entwicklern, neue Funktionen, sogenannte Advice , zum Code hinzuzufügen, ohne diesen Code zu verändern. Stattdessen wird ein Pointcut verwendet , um die Advice in Codeblöcke zu implementieren.
Assemblersprachen
Assemblersprachen entsprechen direkt einer Maschinensprache (siehe unten ), sodass Maschinencode-Befehle in einer für Menschen verständlichen Form erscheinen, auch wenn keine Eins-zu-eins-Zuordnung zwischen einer einzelnen Anweisung und einem einzelnen Befehl besteht. Assemblersprachen ermöglichen Programmierern die Verwendung symbolischer Adressen, die der Assembler in absolute oder verschiebbare Adressen umwandelt. Die meisten Assembler unterstützen außerdem Makros und symbolische Konstanten .
Autorensprachen
Eine Autorensprache ist eine Programmiersprache, die für die Verwendung durch Nicht-Computerfachleute konzipiert wurde, um auf einfache Weise Tutorials, Websites und andere interaktive Computerprogramme zu erstellen.
Kommandozeilenschnittstellensprachen
Kommandozeilenschnittstellen (CLI-Sprachen) werden auch als Batch-Sprachen oder Jobsteuerungssprachen bezeichnet. Beispiele:
- 4DOS (Shell für IBM-PCs)
- 4OS2 (Shell für IBM-PCs)
- Batchdateien für DOS und Windows
- COMMAND.COM -Befehlssprache für DOS und Windows-Systeme vor Windows NT
- cmd.exe -Befehlssprache für Windows NT
- sh
- CLIST (MVS-Befehlsliste)
- CMS-Manager
- csh
- Digitale Befehlssprache CLI für OpenVMS
- EXEC 2
- Erwarten
- Fisch
- Nushell
- Windows PowerShell
- rc
- Rexx
- TACL (Programmiersprache)
Kompilierte Sprachen
Dies sind Sprachen, die typischerweise von Compilern verarbeitet werden , obwohl theoretisch jede Sprache kompiliert oder interpretiert werden kann.
- ArkTS
- ActionScript
- Ada
- ALGOL 58
- ALGOL 60
- ALGOL 68
- Ballerina ( Bytecode- Laufzeitumgebung)
- BASIC (einschließlich der ersten Version von Dartmouth BASIC)
- BCPL
- C
- C++
- C# (in CIL- Laufzeitumgebung)
- Ceylon (in JVM-Bytecode )
- KÜHLEN
- Clipper 5.3
- CLEO für Leo-Computer
- Clojure (in JVM-Bytecode )
- COBOL
- Kobra
- Common Lisp
- Kristall
- Locken
- D
- DASL→Java, JavaScript (JS), JSP, Flex.war
- Delphi ( Borlands Object -Pascal -Entwicklungssystem)
- DIBOL (Digital COBOL)
- Dylan
- Eiffel
- Ulme
- Emacs Lisp
- Smaragd
- Erlang
- Faktor
- Fortran
- GAUSS
- Gehen
- Gosu (in JVM-Bytecode )
- Groovy (in JVM-Bytecode )
- Haskell
- Hafen
- Heiliger C
- Inform (in der Regel Story-Dateien für Glulx oder Z-Code )
- Java (in JVM-Bytecode , unterstützt auch GraalVM Native Image für native Binärdateien)
- JOVIAL
- Julia (direkte Umwandlung in Maschinencode)
- Kotlin (in JVM-Bytecode , unterstützt auch Kotlin/Native, das LLVM zur Erzeugung von Binärdateien verwendet)
- LabVIEW
- Quecksilber
- Mesa
- Nemerle (in Zwischensprachen-Bytecode)
- Nim
- Objective-C
- P
- Pascal (die meisten Implementierungen)
- PL/I
- Plus
- Pony
- Python (zu Zwischen- VM -Bytecode )
- RPG (Berichtsprogrammgenerator)
- Rot
- Rost
- Scala (in JVM-Bytecode ))
- Schema (z. B. Gambit)
- SequenzL
- Simula
- Smalltalk- Plattform-unabhängiger VM- Bytecode
- Schnell
- ML
- Standard ML (SML)
- OCaml
- F# (in CIL , generiert Laufzeit)
- Turing
- V (Vlang)
- Vala
- Visual Basic ( CIL JIT-Laufzeitumgebung)
- Visual FoxPro
- Visueller Prolog
- Xojo
- Zig
Konkatenative Programmiersprachen
Eine konkatenative Programmiersprache ist eine punktfreie Computerprogrammiersprache , in der alle Ausdrücke Funktionen bezeichnen und die Aneinanderreihung von Ausdrücken die Funktionskomposition darstellt .
Gleichzeitige Sprachen
Message-Passing -Sprachen bieten Sprachkonstrukte für die Parallelverarbeitung . Das vorherrschende Paradigma für Parallelverarbeitung in gängigen Sprachen wie Java ist die Shared-Memory- Parallelverarbeitung. Parallelverarbeitungssprachen, die Message Passing nutzen, wurden im Allgemeinen von Prozesskalkülen wie dem kommunikativen sequenziellen Prozessmodell (CSP) oder dem π-Kalkül inspiriert .
- Ada
- Alef
- Ateji PX
- Ballerina
- C++ (seit C++11 )
- Futter
- Ziege
- Cω (durch asynchrone Kommunikation)
- Clojure
- Kapelle
- Co-array Fortran
- Gleichzeitiger Pascal
- Curry
- E
- Eiffel (über den SCOOP- Mechanismus, Simple Concurrent Object-Oriented Computation)
- Elixier
- Emerald (durch Threads und Monitore)
- Erlang (durch asynchrone Nachrichtenübermittlung ohne gemeinsame Nutzung von Daten)
- Gambit-Schema (unter Verwendung der Termite-Bibliothek)
- Glänzen
- Gehen
- Haskell (durch nebenläufige, verteilte und parallele Programmierung auf mehreren Rechnern)
- Java
- Julia
- Joule (durch Nachrichtenübermittlung)
- LabVIEW
- Limbo
- MultiLisp (durch erweiterte Parallelverarbeitungsfunktionen)
- OCaml
- Occam
- Ork
- Oz (durch Shared-State- und Message-Passing-Concurrency, Futures und das plattformübergreifende Mozart Programming System Oz)
- P
- Pony
- Bild
- Python (durch Thread-basierte Parallelität und Prozess-basierte Parallelität [ 4 ] )
- Raku [ 5 ]
- Rost
- Scala
- SequenzL
- SR
- V (Vlang)
- Unified Parallel C
- XProc
Constraint-Programmiersprachen
Eine Constraint- Programmiersprache ist eine deklarative Programmiersprache, in der Beziehungen zwischen Variablen als Constraints ausgedrückt werden . Die Ausführung erfolgt durch den Versuch, Werte für die Variablen zu finden, die alle deklarierten Constraints erfüllen.
Vertragssprachen
Design by Contract (oder Vertragsprogrammierung) ist Programmierung unter Verwendung definierter Vorbedingungen , Nachbedingungen und Invarianten .
- Ada (seit Ada 2012)
- Ciao
- Clojure
- Kobra
- C++ (seit C++26 )
- D [ 7 ]
- Dafny
- Eiffel
- Festung
- Kotlin
- Quecksilber
- Oxygene (ehemals Chrome und Delphi Prism [ 8 ] )
- Racket (einschließlich Verträge höherer Ordnung, wobei betont wird, dass Vertragsverletzungen die schuldige Partei verantwortlich machen und dies mit einer genauen Erklärung tun müssen [ 9 ] )
- Sather
- Scala [ 10 ] [ 11 ]
- SPARK (mittels statischer Analyse von Ada -Programmen)
- Vala
- Wiener Entwicklungsmethode (VDM)
Sprachen mit geschweiften Klammern
Eine geschweifte Klammersprache definiert einen Block als die Anweisungen zwischen geschweiften Klammern . Diese Syntax stammt ursprünglich aus BCPL (1966) und wurde durch C bekannt . Viele geschweifte Klammersprachen basieren auf C oder sind stark von C beeinflusst . Beispiele: {}
- ABCL/c+
- Alef
- AWK
- ArkTS
- B
- bc
- BCPL
- Ballerina
- C
- C++
- C#
- Ceylon
- Kapelle
- Futter
- Ziege
- Zyklon
- D
- Pfeil
- DASL – basiert auf Java
- E
- ECMAScript
- GLSL
- Gehen
- HLSL
- Java
- Limbo
- LPC
- MEL
- Nemerle (geschweifte Klammern optional) [ 12 ]
- Objective-C
- PCASTL
- Perl
- PHP
- Pico
- Pike
- PowerShell
- R
- Raku
- Rost
- Slang
- Scala (geschweifte Klammern optional)
- sed
- Solidität [ 13 ]
- SuperCollider
- Schnell
- Tcl
- UnrealScript
- V (Vlang)
- Yorick
- JAAA
- Zig
Dataflow-Sprachen
Datenfluss-Programmiersprachen nutzen eine (meist visuelle) Darstellung des Datenflusses, um das Programm zu spezifizieren. Sie werden häufig verwendet, um auf einzelne Ereignisse zu reagieren oder Datenströme zu verarbeiten. Zu den Datenfluss-Sprachen gehören:
Datenorientierte Sprachen
Datenorientierte Sprachen bieten leistungsstarke Möglichkeiten zum Suchen und Bearbeiten von Beziehungen, die als Entity-Relationship-Tabellen beschrieben wurden und eine Menge von Dingen anderen Mengen zuordnen. Zu den datenorientierten Sprachen gehören:
Entscheidungstabellensprachen
Entscheidungstabellen können als Hilfsmittel zur Verdeutlichung der Logik vor dem Schreiben eines Programms in jeder beliebigen Sprache verwendet werden. In den 1960er Jahren wurden jedoch eine Reihe von Sprachen entwickelt, bei denen die Hauptlogik direkt in Form einer Entscheidungstabelle ausgedrückt wird, darunter:
Deklarative Sprachen
Deklarative Sprachen drücken die Logik einer Berechnung aus, ohne deren Kontrollfluss detailliert zu beschreiben. Deklarative Programmierung steht im Gegensatz zur imperativen Programmierung , bei der der Kontrollfluss durch sequentielle Befehle (Imperative) festgelegt wird. (Rein) funktionale und logikbasierte Programmiersprachen sind ebenfalls deklarativ und bilden die wichtigsten Unterkategorien der deklarativen Sprachen. Dieser Abschnitt enthält weitere Beispiele, die nicht in diese Unterkategorien fallen.
- Analytica
- Ant (kombiniert deklarative und imperative Programmierung )
- Curry
- Chiffre
- Datenprotokoll
- Distributed Application Specification Language (DASL) (kombiniert deklarative und imperative Programmierung )
- ECL
- Gremlin
- Inform (kombiniert deklarative und imperative Programmierung )
- Lüster
- Quecksilber
- Metafont
- MetaPost
- Modelica
- Nix
- Prolog
- QML
- Oz
- RDQL
- SequenzL
- SPARQL
- SQL (Nur DQL, nicht DDL, DCL und DML)
- Souffle
- VHDL (unterstützt deklarative , imperative und funktionale Programmierung )
- Wolfram Mathematica ( Wolfram-Sprache )
- WOQL ( TerminusDB )
- xBase
- XSL-Transformationen
Einbettbare Sprachen
Im Quellcode
Quellcode-Einbettungssprachen betten kleine Teile ausführbaren Codes in einen frei formulierten Text ein, häufig in eine Webseite.
Clientseitig eingebettete Sprachen sind durch die Fähigkeiten des Browsers oder des jeweiligen Clients begrenzt. Sie zielen darauf ab, Webseiten Dynamik zu verleihen, ohne dass eine erneute Kontaktaufnahme mit dem Server erforderlich ist.
Serverseitig eingebettete Sprachen sind deutlich flexibler, da sich nahezu jede Sprache in einen Server integrieren lässt. Ziel der Einbettung von serverseitigem Code in eine Webseite ist die dynamische Generierung von zusätzlichem Markup; der Code selbst verschwindet beim Ausliefern der Seite und wird durch dessen Ausgabe ersetzt.
Serverseitig
- PHP
- VBScript
- Tcl – serverseitig in NaviServer und eine unverzichtbare Komponente in Systemen der Elektronikindustrie
Die obigen Beispiele sind speziell für diesen Zweck gedacht. Zahlreiche weitere Sprachen, wie beispielsweise Erlang , Scala , Perl und Ruby, können angepasst werden (zum Beispiel durch die Umwandlung in Apache -Module).
Clientseite
Im Objektcode
Eine Vielzahl dynamischer Sprachen oder Skriptsprachen lässt sich in kompilierten ausführbaren Code einbetten. Dazu muss der Objektcode für den Interpreter der Sprache in die ausführbare Datei eingebunden werden. Quellcodefragmente der eingebetteten Sprache können dann als Zeichenketten an eine Auswertungsfunktion übergeben werden. Anwendungssteuerungssprachen lassen sich auf diese Weise implementieren, wenn der Quellcode vom Benutzer eingegeben wird. Sprachen mit kleinen Interpretern sind hierbei von Vorteil.
Programmiersprachen für Bildungszwecke
Programmiersprachen, die primär zum Zweck des Lehrens und Lernens von Programmierkenntnissen entwickelt wurden.
Esoterische Sprachen
Eine esoterische Programmiersprache ist eine Programmiersprache, die als Test der Grenzen des Designs von Computerprogrammiersprachen, als Machbarkeitsnachweis oder als Scherz konzipiert wurde.
Erweiterungssprachen
Erweiterungsprogrammiersprachen sind Sprachen, die in ein anderes Programm eingebettet sind und dazu dienen, dessen Funktionen in Erweiterungsskripten zu nutzen.
- AutoLISP (speziell für AutoCAD )
- Bohnenschale
- CAL
- C/AL (C/SIDE)
- List
- Emacs Lisp
- JavaScript und einige Dialekte, z. B. JScript
- Lua (in vielen Spielen eingebettet)
- OpenCL (Erweiterung von C und C++ zur Nutzung der GPU und paralleler Erweiterungen der CPU)
- OptimJ (Erweiterung von Java mit Sprachunterstützung zum Schreiben von Optimierungsmodellen und leistungsstarken Abstraktionen für die Massendatenverarbeitung)
- Perl
- Pike
- PowerShell
- Python (eingebettet in Maya, Blender und anderen 3D-Animationspaketen)
- Rexx
- Ruby (Google SketchUp)
- Slang
- SQL
- Eichhörnchen
- Tcl
- Vim-Skript (vim)
- Visual Basic for Applications (VBA)
Sprachen der vierten Generation
Programmiersprachen der vierten Generation sind höhere Programmiersprachen, die um Datenbanksysteme herum aufgebaut sind . Sie werden im Allgemeinen in kommerziellen Umgebungen eingesetzt.
- 1C: Unternehmensprogrammiersprache
- ABAP
- CorVision
- GraphTalk von CSC
- CA-IDEAL (Interaktive Entwicklungsumgebung für einen Anwendungslebenszyklus) zur Verwendung mit CA- DATACOM/DB
- Easytrieve- Berichtsgenerator (jetzt CA-Easytrieve Plus)
- FOKUS
- IBM Informix-4GL
- LINC 4GL
- LiveCode (Nicht datenbankbasiert; dennoch ist das Ziel, auf einer höheren Abstraktionsebene als 3GLs zu arbeiten.)
- MAPPER ( Unisys/Sperry ) (jetzt Teil von BIS)
- MARK-IV ( Sterling/Informatics ) jetzt VISION:BUILDER von CA
- NATÜRLICH
- Progress 4GL
- PV-Welle
- ABRUFEN
- SAS
- SQL
- Ubercode (VHLL, oder Very-High-Level Language)
- Uniface
- Visual DataFlex
- Visual FoxPro
- xBase
Funktionale Sprachen
Funktionale Programmiersprachen definieren Programme und Unterprogramme als mathematische Funktionen und behandeln sie als Funktionen erster Klasse. Viele sogenannte funktionale Sprachen sind „unrein“, da sie imperative Merkmale aufweisen. Viele funktionale Sprachen sind an mathematische Berechnungswerkzeuge gebunden. Zu den funktionalen Sprachen gehören:
Rein
Unrein
- APL
- ATS
- CAL
- C++ (seit C++11 )
- C#
- VB.NET
- Ceylon
- Locken
- D
- Pfeil
- ECMAScript
- Erlang
- Fexl
- Flix
- G (wird in LabVIEW verwendet)
- Groovy
- Hop
- Java (seit Version 8)
- Julia
- Kotlin
- Lispeln
- ML
- Standard ML (SML)
- OCaml
- F#
- Nemerle
- Nim
- Opal
- OPS5
- Perl
- PHP
- PL/pgSQL
- Python
- Q (gleichungsbasierte Programmiersprache)
- R
- Rebol
- Rot
- Rubin
- REFAL
- Rost
- Scala
- Schnell
- Tabellenkalkulationen
- V (Vlang)
- Tcl
- Wolfram Mathematica ( Wolfram-Sprache )
Hardwarebeschreibungssprachen
In der Elektronik ist eine Hardwarebeschreibungssprache (HDL) eine spezielle Computersprache, die zur Beschreibung der Struktur, des Designs und der Funktionsweise elektronischer Schaltungen, insbesondere digitaler Logikschaltungen, dient. Die beiden am weitesten verbreiteten und am besten unterstützten HDL-Varianten in der Industrie sind Verilog und VHDL . Zu den Hardwarebeschreibungssprachen gehören:
HDLs für den Entwurf analoger Schaltungen
- Verilog-AMS (Verilog für analoge und gemischte Signale)
- VHDL-AMS (VHDL mit Analog/Mixed-Signal-Erweiterung)
HDLs für den Entwurf digitaler Schaltungen
Imperativsprachen
Imperative Programmiersprachen können multiparadigmatisch sein und auch in anderen Klassifikationen auftreten. Hier ist eine Liste von Programmiersprachen, die dem imperativen Paradigma folgen :
- Ada
- ALGOL 58
- ALGOL 60 (sehr einflussreiches Sprachdesign)
- ALGOL 68
- Assemblersprachen
- BASIC
- C
- C++
- C#
- Ceylon
- KÜHLEN
- COBOL
- D
- Pfeil
- ECMAScript
- FORTRAN
- GAUSS
- Gehen
- Groovy
- Symbol
- Java
- Julia
- Lua
- MATLAB
- Maschinensprachen
- Modula-2 , Modula-3
- MUMPS
- Nim
- OCaml
- Oberon
- Objekt Pascal
- Open Object Rexx (ooRexx)
- Offene Programmiersprache (OPL)
- OpenEdge Advanced Business Language (ABL)
- Pascal
- Perl
- PHP
- PL/I
- PL/S
- PowerShell
- PROSA
- Python
- Raku
- Rexx
- Rubin
- Rost
- SETL
- Flüsterkneipe
- Schnell
- Tcl
- V (Vlang)
- Wolfram Mathematica ( Wolfram-Sprache )
Sprachen des interaktiven Modus
Bekannt als REPL – interaktive Programmiersprachen fungieren als eine Art Shell: Ausdrücke oder Anweisungen können einzeln eingegeben werden, und das Ergebnis ihrer Auswertung wird sofort angezeigt.
- APL
- BASIC (einige Dialekte)
- Clojure
- Common Lisp
- Dart (mit den Entwicklertools von Observatory oder Dartium)
- ECMAScript
- Erlang
- Elixier (mit iex)
- F#
- Fril
- GAUSS
- Groovy
- List
- Haskell (mit dem GHCi- oder Hugs-Interpreter)
- IDL
- J
- Java (seit Version 9)
- Julia
- Lua
- MUMPS (eine ANSI-Standardsprache für allgemeine Zwecke)
- Ahorn
- MATLAB
- ML
- Nim (mit INim)
- OCaml
- Perl
- PHP
- Pike
- PostScript
- PowerShell ( .NET -basierte Befehlszeilenschnittstelle)
- Prolog
- Python
- PROSA
- R
- Raku
- Rebol
- Rot
- Rexx
- Ruby (mit IRB )
- Scala
- Schema
- Smalltalk (überall in einer Smalltalk-Umgebung)
- S-Lang (mit der S-Lang-Hülle, slsh)
- Flüsterkneipe
- Schnell
- Tcl (mit der Tcl-Shell, tclsh)
- Unix-Shell
- Visual FoxPro
- Wolfram Mathematica ( Wolfram-Sprache )
Gedolmetschte Sprachen
Interpretierte Sprachen sind Programmiersprachen, deren Programme mithilfe eines Interpreters direkt aus dem Quellcode ausgeführt werden können. Theoretisch kann jede Sprache kompiliert oder interpretiert werden, daher bezieht sich der Begriff „ interpretierte Sprache“ im Allgemeinen auf Sprachen, die üblicherweise interpretiert und nicht kompiliert werden.
- Ameise
- APL
- AutoHotkey -Skriptsprache
- AutoIt -Skriptsprache
- BASIC (einige Dialekte)
- Programmiersprache für Unternehmen (PL/B, ehemals DATABUS, spätere Versionen mit optionaler Kompilierung)
- Eiffel (mittels Schmelzeistechnologie im EiffelStudio )
- Emacs Lisp
- FOCAL
- GameMaker-Sprache
- Groovy
- J
- jq
- Java via JVM-Bytecode
- Julia (wird standardmäßig zur Laufzeit in Maschinencode kompiliert , Interpretation ist ebenfalls möglich)
- JavaScript
- Lisp (frühe Versionen, vor 1962, und einige experimentelle; produktive Lisp-Systeme sind Compiler, aber viele von ihnen bieten bei Bedarf immer noch einen Interpreter an)
- LPC
- Lua
- MUMPS (eine ANSI-Standardsprache für allgemeine Zwecke)
- Ahorn
- MATLAB
- OCaml
- Pascal (frühe Implementierungen)
- PCASTL
- Perl
- PHP
- PostScript
- PowerShell
- PROSA
- Python
- Rexx
- R
- Raku
- Rebol
- Rot
- Rubin
- Slang
- Seed7
- Flüsterkneipe
- Standard ML (SML)
- Drehen
- Tcl
- Tee
- TorqueScript
- VBScript
- Windows PowerShell – .NET -basierte Befehlszeilenschnittstelle
- Einige Skriptsprachen – unten
- Wolfram Mathematica ( Wolfram-Sprache )
Iterative Sprachen
Iterative Sprachen basieren auf Generatoren oder bieten diese an .
Sprachen nach Speicherverwaltungstyp
Müll gesammelte Sprachen
Die automatische Speicherbereinigung (Garbage Collection, GC) ist eine Form der automatischen Speicherverwaltung. Der Garbage Collector versucht, Speicher freizugeben, der vom Programm belegt, aber nicht mehr verwendet wird.
- APL
- C , durch inoffizielle Müllsammler wie Boehm
- C++ (unterstützt in der Standardbibliothek von C++11 bis C++23 ) [ 15 ] [ 16 ]
- C#
- Sauber
- Kristall
- Pfeil
- ECMAScript
- Smaragd
- Erlang
- Gehen
- Groovy
- Haskell
- Java
- Julia
- Kotlin
- LabVIEW
- Lisp (Urheber)
- Lua
- ML
- Standard ML (SML)
- OCaml
- Modula-3
- Perl
- PHP
- PowerShell
- Python
- Rubin
- Smalltalk
- Flüsterkneipe
Sprachen mit manueller Speicherverwaltung
- ALGOL 68
- Montage (verschiedene)
- WONNE
- C
- C++
- C# , in
unsafeKontexten - Komponente Pascal
- Viertens
- Fortran
- FreeBASIC
- Java , durch die interne Klasse sun.misc.Unsafe
- Modula-2
- Oberon
- Pascal
- PL/I
- Rost , in
unsafeKontexten - Zig
Sprachen mit optionaler manueller Speicherverwaltung
- Ada [ a ]
- Blitz BASIC [ 18 ] [ 19 ] [ 20 ]
- C , durch inoffizielle Müllsammler wie Boehm
- C++ (von C++11 bis C++23 mit optionaler Unterstützung für Garbage Collection) [ 15 ] [ 21 ]
- COBOL [ 22 ] [ 23 ] [ 24 ]
- D [ 25 ]
- Nim [ 26 ]
- Objective-C [ 27 ]
- Objective-C++
- PostScript [ b ]
- V [ 29 ]
- Vala [ 30 ]
Einige Programmiersprachen ohne die inhärente Fähigkeit zur manuellen Speicherverwaltung, wie Cython , [ 31 ] Swift , [ c ] und Scala [ 32 ] (nur Scala Native), können Funktionen wie mallocund freeaus C über eine Foreign Function Interface importieren oder aufrufen .
Sprachen mit deterministischer Speicherverwaltung
Sprachen mit automatischer Referenzzählung (ARC)
Listenbasierte Sprachen – LISPs
Listenbasierte Sprachen sind eine Art datenstrukturierter Sprachen , die auf der Listendatenstruktur basieren .
Kleine Sprachen
Kleine Sprachen [ 35 ] dienen einem spezialisierten Problembereich.
- awk – wird zur Bearbeitung von Textdateien verwendet.
- sed – analysiert und transformiert Text
- SQL – verfügt nur über wenige Schlüsselwörter und nicht über alle Konstrukte, die für eine vollständige Programmiersprache erforderlich sind [ d ] – viele Datenbankmanagementsysteme erweitern SQL um zusätzliche Konstrukte als gespeicherte Prozedursprache
- XPL – eine Sprache, die für die Compilerentwicklung entwickelt wurde, aber nicht darauf beschränkt ist.
Logikbasierte Sprachen
Logikbasierte Sprachen spezifizieren eine Reihe von Attributen, die eine Lösung haben muss, anstatt eine Reihe von Schritten zur Erlangung einer Lösung.
Zu den bemerkenswerten Sprachen, die diesem Programmierparadigma folgen , gehören:
- ALF
- Alma-0
- Curry
- Datenprotokoll
- Fril
- Flix (eine funktionale Programmiersprache mit erstklassigen Datalog-Constraints)
- Janus
- λProlog (eine logische Programmiersprache mit polymorpher Typisierung, modularer Programmierung und Programmierung höherer Ordnung)
- Oz und das plattformübergreifende Mozart-Programmiersystem Oz
- Prolog (formuliert Daten und den Programmauswertungsmechanismus als eine spezielle Form der mathematischen Logik, die als Horn-Logik bezeichnet wird , und einen allgemeinen Beweismechanismus, der als logische Resolution bezeichnet wird )
- Merkur (basierend auf Prolog)
- Visual Prolog (objektorientierte Prolog-Erweiterung)
- ROOP
- Souffle
Maschinensprachen
Maschinensprachen sind direkt von der CPU eines Computers ausführbar. Sie werden typischerweise als Bitmuster formuliert, üblicherweise oktal oder hexadezimal dargestellt . Jedes Bitmuster veranlasst die Schaltkreise der CPU, eine der grundlegenden Hardwareoperationen auszuführen. Die Aktivierung bestimmter elektrischer Eingänge (z. B. CPU-Gehäusepins bei Mikroprozessoren) und logische Einstellungen für CPU-Zustände steuern die Berechnungen des Prozessors. Jede Maschinensprache ist spezifisch für eine Prozessorfamilie; Maschinensprachencode für eine Prozessorfamilie kann nicht direkt auf Prozessoren einer anderen Familie ausgeführt werden, es sei denn, die betreffenden Prozessoren verfügen über zusätzliche Hardware zur Unterstützung (beispielsweise enthielten DEC VAX-Prozessoren einen PDP-11-Kompatibilitätsmodus). Sie werden (im Wesentlichen) immer vom CPU-Entwickler und nicht von Dritten definiert. [ e ] Die symbolische Version, die Assemblersprache des Prozessors , wird in den meisten Fällen ebenfalls vom Entwickler definiert. Einige häufig verwendete Maschinencode -Befehlssätze sind:
- ARM
- Burroughs Corporation
- DEZ :
- Hewlett-Packard
- IBM [ f ]
- Intel 8008 , 8080 und 8085
- Intel x86 :
- 16-Bit x86 , erstmals verwendet im Intel 8086
- Intel 8086 und 8088 (letzterer wurde im ersten und frühen IBM PC verwendet )
- Intel 80186
- Intel 80286 (der erste x86-Prozessor mit geschütztem Modus , verwendet im IBM PC AT )
- IA-32 , eingeführt im 80386
- x86-64 – Die ursprüngliche Spezifikation wurde von AMD erstellt . Es gibt zwar herstellerspezifische Varianten, aber im Wesentlichen sind sie alle gleich:
- 16-Bit x86 , erstmals verwendet im Intel 8086
- MCST Elbrus 2000
- MIPS
- MOS Technology 65xx ( 8-Bit )
- 6502 (CPU für NES , VIC-20 , BBC Micro , Apple II und Atari 8-Bit-Computer )
- 6510 (CPU für Commodore 64 )
- Western Design Center 65816/65802 (CPU für Apple IIGS und (Variante) Super Nintendo Entertainment System )
- Motorola 6800 ( 8-Bit )
- Motorola 68000-Serie (CPUs, die in frühen Macintosh- und frühen Sun -Computern verwendet wurden)
- National Semiconductor NS320xx
- POWER , erstmals verwendet im IBM RS/6000
- PowerPC – verwendet im Power Macintosh und in vielen Spielkonsolen , insbesondere der siebten Generation .
- Power ISA – eine Weiterentwicklung von PowerPC .
- RISC-V
- Sun Microsystems (jetzt Oracle ) SPARC
- UNIVAC [ f ]
Makrosprachen
Textsubstitutions-Makrosprachen
Makrosprachen transformieren eine Quellcodedatei in eine andere. Ein „Makro“ ist im Wesentlichen ein kurzer Textabschnitt, der zu einem längeren Text erweitert wird (nicht zu verwechseln mit hygienischen Makros ), gegebenenfalls unter Einbeziehung von Parametern. Sie werden häufig zur Vorverarbeitung von Quellcode verwendet. Präprozessoren können auch Funktionen wie das Einbinden von Dateien bereitstellen .
Makrosprachen können auf speziell gekennzeichnete Codebereiche beschränkt sein ( #im Fall des C-Präprozessors mit einem Präfix versehen). Alternativ ist dies nicht möglich, doch auch dann ist es oft unerwünscht, beispielsweise ein in einem Stringliteral eingebettetes Makro zu expandieren . Daher benötigen sie weiterhin grundlegende Syntaxkenntnisse. Aus diesem Grund sind sie häufig in mehr als einer Sprache anwendbar. Im Gegensatz dazu bieten quellcodebasierte Sprachen wie PHP einen vollen Funktionsumfang.
- C-Präprozessor
- m4 (ursprünglich von AT&T, im Paket mit Unix)
- ML/I (Allzweck-Makroprozessor)
- TTM (entwickelt am California Institute of Technology)
Anwendungsmakrosprachen
Skriptsprachen wie Tcl und ECMAScript ( ActionScript , ECMAScript für XML , JavaScript , JScript ) wurden in Anwendungen integriert. Diese werden manchmal als „Makrosprachen“ bezeichnet, allerdings in einem etwas anderen Sinne als Textersetzungsmakros wie m4 .
Metaprogrammiersprachen
Metaprogrammierung bezeichnet das Schreiben von Programmen, die andere Programme – einschließlich sich selbst – als ihre Daten verwenden oder Teile der sonst zur Laufzeit ausgeführten Arbeit bereits zur Kompilierzeit erledigen . In vielen Fällen ermöglicht dies Programmierern, in der gleichen Zeit mehr zu erreichen, als wenn sie den gesamten Code manuell schreiben würden.
Modulare Sprachen
Modulare Programmierung ist ein Programmierparadigma, bei dem Funktionen und Symbole in unabhängige Module organisiert werden.
- Ada
- ALGOL
- BlitzMax
- C (über Clang- Erweiterungen)
- C++ (über C++-Module )
- C#
- Clojure
- COBOL
- Common Lisp
- D
- Pfeil
- eC
- Erlang
- Elixier
- Ulme
- F
- F#
- Fortran
- Gehen
- Haskell
- IBM/360 Assembler
- IBM System/38 und AS/400 Steuerungssprache (CL)
- IBM RPG
- Java (über Java-Pakete und Java-Module )
- JavaScript [ 38 ]
- Julia
- MATLAB
- ML
- Modula , Modula-2 , Modula-3
- Morpho
- NEWP
- Oberon , Oberon-2
- Objective-C
- OCaml
- Pascal -Derivate
- Perl
- PHP
- PL/I
- PureBasic
- Python
- R
- Ruby [ 39 ]
- Rost
- Visual Basic (.NET)
- WebDNA.
Multiparadigmatische Sprachen
Multiparadigmatische Sprachen unterstützen mehrere Programmierparadigmen . Sie ermöglichen es einem Programm, verschiedene Programmierstile zu verwenden . Ziel ist es, Programmierern die Wahl des jeweils besten Werkzeugs für eine Aufgabe zu ermöglichen, wohl wissend, dass kein einzelnes Paradigma alle Probleme auf die einfachste oder effizienteste Weise löst.
- 1C: Unternehmensprogrammiersprache (generisch, imperativer, objektorientierter, prototypenbasierter, funktionaler Programmierstil)
- Ada ( nebenläufig , verteilt , generisch ( Template-Metaprogrammierung ), imperativ , objektorientiert ( klassenbasiert ))
- ALF ( funktional , logisch )
- Alma-0 (Beschränkung, Imperativ, Logik)
- APL (funktional, imperativer, objektorientierter (klassenbasierter) Ansatz)
- BETA (funktional, imperativer, objektorientierter (klassenbasierter))
- C++ (generisch, imperativer, objektorientierter (klassenbasierter), funktionaler, Metaprogrammierung)
- C# (generisch, imperativ, objektorientiert (klassenbasiert), funktional, deklarativ)
- Ceylon (generisch, imperativ, objektorientiert (klassenbasiert), funktional, deklarativ)
- ChucK (imperativ, objektorientiert, zeitbasiert, nebenläufig, on-the-fly)
- Cobra (generisch, imperativ, objektorientiert (klassenbasiert), funktional, vertraglich)
- Common Lisp (funktional, imperativer, objektorientierter (klassenbasierter) Ansatz, aspektorientierter Ansatz (Benutzer können weitere Paradigmen hinzufügen, z. B. Logik))
- Curl (funktional, imperativer, objektorientierter (klassenbasierter) Programmierstil, Metaprogrammierung)
- Curry (parallel, funktional, Logik)
- D (generisch, imperativer, funktionaler, objektorientierter (klassenbasierter), Metaprogrammierung)
- Dart (generisch, imperativ, funktional, objektorientiert (klassenbasiert))
- Delphi Object Pascal (generisch, imperativ, objektorientiert (klassenbasiert), Metaprogrammierung)
- Dylan (funktional, objektorientiert (klassenbasiert))
- ECMAScript (funktional, imperativer, objektorientierter (prototypenbasierter))
- Eiffel (imperativ, objektorientiert (klassenbasiert), generisch, funktional (Agenten), nebenläufig (SCOOP))
- F# (funktional, generisch, objektorientiert (klassenbasiert), sprachorientiert)
- Fantom (funktional, objektorientiert (klassenbasiert))
- Los (Imperativ, prozedural),
- Groovy (funktional, objektorientiert (klassenbasiert), imperativ, prozedural)
- Hafen
- Hop
- J (funktional, imperativer, objektorientierter (klassenbasierter))
- Java (generisch, imperativ, objektorientiert (klassenbasiert), funktional)
- Julia (imperativ, Mehrfachdispatch ("objektorientiert"), funktional, Metaprogrammierung)
- LabVIEW ( visuell , Datenfluss , parallel, modular, funktional, objektorientiert, Skripting)
- Lua (funktional, imperativ, objektorientiert ( prototypenbasiert ))
- Merkur (funktional, logisch, objektorientiert)
- Metaobjektprotokolle (objektorientiert (klassenbasiert, prototypenbasiert))
- Nemerle (funktional, objektorientiert (klassenbasiert), imperativ, Metaprogrammierung)
- Objective-C (imperativ, objektorientiert (klassenbasiert), reflexiv)
- OCaml (funktional, imperativer, objektorientierter (klassenbasierter), modularer)
- Oz (funktional (Auswertung: sofort , verzögert ), Logik, Constraint , imperative, objektorientiert (klassenbasiert), nebenläufig, verteilt) und Mozart Programming System plattformübergreifend Oz
- Object Pascal (imperativ, objektorientiert (klassenbasiert))
- Perl (imperativ, funktional (kann nicht rein funktional sein), objektorientiert, klassenorientiert, aspektorientiert (durch Module))
- PHP (imperativ, objektorientiert, funktional (kann nicht rein funktional sein))
- Pike (interpretierte, universelle, höhere, plattformübergreifende, dynamische Programmiersprache)
- Prograph (Datenfluss, objektorientiert (klassenbasiert), visuell)
- Python (funktional, kompiliert, interpretiert, objektorientiert (klassenbasiert), imperativ, Metaprogrammierung, Erweiterung, unrein, interaktiver Modus, iterativ, reflektierend, Skripting)
- R (Array, interpretiert, unrein, interaktiver Modus, listenbasiert, objektorientiert, prototypenbasiert, skriptbasiert)
- Racket (funktional, imperativ, objektorientiert (klassenbasiert) und vom Benutzer erweiterbar)
- Raku (parallel, konkatenativ, funktional, generisch, imperativ, reflexionsorientiert, objektorientiert, Pipelines, reaktiv und über Bibliotheken Einschränkungen, verteilt)
- Rebol (funktional, imperative, objektorientiert (prototypenbasiert), Metaprogrammierung (dialektiert))
- Rot (funktional, imperative, objektorientiert (prototypenbasiert), Metaprogrammierung (dialektiert))
- ROOP (imperativ, logisch, objektorientiert (klassenbasiert), regelbasiert)
- Ruby (imperativ, funktional, objektorientiert (klassenbasiert), Metaprogrammierung)
- Rust (nebenläufig, funktional, imperativ, objektorientiert, generisch, Metaprogrammierung, kompiliert)
- Scala (funktional, objektorientiert)
- Seed7 (imperativ, objektorientiert, generisch)
- SISAL (parallel, Datenfluss, funktional)
- Tabellenkalkulationen (funktional, visuell)
- Swift (protokollorientiert, objektorientiert, funktional, imperativ, blockstrukturiert)
- Tcl (funktional, imperativer, objektorientierter (klassenbasierter) Ansatz)
- Tee (funktional, imperativer, objektorientierter (klassenbasierter))
- V (Vlang) (funktional, imperativer, prozeduraler, strukturierter, paralleler)
- Windows PowerShell (funktional, imperativer, Pipeline-, objektorientierter (klassenbasierter))
- Wolfram Mathematica ( Wolfram-Sprache )
Numerische Analyse
Mehrere universelle Programmiersprachen, wie C und Python , werden auch für technisches Rechnen verwendet; diese Liste konzentriert sich jedoch auf Sprachen, die fast ausschließlich für technisches Rechnen eingesetzt werden.
Nicht-englischsprachige Sprachen
- Chinesisch BASIC (Chinesisch)
- Fjölnir (Isländisch)
- Sprache Symbolique d'Enseignement (Französisch)
- Rapira (Russisch)
- ezhil (Tamil)
Objektorientierte klassenbasierte Sprachen
Klassenbasierte objektorientierte Programmiersprachen unterstützen Objekte, die durch ihre Klasse definiert werden. Klassendefinitionen enthalten Memberdaten. Die Nachrichtenübermittlung ist ein Schlüsselkonzept, wenn nicht sogar das Hauptkonzept, in objektorientierten Sprachen.
Polymorphe Funktionen, die durch die Klasse einiger ihrer Argumente parametrisiert sind, werden üblicherweise als Methoden bezeichnet . In Sprachen mit einfacher Dispatch-Methode enthalten Klassen typischerweise auch Methodendefinitionen. In Sprachen mit mehrfacher Dispatch-Methode werden Methoden durch generische Funktionen definiert . Es gibt Ausnahmen, bei denen Methoden mit einfacher Dispatch- Methode generische Funktionen sind (z. B. das Objektsystem von Bigloo ).
Einzelversand
- ActionScript 3.0
- Schauspieler
- Ada 95 und Ada 2005 (Mehrzwecksprache)
- APL
- BETA
- C++
- C#
- Ceylon
- Pfeil
- Oxygene (ehemals Chrome)
- Futter
- Kobra
- ColdFusion
- Locken
- D
- Spezifikationssprache für verteilte Anwendungen (DASL)
- Delphi Object Pascal
- E
- GNU E
- Eiffel
- Fortran 2003
- Festung
- Gambas
- Game Maker-Sprache
- Hafen
- J
- Java
- LabVIEW
- Lua
- Modula-2 (Datenabstraktion, Informationskapselung, starke Typisierung, vollständige Modularität)
- Modula-3 (erweiterte Modula-2 um weitere objektorientierte Funktionen)
- Nemerle
- NetRexx
- Oberon-2 (vollständige Objektorientierungsäquivalenz in einer originellen, stark typisierten, Wirthschen Weise)
- Objekt Pascal
- Objekt REXX
- Objective-C (eine Obermenge von C, die ein von Smalltalk abgeleitetes Objektmodell und eine Syntax für die Nachrichtenübermittlung hinzufügt)
- OCaml
- OpenEdge Advanced Business Language (ABL)
- Oz, Mozart Programmiersystem
- Perl 5
- PHP
- Pike
- Prograph
- Python (interpretative Sprache, optional objektorientiert)
- Revolution (Der Programmierer kann die Objekte nicht auswählen)
- Rubin
- Scala
- Flüsterkneipe
- Simula (erste objektorientierte Programmiersprache, entwickelt von Ole-Johan Dahl und Kristen Nygaard )
- Smalltalk (reine Objektorientierung, entwickelt bei Xerox PARC )
- DREHEN
- SuperCollider
- VBScript (Microsoft Office-Makroskriptsprache)
- Visual DataFlex
- Visual FoxPro
- Visueller Prolog
- X++
- Xojo
- XOTcl
Objektorientierte, prototypenbasierte Sprachen
Prototypenbasierte Sprachen sind objektorientierte Sprachen, bei denen die Unterscheidung zwischen Klassen und Instanzen aufgehoben wurde:
- 1C: Unternehmensprogrammiersprache
- Actor-Based Concurrent Language (ABCL, ABCL/1, ABCL/R, ABCL/R2, ABCL/c+)
- Agora
- Cecil
- ECMAScript
- ActionScript
- ECMAScript für XML
- JavaScript (zuerst Mocha, dann LiveScript genannt)
- JScript
- Etoys in Squeak
- Io
- Lua
- MUHEN
- NewtonScript
- Obliq
- R
- Rebol
- Rot
- Self (erste prototypenbasierte Sprache, abgeleitet von Smalltalk )
- TADS
Abseitsregeln
Off-Side-Regelsprachen kennzeichnen Codeblöcke durch ihre Einrückung .
Prozedurale Sprachen
Prozedurale Programmiersprachen basieren auf dem Konzept der Einheit und des Gültigkeitsbereichs (des Datenbereichs) einer ausführbaren Codeanweisung. Ein prozedurales Programm besteht aus einer oder mehreren Einheiten oder Modulen, die entweder vom Benutzer codiert oder in einer Codebibliothek bereitgestellt werden. Jedes Modul besteht aus einer oder mehreren Prozeduren, die je nach Sprache auch als Funktion, Routine, Unterprogramm oder Methode bezeichnet werden. Beispiele für prozedurale Sprachen sind:
- Ada (Mehrzwecksprache)
- ALGOL 58
- ALGOL 60 (sehr einflussreiches Sprachdesign)
- Kleine Maschinen-ALGOL-ähnliche Sprache
- ALGOL 68
- Alma-0
- BASIC (diese weisen insbesondere in Versionen vor etwa 1990 einen geringen Modularitätsanteil auf)
- BCPL
- WONNE
- C
- C++
- C# (ähnlich wie Java/C++)
- Ceylon
- KÜHLEN
- ChucK (C/Java-ähnliche Syntax, mit neuen Syntaxelementen für Zeit und Parallelität)
- COBOL
- Kobra
- ColdFusion
- CPL (Kombinierte Programmiersprache)
- Locken
- D
- Distributed Application Specification Language (DASL) (kombiniert deklarative und imperative Programmierung )
- ECMAScript
- ActionScript
- ECMAScript für XML
- JavaScript (zuerst Mocha, dann LiveScript genannt)
- JScript
- Quelle
- Eiffel
- Viertens
- Fortran (bessere Modularität in späteren Standards)
- GAUSS
- Gehen
- Hafen
- HyperTalk
- Java
- JOVIAL
- Julia
- Sprache H
- Lasso
- Modula-2 (grundsätzlich modular aufgebaut)
- MATLAB
- Mesa
- MUMPS (die erste Version war modularer als andere Sprachen der damaligen Zeit; der Standard ist seitdem noch modularer geworden)
- Nemerle
- Nim
- Oberon , Oberon-2 (verbesserte, kleinere, schnellere und sicherere Nachfolger von Modula-2)
- OCaml
- Occam
- Erker
- Pascal (Nachfolger von ALGOL 60, Vorgänger von Modula-2)
- Free Pascal (FPC)
- Object Pascal , Delphi
- PCASTL
- Perl
- Pike
- PL/C
- PL/I (große Allzwecksprache, ursprünglich für IBM-Großrechner)
- Plus
- PowerShell
- PROSA
- Python
- R
- Raku
- Rapira
- Rollenspiel
- Rost
- Slang
- VBScript
- Visual Basic
- Visual FoxPro
- Wolfram Mathematica ( Wolfram-Sprache )
- Microsoft Dynamics AX (X++)
Abfragesprachen
Reflektierende Sprachen
Reflektierende Programmiersprachen ermöglichen es Programmen, ihre Struktur auf hoher Ebene zur Laufzeit oder Kompilierzeit zu untersuchen und gegebenenfalls zu modifizieren. Dies ist am häufigsten bei Hochsprachen für virtuelle Maschinen wie Smalltalk der Fall und weniger verbreitet bei Low-Level-Programmiersprachen wie C. Sprachen und Plattformen, die Reflexion unterstützen:
- Befunge
- C++ (seit C++26 )
- Ceylon
- Charme
- Futter
- CLI
- Kobra
- Komponenten-Pascal BlackBox-Komponenten-Builder
- Locken
- Chiffre
- Delphi Object Pascal
- ECMAScript
- Emacs Lisp
- Eiffel
- Hafen
- Julia
- JVM
- Lispeln
- Lua
- Maude-System
- Oberon-2 – ETH Oberon-System
- Objective-C
- PCASTL
- Perl
- PHP
- Pico
- Poplog
- PowerShell
- Prolog
- Python
- Raku [ 41 ]
- Rebol
- Rot
- Rubin
- Rust (experimentell [ 42 ] [ 43 ] )
- Smalltalk (reine Objektorientierung, ursprünglich von Xerox PARC )
- SNOBOL
- Tcl
- Wolfram Mathematica ( Wolfram-Sprache )
- XOTcl
- X++
- Xojo
Regelbasierte Sprachen
Regelbasierte Sprachen instanziieren Regeln, sobald diese durch Bedingungen in einem Datensatz aktiviert werden. Aus allen möglichen Aktivierungen wird eine bestimmte Menge ausgewählt und die zu diesen Regeln gehörenden Anweisungen werden ausgeführt. Zu den regelbasierten Sprachen gehören:
Skriptsprachen
- AngelScript
- AppleScript
- AutoHotkey
- AutoIt
- AWK
- bc
- Bohnenschale
- C (über den Tiny C Compiler )
- Ch (Einbettbarer C/C++-Interpreter)
- CLI
- KLISTE
- ColdFusion
- ECMAScript
- ActionScript
- ECMAScript für XML
- JavaScript (zuerst Mocha, dann LiveScript genannt)
- JScript
- Quelle
- Emacs Lisp
- CMS-Manager
- EXEC 2
- Game Maker Language (GML)
- GDScript
- Io
- JASS
- Julia (wird standardmäßig zur Laufzeit in Maschinencode kompiliert , Interpretation ist ebenfalls möglich)
- JVM
- Groovy
- Java (via JBang) [ 44 ]
- Java beitreten
- Lasso
- Lua
- MAXScript
- MEL
- Erker
- Pascal-Skript
- Perl
- PHP (für Webserver)
- Python
- R
- Raku
- Rebol
- Rot
- Rexx
- Objekt REXX (OREXX, OOREXX)
- Revolution
- Rubin
- RUNCOM (Skriptsprache zum Ausführen von CTSS -Programmen)
- Slang
- sed
- Smalltalk
- Eichhörnchen
- Tee
- Tcl
- TorqueScript
- VBScript
- Viele Shell-Befehlssprachen verfügen über leistungsstarke Skripting-Funktionen:
- sh und kompatible
- Digitale Befehlssprache (DCL) auf VMS
- PowerShell ( .NET -basierte Befehlszeilenschnittstelle)
Stackbasierte Sprachen
Stackbasierte Sprachen sind eine Art datenstrukturierter Sprachen , die auf der Stack -Datenstruktur basieren .
Synchrone Sprachen
Synchrone Programmiersprachen sind für die Programmierung reaktiver Systeme optimiert, also Systeme, die häufig unterbrochen werden und schnell reagieren müssen. Viele dieser Systeme werden auch als Echtzeitsysteme bezeichnet und finden häufig Anwendung in eingebetteten Systemen .
Beispiele:
Schattierungssprachen
Eine Shading-Sprache ist eine Grafikprogrammiersprache, die speziell für die Programmierung von Shader-Effekten entwickelt wurde. Solche Sprachen bestehen üblicherweise aus speziellen Datentypen wie „Farbe“ und „Normalen“. Dies ist auf die Vielfalt der Zielmärkte für 3D-Computergrafik zurückzuführen.
Echtzeit-Rendering
Sie bieten sowohl eine höhere Hardwareabstraktion als auch ein flexibleres Programmiermodell als frühere Paradigmen, die Transformations- und Schattierungsgleichungen fest codierten. Dies ermöglicht dem Programmierer eine bessere Kontrolle über den Rendering-Prozess und liefert reichhaltigere Inhalte bei geringerem Overhead.
- Adobe Graphics Assembly Language (AGAL) [ 45 ]
- ARB-Assemblersprache (ARB-Assembler)
- OpenGL Shading Language (GLSL oder glslang)
- High-Level Shading Language (HLSL) oder DirectX Shader Assemblersprache
- PlayStation Shader Language (PSSL)
- Metal Shading Language (MSL)
- Cg
Offline-Rendering
Die in Offline-Rendering verwendeten Shading-Sprachen erzielen maximale Bildqualität. Die Verarbeitung solcher Shader ist zeitaufwändig. Aufgrund ihrer Fähigkeit, fotorealistische Ergebnisse zu erzeugen, kann der Rechenaufwand hoch sein.
- RenderMan Shading Language (RSL)
- Open Shading Language (OSL)
Syntaxbehandlungssprachen
Diese Sprachen helfen bei der Generierung lexikalischer Analysatoren und Parser für kontextfreie Grammatiken .
- ANTLR
- Coco/R (EBNF mit Semantik)
- GNU Bison (FSF-Version von Yacc)
- GNU Flex (FSF-Version von Lex)
- JavaCC
- lex (Lexikalische Analyse, von den Bell Labs)
- M4
- Parsing Expression Grammar (PEG)
- Prolog
- Emacs Lisp
- Lispeln
- Raku [ 46 ]
- SableCC
- Schema
- yacc (ein weiterer Compiler-Compiler von Bell Labs)
- XPL
Systemsprachen
Eine Systemprogrammiersprache dient der Ausführung von Aufgaben auf niedriger Ebene, wie z. B. Speicherverwaltung oder Aufgabenverwaltung; üblicherweise bezeichnet man damit eine Sprache, die für die Systemprogrammierung verwendet wird ; solche Sprachen sind für die Entwicklung von Systemsoftware konzipiert, die im Vergleich zu Anwendungssoftware in der Regel andere Entwicklungsansätze erfordert.
Systemsoftware ist Computersoftware, die zur Steuerung und zum Betrieb von Computerhardware dient und eine Plattform für die Ausführung von Anwendungssoftware bereitstellt. Zur Systemsoftware gehören Softwarekategorien wie Betriebssysteme, Dienstprogramme, Gerätetreiber, Compiler und Linker. Beispiele für Systemsprachen sind:
| Sprache | Urheber | Erstmals erschienen | Beeinflusst von | Wird verwendet für |
|---|---|---|---|---|
| ESPOL | Burroughs Corporation | 1961 | ALGOL 60 | MCP |
| PL/I | IBM , SHARE | 1964 | ALGOL 60, FORTRAN, etwas COBOL | Multics |
| PL360 | Niklaus Wirth | 1968 | ALGOL 60 | ALGOL W |
| C | Dennis Ritchie | 1969 | BCPL | Die meisten Betriebssystemkerne , einschließlich Windows NT und der meisten Unix-ähnlichen Systeme |
| PL/S | IBM | 196x | PL/I | OS/360 |
| WONNE | Carnegie Mellon Universität | 1970 | ALGOL-PL/I [ 47 ] | VMS (Teile) |
| PL/8 | IBM | 197x | PL/I | AIX |
| PL/MP und PL/MI | IBM | 197x | PL/I | CPF , OS/400 |
| PL-6 | Honeywell, Inc. | 197x | PL/I | CP-6 |
| SYMPL | CDC | 197x | JOVIAL | NOS- Subsysteme, die meisten Compiler, FSE-Editor |
| C++ | Bjarne Stroustrup | 1979 | C , Simula | Siehe C++-Anwendungen [ 48 ] |
| Ada | Jean Ichbiah , S. Tucker Taft | 1983 | ALGOL 68 , Pascal , C++ , Java , Eiffel | Eingebettete Systeme, Betriebssystemkerne, Compiler, Spiele, Simulationen, CubeSat , Flugsicherung und Avionik |
| D | Digital Mars | 2001 | C++ | Mehrere Domänen [ 49 ] |
| Nim | Andreas Rumpf | 2008 | Ada , Modula-3 , Lisp , C++ , Object Pascal , Python , Oberon | Betriebssystemkerne, Compiler, Spiele |
| Rost | Mozilla-Forschung [ 50 ] | 2010 | C++ , Haskell , Erlang , Ruby | Servo-Layout-Engine , RedoxOS |
| Schnell | Apple Inc. | 2014 | C , Objective-C , Rust | macOS- und iOS- App-Entwicklung [ h ] |
| Zig | Andrew Kelley | 2016 | C , C++ , LLVM IR , Go , Rust , JavaScript | Als Ersatz für C |
| V (Vlang) | Alexander Medwednikow | 2019 | C , Go , Oberon-2 , Rust , Swift , Kotlin | Vinix OS, Betriebssystemkerne, Compiler, Spiele |
Transformationssprachen
Transformationssprachen dienen dazu, Quellcode, der in einer bestimmten formalen Sprache spezifiziert ist, in einen definierten Zielcode zu transformieren (zu übersetzen). Sie werden am häufigsten in Zwischenkomponenten komplexerer Systeme eingesetzt, um interne Ergebnisse für die Eingabe in nachfolgende Verarbeitungsroutinen aufzubereiten.
Visuelle Sprachen
Visuelle Programmiersprachen ermöglichen es Benutzern, Programme zwei- (oder mehr-)dimensional anstatt eindimensional als Textzeichenfolgen mithilfe grafischer Layouts verschiedener Art zu spezifizieren. Einige Datenfluss-Programmiersprachen sind ebenfalls visuelle Sprachen.
- Analytica
- Blockly
- Clickteam Fusion
- DRAKON
- Fabrik
- Heuschrecke
- Max
- NXT-G
- Bild
- Prograph
- Reine Daten
- Quarzkomponist
- Scratch (geschrieben in und basierend auf Squeak , einer Version von Smalltalk )
- Schnapp!
- Simulink
- Tabellenkalkulationen
- Stateflow
- Subtext
- ToonTalk
- VEE
- VisSim
- Vvvv
- XOD
Mitth Sprachen
Der Informatiker Niklaus Wirth entwarf und implementierte mehrere einflussreiche Programmiersprachen.
- ALGOL W
- Euler
- Modula
- Oberon (Oberon, Oberon-07, Oberon-2)
- Pascal
- Object Pascal (Überbegriff für Delphi , Free Pascal , Oxygene und andere)
XML-basierte Sprachen
Dies sind Sprachen, die auf XML basieren oder mit XML arbeiten .
- Ameise
- Cω
- ECMAScript für XML
- Extensible Application Markup Language (XAML)
- LZX
- XPath
- XQuery
- XProc
- Extensible Stylesheet Language Transformations ( XSLT )
Siehe auch
- Programmierparadigma
- IEC 61131-3 – ein Standard für speicherprogrammierbare Steuerungen (SPS) Sprachen
- Liste der Programmiersprachen für Bildungszwecke
- Liste der Dokumentauszeichnungssprachen
- Liste der Auszeichnungssprachen
- Liste der Open-Source-Programmiersprachen
- Esoterische Programmiersprache
Anmerkungen
- ^ Einige Ada-Implementierungen beinhalten einen Garbage Collector, [ 17 ] obwohl die Sprachspezifikation dessen Einbeziehung nicht vorschreibt.
- ^ Anfänglich mussten Entwickler den Speicher manuell mithilfe der
save`and`restore. PostScript Level 2 führte eine automatische Speicherbereinigung ein, deren Verwendung jedoch optional ist. [ 28 ] - Auf Apple -Plattformen werden diese Funktionen aus der C-Standardbibliothek importiert (die aus
Foundation,AppKitoder, undauf WindowsUIKitimportierenGlibcucrt - Die Objekte von SQL sind Sammlungen von Datenbankeinträgen , sogenannte Tabellen. Eine vollständige Programmiersprache kann Algorithmen unabhängig von der Laufzeit spezifizieren. Ein Algorithmus kann somit verwendbare Ergebnisse erzeugen. SQL hingegen kann lediglich Datensätze auswählen, die auf die aktuelle Sammlung – die im System vorhandenen Daten – beschränkt sind, anstatt eine Aussage über die Korrektheit des Ergebnisses zu treffen.
- Eine bemerkenswerte Ausnahme bildete die sowjetisch/russische CPU der Serie 1801 , die ursprünglich ihren eigenen inländischen Architekturstil verwendete, später aberim Rahmen einer politischen Entscheidung auf PDP-11- Kompatibilität umgestellt wurde.
- ^ a b Untermodelle werden nicht aufgeführt, nur Basismodelle.
- ^ Das Konzept des Objekts mit der traditionellen Single-Dispatch-OO-Semantik ist in Julia nicht vorhanden; stattdessen gibt es die allgemeinere Multiple-Dispatch-Methode für verschiedene Typen zur Laufzeit.
- ^ Swift verwendet automatische Referenzzählung .
Referenzen
- ^ „Operatoren“ . Abgerufen am 13.05.2024 .
- ^ "wrap" .
- ^ ""Aspekte in Raku"" .
- ^ Dokumentation » Die Python-Standardbibliothek » Gleichzeitige Ausführung
- ^ „Kanäle und andere Mechanismen“ .
- ^ "Problemlöser" .
- ^ Bright, Walter (2014-11-01). „D Programming Language, Contract Programming“ . Digital Mars . Abgerufen am 10.11.2014 .
- ^ Hodges, Nick. „Mit Klassenverträgen in Delphi Prism saubereren und qualitativ hochwertigeren Code schreiben“ . Embarcadero Technologies. Archiviert vom Original am 26. April 2021. Abgerufen am 20. Januar 2016 .
- ^ Findler, Felleisen Verträge für Funktionen höherer Ordnung
- ^ „Scala Standard Library Docs - Assertions“ . EPFL . Abgerufen am 24.05.2019 .
- ^ Starke Typisierung als ein weiteres "Vertragssicherungsinstrument" in Scala, siehe Diskussion unter scala-lang.org/ .
- ^ ein b „Einrückungsbasierte Syntax · rsdn/nemerle Wiki“ . GitHub . Abgerufen am 18.03.2022 .
- ^ "Solidity: Solidity 0.8.11 Dokumentation" .
- ^ "Iterator" .
- ^ a b "std::pointer_safety - cppreference.com" . en.cppreference.com . Abgerufen am 9. Dezember 2024 .
- ^ JF Bastien; Alisdair Meredith (2021-04-16). "Entfernung der Unterstützung für die automatische Speicherbereinigung" .
- ^ „Konservative Müllabfuhr für GNAT“ . Florian Weimers Homepage . Abgerufen am 12.03.2025 .
- ^ „Speicherverwaltung · BlitzMax“ . Abgerufen am 14.07.2023 .
- ^ „Tipps · BlitzMax“ . Abgerufen am 14.07.2023 .
- ^ "BRL.Blitz · BlitzMax" . Abgerufen am 14.07.2023 .
- ^ JF Bastien; Alisdair Meredith (2021-04-16). "Entfernung der Unterstützung für die automatische Speicherbereinigung" .
- ^ „Verwendung von Zeigern in einem ILE-COBOL-Programm – IBM-Dokumentation“ . IBM . Juni 2012. Abgerufen am 14.07.2023 .
- ^ „HEAP – IBM-Dokumentation“ . IBM . Abgerufen am 14.07.2023 .
- ^ „SOM-basierte OO-COBOL-Sprachelemente, die geändert werden – IBM-Dokumentation“ . IBM . Abgerufen am 14.07.2023 .
- ^ „Garbage Collection“ . D-Programmiersprache . Abgerufen am 18.03.2022 .
- ^ „Nims Speicherverwaltung“ . Abgerufen am 18.03.2022 .
- ^ „Über Speicherverwaltung“ . Apple Developer . Abgerufen am 12.03.2025 .
- ^ Adobe (Februar 1999). PostScript Language Reference, dritte Auflage (PDF) . Addison-Wesley Publishing Company. S. 56–65 .
- ^ „V-Dokumentation“ . Abgerufen am 12.03.2025 .
- ^ „Projekte/Vala/Referenzverwaltung – GNOME Wiki!“ . Archiviert vom Original am 21.01.2024 . Abgerufen am 21.03.2022 .
- ^ „Speicherzuweisung – Cython 3.0.0.dev0-Dokumentation“ . Abgerufen am 14.07.2023 .
- ^ „Interoperabilität von nativem Code – Scala Native 0.4.14 Dokumentation“ . Abgerufen am 05.07.2023 .
- ^ „Understanding Ownership - The Rust Programming Language“ . doc.rust-lang.org .
- ^ „Smart Pointers – Die Programmiersprache Rust“ . doc.rust-lang.org .
- ^ Jon Bentley (AT&T), August 1986, CACM 29 (8), „Kleine Sprachen“, S. 711–721, aus seiner Kolumne „Programmierperlen“.
- ^ „Metaprogrammierung: Was, warum und wie“ . 14.12.2011.
- ^ „Prozedurale Makros zur Generierung von Code aus Attributen“ . doc.rust-lang.org .
- ^ ECMAScript® 2015 Sprachspezifikation, 15.2 Module
- ^ "Klasse Module - Dokumentation für Ruby 3.5" .
- ^ "Klassen und Rollen" .
- ^ "Meta-Objekt-Protokoll (MOP)" .
- ^ Das Rust-Team (25. Mai 2026). „Module any“ . docs.rust-lang.org . Das Rust-Team.
- ^ Das Rust-Team (25. Mai 2026). „Modulfeld“ . docs.rust-lang.org . Das Rust-Team.
- ^ "JBang" . jbang.dev . Abgerufen am 11. September 2025 .
- ^ Scabia, Marco. „Was ist AGAL?“ . Adobe Developer Connection . Adobe . Abgerufen am 8. Mai 2018 .
- ^ "Grammatiken" .
- ^ Wulf, WA; Russell, DB; Haberman, AN (Dezember 1971). „BLISS: Eine Sprache für die Systemprogrammierung“. Communications of the ACM . 14 (12): 780–790 . CiteSeerX 10.1.1.691.9765 . doi : 10.1145/362919.362936 . S2CID 9564255 .
- ^ "C++-Anwendungen" .
- ^ „Organisationen, die die Programmiersprache D verwenden“ . D-Programmiersprache .
- ^ „Mozilla Research“ . 1. Januar 2014.