Eine Programmierung Sprache ist eine konventionelle Notation für die Formulierung von Algorithmen und Herstellung von Computerprogrammen , die sie anwenden. Ähnlich wie eine natürliche Sprache besteht eine Programmiersprache aus einem Alphabet , einem Vokabular , Grammatikregeln , Bedeutungen , aber auch einer Übersetzungsumgebung , die ihre Syntax für die Maschine verständlich machen soll .
Programmiersprachen ermöglichen es, einerseits die Strukturen der Daten zu beschreiben, die von der Computervorrichtung manipuliert werden, und andererseits anzugeben, wie die Manipulationen nach welchen Algorithmen durchgeführt werden. Sie dienen als Kommunikationsmittel, über das der Programmierer mit dem Computer, aber auch mit anderen Programmierern kommuniziert; die Programme werden normalerweise von einem Team von Programmierern geschrieben, gelesen, verstanden und modifiziert.
Eine Programmiersprache wird durch einen automatischen Übersetzer implementiert: Compiler oder Interpreter . Ein Compiler ist ein Computerprogramm , das zuerst transformiert ein Quellcode in einer bestimmten Programmiersprache in einen Zielcode geschrieben , die direkt von einem Computer ausgeführt werden können, nämlich ein Programm in Maschinensprache oder in Zwischencode , während die der Interpreter führt diese Übersetzung " im Flug".
Programmiersprachen bieten verschiedene Möglichkeiten der Abstraktion und einer Notation der Nähe der Algebra , die es ermöglichen , in prägnanter zu beschreiben und einfache Möglichkeit , die Operationen der Datenmanipulation und die Entwicklung des Programmablaufs zu verstehen , die Situationen nach. Die Möglichkeit des abstrakten Schreibens befreit den Programmierer von unnötiger Arbeit, auch unter Berücksichtigung der Besonderheiten der Computerhardware, und ermöglicht ihm so, sich auf weiterführende Probleme zu konzentrieren.
Jede Programmiersprache unterstützt einen oder mehrere Programmieransätze – Paradigmen . Die Konzepte, die das Paradigma induzieren, sind Teil der Programmiersprache und ermöglichen es dem Programmierer, eine nach diesem Paradigma vorgestellte Lösung in der Sprache auszudrücken.
Die ersten Programmiersprachen entstanden in den 1950er Jahren zeitgleich mit dem Aufkommen der Computer . Viele Programmierkonzepte wurden jedoch von einer Sprache oder manchmal mehreren Sprachen initiiert, bevor sie verbessert und dann in den folgenden Sprachen erweitert wurden. Die Gestaltung einer Programmiersprache ist meist stark von den Erfahrungen mit Vorgängersprachen geprägt.
Eine Programmiersprache wird aus einer formalen Grammatik aufgebaut , die Symbole und syntaktische Regeln enthält, denen semantische Regeln zugeordnet sind. Diese Elemente sind je nach Leistungsfähigkeit der Sprache mehr oder weniger komplex. Die Funktionsweise und die Definition der Komplexität einer Programmiersprache werden im Allgemeinen durch ihre Zugehörigkeit zu einem der Grade der Chomsky-Hierarchie bestimmt .
Aus theoretischer Sicht kann jede Computersprache als Programmiersprache qualifiziert werden, wenn sie Turing-vollständig ist, d.h. alle berechenbaren Funktionen im Sinne von Turing und Church darstellbar macht (und dennoch zulässt als Ausnahme von der Theorie, dass der Speicher von Computern kein unendlicher Raum ist).
Die Regeln der Syntax Definiert durch eine formale Grammatik regeln sie die verschiedenen Arten, wie die Elemente der Sprache kombiniert werden können, um Programme zu erhalten. Satzzeichen (zB das Anbringen eines Symbols ; am Ende einer Programmanweisungszeile) ist eine Sache der Syntax. das Vokabular Unter den Elementen der Sprache repräsentiert das Vokabular den Satz von Anweisungen, die aus Symbolen aufgebaut sind . Die Anweisung kann mnemonisch oder nur symbolisch sein, wenn sie durch Operationssymbole wie arithmetische Operatoren ("+" und "-") oder Boolesche Operatoren (&& für das logische und zum Beispiel) dargestellt wird. Wir sprechen auch manchmal von einem Schlüsselwort , um eine Anweisung zu bezeichnen (durch Sprachmissbrauch, weil der Begriff des Schlüsselworts nicht den Begriff der Symbole umfasst, die jedoch auch zum Wortschatz gehören ). die semantik Die Regeln der Semantik definieren die Bedeutung jedes der in der Sprache konstruierbaren Sätze, insbesondere die Auswirkungen des Satzes bei der Ausführung des Programms. Wissenschaft für den Studenten ist die Semantik von Programmiersprachen . Das Alphabet Das Alphabet für Programmiersprachen orientiert sich an aktuellen Standards wie ASCII , das aus Buchstaben von A bis Z ohne Akzente, Zahlen und Sonderzeichen besteht, oder Unicode für die meisten modernen Sprachen (wobei die Verwendung auf allgemeine Zeichenfolgen beschränkt ist und Kommentare, mit einigen bemerkenswerten Ausnahmen wie C♯, die auch Unicode-Identifikatoren zulassen).Die meisten Programmiersprachen können zusätzliche Strukturelemente, prozedurale Methoden sowie temporäre und variable Definitionen und Bezeichner bereitstellen:
die Kommentare Die Kommentare sind Texte, die nicht übersetzt werden. Sie können in den Programmen hinzugefügt werden, um Erklärungen zu hinterlassen. Kommentare werden durch Markierungen begrenzt, die sich von Programmiersprache zu Programmiersprache unterscheiden, wie z. B. "-" , "/ *" oder "//" . die IDs Die Bausteine des Programms wie Variablen , Prozeduren oder Typen werden verwendet, um das Programm und seinen Betrieb zu organisieren. So können wir beispielsweise ein Programm in Funktionen unterteilen oder ihm durch Objekte eine Struktur geben : Diese Strukturelemente werden je nach Sprache durch Bezeichner oder Schlüsselwortprozeduren definiert .Eine Programmiersprache bietet einen Rahmen zum Erstellen von Algorithmen und zum Ausdrücken von Flussdiagrammen. Es ermöglicht insbesondere, die Strukturen der Daten zu beschreiben, die von der Computervorrichtung verarbeitet werden und welche Manipulationen erfolgen. Eine Programmiersprache wird als Kommunikationsmittel mit dem Computer, aber auch zwischen Programmierern verwendet: Die Programme werden normalerweise von einem Team von Programmierern geschrieben, gelesen und modifiziert.
Eine Programmiersprache bietet eine Reihe von Konzepten, die als Primitive verwendet werden können, um Algorithmen zu entwickeln. Programmierer schätzen, dass die Sprache klar, einfach und einheitlich ist, dass es ein Minimum an Begriffen gibt, die nach einfachen und regelmäßigen Regeln kombiniert werden können. Die Qualitäten einer Programmiersprache beeinflussen die Leichtigkeit, mit der Programme geschrieben, getestet und später verstanden und modifiziert werden können.
Benutzerfreundlichkeit, Portabilität und Klarheit sind beliebte Eigenschaften von Programmiersprachen. Die Benutzerfreundlichkeit, die von Syntax, Wortschatz und Symbolen abhängt, beeinflusst die Lesbarkeit der in dieser Sprache geschriebenen Programme und die Lerndauer. Die Portabilität ermöglicht, dass ein Programm, das von einer gegebenen Computerplattform (einem Betriebssystem) ausgeführt werden soll, zur Ausführung auf einer anderen Plattform übertragen wird.
Programmierer mögen die Syntax, um die logische Struktur des Programms auszudrücken. Eines der Anliegen bei der Programmierung ist es, Fehler zu vermeiden, dass es möglich ist, sie zu erkennen, zu vermeiden und zu beheben; dies wird durch interne Mechanismen von Programmiersprachen ermöglicht. Manchmal werden implizite Prüfungen durchgeführt, um Probleme zu finden.
Programmierer wissen es zu schätzen, dass eine Programmiersprache guten Programmier- und Engineering-Praktiken entspricht, die Programmstrukturierung fördert, die Programmwartung erleichtert und schlechte Praktiken abschreckt oder sogar verbietet. Die Verwendung der Anweisung gotozum Beispiel, die es seit frühen Programmiersprachen gibt, gilt als schlechte Praxis. Seine Verwendung wird in neueren Programmiersprachen nicht empfohlen oder sogar unmöglich.
Die Anpassung an Industriestandards, die Möglichkeit, in einer anderen Programmiersprache geschriebene Funktionen zu verwenden, und die gleichzeitige Ausführung mehrerer Threads sind beliebte Möglichkeiten für Programmiersprachen.
Eine Programmiersprache basiert auf einer Reihe von Begriffen wie Anweisungen, Variablen, Typen und Prozeduren oder Funktionen, die als Primitive zur Entwicklung von Algorithmen verwendet werden können.
Eine AnweisungEin Befehl an einen Computer.
Eine VariableEin Name, der in einem Programm verwendet wird, um auf vom Programm manipulierte Daten zu verweisen.
Eine KonstanteEin Name, der verwendet wird, um auf einen permanenten Wert zu verweisen.
Ein wörtlicher AusdruckEin vollständig im Programm erwähnter Wert.
Ein TypJede Daten hat eine Klassifizierung, die den Bereich der möglichen Werte, die durchführbaren Operationen und die Darstellung der Daten in Form von Bits beeinflusst. Jede Programmiersprache bietet eine Reihe von primitiven Typen , die in die Sprache integriert sind. Einige Sprachen bieten die Möglichkeit, neue Typen zu erstellen.
Gängige primitive Datentypen sind Integer , reelle Zahlen , Boolean , Strings und Pointer .
Insbesondere ist der boolesche Typ ein Typ, der nur zwei Werte hat, true und false , während sich der Zeigertyp auf Daten bezieht, die sich irgendwo im Speicher befinden.
Die Sprache C verfügt beispielsweise über eine Vielzahl von Typen , mit denen Sie die den Daten zugewiesene Speichermenge genau auswählen können.
Eine DatenstrukturEine charakteristische Art, einen Datensatz im Speicher zu organisieren, der die Algorithmen beeinflusst, die verwendet werden, um sie zu manipulieren. Gängige Strukturen sind Arrays , Datensätze , Listen , Stacks , Warteschlangen und Bäume .
Eine ErklärungEin Programmsatz, der verwendet wird, um dem Übersetzer (Compiler, Interpreter usw.) die Namen und Eigenschaften von Programmelementen wie Variablen, Prozeduren, Typen usw. mitzuteilen.
Zur Kompilierzeit oder während der Programmausführung werden Prüfungen durchgeführt, um sicherzustellen, dass Programmoperationen mit den verwendeten Datentypen möglich sind. In stark typisierter Sprache hat jedes Element des Programms einen eindeutigen Typ, der zur Kompilierzeit bekannt und überprüft wird, was es ermöglicht, Fehler vor der Ausführung des Programms abzufangen.
Verfahren, Funktionen, MethodenVerschiedene Programmiersprachen bieten die Möglichkeit, ein Fragment eines Programms zu isolieren und zu einer allgemeinen, konfigurierbaren Operation zu machen, die wiederholt verwendet werden kann. Diese Fragmente werden je nach Paradigma Prozeduren , Funktionen oder Methoden genannt .
ModuleProgrammiersprachen können auch die Möglichkeit bieten, ein Programm in mehrere Teile, sogenannte Module , aufzuteilen , von denen jeder eine bestimmte Rolle hat, und dann die Teile zu kombinieren.
Die Konzepte von Vorgehen und Modul sollen die Erstellung komplexer und umfangreicher Programme erleichtern, indem sie helfen, mit dieser Komplexität umzugehen. Diese Funktionen ermöglichen insbesondere Modularität und Abstraktion .
Ein Paradigma ist eine Möglichkeit, sich der Programmierung zu nähern. Jedes Paradigma bringt seine Programmierphilosophie mit; Sobald sich ein Programmierer eine Lösung nach einem bestimmten Paradigma ausgedacht hat, ermöglicht eine Programmiersprache, die diesem Paradigma folgt, diese auszudrücken. Imperativ, deklarativ, funktional, logisch, objektorientiert, wettbewerbsorientiert, visuell, ereignisgesteuert und webbasiert sind Programmierparadigmen. Jede Programmiersprache spiegelt ein oder mehrere Paradigmen wider und stellt eine Reihe von Konzepten bereit, die verwendet werden können, um eine Lösung für ein Programmierproblem auszudrücken. Im Laufe der Geschichte haben Wissenschaftler und Programmierer die Vorteile und Grenzen eines Programmierstils erkannt und neue Stile eingeführt. Die meisten zeitgenössischen Programmiersprachen erlauben die Übernahme mehrerer Programmierparadigmen, sofern sie kompatibel sind.
Das Imperativ- oder Verfahrensparadigma basiert auf dem Prinzip, Anweisungen Schritt für Schritt auszuführen, genau wie bei der Erstellung eines Kochrezepts. Es basiert auf dem Prinzip der Von-Neumann-Maschine . Ein Satz von Ausführungsflusssteuerungsanweisungen steuert die Reihenfolge, in der die Anweisungen , die die Schritte beschreiben, ausgeführt werden . Die C , die Pascal , die Fortran und COBOL sind Beispiele für Programmiersprache , die Arbeitsgeräte des zwingend notwendig Paradigma.
Es gibt im Wesentlichen zwei deklarative Paradigmen; Dies sind das funktionale Paradigma und das logische Paradigma. Im funktionalen Paradigma beschreibt das Programm mathematische Funktionen. Im logischen Paradigma beschreibt es Prädikate , dh Aussagen, die, einmal instanziiert, wahr oder falsch sein können oder keinen Wahrheitswert erhalten (wenn die Bewertung des Prädikats nicht endet). In einem Implementierungsmodell führt eine abstrakte Maschine die notwendigen Operationen durch, um das Ergebnis jeder Funktion oder jedes Prädikats zu berechnen. In diesen Paradigmen wird eine Variable nicht durch Zuweisung geändert . Eines der Hauptmerkmale ist die referentielle Transparenz , was bedeutet, dass ein Ausdruck durch sein Ergebnis ersetzt werden kann, ohne das Verhalten des Programms zu ändern.
FunktionalDas funktionale Paradigma basiert auf der Auswertung von Formeln, um das Ergebnis für andere Berechnungen zu verwenden; sie basiert auf Rekursion und ihr Modell ist der Lambda-Kalkül , genauer die Reduktion der Kopfnormalform . Alle Berechnungen werten Ausdrücke aus oder rufen Funktionen auf. Einfach ausgedrückt wird das Ergebnis einer Berechnung für die Berechnung oder Berechnungen verwendet, die ihr Ergebnis benötigen, bis die Funktion, die das Ergebnis des Programms erzeugt, ausgewertet wurde. Das funktionale Paradigma wurde in den 1960er Jahren von den Sprachen Lisp und ISWIM sowie in Bezug auf rekursive Funktionen von Algol 60 eingeführt . Sprachen wie Ruby und Scala unterstützen mehrere Paradigmen einschließlich des funktionalen Paradigmas, während Haskell nur das funktionale Paradigma unterstützt und OCaml bevorzugt das funktionale Paradigma, das es mit dem Objektparadigma und einer kleinen Dosis Imperativ teilt.
LogikDas logische Paradigma zielt darauf ab, eine Frage zu beantworten, indem eine Menge erforscht wird, wobei Axiome, Abfragen und Deduktionsregeln verwendet werden. Die Ausführung eines Programms ist eine Kaskade von Suchen nach Fakten in einer Menge, wobei Deduktionsregeln aufgerufen werden. Die gewonnenen Daten können mit einem anderen Regelwerk verknüpft und dann im Rahmen einer anderen Forschung verwendet werden. Das Programm wird durch Auswertung ausgeführt: Das System sucht nach allen Anweisungen, die per Deduktion mindestens einem Element der Menge entsprechen. Der Programmierer drückt die Regeln aus und das System steuert den Prozess. Das logische Paradigma wurde 1970 von der Sprache Prolog eingeführt .
Das objektorientierte Paradigma soll die Aufteilung eines großen Programms in mehrere voneinander isolierte Module erleichtern. Es führt die Begriffe Objekt und Vererbung ein. Ein Objekt enthält die Variablen und Funktionen, die sich auf ein Subjekt beziehen. Variablen können private sein , dh sie können nur von dem Objekt verarbeitet werden, das sie enthält. Ein Objekt enthält implizit die Variablen und Funktionen seiner Vorfahren, und diese Vererbung hilft bei der Wiederverwendung von Code. Das objektorientierte Paradigma ermöglicht es, Daten stark mit Prozeduren zu assoziieren. Es wurde in den 1960er Jahren von der Simula- Sprache eingeführt und wurde in den 1980er Jahren populär, als die zunehmende Rechenleistung von Computern die Ausführung großer Programme ermöglichte. Verschiedene Programmiersprachen wurden angereichert, um eine objektorientierte Programmierung zu ermöglichen; dies ist bei C++ (abgeleitet von der Sprache C ) der Fall , Simula , Smalltalk , Swift und Java sind Programmiersprachen im objektorientierten Paradigma.
In einem gleichzeitigen Paradigma kann ein Programm mehrere Aufgaben gleichzeitig ausführen. Dieses Paradigma führt die Begriffe Thread , Active Wait und Remote Function Call ein. Diese Konzepte wurden in den 1980er Jahren eingeführt, als durch die technologische Entwicklung ein Computer zu einer Maschine mit mehreren Prozessoren wurde, die mehrere Aufgaben gleichzeitig ausführen kann. Zeitgenössische Programmiersprachen aus dem Jahr 2013 wie C++ und Java sind für Multi-Core-Mikroprozessoren geeignet und ermöglichen die Erstellung und Manipulation von Threads. In jüngerer Zeit haben wir das Aufkommen von Sprachen gesehen, die vollständig auf das Management der Parallelität ausgerichtet sind, wie die Sprache Go .
In den allermeisten Programmiersprachen ist der Quellcode Text, was es schwierig macht, zweidimensionale Objekte auszudrücken. Eine Programmiersprache wie Delphi oder C# ermöglicht es Ihnen, Objekte durch Ziehen und Ablegen zu manipulieren und die resultierende Zeichnung wird dann in eine objektorientierte und ereignisgesteuerte Textdarstellung übersetzt. Das visuelle Paradigma wurde Ende der 1980er Jahre von Alan Kay in der Sprache Smalltalk eingeführt , mit dem Ziel, die Programmierung grafischer Oberflächen zu erleichtern .
Während ein interaktives Programm eine Frage stellt und basierend auf der Antwort Aktionen ausführt, wartet das Programm im Ereignisstil auf nichts und wird ausgeführt, wenn etwas passiert ist. Beispielsweise bewegt der Benutzer die Maus oder drückt eine Taste. In diesem Paradigma geht es bei der Programmierung darum, die Aktionen zu beschreiben, die als Reaktion auf Ereignisse zu ergreifen sind. Und eine kaskadierende Aktion kann eine andere Aktion auslösen, die einem anderen Ereignis entspricht. Das Event-Paradigma wurde in den 1970er Jahren durch die Simula- Sprache eingeführt und wurde mit dem Aufkommen von grafischen Oberflächen und Webanwendungen populär.
Mit dem Aufkommen des Internets in den 1990er Jahren werden Daten, Bilder und Code zwischen Computern ausgetauscht. Wird ein Ergebnis von einem Computer angefordert, kann dieser das erforderliche Programm ausführen und das Ergebnis senden. Es kann auch den erforderlichen Code an den Client-Computer senden, um das Ergebnis selbst zu berechnen. Das Programm wird selten in Maschinensprache übersetzt , sondern eher interpretiert oder übersetzt in eine Zwischenform, den Bytecode , der von einer virtuellen Maschine ausgeführt wird , oder zur Laufzeit in Maschinensprache übersetzt ( just-in-time ). Java, PHP und Javascript sind webbasierte Programmiersprachen.
Die Verwendung einer Sprache wird durch einen automatischen Übersetzer ermöglicht. Ein Programm, das einen in dieser Sprache geschriebenen Text benötigt, um etwas damit zu tun, normalerweise entweder:
Ein Programm , das den Text in eine Sprache übersetzt, die seine Ausführung ermöglicht, wie Maschinensprache , Bytecode oder Assemblersprache .
Ein Programm, das die angeforderten Anweisungen ausführt. Es spielt die gleiche Rolle wie eine Maschine, die diese Sprache erkennt.
Jedes Computergerät verfügt über einen Satz von Anweisungen, die zum Ausführen von Operationen verwendet werden können. Mit Anweisungen können Sie arithmetische oder logische Berechnungen durchführen, Daten verschieben oder kopieren oder zur Ausführung anderer Anweisungen verzweigen. Diese Befehle werden in Form von Bitfolgen aufgezeichnet, wobei jede Folge dem Code der auszuführenden Operation und den Operanden, dh den betreffenden Daten, entspricht; es ist Maschinensprache.
Die Übersetzung erfolgt in mehreren Schritten. Zunächst führt der Übersetzer eine lexikalische Analyse durch, bei der er die im Programm verwendeten Sprachelemente identifiziert. Im nächsten Schritt, dem Parsing , erstellt der Übersetzer ein Baumdiagramm, das widerspiegelt, wie die Sprachelemente im Programm zu Anweisungen kombiniert wurden. Während der semantischen Analyse ermittelt der Übersetzer dann, ob die Operation und die erforderlichen Anweisungen in der Zielsprache ausgeführt werden können.
In der Assembler-Programmiersprache werden Cheat-Wörter (Mnemonik) verwendet, um auf Maschinenanweisungen zu verweisen. Die Anweisungen unterscheiden sich je nach Konstruktor und dasselbe gilt für die Mnemonik. Ein Assemblerprogramm übersetzt jede Mnemonik in die entsprechende Bitfolge.
Programmiersprachen arbeiten oft mit einer Runtime .
Eine Laufzeit (Übersetzung: Executor ) ist ein Satz von Softwarebibliotheken , die die Programmiersprache implementieren und es ermöglichen, einfache Operationen wie das Kopieren von Daten, aber auch viel komplexere Operationen durchzuführen.
Bei der Übersetzung eines Programms in Maschinensprache werden einfache Operationen in die entsprechenden Maschinensprachanweisungen übersetzt, während komplexe Operationen in die Verwendung von Laufzeitfunktionen übersetzt werden . In bestimmten Programmiersprachen werden alle Anweisungen in Anwendungen der Laufzeit übersetzt, die dann als Vermittler zwischen den Möglichkeiten der Computerplattform und den programmsprachenspezifischen Konstruktionen dient.
Jede Programmiersprache hat eine konventionelle Art, die Ausführung von Prozeduren oder Funktionen zu übersetzen, Variablen im Speicher abzulegen und Parameter zu übergeben. Diese Konventionen werden von der Laufzeit durchgesetzt . Die Laufzeitumgebung wurde auch verwendet, um einige erweiterte Funktionen von Programmiersprachen wie Garbage Collection oder Reflektion zu implementieren.
Programmiersprachen sind im Allgemeinen selbstimplementiert, das heißt, der Compiler für diese Programmiersprache ist in der Sprache selbst implementiert. Beispiel: Ein Compiler für die Pascal-Sprache kann in Pascal-Sprache geschrieben werden.
Erweiterte Funktionen wie Garbage Collector , Behandlung von Ausnahmen, Ereignissen oder Threads sowie Late Binding und Reflection werden von Laufzeitprogrammiersprachen implementiert.
Ein Mechanismus, der nicht verwendete Variablen entfernt und den dafür reservierten Speicherplatz freigibt.
Eine unerwartete Tatsache, oft zufällig, führt zum Scheitern des normalen Programmablaufs, und diese außergewöhnliche Tatsache muss vom Programm berücksichtigt werden, bevor es fortgesetzt werden kann. Einige Programmiersprachen ermöglichen es Ihnen, den normalen Ablauf des Programms bewusst zu stoppen.
Eine Prozedur, die ausgeführt wird, wenn eine bestimmte Bedingung erfüllt ist. Ereignisse werden insbesondere verwendet, um grafische Oberflächen zu implementieren .
Eine Folge von Anweisungen, die ausgeführt werden. Programmiersprachen, die Threads manipulieren, ermöglichen die gleichzeitige Ausführung mehrerer Aufgaben. Diese von den Betriebssystemen gebotene Möglichkeit der gleichzeitigen Ausführung wird in leichter Form auch von der Laufzeit der Programmiersprachen angeboten.
Der Bindungsprozess (englisch Late Binding oder Dynamic Binding ) besteht darin, jede Kennung eines Programms mit der betreffenden Speicherstelle zu verknüpfen. Diese Operation kann während der Übersetzung des Programms, während der Ausführung des Programms oder kurz davor ausgeführt werden, es wird als spät bezeichnet, wenn die Verknüpfungsoperation sehr spät ausgeführt wird, kurz bevor die betreffende Stelle verwendet wird.
Die Möglichkeit für ein Programm, Informationen über seine eigenen Eigenschaften zu erhalten. Anweisungen in der Programmiersprache ermöglichen es einem Programm, Informationen über sich selbst zu erhalten und diese wie Daten zu manipulieren.
Eine Struktur, die die Manipulation von Imperativmerkmalen in rein funktionalen Sprachen ermöglicht.
Obwohl der Begriff des Programms nach und nach in der zweiten Hälfte des erscheint XIX E Jahrhundert erscheinen die ersten Programmiersprachen nicht , bis etwa 1950. Jeder seine eigene Sprache in der Lage zu schaffen, ist es unmöglich, die Gesamtzahl der Sprachen zu bestimmen. derzeit vorhanden.
Wir können Programmiersprachen auch nach ihrer Verwendung klassifizieren, da viele Sprachen auf eine bestimmte Anwendung oder Domäne spezialisiert sind.
Diese Art von Sprache wird für eine größere Interaktion zwischen einem Client und einem Server verwendet .
Auf der Webserver- Seite ermöglicht dies die Erstellung von Seiten, deren Inhalt auf jedem Display generiert wird. Diese Sprachen werden auch oft mit einer Sprache gekoppelt, um mit Datenbanken zu kommunizieren (Beispiele: PHP , LiveCode ).
Clientseitig (in der Regel der Webbrowser ) bieten diese Sprachen die Möglichkeit, auf bestimmte Aktionen des Nutzers zu reagieren, ohne den Server hinterfragen zu müssen. Beispielsweise kann JavaScript auf einer Webseite auf Benutzereingaben in einem Formular reagieren (und das Format der Daten überprüfen ).
Einige Sprachen ermöglichen es, sowohl Client- als auch Serveraspekte zu entwickeln. Dies ist bei Ocsigen , Hop , Dart oder sogar Server-Side JavaScript der Fall .
Die theoretische Programmiersprache wird manchmal als formale Systeme bezeichnet, die verwendet werden, um den Betrieb von Computern theoretisch zu beschreiben. Sie werden nicht verwendet, um Anwendungen zu entwickeln, sondern um Modelle darzustellen und einige ihrer Eigenschaften zu demonstrieren.
Wir können die zitieren Turing - Maschine und Kirche λ-Kalkül, die beide von dem Zeitpunkt aus den 1930er Jahren, und damit die Erfindung des Computers predate. Der λ-Kalkül wurde anschließend als theoretische Grundlage für die Familie der funktionalen Programmiersprachen verwendet . In den 1980er Jahren entwickelte Robin Milner die π-Kalküle , um konkurrierende Systeme zu modellieren.
Exotische Sprachen zielen darauf ab, vollständige und funktionale Grammatiken zu erstellen, jedoch in einem Paradigma fernab von Konventionen. Viele gelten auch als Witze.
Diese Sprachen sind im Allgemeinen schwer in die Praxis umzusetzen und werden daher selten verwendet.
Synchrone Programmiersprachen für reaktive Systeme: Esterel , Lustre .
BildungssprachenDer Pseudocode hat normalerweise nur einen pädagogischen Zweck.
R , SAS und xLispStat sind sowohl Statistiksprachen als auch Software.
Programmiersprachen für Numerische Steuerung (NC)Eine automatisierte Werkzeugmaschine oder Numerical Control (NC) benötigt eine Programmiersprache, um Dreh- oder Fräsoperationen auszuführen ...
Programmiersprachen industrieller speicherprogrammierbarer Steuerungen (SPS)Nyquist ist eine Synthese- und Klanganalysesprache. Pure Data ist eine Software zur grafischen Musikerstellung, die auf einer prozeduralen Programmiersprache basiert.
Sechs Forscher von drei portugiesischen Universitäten führten eine vergleichende Studie zu 27 Programmiersprachen mit dem Titel „Energieeffizienz in allen Programmiersprachen“ durch. Sie haben sich den Stromverbrauch, die Laufzeit und die Speichernutzung angesehen. Um eine Reihe vergleichbarer Programme zu erhalten, untersuchten die Forscher das Computer Language Benchmarks Game (CLBG).
Die resultierende Tabelle zeigt die Gesamtergebnisse (im Durchschnitt) für Energieverbrauch (Energy), Ausführungszeit (Time) und maximalen Speicherverbrauch (MB), normalisiert gegen die effizienteste Sprache für das gemessene Kriterium.
Die fünf besten Sprachen sind:
Die Popularität jeder Sprache ist schwer zu quantifizieren; es gibt jedoch den monatlich berechneten TIOBE-Index , der auf der Anzahl der Schulungen / Kurse für Ingenieure und der Anzahl der auf eine Programmiersprache spezialisierten Wiederverkäufer / Freiberufler basiert. Dies sind fragmentarische Informationen, die jedoch eine Vorstellung von den Tendenzen in Bezug auf die Präferenzen der Programmierer geben können.