Die Geschichte der Entstehung von Programmiersprachen ist kurz. Programmiersprachen: warum sie erschienen, helle Vertreter, wie man eine Sprache wählt

Anmerkung 1

Damit die ersten Programme funktionierten, mussten Schlüsselschalter auf der Vorderseite des Computers eingestellt werden. Natürlich ließen sich mit dieser Methode nur kleine Programme kompilieren. Einer der ersten Versuche, eine vollwertige Programmiersprache zu schaffen, wurde von dem deutschen Wissenschaftler Konrad Zuse unternommen, der für den Zeitraum 1943-1945. entwickelte die Plankalkul-Sprache. Plankalkul war eine sehr vielversprechende Sprache, die eigentlich eine Hochsprache war, aber während des Krieges keine angemessene praktische Umsetzung erhielt und ihre Beschreibung erst 1972 veröffentlicht wurde.

Maschinensprache. Monteur

Die Geschichte der Programmiersprachen beginnt mit der Entwicklung einer Maschinensprache: der Sprache der logischen Null und Eins. Das Schreiben mit dieser Sprache war sehr schwierig und mühsam.

Um die Arbeit der Programmierer in den späten 1940er Jahren zu erleichtern. Assemblersprache entwickelt wurde. Anstelle von Binärziffern, die einen Befehl bezeichnen, wurden kurze Wörter oder Abkürzungen geschrieben. Programmierer betrachten die Assemblersprache als eine Programmiersprache auf niedriger Ebene, da sie der untersten Maschinensprache nahe kommt. In Assembler geschriebene Programme hängen direkt von den Eigenschaften eines bestimmten Prozessors ab, daher wird sie als maschinenorientierte Sprache bezeichnet.

Das Schreiben von Programmen in Assembler ist eine ziemlich schwierige Aufgabe, und Kenntnisse über Computergeräte sind ebenfalls erforderlich. Trotzdem sind Assemblerprogramme die effizientesten und effizientesten.

Algorithmische Sprachen

Im Zuge der Entwicklung der Programmierung wurde es notwendig, neue, fortgeschrittenere Programmiersprachen zu entwickeln, die natürlichen Sprachen ähneln und es ermöglichen, nicht direkt mit Maschinenanweisungen zu arbeiten. Sie wurden als Hochsprachen bezeichnet. Hochsprachen konzentrieren sich auf die Beschreibung von Algorithmen, weshalb sie als algorithmische Sprachen bezeichnet werden. Der Vorteil solcher Sprachen ist ihre größere Übersichtlichkeit und Unabhängigkeit von einem bestimmten Computer.

Da ein Computer nur Maschinensprache erkennt, muss ein in einer algorithmischen Sprache geschriebenes Programm vor der Ausführung von einem speziellen Programm - einem Übersetzer - in diese Sprache übersetzt werden. Der Übersetzer enthält alle Regeln einer algorithmischen Sprache und Methoden zur Umsetzung ihrer verschiedenen Konstruktionen in eine Maschinensprache. Es gibt zwei Arten von Streaming:

  • Kompilieren ist ein Verfahren zum Ausführen von Programmen, bei dem die Anweisungen des Programms nur ausgeführt werden, wenn die Übersetzung des gesamten Programmtexts zusammengestellt ist.
  • Interpretation ist ein Verfahren zum Ausführen von Programmen, bei dem Programmanweisungen übersetzt und sofort ausgeführt werden.

Anmerkung 2

Der Vorteil von Programmen, die in einer algorithmischen Sprache geschrieben sind, ist die Vereinfachung der Arbeit mit dem Programm aufgrund der relativen Einfachheit des Schreibens, der leichten Lesbarkeit und der Möglichkeit seiner Korrektur. Nachteile sind: zusätzliche Zeit und Speicher für die Sendung.

Strukturierte Programmierung

1954 begann die Entwicklung des ersten Hochsprachen-Compilers. Zwei Jahre später erschien Fortran (FORMula TRANslator). Die Sprache enthielt Werkzeuge, die die Entwicklung stark vereinfachten, aber die Programmierung in Fortran war keine leichte Aufgabe: Wenn es in kurzen Programmen leicht zu verstehen war, wurde die Sprache bei großen Programmen unlesbar. Trotzdem war die Sprache recht erfolgreich und viele Versionen wurden veröffentlicht.

Die Probleme wurden nach der Entwicklung strukturierter Programmiersprachen gelöst: Sie haben jetzt die Möglichkeit, Programmblöcke zu erstellen, unabhängige Unterprogramme, Unterstützung für Rekursion und lokale Variablen und das Fehlen eines unbedingten Sprungoperators (GoTo). Daher unterstützten solche Sprachen die Fähigkeit, das Programm in seine Bestandteile aufzuteilen.

Im Laufe von zehn Jahren ist eine ziemlich große Anzahl neuer Sprachen entstanden:

  1. Algol (1958) sollte Algorithmen schreiben, die aus diskreten Blöcken bestehen;
  2. Cobol (1959) wurde für die Massendatenverarbeitung in Management und Wirtschaft verwendet;
  3. Basic (1965) ermöglichte das Schreiben einfacher Programme, wurde verwendet, um die Grundlagen der Programmierung zu vermitteln.

Nur sehr wenige der erstellten Sprachen waren strukturiert. Es wurden auch Fachsprachen erstellt: Lisp, Prolog, Forth usw. Besonders hervorzuheben ist die nach dem Wissenschaftler Blaise Pascal benannte Pascal-Sprache (1970), die sowohl zum Lehren als auch zur Lösung unterschiedlich komplexer Probleme verwendet wurde. Pascal-Programme sind leicht zu lesen, ermöglichen es Ihnen, Fehler schnell zu finden und zu beheben, und es war gut strukturiert. All dies hat zu seiner weit verbreiteten Verwendung geführt, und selbst zu diesem Zeitpunkt wird es in Bildungseinrichtungen aktiv eingesetzt.

1972 erschien die Sprache C, die ein erfolgreicher Schritt in der Programmierung war. Die Sprache vereinte die Vorteile vieler Sprachen und hatte eine Vielzahl unterschiedlicher Neuerungen. Vielfältige Möglichkeiten, Strukturierung und relative Einfachheit des Studiums ermöglichten es der Sprache, schnell anerkannt zu werden und den Platz einer der Hauptsprachen zu erobern.

Das Aufkommen der strukturierten Programmierung brachte hervorragende Ergebnisse, aber es war immer noch schwierig, lange und ernsthafte Programme zu schreiben.

Objektorientierte Programmierung (OOP)

Seit den 1970er Jahren. wurden die Grundlagen der objektorientierten Programmierung (OOP) gelegt, die als Folge der Entwicklung der prozeduralen Programmierung entstand, bei der Daten und deren Verarbeitungsroutinen nicht formal verknüpft waren.

OOP umfasst die folgenden grundlegenden Konzepte:

  • Klasse- ein Modell eines nicht existierenden Objekts. Tatsächlich ist es ein Diagramm eines Objekts, das seine Struktur beschreibt.
  • Ein Objekt– eine Instanz einer Klasse, eine Entität im Adressraum eines Computersystems, die erscheint, wenn eine Instanz einer Klasse erstellt wird.
  • Abstraktion- die Zuordnung von Merkmalen zu einem Objekt, die seine Grenzen klar definieren, die es von allen anderen Objekten unterscheiden. Die Hauptidee besteht darin, die Art und Weise der Verwendung zusammengesetzter Datenobjekte von den Details ihrer Implementierung in Form einfacherer Objekte zu trennen.
  • Verkapselung- Kombinieren von Eigenschaften (Daten) und Methoden (Unterprogrammen) in einer Klasse, um die Daten eines Objekts vom Rest des Programms zu verbergen und die Integrität und Unabhängigkeit des Objekts zu gewährleisten (Ändern der Eigenschaften eines Objekts ist nur durch spezielles möglich Methoden der Klasse).
  • Nachlass- ein Sprachmechanismus, der es Ihnen ermöglicht, eine neue Klasse basierend auf einer bestehenden Klasse (oder Klassen) mit dem Hinzufügen neuer Eigenschaften und Methoden zu beschreiben.
  • Polymorphismus- die Eigenschaft des Systems, Objekte mit der gleichen Schnittstelle zu verwenden, ohne Informationen über deren Typ und interne Struktur zu erhalten.

Bemerkung 3

1967 erschien die Simula-Sprache - die erste Programmiersprache, in der die Prinzipien der Objektorientierung vorgeschlagen wurden. Er unterstützte die Arbeit mit Objekten, Klassen, virtuellen Methoden usw., aber all diese Möglichkeiten fanden keine würdige Bewertung von Zeitgenossen. Die meisten dieser Konzepte wurden jedoch von Alan Kay und Dan Ingalls in Smalltalk integriert, das zur ersten weit verbreiteten objektorientierten Programmiersprache wurde.

Derzeit ist die Zahl der angewandten Programmiersprachen, die das objektorientierte Paradigma implementieren, im Verhältnis zu anderen Paradigmen am größten. Die Hauptsprachen, die das Konzept von OOP unterstützen, sind C++, C#, Object Pascal (Delphi), Java usw.

Entwicklung des Internets

Mit der Entwicklung der WWW-Technologie (World Wide Web) ist das Internet sehr populär geworden. Eine Vielzahl von Hilfssprachen wurde erstellt, um die Arbeit mit dem Internet, die Gestaltung von Websites, den Zugriff auf Ressourcen usw.

Weit verbreitet ist die interpretierte Sprache Perl, die sich durch ihre Einfachheit und leichte Portabilität auf andere Plattformen auszeichnet. Es wurde für das Schreiben von Anwendungen und CGI-Skripten unterschiedlicher Komplexität entwickelt. Die Sprache Java ist ebenfalls weit verbreitet und spielt eine bedeutende Rolle bei der Entwicklung und Funktion des Internets.

In den 1970ern. die SQL-Sprache erschien - die strukturierte Abfragesprache, die für den Zugriff auf und die Arbeit mit Datenbanken geschaffen wurde.

Die HTML-Hypertext-Markup-Sprache wurde entwickelt, um Codes für Website-Seiten zu schreiben, die Befehle zum Markieren und Formatieren von Text und Grafiken enthält. Um die Site attraktiver und funktionaler zu gestalten, werden Folgendes verwendet:

  • JavaScript-Skripte, die im Webbrowser des Benutzers ausgeführt werden und hauptsächlich verwendet werden, um das Erscheinungsbild der Site zu verbessern und kleinere Probleme zu lösen.
  • PHP-Skripte, die serverseitig ausgeführt werden und bereits verarbeitete Informationen an den Browser des Benutzers senden. Wird verwendet, um dynamische HTML-Seiten, Gästebücher, Foren und Umfragen zu erstellen.
  • CGI-Skripte, die hauptsächlich in Perl, C/C++ geschrieben sind, werden serverseitig ausgeführt und sind von bestimmten Benutzeraktionen abhängig. Wird wie PHP-Skripte verwendet, um dynamische HTML-Seiten, Gästebücher, Foren und Umfragen zu erstellen.

In den fünfziger Jahren des zwanzigsten Jahrhunderts begann mit dem Aufkommen von Vakuumröhrencomputern die rasante Entwicklung von Programmiersprachen. Computer, die damals deutlich teurer waren als die Entwicklung jedes Programms, erforderten hocheffizienten Code. Ein solcher Code wurde manuell in der Sprache entwickelt Monteur... Mitte der 1950er Jahre wurde für IBM unter der Leitung von John Backus die algorithmische Programmiersprache FORTRAN entwickelt. Obwohl es bereits Sprachentwicklungen gab, die arithmetische Ausdrücke in Maschinencode umwandeln, wurde die Schaffung der FORTRAN-Sprache (FORmula TRANslator), die die Möglichkeit bietet, einen Berechnungsalgorithmus mit bedingten Operatoren und I/O-Operatoren zu schreiben, zum Ausgangspunkt der Ära der algorithmischen Programmiersprachen.

Zur Sprache FORTRAN es gab Anforderungen, um hocheffizienten Code zu erstellen. Daher wurden viele der Sprachkonstrukte ursprünglich mit Blick auf die Architektur von IBM 407 entwickelt. Der Erfolg der Entwicklung dieser Sprache führte dazu, dass Hersteller anderer Computersysteme begannen, ihre eigenen Versionen von Übersetzern zu erstellen. Mit dem Ziel einer damals möglichen Vereinheitlichung der Sprache wurde FORTRAN IV, 1966 entwickelt, der erste Standard namens FORTRAN 66.

ALGOL (ALGOrithmic Language) wurde Ende der 1950er Jahre unter der Leitung von Peter Naur als Alternative zu FORTRAN, ursprünglich orientiert an der IBM-Architektur, entwickelt. Das Hauptziel der Entwickler dieser Sprache war die Unabhängigkeit von der spezifischen Architektur des Computersystems. Darüber hinaus wollten die Schöpfer der Sprache ALGOL eine Sprache entwickeln, die zur Beschreibung von Algorithmen geeignet ist und ein Notationssystem verwendet, das dem in der Mathematik verwendeten ähnlich ist.

Die Sprachen FORTRAN und ALGOL waren die ersten Sprachen, die sich auf Computerprogrammierung konzentrierten.

Sprache PL / I, deren erste Versionen in den frühen 60er Jahren erschienen, war ursprünglich auf IBM 360 ausgerichtet und erweiterte die Fähigkeiten der FORTRAN-Sprache um einige Funktionen der in denselben Jahren entwickelten COBOL-Sprache. Trotz der gewissen Popularität der PL / I-Sprache bei Programmierern, die an IBM-Computern und Maschinen der EU-Serie arbeiteten, ist sie derzeit von rein theoretischem Interesse.

In den späten 1960er Jahren wurde Simula-67 unter der Leitung von Nyard und Dahl unter Verwendung des Konzepts benutzerdefinierter Datentypen entwickelt. Tatsächlich ist es die erste Sprache, die das Konzept der Klassen verwendet.

Mitte der 70er Jahre schlug Wirth die Sprache vor Pascal, die sofort weit verbreitet war. Gleichzeitig wurde auf Initiative des US-Verteidigungsministeriums mit der Entwicklung einer Hochsprache namens Ada begonnen - zu Ehren von Ada Lovelace, einer Programmiererin und Tochter von Lord Byron. Die Erstellung der Sprache begann mit der Definition von Anforderungen und der Entwicklung von Spezifikationen. Vier unabhängige Teams arbeiteten an dem Projekt, aber alle verwendeten Pascal als Basis. In den frühen 80er Jahren wurde der erste industrielle Sprachcompiler entwickelt Ada.

Universelle Programmiersprache MIT wurde Mitte der 70er Jahre von Denis Ritchie und Ken Thompson entwickelt. Diese Sprache wurde zu einer beliebten Systemprogrammiersprache und wurde einst verwendet, um den Kernel des UNIX-Betriebssystems zu schreiben. Der Sprachstandard C wurde 1982 von einer Arbeitsgruppe des ANSI Standards Institute entwickelt. Der internationale Standard für die Sprache C wurde 1990 verabschiedet. Die Sprache C bildete die Grundlage für die Entwicklung der Programmiersprachen C++ und Java.

Neben algorithmischen Sprachen wurden parallel dazu Sprachen entwickelt, die für die Verarbeitung von Geschäftsinformationen bestimmt sind, sowie Sprachen der künstlichen Intelligenz. Ersteres ist COBOL (COMmon Business Oriented Language) und letzteres sind Sprachen LISPELN(LIST-Verarbeitung) und Prolog... LISP, in den 1960er Jahren unter der Leitung von J. McCarthy entwickelt, war die erste funktionale Listenverarbeitungssprache, die in der Spieltheorie weit verbreitet war.

Mit dem Aufkommen von Personal Computern sind Sprachen zu integralen Bestandteilen integrierter Entwicklungsumgebungen geworden. Es gab Sprachen, die in verschiedenen Office-Programmen verwendet wurden, wie beispielsweise VBA (Visual Basic for Application).

In den 90er Jahren erweitert sich mit der Verbreitung des Internets die Möglichkeit der verteilten Datenverarbeitung, was sich in der Entwicklung von Programmiersprachen widerspiegelt. Es entstehen Sprachen, die sich auf die Erstellung serverseitiger Anwendungen konzentrieren, wie z Java, Perl und PHP, Dokumentbeschreibungssprachen - Html und XML... Auch die traditionellen Programmiersprachen C++ und Pascal unterliegen einem Wandel: Unter einer Programmiersprache versteht man nicht nur die Funktionalität der Sprache selbst, sondern auch die von der Programmierumgebung bereitgestellten Klassenbibliotheken. Der Schwerpunkt von der Spezifikation der Programmiersprachen selbst wird auf die Standardisierung von Mechanismen zur Interaktion verteilter Anwendungen verlagert. Neue Technologien erscheinen - COM und CORBA, die die Interaktion von verteilten Objekten spezifizieren.

Computer verstehen die natürlichen Sprachen, die für die Kommunikation zwischen Menschen verwendet werden, immer noch nicht gut, zumindest haben sie es noch nicht gelernt.

Der Mensch hat wiederum ein schlechtes Verständnis von Maschinensprachen. Daher wurden Programmiersprachen geschaffen, die diese Lücke im Verständnis, im Denkmodell zwischen Mensch und Computer, füllen.

Programmiersprachen können sein:

  • einfach,
  • komplex und
  • unverständlich (zB Grafik).

Geschichte der Entstehung von Programmiersprachen

Mehrere hundert Programmiersprachen sind mittlerweile im Einsatz, viele mehr aber nicht mehr. Im Laufe der Zeit wurden für neue Aufgaben neue Programmiersprachen entwickelt.

Nullgeneration

  • (Elektro),
  • durch die Struktur des eigenen Geräts programmiert
  • hochspezialisiert,
  • Die Programmiermöglichkeiten sind begrenzt.

Jacquard-Webstuhl

Ein Beispiel für eine solche Maschine ist der programmierbare Jacquard-Webstuhl. Es wurde 1804 vom Franzosen Joseph Marie Jaccard hergestellt. Ihm zu Ehren wird der gemusterte Dekorationsstoff übrigens Jacquard oder Jacquard genannt.

Mit Hilfe der Maschine war es möglich, Stickereien auf Stoff mit den in der folgenden Abbildung gezeigten Lochkarten einfach und massiv herzustellen:

Reis. 1. Lochkarten für Jacquard-Webstuhl

Auf den Lochkarten wurde eine Abfolge von Aktionen für die Maschinen programmiert, um beliebige Muster auf dem Stoff zu reproduzieren.

Babbages Maschine

Internet und Web

Fachsprachen sind erschienen:

  • JavaScript.

Viele Websites sind mit PHP und JavaScript geschrieben.

Einige bereits existierende Sprachen fanden mit dem Aufkommen des Internets und des Webs neue Nischen und wurden weborientiert:

  • Rubin,
  • Pynton,
  • Java.

In den 2000er Jahren „sterben“ alte Programmiersprachen nach und nach, neue tauchen auf, aber es gibt kein allgemein akzeptiertes Konzept, was mit diesen Dingen passiert.

Jede Programmiersprache ist eine künstliche Sprache, die ihren eigenen Lebenszyklus hat. Ebenso haben Betriebssysteme der Windows-Familie ihre eigenen Lebenszyklen:.

Lebenszyklus einer Programmiersprache:

  • Schaffung,
  • frühzeitige Annahme (Erstanwendung der Sprache),
  • (industrieller) Erfolg,
  • Aussterben, Veränderung in anderen Sprachen.

In der modernen Welt wird der Großteil der Software (Software) in 10-15 Sprachen geschrieben, obwohl im Laufe der Zeit, die wir kennen, mehr als Hunderte von Programmiersprachen erstellt wurden. Offiziell sind 300 oder 400 Sprachen irgendwie registriert.

Was ist eine Programmiersprache

Sprache ist

  • Syntax (Regeln zum Schreiben von Programmen),
  • Semantik (Verhalten von Elementen, die in den Rechtschreibregeln enthalten und in die Sprache eingebaut sind),
  • Laufzeit (Laufzeit).

Die Syntax bestimmt die Form der textuellen Darstellung von Programmen, d. h. wie sie geschrieben werden sollen, welche Wörter in die Sprache aufgenommen werden, wie Kommas, Leerzeichen usw.

Lisp-Syntax

Eine der einfachsten Programmiersprachen mit formaler Grammatik ist die Sprache LISP.

Reis. 10. Programm auf LISP

LISP ist eine sehr alte Sprache, die Listen erstellt. Die Grammatik einer solchen Sprache ist die Grammatik von Listen, die von oben nach unten gelesen werden.

  • Lisp hat Ausdrücke: Es kann ein Atom oder eine Liste geben;
  • Atom ist eine Zahl oder ein Symbol,
  • Zahl - eine Zahl, d. h. mit einer Plus- oder Minusziffer, mindestens einer,
  • Symbol - das sind Buchstaben, so oft Sie wollen, Sie können sogar viele Male,
  • list - Liste, Ausdrücke in Klammern mehr als einmal.

Ein Lisp-Programm ist eine Liste von Listen. In Lisp gibt es keine Satzzeichen, aber Klammern. Es kann so lange Lisp-Programme geben, bei denen am Ende 2-3 Blätter stehen, die aus einigen schließenden Klammern bestehen.

Der einfachste Lisp-Interpreter benötigt nur 19 Zeilen! Diesen Luxus kann sich keine andere Sprache leisten.

Semantik

Wenn die Grammatik die Darstellungsformen beschreibt: Buchstaben, Zahlen, Klammern, dann beschreibt die Semantik, wie das Programm funktioniert, was diese Buchstaben, Zahlen, Klammern bedeuten, wie sie funktionieren, miteinander interagieren usw.

Die Möglichkeiten zur Darstellung der Semantik sind eher eingeschränkt.

Die Semantik kann sein:

  • in natürlicher, menschlicher Sprache beschrieben. Viele Sprachen lassen sich nur so beschreiben. Tatsächlich ist dies der Hauptfall, wenn es einfach ein Dokument gibt, in dem auf Russisch oder Englisch beschrieben wird, dass das und das so und so funktioniert, ein Team das eine tut, das andere das und das tut , usw. ;
  • formal festlegen (in Fachsprachen kann beispielsweise für einige Berechnungen das Verhalten von Elementen formal beschrieben werden);
  • definiert durch die ursprüngliche Implementierung (selten verwendet, aber dies ist der "letzte Ausweg" für die Beschreibung, wenn die Semantik zu komplex oder nicht sehr wichtig ist);
  • durch eine Reihe von Tests (Fällen) beschrieben, nämlich, dass es so funktionieren sollte, und so funktioniert es.

Die Semantik gliedert sich in zwei Teile:

  • statisch,
  • dynamisch.

Statische Semantik

  • gibt lexikalischen Konstruktionen Bedeutung;
  • bestimmt die zulässigen Werte von Variablen und Parametern;
  • beschreibt syntaktische Einschränkungen, zum Beispiel mit Syntax funktioniert es nicht zu beschreiben, dass Sie keine Zeichenfolgen mit Zahlen hinzufügen können.

Dynamische versus frontale Laufzeitsemantik

  • bestimmt die allgemeine Natur der Programmausführung;
  • beschreibt, wie Inline-Operationen und Inline-Bibliotheken funktionieren. Dies ist der Hauptteil der Semantik, der benötigt wird, um zu verstehen, wie das Programm lebt und funktioniert, nachdem es geschrieben wurde;
  • legt Anforderungen an den Dolmetscher fest.

Datentypsystem in Programmiersprachen

Ein wichtiger Teil der Semantik ist das Typsystem – ein Satz von Regeln und Ausdrücken für Methoden, die in der Ideologie der Sprache geschrieben sind und wie sie miteinander interagieren.

Normalerweise hat eine Programmiersprache ein Datentypsystem - Zeichenfolgen, Zahlen, Listen usw. Es gibt zum Beispiel die Force-Sprache, in der alle Daten einfach sind, mit anderen Worten, es gibt Sprachen, in denen Datentypen überhaupt nicht eingebaut sind.

Wenn das Typsystem vorhanden ist, dann ist es möglich, die Programmiersprachen in zwei unabhängige Klassen zu unterteilen, die im Folgenden angegeben werden.

Datentypsystem:

  • getippte oder nicht getippte Sprache
  • statische oder dynamische Eingabe
  • starkes oder schwaches Tippen

Ist die Typisierung statisch, so sind die Typen aller und Ausdrücke, die im Programm geschrieben werden, bis zum Moment seiner Ausführung bekannt, d. h. wenn Funktionen, Klassen, Variablen beschrieben werden, dann werden Bedingungen sofort gesetzt oder explizit für die Art einer solchen Konstruktion sollte von Anfang an bekannt sein.

Wenn die Typisierung dynamisch ist, ist im Gegensatz dazu der Typ der Objekte der Kontextsprache bis zum Zeitpunkt der Ausführung unbekannt, dh der Typ einer Funktion oder irgendetwas wird bis zum Schluss unbekannt sein.

Starke Typisierung bedeutet, dass, wenn eine Entität einen Typ hat und dieser bekannt ist, dieser Typ ersetzt werden kann, aber der Typ des Objekts selbst ist fest und ändert sich nicht.

Bei schwacher Typisierung kann der Objekttyp je nach Kontext und Verwendungszweck unterschiedlich sein.

Das Typensystem der Sprache muss überwacht werden. Durch den falsch spezifizierten Typ von nur einem, nicht sehr auffälligen Zeichen am Anfang des Programms ändert sich der Typ des gesamten Ausdrucks und es können daher sehr seltsame Fehler auftreten.

Das nächste wichtige Merkmal der Sprache ist

Das Paradigma der Programmiersprache

  • aus dem Griechischen - Muster, Beispiel, Muster;
  • es ist ein System von Ideen und Konzepten, die den Stil des Schreibens von Programmen in dieser Sprache bestimmen - wie die Sprache das Schreiben von Programmen in sich beinhaltet (Wiki);
  • Sprache "begünstigt" ein oder mehrere Paradigmen (Multiparadigma).

Hauptparadigmen

  • Imperativ: Ein Programm ist eine Reihe von sequentiellen Anweisungen, die den internen Zustand eines Computers, Daten usw. Das heißt, ein Programm ist eine Anweisung;
  • Funktional: Ein Programm ist eine Menge mathematischer Funktionen. Programmbetrieb - Berechnung der Werte von Funktionen;
  • objektorientiert: Das Themengebiet wird anhand von Objekten mit Eigenschaften und Methoden beschrieben. Ein Programm ist ein Interaktionsprozess zwischen Objekten;
  • logisch: Ein Programm ist eine Menge von Aussagen zu einem Themengebiet. Die Arbeit des Programms besteht darin, den Wahrheitsgehalt von Aussagen zu diesem Themenbereich festzustellen.

Oft kann dieselbe praktische Aufgabe mit jedem der oben aufgeführten Paradigmen gelöst werden.

Ein weiterer wichtiger Teil der Sprache, der bei der Verwendung der Sprache zu berücksichtigen ist, ist Runtime – wie die Sprache ausgeführt wird.

Laufzeit - Programmausführung

Das Programm kann auf unterschiedliche Weise ausgeführt werden:

  1. Die einfachste und naivste Art, ein Programm auszuführen, ist die Interpretation - das Lesen des Quellcodes zum Zeitpunkt des Starts. So funktionieren leichtgewichtige Skriptsprachen. Der Programmierer selbst arbeitet auch: Wenn er das Programm geschrieben hat, schaut er mit eigenen Augen auf sein eigenes Programm und überlegt, wie sein Programm funktionieren und was zu tun ist;
  2. Eine übliche Methode zum Ausführen von Programmen ist die Kompilierung in Maschinencode, ein separater Schritt vor dem Start. Es gibt ein separates Tool - einen Compiler, in dem die Quellcodes des Programms gelesen, etwas damit gemacht und in Maschinencodes umgewandelt werden, die für das aktuelle System verständlich sind. Dann wird dieser Code direkt von der Hardware ausgeführt;
  3. der hybride Weg ist die Byte-Kompilierung und -Ausführung in einer virtuellen Maschine. Der Compiler liest den Quellcode und erzeugt dann Bytecode, der in der virtuellen Maschine ausgeführt wird.

Diese drei Methoden sind unterschiedlich und werden für unterschiedliche Zwecke verwendet. Diese Techniken können kombiniert werden - der Interpreter kann Teile des Programms im Handumdrehen kompilieren, damit es schneller funktioniert. Dynamisch generierter Code kann ohne Kompilierung interpretiert werden.

Vertreter der Sprachen

C Sprache

- einer der beliebtesten, einer der wichtigsten in Bezug auf den physikalisch geschriebenen Code, praktisch ist es "unser Alles".

Es wurde 1972 von Dennis Ritchie und Kollegen erstellt. D. Ritchie hat auch das Linux-System und viele andere nützliche Dinge entwickelt.

  • Imperativ,
  • zusammengestellt,
  • manuelle Speicherverwaltung (bei einigen integrierten Sprachoperationen müssen Sie Speicherelemente für Variablen zuweisen und sie dann freigeben, wenn sie nicht mehr benötigt werden).

C ist übrigens auch heute noch relevant, es wird verwendet für:

  • Systemprogrammierung (z. B. ist der Linux-Kernel in C geschrieben),
  • Number-Crunching (das sogenannte Number-Crunching, d. h. für große Berechnungen, bei denen es auf Geschwindigkeit ankommt),
  • Programmierung von Mikrocontrollern und eingebetteten Systemen.

C ist eine Low-Level-Sprache, wir können sagen, dass es ein Assembler mit menschlichem Gesicht ist, weil eine Person fast jedes C-Konstrukt manuell in einen Assembler umwandeln kann und ziemlich klare Operationen erhält.

C-Programme sind sehr kompakt. Sie sind nicht viel größer, als wenn ähnliche Programme in Assembler geschrieben würden. Gleichzeitig ist die Entwicklung in C viel schneller als in Assembler.

Daher wird C heute für Aufgaben verwendet, bei denen Leistung erforderlich ist, die Speicherverwaltung sehr wichtig ist und die kompakte Größe des Programms selbst von großer Bedeutung ist. Wenn Sie einen kleinen Mikrocontroller haben, der in ein Gerät eingebettet ist, wird das Programm dafür höchstwahrscheinlich entweder in Assembler oder C geschrieben.

Reis. 11. Ein Beispiel für ein einfaches C-Programm.

Java

  • 1995 gegründet,
  • Schöpfer - James Gosling und Sun Microsystems (Gosling arbeitete für diese Firma).
  • Objektorientiert, Imperativ (C ist Imperativ, aber NICHT objektorientiert),
  • stark und statisch typisiert,
  • bytekompiliert mit einer virtuellen Maschine,
  • kein Speicherzugriff, automatische Garbage Collection (letzteres funktioniert gut, wenn ein Drittel oder ein Viertel des freien Speichers vorhanden ist).

In den 90er Jahren erlangte JAVA als Multi-Plattform-Sprache große Popularität. Sobald Sie eine virtuelle Maschine für eine Plattform geschrieben haben, beispielsweise für Windows oder für Linux oder für Mac, können Sie beliebige JAVA-Programme darauf ausführen, ohne sie neu kompilieren zu müssen. Daher war die Sprache in der Ära des Webs beliebt, als es verschiedene Plattformen gab (verschiedene Windows-Versionen, verschiedene Macs). JAVA-Programme funktionierten auf verschiedenen Plattformen schnell und recht gut.

Wird verwendet für:

  • Angewandte Programmierung, einschließlich Webprogrammierung,
  • eingebettete Systeme (wenn C für Mikrocontroller verwendet wird, wird JAVA für Mobiltelefone, Terminals usw. verwendet),
  • Hochlastsysteme mit vielen Nutzern (Bankprogramme, Flugsicherungssysteme etc.).

Die Java-Sprachspezifikationen und die verschiedenen JVM-Implementierungen sind zu unterscheiden:

  • Sun JDK (von Sun, jetzt Oracle),
  • IBM JDK (gegen Bargeld verkauft)
  • OpenJDK (völlig kostenlos)
  • usw.

Reis. 12. Ein Beispiel für ein einfaches Programm in JAVA.

Wie in Abb. 12 müssen Sie viele Briefe schreiben, um einfache Schritte auszuführen. Java wird oft als das neue Cobol bezeichnet, weil es dieselben negativen Eigenschaften enthält, die Cobol einst zu einer schlechten Sprache gemacht haben.

Trotzdem ist JAVA sehr beliebt, insbesondere ist der Client-Teil des Betriebssystems darauf geschrieben.

Lispeln

  • Es vervollständigt es wirklich Lisa T P Prozessor (LisP);
  • erstellt 1958;
  • Schöpfer - John McCarthy;
  • reine Funktionssprache, trotz recht seltsamer Syntax;
  • stark und dynamisch typisiert;
  • normalerweise interpretiert;
  • kein Zugriff auf den Speicher, automatische Garbage Collection, die auf den Interpreter fällt und nicht auf die virtuelle Maschine.

Wird verwendet für:

  • wissenschaftliche Programmierung und Forschung;
  • Künstliche Intelligenz - Lisp entstand ganz am Anfang durch die Suche mit Intelligenz. In den späten 1950er und frühen 1960er Jahren gab es in der Wissenschaft das starke Gefühl, dass künstliche Intelligenz geschaffen werden würde. Damals glaubte man, dass die Hauptmerkmale der künstlichen Intelligenz die Fähigkeit sein würden, mit natürlicher Sprache, Text zu arbeiten, zu lesen, zu sprechen und einige vernünftige Dinge zu tun. Lisp wurde entwickelt, um semantische Daten aus Text zu verarbeiten. Es ermöglicht Ihnen, solche Dinge gut zu tun;
  • alles, aber in der Regel wird es nicht sehr effektiv eingesetzt.

Die 1958 entwickelte Sprache Lisp hat viele Veränderungen erfahren.

Es hat viele Implementierungen und Dialekte:

  • CommonLisp (erstellt in den 1970er Jahren) ist eine klassische Implementierung, die als die wichtigste gilt;
  • Scheme - ein vereinfachter Dialekt, der einige Dinge von CommonLisp wegwirft und die Ausführung erleichtert;
  • Clojure ist sprachlich ein Lisp-Dialekt, aber es läuft auf einer JAVA-Maschine, das heißt, es wird in Bytecode kompiliert und wie ein JAVA-Programm ausgeführt.

Reis. 13. LISP-Programm: Bubble Sort

Python (Python)

  • Benannt nach der britischen Show Monty Pyntons Flying Circus aus den 1970er Jahren (alte Witze, aber lustig)
  • gegründet 1991
  • Schöpfer - Niederländer Guido van Rossum
  • Multiparadigmensprache, objektorientiert, zwingend, funktional
  • stark und dynamisch typisiert
  • interpretiert, bytekompiliert mit einer virtuellen Maschine (implementierungsabhängig)

Wird verwendet für:

  • Skriptprogrammierung
  • Web Programmierung
  • wissenschaftliche Programmierung (es gibt große, starke Pakete für die Arbeit mit Modellierung, Wahrscheinlichkeit, Statistik und anderen Bereichen, die die Erfahrungen aus anderen Bereichen bündeln)

Python ist eine Sprachspezifikation. Es gibt mehrere grundlegende Implementierungen:

  • CPython - Haupt (Referenz)
  • Jython - auf JVM
  • PyPy - Python in Python ("Python on Python" ist schneller und besser als CPython und Jython)

Reis. 14. Python-Programm: Bubble Sort

Python hat eine wichtige Funktion - anstelle von Klammern (Klammern, geschweift) werden Einrückungen mit Leerzeichen verwendet, um Codeblöcke und Strukturelemente hervorzuheben, was für alle Sprachen eher ungewöhnlich ist. Außer Python hat fast niemand diese Funktion.

Sprache für die Aufgabe auswählen

Wie wählen Sie eine Sprache für eine Aufgabe aus, wenn Sie wissen, was Sie tun müssen, aber nicht wissen, was Sie verwenden sollen?

Ein wichtiger Tipp: Verwenden Sie das, was Sie zum Programmieren wissen. Dies ist viel besser, als etwas zu verwenden, mit dem Sie NICHT programmieren können.

Ökosystem

Die Sprache, die Sie lernen möchten, sollte keine „nackte“ Sprache sein, sie sollte ein Ökosystem haben, das Folgendes umfasst:

  • Entwicklungstools (komfortable IDE)
  • vorgefertigte Bibliotheken und Frameworks
  • Testtools zum Ausführen von Testfällen: Testframeworks und -tools
  • Paketierungs- und Bereitstellungssysteme, damit der geschriebene Code verpackt und irgendwo angeordnet werden kann, damit andere ihn leicht verwenden können. Die Sprache C hat diese Möglichkeit nicht, aber die Sprachen Ruby und Python.
  • Gemeinschaft. Verwenden Sie keine toten Sprachen, egal wie cool sie sind. Wenn niemand da ist, den Sie fragen können, geraten Sie in eine völlige Sackgasse. Es wird angenommen, dass einige Gemeinschaften freundlicher sind, andere weniger. Zum Beispiel ist die Ruby-Community großartig und die Java-Community ist schrecklich - Sie müssen dort nicht einmal etwas fragen.

Popularität

Es ist schwierig, ein Team von Leuten zu finden, die Code in einer selten verwendeten Sprache wie Eiffel schreiben. Auf der anderen Seite werden viele Leute für eine Stelle in der Mega-Beliebten JAVA-Sprache kandidieren, in der die Einstiegsschwelle niedrig ist, aber es wird nicht einfach sein, Leute zu finden, die wirklich gut darin schreiben.

Je beliebter eine Sprache ist, desto mehr Bibliotheken, Communities, Frameworks und andere Dinge hat sie, die von selbst von oben wachsen.

Lernrate

Fast niemand kennt die Sprache vollständig. Während Sie arbeiten, müssen Sie die Sprache immer weiter lernen. Einige Sprachen sind leicht zu erlernen, während andere sehr schlecht sind.

JAVA ist eine Sprache, die leicht zu erlernen und einfach in ihren Fähigkeiten ist, und dann wird alles nicht auf Kosten der Sprache, sondern auf Kosten der Tools erstellt.

Es ist unmöglich, C++ zu Ende zu lernen, da es bei der Codegenerierung sehr komplexe Dinge gibt.

Nischensprachen

Bestimmte Sprachen sind besser geeignet, um bestimmte Nischenprobleme zu lösen.

Beispiel 1: eine Webanwendung, die

  • interagiert mit der Datenbank
  • interner Service im Unternehmen
  • schnelle Entwicklung ist gefragt, denn der Koch ist sehr gefragt.

Für eine solche Aufgabe eignet sich höchstwahrscheinlich Python oder Ruby. Mach es nicht in JAVA

Beispiel 2: Abrechnungssystem eines Mobilfunkanbieters

  • Tausende von Operationen pro Sekunde, viele verschiedene Zahlungen und Überweisungen
  • hohe Zuverlässigkeit und Fehlertoleranz
  • Flexibilität in der Konfiguration, Diagnose von Problemen

In diesem Fall ist unsere Wahl Java, C++, Erlang – reichhaltige Sprachen mit umfangreichen Toolkits.

Beispiel 3: Bordcomputercode für einen Satelliten

  • begrenzte Ressourcen (nur Megabyte Speicher und sehr niedriger Takt)
  • harte Echtzeit, damit der Satellit nicht die Orientierung verliert, bricht und explodiert
  • bekannte Aufgaben, keine Flexibilität und keine Anpassung
  • viele Berechnungen

Unsere Wahl sind C und C-ähnliche Sprachen (und sogar Assembler), da es nur sehr wenige Ressourcen gibt und diese Anforderungen erfüllt werden müssen.

Der Artikel basiert auf dem Video:

So wählen Sie die richtige Programmiersprache - Ivan Kalinin

Das Video wurde im Dezember 2014 gedreht, alle Informationen sind jedoch relevant und verjähren nicht. Viele Materialien sind aus Sicht der heutigen Realitäten von unzweifelhaftem Interesse, zum Beispiel, dass Wissenschaftler Ende der 1950er – Anfang der 1960er Jahre glaubten, dass die künstliche Intelligenz bereits an der Schwelle stehe und mit deren Hilfe es möglich sei, auf einem Computer mit natürlichen , gewöhnliche, menschliche Sprache.

Ich erlaube mir, einige allgemeine Trends in der Entwicklung von Programmiersprachen hervorzuheben. Der aufmerksame Leser hat wahrscheinlich schon längst erraten, was ich gleich sagen werde. Sprachen entwickeln sich in Richtung immer mehr Abstraktion. Und damit geht ein Effizienzverlust einher. Die Frage ist: Lohnt sich Abstraktion? Antwort: es lohnt sich. Es lohnt sich, denn eine Erhöhung des Abstraktionsgrades bringt eine Erhöhung der Programmiersicherheit mit sich. Eine geringe Effizienz kann durch den Bau schnellerer Computer bekämpft werden. Wenn der Speicherbedarf zu hoch ist, können Sie die Menge erhöhen. Dies kostet natürlich Zeit und Geld, aber es kann gelöst werden. Aber es gibt nur eine Möglichkeit, mit Fehlern in Programmen umzugehen: Sie müssen korrigiert werden. Noch besser, verpflichte dich nicht. Noch besser ist es, sie so schwer wie möglich zu machen. Und genau darauf zielt die gesamte Forschung im Bereich der Programmiersprachen ab. Und Sie müssen den Effizienzverlust verkraften.

Der Zweck dieser Rezension war der Versuch, dem Leser eine Vorstellung von der ganzen Vielfalt der existierenden Programmiersprachen zu geben. Unter Programmierern gibt es oft eine Meinung über die "allgemeine Anwendbarkeit" einer bestimmten Sprache (C, C++, Pascal usw.). Diese Meinung entsteht aus mehreren Gründen: Mangel an Informationen, Gewohnheit, Trägheit des Denkens. Ich habe versucht, den ersten Faktor etwas auszugleichen. Im Übrigen kann ich nur sagen, dass ein echter Profi ständig danach streben sollte, seine beruflichen Qualifikationen zu verbessern. Und dafür brauchen Sie keine Angst vor Experimenten zu haben. Was also, wenn alle um sie herum in C / C ++ / VB / Pascal / Perl / Java / ... schreiben (unterstreichen Sie das Notwendige)? Warum nicht etwas Neues ausprobieren? Was ist, wenn sich herausstellt, dass es effektiver ist? Bevor Sie sich für die Verwendung einer neuen Sprache entscheiden, müssen Sie natürlich alle ihre Funktionen sorgfältig studieren, einschließlich des Vorhandenseins einer effektiven Implementierung, der Fähigkeit, mit vorhandenen Modulen zu interagieren usw., und erst dann eine Entscheidung treffen. Natürlich besteht immer die Gefahr, den falschen Weg zu gehen, aber ... Nur wer nichts tut, täuscht sich nicht.

Und weiter. Ich habe Diskussionen wie „Sprache A ist besser als Sprache B“ gehört und manchmal daran teilgenommen. Ich hoffe, dass nach der Lektüre dieser Rezension viele von der Sinnlosigkeit solcher Auseinandersetzungen überzeugt sind. Das Maximum, das diskutiert werden kann, sind die Vorteile einer Sprache gegenüber einer anderen bei der Lösung eines bestimmten Problems unter bestimmten Bedingungen. Hier gibt es tatsächlich manchmal etwas zu streiten. Und die Entscheidung ist manchmal alles andere als offensichtlich. Aber "im Allgemeinen" zu argumentieren, ist offensichtlicher Unsinn.

Dieser Artikel soll eine Antwort auf diejenigen sein, die "die Sprache der X MUST DIE" schreien. Ich hoffe, die Antwort war ausreichend und überzeugend. Ich hoffe auch, dass der Artikel neben polemischem, auch kognitivem Wert hat.

>> Artikel

Wie sind Programmiersprachen entstanden?

Programmiersprachen werden seit mehreren Jahrzehnten entwickelt und diese Arbeit war lang, komplex und mühsam. Tatsächlich ist eine Maschinensprache eine Kette von logisch angeordneten Nullen und Einsen, deren Verletzung einen Programmstopp und eine Computerfehlfunktion nach sich zieht, und die Anforderungen an Programmierer, die neue Arten des Schreibens von Befehlen geschaffen haben, hingen von der Entwicklung von . ab Maschinen.

Geschichte der Programmiersprachen: Der Anfang

Der Beginn der 40er Jahre war gekennzeichnet durch das Aufkommen der ersten Sprache für Programme - des Assemblers, der eine Reihe von kurzen Wörtern oder deren Abkürzungen in den Befehl einfügte. Assembler gilt als Low-Level-Programmiersprache und wird daher als maschinenorientierte Sprache bezeichnet. Programme, die in dieser Sprache geschrieben sind, zeichnen sich jedoch durch ihre Effizienz und Leistungsfähigkeit aus.

Hochsprachen: algorithmische Sprachen

Die Entwicklung der Technologie und die Einführung neuer Arten digitaler Geräte zwangen Programmierer, eine höhere Sprache zu erfinden, die sich beim Schreiben an Algorithmen orientiert. So erschienen zusätzliche Programme - Übersetzer, die die Aktion des Algorithmus gestartet haben. Es gibt zwei bekannte Sendeverfahren:

- Zusammenstellung oder Kompilieren, wenn Anweisungen nach der Übersetzung des gesamten Programmpakets aktiv werden;

- Interpretation oder eine Interpretation, bei der die Ausführung und Übersetzung einer Maschinensprache synchron durchgeführt wird.

Merkmale solcher Programme sind: einfache Erstellung (Schreiben von Code), die Fähigkeit, bei der Verwendung zu korrigieren, einfache Lesbarkeit.

1954: Strukturierte Programmierung

Der erste Compiler einer Programmiersprache auf sehr hohem Niveau wurde der Welt bekannt. Die Rede ist von Fortran, von der englischen Abkürzung FORmula TRANslator. Die Entwicklung der Sprache wurde vereinfacht, aber beim Schreiben großer Programme wurde die Sprache fast unlesbar, obwohl viele Versionen von Fortran veröffentlicht wurden.

Der Höhepunkt der Entwicklung von Programmiersprachen fällt genau in die 50-60er Jahre, dann werden mehrere Optionen geschaffen:

- Algol(1958), erstellt auf der Grundlage separater Blöcke;

- Cobol(1959) - die Geschäfts- und Managementsprache, die Grundlage von C +;

- Basic(1965), Programmierern bis heute bekannt.

1970 wurde eine Programmiersprache geschaffen, benannt nach dem Wissenschaftler B. Pascal-Pascal. Programme, die in dieser Sprache erstellt wurden, waren leicht zu lesen und es gab keine Schwierigkeiten beim Training. Eine einfache, gut strukturierte Sprache ist bei angehenden Programmierern immer noch beliebt.

Etwas später, 1972, wurde eine zweite Programmiersprache entwickelt - C, die die Errungenschaften zuvor erstellter Sprachen und Innovationen einbezog und bei Benutzern und Programmentwicklern vielleicht die beliebteste wurde. Die einfache, gut strukturierte und leicht zu erlernende Sprache C wird zu einem Favoriten unter anderen Sprachen.

Objektorientierte Programmierung (OOP): 1970

Die Ideologie der prozeduralen Programmierung für Funktionen, die formal nicht mit der Verarbeitung zusammenhängen, zwang die Entwickler, sich hinzusetzen, um ein neues Konzept der Sprachkompilierung zu entwickeln. OOP-Konzepte basieren auf:

Das Modell eines noch nicht existierenden Objekts;

Instanz der Klasse;

Abstraktion, die einem Objekt Eigenschaften verleiht;

Kapselung, wenn Eigenschaften und Methoden mit dem Ziel kombiniert werden, Daten zu verbergen;

Nachlass;

Polymorphismus.

Die erste Sprache war Simula, wenig später wurde Smalltalk erfunden. Derzeit wird diese Art von Programmiersprache von modernen Programmen unterstützt: Object Pascal (Delphi), C++, C#, Java.

Die Reihenfolge der Entwicklung von Programmiersprachen hängt von der Einführung neuer Innovationen ab, sodass nach dem Erscheinen des Internets eine Sprache für den Zugriff auf Ressourcen und Websites erforderlich war. Technologie World Wide Web (WWW) gaben neuen Sprachen Leben, die immer noch aktiv verwendet werden: Java, Perl, SQL, HTML, PHP, JavaScript.



In Verbindung stehende Artikel: