Die erste Programmiersprache war ihr Name und ihr Autor. Wie wählt man die (erste) Programmiersprache aus? Oder Wie stellt man die richtigen Fragen? Laufzeit - Programmausführung

Mit diesem Text möchte ich eine Artikelserie zur Geschichte der Entwicklung von Programmiersprachen starten. Es ist eine angepasste Version dieser Sammlung.

Die Programmierung erschien lange vor den 50er Jahren des 20. Jahrhunderts. Die ersten Ideen wurden von Charles Babbage (1792-1871) geäußert, der zu Recht als der Vater des Computers gilt. Er wusste nichts über Transistoren, Mikroschaltungen und Monitore, aber er beschrieb genau die Grundprinzipien, auf denen alle Computer gebaut werden. Die Idee wurde von Gräfin Ada Lovelace (1815-1852) entwickelt. Sein Platz in der Geschichte sorgt immer noch für viele Kontroversen, aber eines ist absolut sicher - Ada war tatsächlich die erste berühmte Programmiererin. Dank ihrer Arbeit wurde klar, dass der Weg zur effizienten Nutzung von Maschinen die im Code beschriebenen Algorithmen sind.

Babbages analytischer Motor

Aber Programmierung konnte sich nicht losgelöst von Computern entwickeln. Ohne sie ist es nur ein Gedankenspiel, eine Abstraktion, unabhängig von der Qualität der Ideen. Daher waren Programmiersprachen bis in die 1950er Jahre eine Reihe von Maschinenanweisungen, die oft hochspezialisiert waren und zusammen mit dem Zielgerät ausstarben.

Der Kern des Problems

Heute braucht man nichts über Computerarchitektur zu wissen, für die meisten Programmierer ist nur die Sprache wichtig, alles andere ist zweitrangig. In den 1950er Jahren war alles anders – man musste mit elementaren Maschinencodes arbeiten, das ist fast so, als würde man mit einem Lötkolben programmieren.

Ein weiteres Problem war, dass die Menschen, die direkt an der Entwicklung von Computern beteiligt waren, für die Entwicklung von Sprachen verantwortlich waren – hauptsächlich Ingenieure und nur Zwangsprogrammierer. Daher repräsentierten sie die Sprache in Form einer Folge von Zahlen von Operationen und Speicherzellen. Grob gesagt sah es so aus:

01 x y - Addieren des Inhalts der Speicherzelle y zu der Zelle x;

02 x y - Ähnliches Subtraktionsverfahren.

Dadurch wurde der Programmcode zu einer endlosen Zahlenfolge:

01 10 15 02 11 29 01 10 11…

Heute wird Ihnen dieser Code schrecklich vorkommen, aber in den frühen 1950er Jahren war er die Norm.


1940er Computer

Programmierer mussten lange Maschinenanweisungen studieren, dann den Code sorgfältig schreiben und nach Fertigstellung noch mehrmals überprüfen - die Fehlergefahr war groß. Probleme traten auf, als die Entwicklung von Maschinen durch fehlendes Personal zum Schreiben von Programmen behindert wurde. Es war eine dringende Entscheidung erforderlich.

Erster Sammler

Die Lösung lag an der Oberfläche: Es galt, die numerischen Bezeichnungen der Operationen in Buchstaben zu übersetzen. Das heißt, anstelle von "01 10 15" verwenden Sie "ADD 10 15". Dies erforderte eine zusätzliche Übersetzung von Zeichen in den Maschinenbefehl, aber angesichts des Problems war das Opfer minimal.

Die Lösung erwies sich als so naheliegend, dass nicht mit Sicherheit bekannt ist, wer die Assemblersprache zuerst erfunden hat. Höchstwahrscheinlich erschien es gleichzeitig an mehreren Stellen gleichzeitig. Für den Titel und die Popularisierung werden die Autoren des Buches "Die Vorbereitung von Programmen für einen digitalen Computer" von Wilkes, Wheeler und Gill verantwortlich gemacht. Es ist leicht zu erraten, dass der Name Assembler vom englischen Wort "assemble" stammt - zusammenbauen, zusammenbauen, was den Vorgang ziemlich genau beschreibt. Später betrafen Symbole nicht nur die einfachsten Operationen, sondern auch die Adressierung, was die Lesbarkeit des Codes stark vereinfachte.

Dies scheint jetzt eine elementare Lösung zu sein, aber dann war die Implementierung ein komplexer Prozess, der die Erstellung von Korrespondenztabellen erforderte, wobei jeder Speicherzelle eine Bezeichnung zugewiesen wurde. Dies führte zu drei grundlegenden Dingen:

  • Die Entstehung des Konzepts einer symbolischen Variablen oder nur einer Variablen.
  • Erstellen von Tabellen, mit deren Hilfe Sie die Entsprechung von Symbolen, Operationen und Speicherzellen finden können.
  • Zu verstehen, dass Programmieren eine Kunst sein kann.

Dies war der Katalysator für einen Sprachdurchbruch.

Compiler und Verzerrungen

Der Assembler machte es möglich, einfache Transformationen zu erstellen. Beispiel: 01 in ADD übersetzen. Der Makro-Assembler erweiterte diese Idee und gab Programmierern die Möglichkeit, mehrere Anweisungen zu einer zusammenzufassen. Wenn Sie beispielsweise in einem Programm ständig einen Wert zu einer Speicherstelle hinzufügen und prüfen, ob sie voll ist, könnte dies alles in das INCRT-Makro geschrieben und nur durch Ändern der Variablen verwendet werden. Tatsächlich wurden Makroassembler die ersten Hochsprachen.

Bei diesem Ansatz gab es jedoch ein wichtiges Problem - jedes Mal, bevor der Code erstellt wurde, war es notwendig, die grundlegenden Operationen in Makros zu falten. Es wurde ein Werkzeug benötigt, das Programmierer vom ständigen Kopieren befreit. So entstand der Compiler.

Jetzt wissen wir, dass wir dank des Compilers eine Programmiersprache mit absolut beliebiger Syntax erstellen können, Hauptsache, sie übersetzt unseren Code korrekt in Maschinenanweisungen. Experten standen Hochsprachen damals skeptisch gegenüber. Das lag unter anderem an der Leistungsfähigkeit von Computern – die Vereinfachung der Syntax mit aufwendigen Transformationen war teuer, könnte vor einigen Jahren den technologischen Fortschritt zurückbringen. Ein Grund waren Emotionen – es war schwer, sich von der Form der Maschinenanweisungen zu lösen, die Kontrolle über die Prozesse zu verlieren. Programmierer hatten ernsthafte Angst, dass sie nach der Kompilierung die ausführbaren Befehle nicht verstehen würden. Heute ist es uns egal, wie Maschinencode aussieht, aber damals schien es ein wichtiges Problem zu sein.

Trotzdem war der Compiler der einzige Ausweg aus der Situation, aber hier trat eine andere Schwierigkeit auf - arithmetische Ausdrücke. Ihre Ausführung entspricht nicht der Art und Weise, wie die Maschine den Code liest. Aus dem Schulkurs kennen wir die Berechnungsreihenfolge im Ausdruck "2 + 3 * 5", aber die Maschine liest den Code in eine Richtung, sodass die Antwort falsch ist. Ja, das obige Beispiel lässt sich durch die Erstellung eines Makros lösen, aber für komplexe Ausdrücke der Ebene „(2 + 3 * 5 + 4/6) * 10 + 16- (14 + 15) * 8“ war ein grundlegend anderer Ansatz erforderlich.

Die Ära einer neuen Formation

John Backus, dem Schöpfer von Fortran, ist es gelungen, einen Algorithmus zur Analyse des Stapels zu finden. Er begann 1954 daran zu arbeiten und er brauchte fast 5 Jahre, um die Existenzberechtigung von Hochsprachen zu beweisen. Der vollständige Name von Fortran ist The IBM Formula Translating System oder FORmula TRANslator. Trotz seiner 60 Jahre bleibt es eine der beliebtesten Programmiersprachen und ist in der Data Science unglaublich gefragt. In dieser Zeit haben wir viele Versionen gesehen: Fortran 1, II, 66, 77, 90, 95, 2008, und eine weitere wird nächstes Jahr veröffentlicht (Fortran 2015 war geplant, aber aufgrund von Verzögerungen kann sich der Name auf 2018 ändern) . In Fortran wurden erstmals viele Attribute einer Hochsprache gleichzeitig implementiert, darunter:

  • arithmetische und logische Ausdrücke;
  • DO-Schleife (eine frühe Form der FOR-Schleife);
  • bedingte IF-Anweisung;
  • Unterprogramme;
  • Arrays.

Ein weiteres wichtiges Fortran-Vermächtnis, von dem moderne Programmierer nicht einmal wissen, ist die Verwendung von Variablenbeschränkungen für ganze Zahlen. Sie alle mussten mit einem von 6 Zeichen I, J, K, L, M, N (abgeleitet von I-Nteger) beginnen. Daraus entstand die Angewohnheit, die Variablen i, j usw. für Aufzählungen zu verwenden.


IBM 704 - die Maschine, auf der Fortran erstellt wurde

Gleichzeitig blieb Fortran eine automobilnahe Sprache. Zum Beispiel gab es so etwas:

Wenn (Ausdruck) doneg, dozero, dopos

Der Grund war die Architektur des IBM-Computers, die eine Anweisung zur Verwendung des richtigen Registers erforderte: negativ, null oder positiv. Die Nähe zu Maschinen manifestierte sich auch im bekannten GOTO-Kommando (später wurde es von Basic geerbt), was einen direkten Übergang zu dem einen oder anderen Kommando bedeutete.

Zurück zum Problem der arithmetischen Ausdrücke: Der Stack-Busting-Algorithmus (dh das Parsen des gesamten Strings) war keine effiziente Lösung, aber er hat bewiesen, wie einfach und logisch die Implementierung sein kann.

Sprachen für alle

Fortran 1 war eine wissenschaftliche Sprache, die auf komplexen Zahlen- und Gleitkommaoperationen basiert. Er wusste nicht einmal, wie man Text verarbeitete, dafür musste er ihn in spezielle Codes umwandeln. Daher erwies sich Fortran als ungeeignet für das Geschäft, wo die Cobol-Sprache speziell entwickelt wurde.

Seine Syntax ist grundlegend anders, so nah wie möglich am natürlichen Englisch. Es gab praktisch keine Arithmetik, nur Ausdrücke der Form:

Einnahmen in die Gesamtausgaben subtrahieren

Cobol wurde zur Personifikation der maximalen Distanz vom einstigen maschinenarithmetischen Denken zum universellen. Und vor allem war es jetzt möglich, mit Text und Notizen zu arbeiten.

Die nächste grundlegende Sprache war Algol (ALGOrithmic Language), die für wissenschaftliche Berichte und Veröffentlichungen gedacht war. Zum ersten Mal tauchten darin Dinge auf, die für uns selbstverständlich waren:

  • Unterschiede zwischen Zuweisung: = und logischer Gleichheit =;
  • Verwenden einer for-Schleife mit drei Argumenten: Anfangswert, Grenze, Schritt;
  • die zwischen Anfang und Ende eingeschlossene Blockstruktur von Programmen machte ein GOTO überflüssig.

Aus Algol stammten C, C++, C#, Java und viele andere beliebte Sprachen.

Der vierte Wal der 1950er Jahre war Lisp (List Processing Language), das speziell für die künstliche Intelligenz entwickelt wurde. Sein Hauptmerkmal ist, nicht mit zwingenden Daten zu arbeiten, sondern mit Funktionen. Dazu musste John McCarthy viele Mechanismen für den normalen Betrieb bereitstellen: dynamische Typisierung, automatische Speicherzuweisung, Garbage Collector. Letztendlich war es Lisp, die zum Urvater von Sprachen wie Python und Ruby wurde und auch heute noch aktiv in der KI eingesetzt wird.

So änderten die 1950er Jahre die Denkweise der Programmierer, brachten vier grundlegende Sprachen hervor und brachten die Welt auf die Schienen der Computerrevolution.
Lassen Sie uns das nächste Mal darüber sprechen, wie sich Sprachen und die Programmierwelt in den 1960er Jahren entwickelt haben.

Besteht aus der Installation von Schlüsselschaltern auf der Vorderseite des Computergeräts. Offensichtlich konnten auf diese Weise nur kleine Programme kompiliert werden.

Mit der Entwicklung der Computertechnologie entstand eine Maschinensprache, mit deren Hilfe ein Programmierer Anweisungen geben konnte, die mit Speicherzellen arbeiteten und die Fähigkeiten der Maschine voll ausnutzten. Die Verwendung der meisten Computer auf der Ebene der Maschinensprache ist jedoch schwierig, insbesondere wenn es um I/O geht. Daher mussten wir auf seine Verwendung verzichten.

Um beispielsweise einen Datenblock von einer Diskette zu lesen, kann der Programmierer 16 verschiedene Befehle verwenden, von denen jeder 13 Parameter erfordert, wie die Blocknummer auf der Diskette, die Sektornummer auf der Spur usw. Wenn die Diskette Wenn der Vorgang abgeschlossen ist, gibt der Controller 23 Werte zurück, die das Vorhandensein und die Art der zu analysierenden Fehler anzeigen.

"Wörter" in Maschinensprache heißen Anweisungen, von denen jede eine elementare Aktion für den Zentralprozessor darstellt, wie beispielsweise das Lesen von Informationen aus einer Speicherzelle.

Jedes Prozessormodell hat seinen eigenen Satz von Maschinenbefehlen, obwohl die meisten gleich sind. Wenn Prozessor A die Sprache von Prozessor B vollständig versteht, gilt Prozessor A als mit Prozessor B kompatibel. Prozessor B gilt als inkompatibel mit Prozessor A, wenn A Anweisungen hat, die von Prozessor B nicht erkannt werden.

In den 60er Jahren stieg die Nachfrage nach Softwareentwicklung und die Programme wurden sehr groß. Die Leute begannen zu erkennen, dass die Entwicklung von Software eine viel schwierigere Aufgabe war, als sie sich vorgestellt hatten. Dies führte zur Entwicklung der strukturierten Programmierung. Mit der Entwicklung der strukturierten Programmierung waren Prozeduren und Funktionen der nächste Schritt. Gibt es beispielsweise eine Task, die mehrmals ausgeführt wird, dann kann sie als Funktion oder Prozedur deklariert und bei der Ausführung des Programms einfach aufgerufen werden. In diesem Fall wird der gesamte Programmcode kleiner. Mit Funktionen können Sie modulare Programme erstellen.

Der nächste Fortschritt war die Verwendung von Strukturen, die zum Übergang zu Klassen führten. Strukturen sind zusammengesetzte Datentypen, die mit anderen Typen erstellt wurden. Zum Beispiel die Struktur der Zeit. Es beinhaltet: Stunden, Minuten, Sekunden. Der Programmierer könnte eine Zeitstruktur erstellen und mit dieser als separate Struktur arbeiten. Eine Klasse ist eine Struktur mit eigenen Variablen und Funktionen, die mit diesen Variablen arbeiten. Dies war eine sehr große Leistung im Bereich der Programmierung. Nun könnte man die Programmierung in Klassen aufteilen und nicht das gesamte Programm, bestehend aus 10'000 Codezeilen, testen, sondern das Programm in 100 Klassen aufteilen und jede Klasse testen. Dies machte es viel einfacher, ein Softwareprodukt zu schreiben.

Assemblersprache

Wenn ein effizientes Programm erforderlich ist, werden anstelle von Maschinensprachen maschinenorientierte Sprachen verwendet, die ihnen nahe stehen - Assembler. Menschen verwenden mnemonische Anweisungen anstelle von Maschinenanweisungen.

Aber auch die Arbeit mit Assembler ist recht kompliziert und erfordert eine spezielle Ausbildung.

Strukturierte Programmierung setzt wohldefinierte Kontrollstrukturen, Programmblöcke, keine Sprungbefehle (GOTO), eigenständige Routinen, Rekursion und lokale Variablenunterstützung voraus.

Der Kern dieses Ansatzes liegt in der Möglichkeit, das Programm in seine Bestandteile aufzuteilen.

Auch erstellt funktional(Anwendungs-)Sprachen (Beispiel: Lisp - eng. LIST-Verarbeitung, 1958) und Rätsel Sprachen (Beispiel: Prolog - eng. Programmierung in LOGic, 1972).

Obwohl die strukturierte Programmierung bei der Anwendung hervorragende Ergebnisse lieferte, schlug selbst sie fehl, wenn das Programm eine bestimmte Länge erreichte. Das Schreiben eines komplexeren (und längeren) Programms erforderte eine neue Herangehensweise an die Programmierung.

OOP

Als Ergebnis wurden in den späten 1970er und frühen 1980er Jahren die Prinzipien der objektorientierten Programmierung entwickelt. OOP kombiniert die besten Prinzipien der strukturierten Programmierung mit leistungsstarken neuen Konzepten, deren Kern Kapselung, Polymorphie und Vererbung genannt werden.

Beispiele für objektorientierte Sprachen sind Object Pascal, C++, Java usw.

Mit OOP können Sie Programme optimal organisieren, indem Sie das Problem in seine Bestandteile zerlegen und mit jedem separat arbeiten. Ein Programm in einer objektorientierten Sprache, das ein Problem löst, beschreibt tatsächlich einen Teil der Welt, der mit diesem Problem verbunden ist.

Ein Beispiel für die Aufnahme einer Sendung in verschiedenen Sprachen

Hochsprache (Delphi)

X: = sin (y * Pi) + 1;

X86-Assembler (Coprozessor)

Fldpi fmul qword ptr [Y] fsin fld1 fadd p st (1), st (0) fstp qword ptr [X]

Maschinencode (hexadezimal, jeder Befehl beginnt in einer neuen Zeile)

D9 EB DC 0D D0 97 40 00 D9 FE D9 E8 DE C1 DD 1D 98 97 40 00

Maschinencode (binäre Darstellung)

11011001 11101011 11011100 00001101 11010000 10010111 01000000 00000000 11011001 11111110 11011001 11101000 11011110 11000001 11011101 00011101 10011000 10010111 01000000 00000000

Links


Wikimedia-Stiftung. 2010.

  • Ay Ay
  • Kabanov, Nikolay Alexandrovich

Sehen Sie sich die "Geschichte der Programmiersprachen" in anderen Wörterbüchern an:

    Geschichte der Programmiersprache Python- Python wurde in den 1980er Jahren konzipiert und seine Entwicklung begann im Dezember 1989 von Guido van Rossum am Zentrum für Mathematik und Informatik in den Niederlanden. Die Sprache Python wurde als Nachkomme der Programmiersprache ABC konzipiert und kann ... ... Wikipedia

    Zeitleiste der Programmiersprachen- Programmiersprachenlisten Nach Kategorie Chronologisch Genealogische Programmiersprachenchronologie Eine chronologische Liste von Programmiersprachen. Inhalt ... Wikipedia

    Vergleich der Programmiersprachen- Dieser Artikel sollte wikipediert werden. Bitte füllen Sie es gemäß den Regeln der Artikelformatierung aus. Konventionen ... Wikipedia

    Eine kurze Geschichte der Entwicklung von Programmiersprachen- Mit der Entwicklung der Computertechnik sind verschiedene Programmiertechniken entstanden. In jeder Phase wurde ein neuer Ansatz entwickelt, der Programmierern bei der wachsenden Komplexität von Programmen half. Inhalt 1 Beginn der Entwicklung 2 Assemblersprache 3 Aufbau ... Wikipedia

    Geschichte der Logik- studiert die Entwicklung der Wissenschaft über die Formen und Gesetze des richtigen Denkens (Logik). Die Entstehung der Logik als entwickelte Analyse der Inferenzprinzipien bezieht sich ausschließlich auf drei lokale Zivilisationen, nämlich: China, Indien und die Antike ... ... Wikipedia

    Linux-Geschichte- Dieser Artikel oder Abschnitt muss überarbeitet werden. Bitte verbessern Sie den Artikel gemäß den Regeln zum Schreiben von Artikeln ... Wikipedia

    Die Geschichte der freien Software- Der Begriff "Freie Software" oder Open-Source-Software bezieht sich auf Produkte, die unter den Bedingungen liberaler Lizenzen vertrieben werden, die dem Benutzer mehr Möglichkeiten bieten als herkömmliche Softwarelizenzen ... ... Wikipedia

Eine der revolutionärsten Ideen, die zur Entstehung führten, war die in den 20er Jahren des 19. Jahrhunderts von C. Babbage geäußerte Idee über eine vorläufige Aufzeichnung der Reihenfolge der Aktionen der Maschine. Ab diesem Moment beginnt Geschichte der Programmiersprachen.

Ein revolutionärer Moment in der Geschichte der Programmiersprachen war die Entstehung eines Systems zur Kodierung von Maschinenbefehlen mit Sonderzeichen, das von John Mauchley, einem Mitarbeiter der University of Pennsylvania, vorgeschlagen wurde. Mauchlys Codierungssystem faszinierte eine Mitarbeiterin seiner Firma, Grace Murray Hopper, die ihr ganzes Leben Computern und Programmierung widmete.

Während der Arbeit am Mark-1-Computer mussten sich G. Hopper und ihre Gruppe vielen Problemen stellen. Insbesondere haben sie sich Routinen ausgedacht.

Zu Beginn der Geschichte der Programmiersprachen war Maschinencode das einzige Kommunikationsmittel zwischen Mensch und Computer. Die große Leistung der Schöpfer von Programmiersprachen bestand darin, dass es ihnen gelungen ist, den Computer selbst als Übersetzer von diesen Sprachen in Maschinencode arbeiten zu lassen.

In den späten 40er Jahren, bevor G. Hopper in die Firma von John Mauchly eintrat, entwickelte dieser ein System namens "Short Code", eine primitive Programmiersprache auf hoher Ebene. Darin notierte der Programmierer das zu lösende Problem in Form mathematischer Formeln und wandelte diese Formeln dann mit Hilfe einer speziellen Tabelle zeichenweise übersetzt in zweibuchstabige Codes um. Anschließend wandelte ein spezielles Computerprogramm diese Codes in binären Maschinencode um. Das von J. Mauchly entwickelte System war im Wesentlichen einer der ersten primitiven Interpreten.

Hopper schuf bereits 1951 den ersten Compiler der Welt und führte auch den Begriff selbst ein. Der Hopper-Compiler führte die Funktion des Kombinierens von Befehlen aus und machte während der Übersetzung die Organisation von Unterprogrammen, die Auswahl, die Umwandlung von High-Level-Befehlen (damals Pseudocodes) in Maschinenbefehle.

Die Mitte der 50er Jahre ist geprägt von rasanten Fortschritten in der Geschichte der Programmiersprachen. Die Rolle der Programmierung in Maschinenanweisungen begann zu schwinden. Es entstand eine neue Art von Programmiersprache, die als Vermittler zwischen Maschinen und Programmierern fungierte. Die erste und eine der gebräuchlichsten war Fortran, die 1954 von einer Gruppe von Programmierern bei IBM entwickelt wurde (erste Version).

Mitte der 1960er Jahre entwickelten Thomas Kurtz und John Kemeny, Mitglieder der Fakultät für Mathematik am Dartmouth College, eine spezialisierte Programmiersprache, die aus einfachen englischen Wörtern bestand. Die neue Sprache wurde BASIC genannt.

In den frühen 60er Jahren ließen sich alle existierenden höheren Programmiersprachen an einer Hand abzählen, später erreichte ihre Zahl jedoch dreitausend. Natürlich hat die überwältigende Mehrheit der Sprachen in der Geschichte der Programmiersprachen keine weite Verbreitung gefunden; in der Praxis werden nicht mehr als zwei Dutzend verwendet. Entwickler orientierten Programmiersprachen an unterschiedlichen Aufgabenklassen, banden sie gewissermaßen an bestimmte Computerarchitekturen und setzten persönliche Vorlieben und Ideen um. In den 60er Jahren in der Geschichte der Programmiersprachen wurde versucht, diesen „Zwiespalt“ durch die Schaffung einer universellen Programmiersprache zu überwinden. Die erste Idee dieser Richtung war PL / I (Programm Language One), 1967. Dann beanspruchte ALGOL-68 (1968) diese Rolle. Es wurde davon ausgegangen, dass sich solche Sprachen weiterentwickeln und verbessern und alle anderen verdrängen werden. Bisher war jedoch keiner dieser Versuche erfolgreich. Die Vollständigkeit der Sprache führte aus Sicht des Programmierers zu ungerechtfertigter Komplexität der Konstruktionen, zur Ineffizienz der Compiler.

Ende der 50er Jahre tauchte ALGOL (ALGOL, von ALGOrithmic Language - algorithmische Sprache) in der Geschichte der Programmiersprachen auf. ALGOL ist für die Aufzeichnung bestimmt, die in Form einer Abfolge von Prozeduren aufgebaut sind, die zur Lösung der zugewiesenen Aufgaben verwendet werden.

Die Entwicklung von Algols Idee, die Entwicklung von Algorithmen zu strukturieren, fand ihren höchsten Spiegel in der Geschichte der Programmiersprachen, als der Schweizer Wissenschaftler Niklaus Wirth Anfang der 70er Jahre die Sprache Pascal schuf. Pascal wurde ursprünglich als Bildungssprache entwickelt und ist heute tatsächlich eine der Hauptsprachen für den Programmierunterricht an Schulen und Universitäten.

Der Zeitraum von Ende der 60er bis Anfang der 80er Jahre ist in der Geschichte der Programmiersprachen durch ein rasantes Wachstum der Zahl unterschiedlicher Sprachen gekennzeichnet, was paradoxerweise mit der Softwarekrise einherging. Diese Krise war für das US-Militärministerium besonders akut. Im Januar 1975 beschloss das Pentagon, das Chaos der Übersetzer wieder in Ordnung zu bringen, und setzte ein Komitee ein, das mit der Entwicklung einer universellen Sprache beauftragt war. Die Gewinnersprache wurde ADA genannt.

Die Sprache C (erste Version - 1972), die unter Entwicklern von Softwaresystemen (einschließlich) sehr beliebt ist, hat einen großen Eindruck in der Geschichte der Programmiersprachen hinterlassen. C kombiniert die Eigenschaften sowohl einer Hochsprache als auch einer maschinenorientierten Sprache und ermöglicht dem Programmierer den Zugriff auf alle Maschinenressourcen, die Sprachen wie Basic und Pascal nicht haben.

Software wird seit vielen Jahren auf Basis von Betriebs- und Verfahrenssprachen wie Fortran, Basic, Pascal, Ada, C gebaut. Bei der klassischen operationellen und/oder prozeduralen Programmierung muss der Programmierer detailliert beschreiben, wie ein Problem zu lösen ist, d.h. die Formulierung des Algorithmus und seine besondere Aufzeichnung. Die erwarteten Eigenschaften des Ergebnisses werden jedoch in der Regel nicht angegeben. Die Grundkonzepte der Sprachen dieser Gruppen sind Operator und Daten. Bei einem prozeduralen Ansatz werden Operatoren zu Gruppen zusammengefasst – Prozeduren. Die strukturierte Programmierung als Ganzes sprengt den Rahmen dieser Richtung nicht, sie legt lediglich einige nützliche Techniken der Programmiertechnik zusätzlich fest.

Eine grundlegend andere Richtung in der Geschichte der Programmiersprachen ist mit Methoden (manchmal als "Paradigmen" bezeichnet) der nicht-prozeduralen Programmierung verbunden. Dazu gehören objektorientierte und deklarative Programmierung. Eine objektorientierte Sprache erzeugt eine Umgebung in Form vieler unabhängiger Objekte. Jedes Objekt verhält sich wie ein separater Computer, sie können als "Black Boxes" zur Lösung von Problemen verwendet werden, ohne in die internen Mechanismen ihrer Funktionsweise einzutauchen. Von den bei Profis beliebten Objektprogrammiersprachen ist an erster Stelle C++ zu nennen, für einen größeren Kreis von Programmierern werden Umgebungen wie Delphi und Visual Basic bevorzugt.

Wenn Sie daran denken, Programmieren zu lernen, ist die Programmiersprache, für die Sie sich zuerst entscheiden, von großer Bedeutung. Sie sollte sich auf Ihre zukünftigen Ziele beziehen und relevant sein. Während Programmieren im Allgemeinen nichts für Faule ist, sind einige Sprachen einfacher zu erlernen als andere, sie haben Communities, die sich dem Lernen widmen und nützliche Fähigkeiten zum Erlernen anderer Programmiersprachen bieten.

Auswahlschema

Es gibt Fragen, die so oft gestellt werden, dass ganze Schemata erstellt werden, um sie zu beantworten. Hier ist beispielsweise eine davon, die der Wahl der ersten Programmiersprache gewidmet ist.

Bei der Wahl der ersten Programmiersprache lohnt es sich, folgende Faktoren nüchtern zu bewerten:

  • Arbeitsmarkt.
  • Langfristige Perspektiven der Sprache.
  • Schwierigkeiten beim Erlernen einer Sprache.
  • Was genau können Sie im Lernprozess schaffen und indem Sie es anderen zeigen, um Sie zu motivieren?

Popularität und Nachfrage

JavaScript

JavaScript, nicht zu verwechseln mit Java, ist eine Programmiersprache, die in den 90er Jahren von Brendan Eich entwickelt wurde, ehemals im Besitz von Netscape Communications und heute der Mozilla Foundation. JavaScript ist eine der grundlegenden Technologien, auf der die Web-Community, wie wir sie kennen, basiert. Lassen Sie sich nicht täuschen, JavaScript existiert auch außerhalb des Browsers, aber hauptsächlich im Kontext verbundener Apps und Dienste.

Die Sprache selbst ist dynamisch und gibt Programmierern die Flexibilität, objektorientierte Programmierstile (da die Sprache selbst hauptsächlich objektorientiert ist) sowie funktional und zwingend zu verwenden. Es extrahiert den größten Teil seiner Syntax aus C, und wenn Sie vorhaben, in irgendeiner Weise Webentwicklung zu betreiben, sollte das Erlernen von JavaScript auf Ihrer Liste stehen.

Glücklicherweise ist JavaScript relativ einfach zu erlernen, gerade jetzt in Ihrem Browser, damit Sie es spielen können, und obwohl es schon eine Weile her ist, gewinnt es schnell an Popularität. Viele von Ihnen, die es zugewiesen haben, haben festgestellt, dass Sie beim Erlernen von JavaScript viel Geld verdienen, weil Sie es sofort verwenden können, um Dinge für das Web zu erstellen, was sehr wohl das ist, was viele Leute programmieren lernen.

Python

Ich kann Python auch empfehlen.

Trotz einer Reihe von Problemen, die Python historisch innewohnen, ist es weiterhin ein führendes Werkzeug in einer Reihe von Nischen:

Beeindruckend, nicht wahr? Was große und beliebte Projekte angeht, die in Python geschrieben wurden, sind dies Monster wie:

Finden Sie auch auf unserer Website.

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 (das Notwendige hervorheben)? 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.



In Verbindung stehende Artikel: