Listen Sie auf, welche Arten von Programmiersprachen es gibt. Möglichkeiten zur Implementierung von Sprachen. Weiterentwicklung von Programmiersprachen

💖 Gefällt es dir? Teilen Sie den Link mit Ihren Freunden

Material aus Wikipedia

Programmiersprache- ein formales Zeichensystem zur Aufzeichnung von Computerprogrammen. Eine Programmiersprache definiert eine Reihe lexikalischer, syntaktischer und semantischer Regeln, die definieren Aussehen Programme und Aktionen, die der Darsteller (normalerweise ein Computer) unter seiner Kontrolle ausführt.

Der erste große Durchbruch war die Abstraktion der Assemblersprache und damit die Geburt der ersten automatischen Werkzeuge zur Generierung von Maschinencode. Dadurch wurden triviale Fehler, wie z. B. die Zahl, die der Operation entspricht, reduziert, die äußerst umständlich und schwer zu erkennen, aber leicht zu beheben sind.

Es ist zu beachten, dass es Sprachen gibt, die Merkmale auf hoher und niedriger Ebene kombinieren. Die Sprache wurde unter Berücksichtigung der folgenden Funktionen entwickelt. Die Philosophie der objektorientierten Programmierung unterscheidet sich von der konventionellen Programmierung. Versicherung. Es gibt viele Einschränkungen, insbesondere für Applets, die einschränken, was Sie mit den kritischen Ressourcen Ihres Computers tun können und was nicht. Tragbar. Unabhängig von der Architektur. Dieser Code wird auf die gleiche Weise interpretiert verschiedene Computer, müssen Sie nur einen Interpreter für jede Plattform implementieren. Multithreaded. Eine Multithread-Sprache ist eine Sprache, die Leistung erbringen kann verschiedene Linien Code gleichzeitig eingeben. Interpretiert. Dynamisch. Hinweis: Maschinencode ist Binärcode, die der Computer versteht und ausführen kann.

Zur gleichen Zeit, in den 1940er Jahren, erschienen elektrische Digitalrechner und es wurde eine Sprache entwickelt, die als erste höhere Programmiersprache für Computer gelten kann – „Plankalkül“, erstellt vom deutschen Ingenieur K. Zuse zwischen 1945 und 1945.

Nächstes Beispiel. Die ersten beiden Arten von Kommentaren sind diejenigen, die jeder Programmierer kennt und gleich verwendet. Diese Kommentare dienen als Beschreibung des deklarierten Elements und ermöglichen uns die Erstellung einer Dokumentation unserer Klassen, die gleichzeitig mit der Codegenerierung geschrieben wird. In dieser Art von Dokumentationskommentar dürfen Sie einige Token oder Schlüsselwörter eingeben, die dazu führen, dass die folgenden Informationen anders aussehen als der Rest der Dokumentation.

Bezeichner für Namen von Variablen, Funktionen, Klassen und Objekten; alles, was der Programmierer definieren oder verwenden muss. Die folgenden Zeichen können Buchstaben oder Zahlen sein. Bei der Großschreibung wird zwischen Groß- und Kleinschreibung unterschieden und es gibt keine maximale Länge. Dies sind gültige Bezeichner.

Ab Mitte der 1950er Jahre tauchten Sprachen der dritten Generation wie Fortran, Lisp und Cobol auf. Programmiersprachen dieser Art sind abstrakter (sie werden auch „Hochsprachen“ genannt) und universeller und weisen keine strikte Abhängigkeit von einer bestimmten Hardwareplattform und den darauf verwendeten Maschinenanweisungen auf. Ein Programm in einer Hochsprache kann (zumindest theoretisch; in der Praxis gibt es meist mehrere spezifische Versionen oder Dialekte der Sprachimplementierung) auf jedem Computer ausgeführt werden, der über einen Übersetzer für diese Sprache verfügt (ein Werkzeug, das die Sprache übersetzt). (Programm in Maschinensprache umwandeln und anschließend vom Prozessor ausführen lassen).

Nicht der gesamte Verzeichnisbaum besteht aus Benutzerverzeichnissen. Es gibt viele, die häufig verwendet werden oder über ein eigenes System verfügen, mit dem sie vertraut sein sollten. Die Wurzel, an der sie alle „hängen“ Dies ist vielleicht das wichtigste Verzeichnis. Es enthält Datendateien und Systemkonfiguration, Passwortdatei, Terminalkonfiguration, Netzwerk usw.

Katalog temporärer Korrekturen. Der erste Abschnitt enthält alle Überschriften. Als zweiten Abschnitt haben wir Funktionen. Deklaration der zu Beginn des Programms belegten Funktionen, möglicherweise die Hauptfunktion vor anderen Funktionen. Wenn ein Programm ausgeführt wird, wird als erstes diese Funktion ausgeführt, und der Rest des Programms folgt von dort aus. Wirth hat die Sprache so konzipiert, dass sie eine gute erste Programmiersprache für Leute ist, die anfangen, Programmieren zu lernen. Pascal hat eine relativ kleine Anzahl von Konzepten, aus denen er lernen und lernen kann.

Aktualisierte Versionen der aufgeführten Sprachen werden noch in der Entwicklung verwendet. Software, und jeder von ihnen hatte einen gewissen Einfluss auf die spätere Entwicklung von Programmiersprachen. Gleichzeitig erschien Ende der 1950er Jahre Algol, das auch als Grundlage für eine Reihe weiterer Entwicklungen auf diesem Gebiet diente. Es ist zu beachten, dass Format und Verwendung früher Programmiersprachen stark von Schnittstellenbeschränkungen beeinflusst wurden.

Sein Design erleichtert das Schreiben von Programmen in einem Stil, der allgemein als gute Standard-Programmierpraxis gilt. Ein weiteres Designziel von Wirth ist die einfache Implementierung. Er entwickelte eine Sprache, für die es einfach wäre, einen Compiler für einen neuen Computertyp zu schreiben.

Ein Programm ist eine Folge von Anweisungen. Der Vorgang der Ausführung dieser Anweisungen wird als Ausführen des Programms bezeichnet. Programme enthalten Eingabe-, Verarbeitungs- und Ausgabefunktionen. Eine Person, die Probleme löst, indem sie Programme auf einem Computer schreibt, wird als Programmierer bezeichnet. Nachdem Sie das Problem analysiert und einen Lösungsplan entwickelt haben, schreiben und testen Sie ein Programm, das den Computer anweist, den Plan auszuführen. Der vom Programmierer durchgeführte Vorgang wird als „Problemlösung“ definiert. Es muss jedoch darauf hingewiesen werden, dass Programmierer und Benutzer nicht dasselbe sind.

Verbesserung

Visuelle (grafische) Programmiersprachen werden zu einem wichtigen Arbeitsgebiet, in dem der Prozess des „Schreibens“ eines Programms als Text durch den Prozess des „Zeichnens“ (Konstruieren eines Programms in Form eines Diagramms) ersetzt wird. auf einem Computerbildschirm. Visuelle Sprachen sorgen für Klarheit und eine bessere menschliche Wahrnehmung der Programmlogik.

Der Benutzer ist derjenige, der das Programm nutzt. Beispiel für einen Taschenrechner. Tanenbaum. Der Server hat dies erst vor ein paar Tagen versucht und war angenehm überrascht. Da eine Diskette nur 44 Megabyte an Daten speichert, können Sie nicht denselben Kernel wie eine Diskette verwenden. Führen Sie dann den folgenden Befehl aus dem Verzeichnis aus.

Richten Sie nur das ein, was Sie wirklich brauchen. Ihre Auswahl kann je nachdem, was Sie einschließen möchten, variieren. Geben Sie nun den folgenden Befehl ein. Komprimieren des letzten Kernels. Dateisystem: Es ist nicht nur eine Sammlung von Dateien. Jetzt müssen wir ein Dateisystem für die Diskette erstellen. Anstatt die Dateien zu kopieren, da sie sich direkt auf der Diskette befinden, komprimieren wir sie vor dem Kopieren. Es wird etwas schwieriger sein, alles für immer zu ändern. Geben Sie zunächst Folgendes ein.

Standardisierung von Programmiersprachen

Für viele weit verbreitete Programmiersprachen wurden internationale Standards erstellt. Spezielle Organisationen aktualisieren und veröffentlichen regelmäßig Spezifikationen und formale Definitionen der entsprechenden Sprache. Im Rahmen solcher Gremien wird die Entwicklung und Modernisierung von Programmiersprachen fortgesetzt und Fragen der Erweiterung oder Unterstützung bestehender und neuer Sprachkonstrukte geklärt.

Wo ist der „Ort“ auf der Festplatte, an dem Sie das Dateisystem entpacken möchten? Dann müssen wir dieses von uns erstellte Dateisystem installieren. Dazu müssen Sie den Kernel Ihrer Maschine mit der Option kompilieren. Entweder als Modul oder in einem einzelnen Kern. Vergessen Sie nicht, Ihren Computer neu zu starten, wenn Sie den Kernel neu kompilieren müssen! Jetzt sollten Sie alle benötigten Dateien in das neue Dateisystem kopieren.

Dazu müssen wir das Dateisystem komprimieren, indem wir die folgenden Befehle eingeben. Jetzt ist es wichtig, die Kernelgröße zu überprüfen. Teilen Sie dann die Kerngröße auf. Ersetzen Sie in Zukunft die angezeigten Bestellungen durch die von Ihnen berechnete Gesamtzahl an Kilobyte. Kopieren Sie nun den Kernel mit dem folgenden Befehl auf eine Diskette.

Datentypen

Moderne digitale Computer sind binär und speichern Daten im Binärcode (obwohl auch Implementierungen in anderen Zahlensystemen möglich sind). Diese Daten spiegeln in der Regel reale Informationen (Namen, Bankkonten, Maße usw.) wider, die übergeordnete Konzepte darstellen.

Dieser Befehl schreibt den Kernel auf die Diskette. Geben Sie dann den folgenden Befehl ein, damit der Kernel das Stammverzeichnis des Dateisystems auf der Diskette finden kann. Jetzt müssen Sie eine kleine Hexadezimalrechnung durchführen. Geben Sie abschließend die folgende Kopie ein, um das Dateisystem auf die Diskette zu kopieren.

Wurzel Dateisystem wird direkt nach dem Kernel auf die Diskette kopiert. Du hast es schon! Für die zweite Diskette ist der Vorgang einfacher. Kopieren Sie die gewünschten Dateien auf die Diskette. Um jedoch die Dateien auf dem zweiten Laufwerk verwenden zu können, müssen Sie nach dem Booten vom Diskettenlaufwerk Folgendes eingeben.

Das spezielle System, nach dem Daten in einem Programm organisiert sind, ist Typensystem Programmiersprache; Die Entwicklung und Untersuchung von Typensystemen wird als Typentheorie bezeichnet. Sprachen können in Sprachen mit Sprachen unterteilt werden statisches Tippen Und dynamisches Tippen, und auch typlose Sprachen(Zum Beispiel, Weiter).

Wenn wir Opcodes abstrahieren und sie durch ein Wort ersetzen, das den Schlüssel zu seiner Bedeutung darstellt, das üblicherweise als Mnemonik bezeichnet wird, haben wir das Konzept der Assemblersprache. Wir können die Assemblersprache also einfach wie folgt definieren. Assemblersprache ist die erste Abstraktion der Maschinensprache, die aus zugehörigen Codeschlüsselwörtern besteht, die dem Programmierer die Verwendung erleichtern.

Wie Sie sehen, wird die Assemblersprache direkt übersetzt Maschinensprache, umgekehrt; Es handelt sich lediglich um eine Abstraktion, die den Menschen die Verwendung erleichtert. Andererseits versteht ein Computer die Assemblersprache nicht direkt; Es muss in Maschinensprache übersetzt werden. Ursprünglich wurde dieser Vorgang manuell mithilfe von Arbeitsblättern durchgeführt, in denen Programmtabellen geschrieben wurden, ähnlich dem Taschenrechnerbeispiel, das wir oben gesehen haben. Da die Übersetzung aber so direkt war, erschienen bald Assembler-Programme, also Übersetzer, die konvertieren Quelle in Objektcode.

Statisch typisierte Sprachen können mit weiter in Sprachen unterteilt werden Pflichtdeklaration, wobei jede Variablen- und Funktionsdeklaration eine erforderliche Typdeklaration und Sprachen mit hat abgeleitete Typen. Manchmal werden dynamisch typisierte Sprachen aufgerufen latent getippt.

Datenstrukturen

Typsysteme in Hochsprachen ermöglichen die Definition komplexer, zusammengesetzter Typen, sogenannter Datenstrukturen. Typischerweise werden Strukturdatentypen als kartesisches Produkt aus Basistypen (atomaren Typen) und zuvor definierten zusammengesetzten Typen gebildet.

Als Beispiel können wir drei völlig unterschiedliche Sprachen nennen, die dennoch aus der Anwendung der vorherigen Konzepte stammen. Wir haben 3 verschiedene Hersteller, die miteinander konkurrieren und jeweils unterschiedliche Konzepte bei der Herstellung ihrer Prozessoren, ihrer Architektur und Programmierung verwenden; All diese Aspekte tragen dazu bei, dass sich Maschinensprache und Assemblersprache stark verändern.

Der Evolutionsprozess hat zu einigen Nachteilen geführt, die wir nun als Vorteile der Verwendung der Assemblersprache im Vergleich zu einer Hochsprache betrachten werden.

  • Geschwindigkeit.
  • Effizienz der Größe.
  • Flexibilität.
Andererseits hat Assembly als primitivere Sprache einige Nachteile im Vergleich zu Hochsprachen.

Grundlegende Datenstrukturen (Listen, Warteschlangen, Hash-Tabellen, Binärbäume und Paare) werden in Hochsprachen häufig durch spezielle syntaktische Konstrukte dargestellt. Solche Daten werden automatisch strukturiert.

Semantik von Programmiersprachen

Es gibt verschiedene Ansätze zur Definition der Semantik von Programmiersprachen.

  • Programmierzeit.
  • Ausgezeichnete Quellprogramme.
  • Risiko unerwarteter Auswirkungen auf Ressourcen.
  • Mangelnde Portabilität.
Der von Übersetzern durchgeführte Übersetzungsprozess beinhaltet einen zusätzlichen Berechnungsprozess, den der Programmierer durchführen möchte. Deshalb werden wir feststellen, dass der Interpreter immer langsamer ist, als wenn er dasselbe in Assembler macht, einfach weil er bei jeder Ausführung zusätzliche Kosten für die Übersetzung des Programms verursacht.

Von dort kamen Compiler, die viel schneller sind als Interpreter, weil sie die Übersetzung einmal durchführen und den Objektcode zurücklassen, der bereits Maschinensprache ist und sehr schnell ausgeführt werden kann. Obwohl der Übersetzungsprozess komplexer und teurer ist als das Zusammenstellen eines Programms, neigen wir dazu, ihn zu vernachlässigen, im Gegensatz zu den Vorteilen einer schnelleren Programmierung eines Programms.

Die am weitesten verbreiteten Varianten sind die folgenden drei: operativ, abgeleitet (axiomatisch) und denotational (mathematisch).

  • Bei der Beschreibung der Semantik innerhalb betriebsbereit Bei diesem Ansatz wird die Ausführung von Programmiersprachenkonstrukten normalerweise mithilfe eines imaginären (abstrakten) Computers interpretiert.
  • Die axiomatische Semantik beschreibt die Konsequenzen der Ausführung von Sprachkonstrukten mithilfe der Sprache der Logik und der Angabe von Vor- und Nachbedingungen.
  • Dental Die Semantik operiert mit für die Mathematik typischen Konzepten – Mengen, Korrespondenzen sowie Urteilen, Aussagen etc.

Programmierparadigma

Eine Programmiersprache wird in Übereinstimmung mit dem einen oder anderen grundlegenden Computermodell und Programmierparadigma erstellt.

Meistens ist der vom Compiler erzeugte Code jedoch weniger effizient als der entsprechende Code, den ein Programmierer schreiben würde. Der Grund dafür ist, dass der Compiler nicht über viel Intelligenz verfügt und in der Lage sein muss, generischen Code zu erzeugen, der sowohl einem Programm als auch einem anderen dient; Stattdessen kann der menschliche Programmierer spezifische Merkmale des Problems ausnutzen und so die Allgemeingültigkeit reduzieren, aber gleichzeitig keine Anweisungen verschwenden und keinen Prozess ausführen, der nicht notwendig ist.

Wenn daher die Programmgeschwindigkeit von entscheidender Bedeutung ist, ist Assembler ein logischer Kandidat als Sprache. Daher empfiehlt es sich, zunächst diese Aspekte zu optimieren erforderliche Sprache und verwenden Sie Assembler nur in Fällen, in denen eine weitere Optimierung erforderlich ist und auf diese Weise nicht erreicht werden kann. Aus den gleichen Gründen, die wir beim Geschwindigkeitsaspekt gesehen haben, generieren Compiler und Interpreter mehr Maschinencode als nötig; Deshalb ausführbares Programm wachsend. Wenn es also wichtig ist, die Größe der ausführbaren Datei zu reduzieren, die Speichernutzung zu verbessern und Geschwindigkeitsvorteile zu erzielen, kann es sinnvoll sein, Assemblersprache zu verwenden.

Obwohl sich die meisten Sprachen auf das imperative Rechenmodell konzentrieren, das durch die Computerarchitektur von Neumann definiert wird, gibt es auch andere Ansätze. Wir können Sprachen mit einem Stack-Computing-Modell (Forth, Factor, PostScript usw.) sowie funktionalen Sprachen (Lisp, Haskell, REFAL, basierend auf dem vom sowjetischen Mathematiker A. A. Markov Jr. usw. eingeführten Computermodell) erwähnen. ) und Logikprogrammierung (Prolog).

Zu den Programmen, die nur minimalen Speicherverbrauch benötigen, gehören Viren und Gerätetreiber. Viele davon sind natürlich in Assemblersprache geschrieben. Die oben genannten Gründe liegen zum Teil darin begründet, dass wir Dinge in einer anderen Sprache erledigen können, aber wir möchten sie effizienter erledigen. Aber alle Hochsprachen haben Einschränkungen in der Kontrolle; Durch Abstraktionen schränken sie ihre Fähigkeiten ein. Das heißt, es gibt Aufgaben, die eine Maschine ausführen kann, eine Hochsprache erlaubt dies jedoch nicht. Allerdings ist es im Assembler sehr einfach, da wir direkten Zugriff auf die Monitor-Hardware haben.

Derzeit entwickeln sich auch deklarative und visuelle Programmiersprachen sowie Methoden und Werkzeuge zur Entwicklung problemspezifischer Sprachen aktiv weiter (siehe Sprachorientierte Programmierung).

Möglichkeiten zur Implementierung von Sprachen

Programmiersprachen können kompiliert, interpretiert und eingebettet implementiert werden.

Ein Programm in einer kompilierten Sprache wird mithilfe eines Compilers (ein spezielles Programm) in Maschinencode (eine Reihe von Anweisungen) umgewandelt (kompiliert). dieser Art Prozessor und wird dann zu einem ausführbaren Modul zusammengesetzt, das zur Ausführung gestartet werden kann als separates Programm. Mit anderen Worten übersetzt der Compiler den Programmquellcode aus einer höheren Programmiersprache in Binärcodes von Prozessoranweisungen.

Wenn ein Programm in einer interpretierten Sprache geschrieben ist, führt (interpretiert) der Interpreter den Quelltext direkt aus, ohne ihn auszuführen vorläufige Übersetzung. In diesem Fall bleibt das Programm in der Originalsprache und kann nicht ohne Dolmetscher gestartet werden. Der Computerprozessor kann in dieser Hinsicht als Interpreter für Maschinencode bezeichnet werden.

Die Einteilung in kompilierte und interpretierte Sprachen ist bedingt. Sie können also für jede traditionell kompilierte Sprache wie Pascal einen Interpreter schreiben. Darüber hinaus führen die meisten modernen „reinen“ Interpreter Sprachkonstrukte nicht direkt aus, sondern kompilieren sie in eine Zwischendarstellung auf hoher Ebene (z. B. mit Variablendereferenzierung und Makroerweiterung).

Ein Compiler kann für jede interpretierte Sprache erstellt werden – beispielsweise kann die Sprache Lisp, die nativ interpretiert wird, ohne Einschränkungen kompiliert werden. Während der Programmausführung generierter Code kann auch während der Ausführung dynamisch kompiliert werden.

Kompilierte Programme werden in der Regel schneller ausgeführt und erfordern zur Ausführung keine zusätzlichen Programme, da sie bereits in Maschinensprache übersetzt sind. Gleichzeitig muss der Programmtext jedes Mal neu kompiliert werden, wenn er sich ändert, was den Entwicklungsprozess verlangsamt. Darüber hinaus kann das kompilierte Programm nur auf demselben Computertyp und in der Regel unter demselben Betriebssystem ausgeführt werden, für das der Compiler entwickelt wurde. Um eine ausführbare Datei für einen anderen Maschinentyp zu erstellen, ist eine neue Kompilierung erforderlich.

Interpretierte Sprachen haben einige Besonderheiten Zusatzfunktionen(siehe oben), außerdem können Programme darauf sofort nach der Änderung gestartet werden, was die Entwicklung erleichtert. Oft kann ein Programm in einer interpretierten Sprache ausgeführt werden verschiedene Typen Maschinen und Betriebssysteme ohne zusätzlichen Aufwand.

Allerdings laufen interpretierte Programme deutlich langsamer als kompilierte und können ohne Interpreterprogramm nicht ausgeführt werden.

Dieser Ansatz ermöglicht es Ihnen gewissermaßen, die Vorteile von Interpretern und Compilern zu nutzen. Es sollte erwähnt werden, dass es Sprachen gibt, die sowohl einen Interpreter als auch einen Compiler (Forth) haben.

Programmiersprachen auf niedrigem Niveau

Die ersten Computer mussten mit binären Maschinencodes programmiert werden. Allerdings ist die Programmierung auf diese Weise eine recht zeitaufwändige und schwierige Aufgabe. Um diese Aufgabe zu vereinfachen, tauchten langsame Programmiersprachen auf, die es ermöglichten, Maschinenbefehle in einer für den Menschen verständlichen Form anzugeben. Um sie in Binärcode umzuwandeln, wurden spezielle Übersetzerprogramme erstellt.

Ein Beispiel für eine Low-Level-Sprache ist die Assemblersprache. Low-Level-Sprachen konzentrieren sich auf einen bestimmten Prozessortyp und berücksichtigen dessen Funktionen. Um ein Assemblersprachenprogramm auf eine andere Hardwareplattform zu portieren, muss es also fast vollständig neu geschrieben werden. Es gibt gewisse Unterschiede in der Syntax von Programmen für verschiedene Compiler. Zentralprozessoren für Computer von AMD und Intel sind zwar praktisch kompatibel und unterscheiden sich nur in einigen spezifischen Befehlen. Aber spezielle Prozessoren für andere Geräte, zum Beispiel Grafikkarten und Telefone, weisen erhebliche Unterschiede auf.

Low-Level-Sprachen werden normalerweise verwendet, um klein zu schreiben Systemprogramme, Gerätetreiber, Schnittstellenmodule mit nicht standardmäßiger Ausstattung, Programmierung spezialisierter Mikroprozessoren, wenn die wichtigsten Anforderungen Kompaktheit, Geschwindigkeit und die Möglichkeit des direkten Zugriffs auf Hardwareressourcen sind.

Programmiersprachen auf hohem Niveau

Spezifische Funktionen Computerarchitekturen Sie werden nicht berücksichtigt, sodass die erstellten Anwendungen problemlos von Computer zu Computer übertragen werden können. In den meisten Fällen reicht es aus, das Programm einfach für eine bestimmte Computerarchitektur und ein bestimmtes Betriebssystem neu zu kompilieren. Die Entwicklung von Programmen in solchen Sprachen ist viel einfacher und es werden weniger Fehler gemacht. Die Programmentwicklungszeit wird deutlich verkürzt, was besonders bei der Arbeit an großen Softwareprojekten wichtig ist.

Unter Entwicklern herrscht mittlerweile die Meinung vor, dass Programmiersprachen, die direkten Zugriff auf Speicher und Register haben oder über Assembler-Einfügungen verfügen, als Programmiersprachen mit niedrigem Abstraktionsgrad gelten sollten. Daher gelten die meisten Sprachen, die vor dem Jahr 2000 als Hochsprachen galten, nicht mehr als solche.

Der Nachteil einiger Hochsprachen besteht darin, dass Programme im Vergleich zu Programmen in Niedrigsprachen groß sind. Andererseits kann bei algorithmisch und strukturell komplexen Programmen bei Verwendung der Superkompilierung der Vorteil auf der Seite der Hochsprachen liegen. Der Text von Programmen in einer Hochsprache ist kleiner, in Bytes ausgedrückt ist der ursprünglich in Assembler geschriebene Code jedoch kompakter. Daher werden hauptsächlich Hochsprachen verwendet, um Software für Computer und Geräte zu entwickeln großes Volumen Erinnerung. Und verschiedene Subtypen von Assembler werden zum Programmieren anderer Geräte verwendet, bei denen die Größe des Programms von entscheidender Bedeutung ist.

Verwendete Symbole

Moderne Programmiersprachen sind auf die Verwendung von ASCII ausgelegt, also auf Zugänglichkeit für alle Grafik ASCII-Zeichen sind eine notwendige und ausreichende Voraussetzung für das Schreiben jeglicher Sprachkonstrukte. Manager ASCII-Zeichen werden in begrenztem Umfang verwendet: Es sind nur Wagenrücklauf CR, Zeilenvorschub LF und horizontaler Tabulator HT (manchmal auch vertikaler Tabulator VT und Seitenvorschub FF) zulässig.

Frühe Sprachen, die im Zeitalter der 6-Bit-Zeichen aufkamen, verwendeten einen begrenzteren Satz. Das Fortran-Alphabet hat beispielsweise 49 Zeichen (einschließlich Leerzeichen): A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 = + - * / () . , $ " :

Eine bemerkenswerte Ausnahme ist die APL-Sprache, die viele Sonderzeichen verwendet.

Die Verwendung von Nicht-ASCII-Zeichen (z. B. KOI8-R-Zeichen oder Unicode-Zeichen) hängt von der Implementierung ab: Manchmal sind sie nur in Kommentaren und Zeichen-/String-Konstanten und manchmal in Bezeichnern zulässig. In der UdSSR gab es Sprachen, in denen alle Schlüsselwörter in russischen Buchstaben geschrieben waren, aber solche Sprachen erfreuten sich nicht großer Beliebtheit (mit Ausnahme der integrierten Programmiersprache 1C:Enterprise).

Die Erweiterung des verwendeten Symbolsatzes wird durch die Tatsache eingeschränkt, dass viele Softwareentwicklungsprojekte international sind. Es wäre sehr schwierig, mit Code zu arbeiten, bei dem die Namen einiger Variablen in russischen Buchstaben, andere in arabischen und wieder andere in chinesischen Schriftzeichen geschrieben sind. Gleichzeitig unterstützen Programmiersprachen der neuen Generation (Delphi 2006, Java) Unicode, um mit Textdaten arbeiten zu können.

Kategorien von Programmiersprachen

Mathematisch basierte Programmiersprachen

Dies sind Sprachen, deren Semantik ist Direkte eine Verkörperung eines bestimmten mathematischen Modells, leicht angepasst (ohne die Integrität zu verletzen), um eine praktischere Sprache für die Entwicklung realer Programme zu sein. Nur wenige Sprachen fallen in diese Kategorie, die meisten Sprachen sind mit Schwerpunkt auf der Möglichkeit einer effizienten Übersetzung auf eine Turing-Maschine konzipiert und verfügen nur über eine bestimmte Teilmenge in seiner Zusammensetzung das eine oder andere mathematische Modell verkörpern - von

Der Personal Computer war bis Mitte der sechziger Jahre eine übermäßig teure Maschine, die ausschließlich für bestimmte Aufgaben verwendet wurde und jeweils nur eine Aufgabe ausführte.

Die damaligen Programmiersprachen sowie die Computergeräte, auf denen sie verwendet wurden, wurden nur zur Ausführung bestimmter Aufgaben entwickelt, beispielsweise für das wissenschaftliche Rechnen, und nicht. Aufgrund der Tatsache, dass Maschinen, wie oben erwähnt, ein sehr teures Vergnügen waren und jeweils nur eine Aufgabe ausgeführt wurde, galt die Zeit als teuer – daher stand die Geschwindigkeit der Programmausführung im Vordergrund.

In den sechziger Jahren begannen die Kosten jedoch zu sinken, und es kam die Zeit, in der sich auch kleine Unternehmen dieses Vergnügen leisten konnten. Zudem erhöhte sich die Geschwindigkeit und die Maschinen standen lange Zeit still, ohne irgendwelche Aufgaben auszuführen. Und um dies zu verhindern, wurden Time-Sharing-Systeme eingeführt.

Die Prozessorzeit wurde in diesen Systemen, wie man es ausdrückt, „in Scheiben geschnitten“, und Benutzer konnten abwechselnd kurze Abschnitte derselben Zeit erhalten. Das Computergerät begann viel schneller zu arbeiten, was dem Benutzer am Terminal das Gefühl gab, seine Aktivitäten allein mit dem System auszuführen. Das Gerät war wiederum weniger im Leerlauf, da es nicht eine, sondern mehrere Aufgaben gleichzeitig erledigte. Time-Sharing reduzierte die Kosten für Hardware-Zeit erheblich, und das alles aufgrund der Tatsache, dass ein Gerät nicht von einem Benutzer oder sogar von zwei, sondern von Hunderten gemeinsam genutzt werden konnte.

Als die Macht billiger und zugänglicher wurde, begannen diejenigen, die Programmiersprachen entwickelten, immer mehr darüber nachzudenken, wie man Software bequemer schreiben kann, und nicht über die Geschwindigkeit ihrer Ausführung. „Kleine“ Operationen, das heißt atomare Operationen, die direkt von Gerätegeräten ausgeführt werden, wurden zu „voluminöseren“ Operationen auf hoher Ebene und Einzelstrukturen zusammengefasst, mit denen es für Benutzer viel bequemer und einfacher war, ihre Aktivitäten auszuführen .

Was sind Programmiersprachen?

Auf diese Frage werden wir nun eine klare Antwort geben. Eine Programmiersprache ist ein formales Zeichensystem, das Algorithmen in einer für den Ausführenden bequemeren Form beschreiben soll, zum Beispiel persönlicher Computer. Eine Programmiersprache umfasst ein Paket semantischer, syntaktischer und lexikalischer Regeln, die zur Erstellung eines Computerprogramms verwendet werden. Mithilfe einer solchen Sprache kann der Programmierer genau bestimmen, auf welche Ereignisse der PC reagiert, wie Informationen gespeichert und übertragen werden und welche Aktionen unter diesen verschiedenen Umständen durchgeführt werden müssen.

Bei der Entwicklung der ersten programmierbaren Geräte wurden fast dreitausend Programmiersprachen erfunden. Ihre Zahl steigt jedes Jahr und es kommen neue hinzu. Es gibt einige Sprachen, die nur eine kleine Anzahl von Entwicklern verwenden kann, die sie entwickelt haben, während andere einer großen Anzahl von Benutzern bekannt werden. Fachprogrammierer nutzen bei ihrer Arbeit mehr als zehn verschiedene Programmiersprachen.

Warum werden Programmiersprachen benötigt?

Der Prozess der PC-Bedienung ist die Ausführung eines Programms. Um es genauer auszudrücken in einfacher Sprache, also ein Paket von Befehlen, die in einer bestimmten Reihenfolge folgen. Die Art der Maschinenanweisung, die aus Nullen und Einsen besteht, gibt an, welche Aktionen der Zentralprozessor ausführen soll. Daraus folgt: Um dem PC die Reihenfolge der auszuführenden Aktionen festzulegen, wird eine Folge binärer Typcodes der entsprechenden Befehle vorgegeben. In Maschinencodes besteht Software aus vielen Befehlen. Das Schreiben einer solchen Software ist zeitaufwändig, schwierig und mühsam. Der Programmierer muss die Kombination von Einsen und Nullen des binären Codes jedes Programms kennen, außerdem muss er sich die binären Codes der Datenadressen merken, die während seiner Ausführung verwendet werden. Es ist viel einfacher, Software in einer Sprache zu schreiben, die der menschlichen natürlichen Sprache näher kommt, und dieses Programm von einem PC in maschinenähnliche Codes übersetzen zu lassen. Genau so entstanden Programmiersprachen, die speziell zum Schreiben von Software gedacht sind.

Heutzutage gibt es eine große Anzahl unterschiedlicher Programmiersprachen. Jeder von ihnen kann zur Lösung vieler Probleme verwendet werden. Spezialisten auf ihrem Gebiet wissen genau, welche Programmiersprache zur Lösung etwaiger Probleme verwendet werden muss, da jede der Sprachen über eigene Fähigkeiten verfügt, die auf bestimmte Arten von Aufgaben abzielen, und auch über eine eigene Art der Beschreibung von Objekten und Konzepten verfügt werden zur Lösung einer Vielzahl von Problemen eingesetzt.

Programmiersprachen werden in 2 Gruppen eingeteilt

Es gibt Sprachen, die haben niedriges Niveau und Sprachen, die auf hohem Niveau sind.

Zur ersten Gruppe gehören Assemblersprachen, in denen Befehlsnotationen in Form von Symbolen verwendet werden, die sich schnell und klar merken lassen. Anstelle einer Folge binärer Befehle werden symbolische Notationen geschrieben, und anstelle der Adressen der binären Daten, die bei der Ausführung eines Befehls verwendet werden, werden die von den Programmierern gewählten Namen und die Namen dieser Daten in Form von Symbolen geschrieben sind vergeben. Diese Programmiersprache hat einen anderen Namen – Autocode oder mnemonischer Code.

Am häufigsten werden jedoch höhere Programmiersprachen für Programme von denjenigen verwendet, die sie erstellen. Eine solche Sprache verfügt im Prinzip, genau wie die menschliche Sprache, über ein eigenes Alphabet, nämlich eine große Anzahl von Symbolen, die in Sprachen verwendet werden. Diese Symbole sind notwendig, um die Schlüsselwörter der Sprache zu bilden. Jedes Schlüsselwort hat seine eigene Funktion, genau wie in der Sprache, die wir gewohnt sind, Wörter, die aus Buchstaben des Alphabets bestehen. Stichworte werden unter Verwendung der syntaktischen Regeln der Sprache zu Sätzen miteinander verbunden. Jeder dieser Sätze ist für die Abfolge der Aktionen verantwortlich, die der PC ausführt.

Eine Programmiersprache, die ein hohes Niveau hat, ist das Bindeglied zwischen dem PC und dem Benutzer und lädt ihn ein, mit dem PC auf die für ihn bequemste Weise zu kommunizieren. Sehr oft hilft diese Sprache dabei, die richtige Methode zur Lösung von Problemen auszuwählen.

Bevor er mit dem Schreiben von Software in einer Programmiersprache mit hohem Niveau beginnt, erstellt ein Spezialist einen Algorithmus zur Lösung von Problemen, nämlich einen schrittweisen Aktionsplan, der zur Lösung dieses Problems befolgt werden muss. Daher werden Programmiersprachen, die die vorläufige Kompilierung eines Algorithmus erfordern, als Sprachen vom algorithmischen Typ bezeichnet.

Nun, hier kommen wir sozusagen zur Hauptsache. Jetzt verraten wir Ihnen, welche Programmiersprachen es gibt.

Welche verschiedenen Programmiersprachen gibt es?

Fortran

Bereits Mitte der fünfziger Jahre begannen Wissenschaftler, Programmiersprachen zu entwickeln. Und die allererste Sprache dieser Art hieß Fortran und wurde 1957 entwickelt. Es wird verwendet, um einen Algorithmus zur Lösung wissenschaftlicher und technischer Probleme mithilfe eines digitalen Computers zu beschreiben. Darüber hinaus wurde eine solche Sprache wie die ersten Recheneinheiten zur Durchführung naturwissenschaftlicher und mathematischer Berechnungen verwendet. Diese Sprache hat in verbesserter Form bis heute überlebt und ist unter den modernen Sprachen mit hohem Niveau diejenige, die am häufigsten für die Durchführung wissenschaftlicher Forschung verwendet wird. Die heute am häufigsten verwendeten Optionen: Fortran-I2, Fortran-I4, EASIC Fortran und ihre Verallgemeinerungen.

ALGOL

Wir setzen unser Thema Programmiersprachen fort. Wie Sie bereits verstehen, sprechen wir nun über eine Programmiersprache wie Algol, die zwischen 1958 und 1960 erschien. In den Jahren 1964-1968 wurde sie verbessert und es erschien ALGOL-68. Eine Sprache dieser Art wurde von einem Komitee entwickelt, dem Wissenschaftler aus Amerika und Europa angehörten, und sie wurde als Hochsprache eingestuft. Mit dieser Art von Sprache könnten algebraische Formeln leicht in Programmbefehle übersetzt werden. Algol war nicht nur in europäischen Ländern, sondern auch in Russland beliebt. Diese Art von Sprache hatte nach einiger Zeit einen spürbaren Einfluss auf alle erstellten Programmiersprachen, insbesondere betraf dies die Pascal-Sprache. Dieser Typ Sprachen wurden im Prinzip, genau wie die Fortran-Sprache, zur Lösung wissenschaftlicher und technischer Probleme geschaffen. Darüber hinaus diente die Sprache als Mittel zur Vermittlung der Grundlagen der Programmierung, also der Kunst, Software zu erstellen.

COBOL

Die Programmiersprache Cobol wurde zwischen 1959 und 1960 entwickelt und gehört zur dritten Generation. Zunächst einmal ist es dafür gedacht Entwicklung von Geschäftsanwendungen und zur Lösung wirtschaftlicher Probleme, zur Verarbeitung von Bankdaten, für Versicherungen und andere Institutionen. Die „Erfinderin“ von Kobol ist Grace Hopper. Normalerweise wird COBOL wegen seiner Umständlichkeit und Ausführlichkeit kritisiert, da eines der Ziele der Schöpfer dieser Sprache darin bestand, dieser so nahe wie möglich zu kommen Englische Sprache. Gleichzeitig verfügte die Programmiersprache für ihre Zeit über hervorragende Werkzeuge für die Arbeit mit Datenstrukturen und Dateien, was ihr im Übrigen eine lange Lebensdauer in Geschäftsanwendungen sicherte. Zumindest in den USA – auf jeden Fall.

Lispeln

Als nächstes kommt die Programmiersprache Lisp. Die Programmiersprache Lisp wurde fast zeitgleich mit der Programmiersprache Cobol entwickelt. Diese Sprache basiert auf der Programmdarstellung systemlinearer Symbollisten, die die Hauptdatenstruktur der Sprache darstellen. Es ist nach Fortran die zweitälteste Programmiersprache. Es wird häufig zur Verarbeitung von Informationen in Form von Symbolen und zur Erstellung von Software verwendet, die die Funktionsweise des menschlichen Gehirns simuliert.

Ein in Lisp erstelltes Programm besteht aus Folgen von Ausdrücken, also Formularen. Das Ergebnis des Programms ist die Berechnung dieser Ausdrücke, geschrieben in Form einer Liste – eine der Hauptstrukturen dieser Art von Sprache. Der Hauptpunkt eines Lisp-Programms ist „Leben“ im symbolischen Raum.

BASIC

Die Programmiersprache BASIC wurde Mitte der sechziger Jahre von Programmierern am Dartmouth College in den USA entwickelt. Die Sprache basierte teilweise auf Fortran 2 und teilweise auf ALGOL-60, es wurden auch Ergänzungen vorgenommen, die das Arbeiten im Time-Sharing-Modus komfortabler machten, und nach einigen Jahren wurde sie auch für die Textverarbeitung und Matrixarithmetik geeignet. Diese Art von Programmiersprache wurde ursprünglich auf dem GE-265-Großrechner implementiert, der eine große Anzahl von Terminals unterstützt. Zum Zeitpunkt ihres Erscheinens handelte es sich entgegen der landläufigen Meinung um eine kompilierte Sprache.

Diese Art von Programmiersprache ist so konzipiert, dass Schüler Programme über Time-Sharing-Terminals schreiben können. Es wurde nicht nur entwickelt, um das Problem zu lösen, das mit problematischen, älteren Sprachen verbunden ist, sondern es sollte auch von „normalen“ Benutzern verwendet werden, die nicht an der Geschwindigkeit des Programms, sondern an der Benutzerfreundlichkeit interessiert sind einen PC zur Lösung ihrer Aufgaben. Aufgrund der Einfachheit dieser Art von Sprache beginnen die meisten Programmieranfänger ihre Programmierreise damit.

Fort

Die Programmiersprache Forth erschien Ende der sechziger und Anfang der siebziger Jahre. Diese Art von Sprache wurde für Steuerungsaufgaben verschiedener Arten von Systemen verwendet, nachdem ihr Schöpfer Charles Moore darin Software geschrieben hatte, die zur Steuerung von Radioteleskopen am Arizona Observatory gedacht war.

Viele Eigenschaften wie Flexibilität, Interaktivität und einfache „Erfindung“ haben Forth zu einer effektiven und attraktiven Sprache in der angewandten Forschung und bei der Erstellung von Werkzeugen gemacht. Die offensichtlichen Anwendungsgebiete für diese Art von Programmiersprache sind eingebettete Steuerungssysteme. Darüber hinaus hat es auch bei der Programmierung von PCs mit verschiedenen Betriebssystemen Anwendung gefunden.

Pascal

Wenn man das Thema fortsetzt, kann man nicht umhin, diese Art von Programmiersprache als Pascal zu erwähnen. Pascal wurde 1972 entwickelt und nach Blaise Pascal benannt, der einst ein großer Mathematiker und Erfinder der ersten Recheneinheit der Welt war. Der Schweizer Wissenschaftler und Informatiker Nikolaus Wirth gilt zu Recht als Schöpfer der Sprache. Die Innovation diente der Vermittlung von Programmiermethoden. Pascal ist eine Allzweck-Programmiersprache.

Von all seinen Merkmalen können die wichtigsten genannt werden - dies ist die strengste Typisierung und das Vorhandensein von Programmierwerkzeugen für Strukturtypen. Pascal wurde eine der ersten Sprachen dieser Art. Mit der Programmiersprache Pascal lernen Sie, wie Sie ein Programm richtig schreiben und Methoden zur Lösung von Problemen richtig entwickeln. Außerdem lernen Sie, wie Sie die richtigen Optionen für die Darstellung und Organisation der in einem Problem verwendeten Daten auswählen. Die Pascal-Sprache wird seit 1983 in weiterführenden Informatikkursen eingeführt. pädagogische Schulen USA.

Um das Thema Programmiersprachen fortzusetzen, beschlossen wir, über eine andere Art von Sprache zu sprechen – die Ada-Sprache. Die Programmiersprache Ada wurde Ende der siebziger Jahre aus Pascal entwickelt und nach Ada Lovelace, einer begabten Mathematikerin, benannt. Es war diese talentierte Frau, die 1843 der ganzen Welt die Fähigkeiten der Analytical Unit von Charles Babbage erklärte. Diese Art von Sprache wurde im Auftrag des US-Verteidigungsministeriums entwickelt und diente ursprünglich zur Lösung von Problemen bei der Steuerung von Raumflügen.

Die Programmiersprache Ada ist eine modulare, strukturierte und objektorientierte Programmiersprache, die Funktionen zur Programmierung paralleler Prozesse auf hohem Niveau enthält. Die Syntax dieser Art von Programmiersprache ist von Pascal und Algol übernommen, sie wurde erweitert und in einem logischen und strengen Stil ausgeführt. Ada ist eine stark typisierte Programmiersprache, die die Arbeit mit Objekten ohne Typ vollständig überflüssig macht und außerdem automatische Konvertierungen auf ein absolutes Minimum reduziert.

Die Programmiersprache C ist mit Abstand die beliebteste und unter Programmierern am häufigsten verwendete. Diese Art von Programmiersprache hat ihren Ursprung in zwei Sprachen, nämlich BCPL und B. Martin Richards schuf BCPL 1967 als eine Sprache, die zum Schreiben von Systemsoftware und Compilern gedacht war. Was das ist, verraten wir Ihnen weiter unten. Ken Thompson im Jahr 1970, um mehr zu schaffen frühere Versionen UNIX-Betriebssystem, das auf dem DEC PDP-7-PC verwendet wird. Sowohl in der ersten als auch in der zweiten Sprache wurden Variablen nicht in Typen unterteilt – jeder Datenwert hatte ein Wort im Speicher.

Die Programmiersprache SI wurde erstmals 1972 auf dem DEC PDP-11 PC implementiert. Aber es gelang ihm, seine Popularität und Berühmtheit zu erlangen Betriebssystem UNIX. Alle wichtigen Betriebssysteme sind heute in C oder C++ geschrieben. Die Programmiersprache C ist nach mehreren Jahrzehnten auf einer Vielzahl von PCs verfügbar. Übrigens ist es erwähnenswert, dass es völlig unabhängig von der Hardware ist.

Die Sprache C wurde Ende der siebziger Jahre zu einer traditionellen Programmiersprache. Diese Art von Sprache ist mit umfangreichen Tools ausgestattet, die es ermöglichen, flexible Software zu schreiben, die in allen Arten moderner PCs verwendet wird.

Prolog

Nun, wir sind am Ende angelangt. Wir beenden unser Thema Programmiersprachen mit einer Geschichte über die neueste Sprache in diesem Bereich – und sie heißt Prolog. Diese Art von Sprache gilt als die Programmiersprache der Zukunft und wurde Anfang der siebziger Jahre entwickelt. An der Entwicklung waren Spezialisten der Universität Marseille beteiligt. Sie benannten es nach den Worten „Programmierung in der Sprache der LOGIK“. Die Programmiersprache wurde auf der Grundlage der Gesetze der mathematischen Logik erstellt. Diese Art von Sprache ist im Gegensatz zu den oben beschriebenen Programmiersprachen nicht algorithmisch und gehört zu den sogenannten beschreibenden Sprachen, also Sprachen der beschreibenden Art.

Lassen Sie uns nun darüber sprechen, was ein Compiler und ein Interpreter sind.

Compiler und Interpreter

Es reicht nicht aus, eine Sprache zu entwickeln, die zum Schreiben eines Programms geeignet wäre. Jede Sprache muss einen Übersetzer haben, und zwar Sonderprogramm- Übersetzer.

Ein Übersetzer ist also ein Programm, das Software, die in einer Programmiersprache geschrieben wurde, in Software in einer anderen Programmiersprache übersetzen soll. Dieser Übersetzungsprozess wird Übersetzung genannt. Ein Beispiel für einen Übersetzer ist ein Complitor, der ebenfalls ein Programm ist. Ziel ist es, Software, die in einer beliebigen Sprache geschrieben ist, in Software im Maschinencode zu übersetzen. Dieser Vorgang wird Kompilierung genannt.

Es gibt eine andere Methode, die die Prozesse der Übersetzung und der Programmausführung kombinieren kann, und sie heißt Interpretation. Der Kern des Prozesses ist wie folgt: Zuerst wird er in Maschinencodes übersetzt, dann wird die erste Zeile der Software ausgeführt. Wenn die erste Zeile fertig ist, beginnt die Übersetzung der zweiten Zeile und so weiter.

Daraus können wir schließen, dass es sich bei einer Interpretation um ein Programm handelt, das für zeilenweise Übersetzungen gedacht ist, und um das Originalprogramm.

Nun, das scheint alles für heute zu sein, jetzt wissen Sie, was sie sind Programmiersprachen, und was sie sind.



Freunden erzählen