Matroschka Si. Schichtsystem der Programmiersprache

Stellen wir uns Chemie ohne das Periodensystem von Mendelejew (1869) vor. Wie viele Elemente müsste man im Kopf behalten, und das auch noch in beliebiger Reihenfolge… (Damals waren es 60.)

Dafür reicht es, an eine oder mehrere Programmiersprachen gleichzeitig zu denken. Dieselben Gefühle, das gleiche kreative Chaos.

Jetzt können wir die Gefühle der Chemiker des 19. Jahrhunderts nachempfinden, als sie all ihr Wissen und etwas mehr in einer einzigen Periodentabelle angeboten bekamen.

Matroschka Si. Schichtsystem der Programmiersprache


Das Buch „Matroschka C. Schichtsystem der Programmiersprache“ präsentiert alle Einheiten der Sprache C auf einen Blick. Dies ermöglicht es, sie zu ordnen, veraltete Informationen zu korrigieren und sogar das Konzept eines Programms zu präzisieren.

Heute benötigt das Wissen über Programmierung eine Systematisierung sogar mehr als die chemischen Elemente vor 150 Jahren.

Die erste Notwendigkeit ist das Lehren. Mendelejew begann mit der Schaffung seines Systems, als er mit der Frage konfrontiert war – mit welchem Element er seine Vorlesungen beginnen sollte: O, H, N, He, Au… Dabei hatte er es einfacher – er lehrte Chemie den Besten – den Studenten der Universität St. Petersburg. Programmierung wird jedoch bereits in der Schule unterrichtet und bald auch im Kindergarten.

Die zweite Notwendigkeit ist ein wissenschaftlicher Ansatz. Mit Hilfe des Periodensystems wurden neue Elemente entdeckt und Informationen über alte korrigiert. Es half bei der Erstellung des Atommodells (1911). Und so weiter.

Die dritte Notwendigkeit ist die Präzisierung des Begriffs der Programme.

Die moderne Programmierung ist mit einem Bein in den 50er Jahren des 20. Jahrhunderts gefangen. Damals waren die Programme einfach, während Maschinen und Maschinensprachen kompliziert waren, weshalb alles um Maschinen und Sprachen kreiste.

Jetzt ist alles umgekehrt: Programme sind komplex und primär, Sprachen einfach und sekundär. Dies wird als anwendungsorientierter Ansatz bezeichnet, der scheinbar allgemein bekannt ist. Aber Studierende und Entwickler werden weiterhin davon überzeugt, dass alles beim Alten bleibt.

Das führt uns zurück zur ersten Vorlesung des Privatdozenten Mendelejew. Was sollen wir den Erstsemestern sagen? Wo ist die Wahrheit? Das ist die Frage.

Das Buch „Matroschka C. Eine geschichtete Sprache der Programme“ bietet eine Antwort darauf. Es richtet sich nicht nur an Studierende, sondern auch an erfahrene Programmierer, da gerade sie die Wahrheit suchen und ihre Weltanschauung umwälzen sollten – also wir.

Im Folgenden finden Sie eine kurze Zusammenfassung des Buches.

1. Einleitung

Im Jahr 1969 wurde die Programmiersprache C entwickelt, die seither ein grundlegender Bestandteil der Programmierwelt ist und dies seit 50 Jahren bleibt. Warum ist das so? In erster Linie, weil C eine anwendungsorientierte Sprache ist, die dem Programm einen menschlichen Aspekt verleiht, anstelle eines maschinellen. Diese Leistung wurde durch Sprachen aus der C-Familie wie C++, JavaScript, PHP, Java, C# und andere untermauert. Zweitens ist es eine prägnante und ansprechende Sprache.

Allerdings wird die Sprache C häufig mit der Maschinenassemblersprache verwechselt, was ihre Wahrnehmung kompliziert und verzerrt. Ein anderes Extrem besteht darin, dass man der Sprache eine „Philosophie“ aufdrängt: prozedural, objektorientiert, funktional, kompiliert, interpretiert, typisiert und so weiter. Das führt zu Emotionen, hilft aber nicht, die Sprache besser zu beschreiben.

Die Wahrheit liegt in der Mitte, und für die Sprache C ist dies strikt zwischen philosophischer und maschineller Wahrnehmung.

Die Sprache C ist nicht autonom; sie folgt der gewöhnlichen schriftlichen Sprache, während sie gleichzeitig den Assemblersprachenraum steuert. Diese Position wird von dem Programmmodell beschrieben., gemäß dem die Software in drei untergeordnete Typen unterteilt ist: sprachlich, codiert, und befehlsgesteuert. Die Programmiersprache C befasst sich mit dem zweiten, codierten Typ.

Hat man die Position der Sprache im Programm bestimmt, lässt sich das Wissen über sie ordnen, was das Schichtsystem der Programmiersprache, das die Sprache C im Geiste des Periodensystems von Mendelejew darstellt — auf einer Seite.

Das System ist unter Berücksichtigung der Gemeinsamkeiten der Anwendungssprachen, die sich aus ihrer sprachlichen Unterordnung ergeben. Ein Satz von Matroschka-Einheiten der Programmiersprache C ermöglicht es, verschiedene Sprachen zu beschreiben und zu vergleichen, indem eine Reihe von Matroschkas erstellt wird: C++, PHP, JavaScript, C#, MySQL, Python und so weiter. Es ist würdig und richtig, dass verschiedene Sprachen mit den Einheiten der grundlegenden Sprache beschrieben werden.

2. KAPITEL 1. Sprachliches Modell des Programms. Verständliches C

Im ersten Kapitel wird das sprachliche Modell des Programms, das einen anwendungsorientierten Ansatz widerspiegelt. Demnach hat das Programm drei offensichtliche sequenzielle Typen:

  1. sprachlich — die direkte Ansprache des Programmierers zur Lösung eines Problems,
  2. codiert — die Kodierung der Lösung in mathematischer Form in der Sprache C (oder einer anderen)
  3. und befehlsgesteuert — unmittelbare Maschinenbefehle.

Das Sprachmodell erklärt, warum C eine einfache und verständliche Sprache ist. C ist nach dem Vorbild der menschlichen Sprache aufgebaut.

Die erste Art von Programmen ist die direkte Rede des Programmierers. Diese Sprache entspricht dem menschlichen Denken. Mit dieser Sprache schreiben Anfängerprogramme — zunächst in ihrer Muttersprache und übersetzen die Schritte dann nach und nach in die codierte Sprache. Nach diesem Muster wurde die Sprache C erstellt.

Die Überlegungen des Programmierers, die in Sprache ausgedrückt werden, werden in eine codierte numerische Form umgewandelt. Diese Umwandlung sollte man als Reflexionbezeichnen, da Sprache und Code eine gemeinsame Natur haben (Reflexion — Geburt — Geschlecht). Dies wird deutlich, wenn man die sprachliche (links) und die codierte (rechts) Form des Programms vergleicht.

Matroschka Si. Schichtsystem der Programmiersprache

Es ist interessant festzustellen, dass die Reflexion sehr einfach geschieht — mit nur zwei Arten von Ausdrücken.

Allerdings enthält die moderne Beschreibung der Sprache C (von 1978) keine ausreichende Liste von Bezeichnungen, weder zur allgemeinen Beschreibung der Sprache noch speziell zur Reflexionsaufgabe. Daher sind wir gezwungen, kreativ zu werden und diese Namen einzuführen.

Die Wortwahl muss präzise und klar sein. Dazu ist ein besonderer Ansatz erforderlich, der kurz zusammengefasst werden kann als — strikte Verwendung der Muttersprache. Für Engländer wäre das Englisch, aber wir sind keine Engländer. Also nutzen wir das, was wir haben, und bemühen uns, auf Russisch zu sprechen.

Es gibt zwei Arten von Ausdrucksformen:

  1. Berechnung (Bq) — spiegelt die Änderung der Eigenschaften eines Objekts wider. Die Eigenschaft des Objekts wird durch eine Zahl ausgedrückt, dann ist die Handlung über die Eigenschaft — eine Handlung über die Zahl — eine Operation.
  2. Unterordnung (Uq) — spiegelt die Änderung der Reihenfolge von Handlungen wider. Das Vorbild von Uq ist der zusammengesetzte Satz. Daher beginnen die meisten Arten von Uq mit unterordnenden Konjunktionen wie „wenn“, „ansonsten“, „solange“, „für“. Andere Arten von Uq ergänzen sie.

Übrigens, können Sie glauben, dass im C-Beschreibung kein Begriff für Berechnungsausdrücke existiert – sie werden einfach als „Ausdrücke“ bezeichnet? Nach diesem könnte man sich auch über das Fehlen einer Bezeichnung und Zusammenstellung für den Bereich der Unterordnung und die allgemeine Knappheit an Namen, Definitionen und Zusammenfassungen wundern. Das liegt daran, dass das berühmte K/R („Die Programmiersprache C“, Kernighan/Ritchie, 1978) kein Beschreibung, sondern ein Anwendungsleitfaden für die Sprache ist.

Dennoch wäre es wünschenswert, eine Beschreibung der Sprache zu haben. Deshalb bietet es das Schichtsystem der Programmiersprache.

3. KAPITEL 2. Schichten-System. Kurz C

Jede Beschreibung sollte präzise und äußerst kurz sein. Im Falle einer Programmiersprache ist eine oberflächliche Beschreibung schwierig.

Hier haben wir ein Programm. Es besteht aus Modulen. Die Module setzen sich aus Unterprogrammen und Zusammenstellungen zusammen. Die Unterprogramme bestehen aus einzelnen Ausdrücken: Erklärungen, Berechnungen und Unterordnungen. Es gibt insgesamt zehn Arten von Unterordnungen. Diese verbinden Unterebenen und Unterprogramme. Auch von Erklärungen gibt es mehrere. Übrigens sind Erklärungen nicht nur in Unterprogramme und Unterebenen enthalten, sondern auch in Modulen und Zusammenstellungen. Die meisten Ausdrücke bestehen aus Wörtern, die schwer zu beschreiben sind, weshalb sie normalerweise einfach in zwei Listen gegeben werden - Ausgangswörter und abgeleitete Wörter, mit denen man sich während des gesamten Lernens und der Anwendung der Sprache vertraut machen wird. Dazu kommen Satzzeichen und noch eine Reihe anderer Ausdrücke.

In dieser Darstellung ist es schwierig zu verstehen, wer auf wem stand.

Ein direkter hierarchischer Ansatz zur Beschreibung der Sprache wäre zu komplex. Die Suche nach Umwegen führt zu einer Beschreibung der Sprache, die auf ihrer sprachlichen Natur und der kommandobasierten Seite basiert. So entstand das Schichtsystem, das teilweise mit dem Periodensystem der Elemente übereinstimmt, das ebenfalls schichtartig ist. schichtartig. Nach 42 Jahren seit ihrer Veröffentlichung (1869) stellte sich heraus, dass die Periodizität des Systems mit den Elektronen verbunden ist Schichten (1911, das Bohr-Rutherford-Modell des Atoms). Die Schicht- und Periodensysteme haben auch gemeinsam, dass alle Einheiten tabellarisch auf einer Seite angeordnet sind.

Die Beschreibung der Spracheinheiten bleibt kurz – es gibt nur 10 Arten von Ausdrücken und 8 Arten anderer Einheiten, und sie ist sowohl aussagekräftig als auch anschaulich. Obwohl sie beim ersten Kennenlernen ungewohnt ist.

Die Spracheinheiten sind in 6 Ebenen unterteilt:

  1. Ordnung – Zeilen der Tabelle
  2. Abteilungen – spezielle Gruppen von Arten (Teile der ersten Zeile)
  3. Arten – Zellen (hauptsächliche Gliederungsebene)
  4. Überarten – Trennsymbole für Arten (seltene Ebene)
  5. Arten – Formeln der Einheiten am unteren Ende der Zelle oder separat
  6. Beispiele – die eigentlichen Einheiten (nur für Wörter)

Die Beispiele von Wörtern beschreibt das Wörterbuch – ein separates Teilsystem, das aus denselben sechs Ebenen besteht.

Der sprachliche Aspekt der Programmiersprache C ist ziemlich offensichtlich, verdient aber dennoch eine Beschreibung. Der Befehlsaspekt der Sprache bezieht sich gerade auf die Steuerung der Kompilierung, bei der eine dritte Art von Programm entsteht – das Befehlsprogramm. Hier nähern wir uns dem faszinierendsten Aspekt der Programmiersprache C – ihrer Eleganz.

4. FOLGEKAPITEL. Der schöne Typ

Die Programmiersprache C bildet das Fundament der modernen Softwareentwicklung. Warum? Erstens, weil sie am besten dem menschlichen Ausdruck entspricht. Zweitens, weil sie elegant die Grenzen der maschinellen Zahlverarbeitung umgeht.

Was genau bietet C an? Typ und Schicht.

Das Wort „Typ“ ist eine Übersetzung des englischen Begriffs „type“, welcher aus dem griechischen „prototypos“ stammt – „Urbild“. Im Deutschen vermittelt das Wort „Typ“ nicht den zentralen Gehalt des ausgedrückten Begriffs und wird zudem mit der funktionalen Bedeutung „Art“ verwechselt.

Ursprünglich diente der Typ rein maschinellen Berechnungsaufgaben, doch er wurde zur Startbahn für die Entwicklung objektorientierter Sprachen.

Die Schicht adressierte sofort mehrere Aufgaben – sowohl maschinelle als auch anwendungsbezogene. Daher wird die Betrachtung mit dem eindimensionalen Typ beginnen und sich zur multidimensionalen Schicht entwickeln.

Eine der unangenehmen Eigenschaften historischer Programmierung besteht darin, dass die meisten Konzepte, einschließlich der grundlegenden, ohne Definitionen präsentiert werden. "Eine Programmiersprache (Name von Flüssen) hat Ganzzahl- und Fließkommatypen ..." - und weiter geht's. Was ist ein "Typ"? - Eine Definition ist nicht notwendig, da die Autoren selbst nicht genau verstehen, was sie meinen, und eine vage Erklärung für "Klarheit" geben. Wenn sie in die Enge getrieben werden, liefern sie eine verschwommene und unbrauchbare Definition. Es hilft oft, sich hinter ausländischen Begriffen zu verstecken: Für russische Autoren sind das englische Begriffe (Typ), für Engländer französische (Subroutine), griechische (Polymorphismus), lateinische (Kapselung) oder deren Kombinationen (ad-hoc Polymorphismus).

Aber das ist nicht unser Schicksal. Unsere Wahl sind Definitionen in klarem, unmissverständlichem Deutsch.

Image

Image — das ist der prägende Name einer Größe, der 1) die einzigartigen Eigenschaften der Größe definiert und 2) die Auswahl der Operationen zur Größe festlegt.

Dem Wort "Typ" (Art) entspricht der erste Teil der Definition: "einzigartige Eigenschaften der Größe". Aber die Hauptbedeutung des Begriffs liegt im zweiten Teil: "Auswahl der Operationen für die Größen".

Der Ausgangspunkt für die Einführung von Datentypen in der Programmiersprache C ist eine gewöhnliche Berechnung, wie beispielsweise eine Addition.

Papierhafte Mathematik, die handschriftlich oder gedruckt festgehalten wird, unterscheidet nicht zwischen den verschiedenen Arten von Zahlen und betrachtet sie üblicherweise als reelle Zahlen. Daher sind ihre Verarbeitungsvorgänge eindeutig.

Maschinen Mathematik trennt Zahlen strikt in ganze und gebrochene Zahlen. Verschiedene Zahlenarten werden in unterschiedlichen Formaten im Speicher gehalten und durch verschiedene Prozessorbefehle verarbeitet. Zum Beispiel sind die Befehle für die Addition von ganzen und gebrochenen Zahlen zwei verschiedene Befehle, die zwei unterschiedlichen Knoten im Prozessor zugeordnet sind. Ein Befehl zur Addition von ganzzahligen und gebrochenen Argumenten existiert nicht.

Angewandte Mathematik, also die Programmiersprache C, unterscheidet zwischen Zahlenarten, kombiniert jedoch die Operationen: Addition für ganze und/oder gebrochene Zahlen wird durch dasselbe Operatorzeichen dargestellt.

Eine klare Definition des Begriffs Datentyp erlaubt es, eindeutig über zwei andere Begriffe zu sprechen: Größe und Operation.

Größe und Operation

Größe — die bearbeitete Zahl.

Operation — die Verarbeitung der Werte der Ausgangsgrößen (Argumente) zur Erzielung einer Endzahl (Ergebnis).

Größe und Operation sind miteinander verbunden. Jede Operation ist eine Größe, da sie ein numerisches Ergebnis hat. Und jede Größe ist das Ergebnis der Übertragung eines Wertes in das Register des Prozessors / aus dem Prozessor, also – das Ergebnis einer Operation. Trotz dieser Verbindung ist es dennoch wichtig, sie getrennt beschreiben zu können, selbst wenn dabei dasselbe Wort in verschiedenen Bereichen des Wörterbuchs wiederholt wird, wie es in MA3 geschieht.

Der maschinelle Ansatz unterteilte alle Zahlen, die von Programmierern verwendet wurden, in verwendet. Die Verwendung von Optionen hilft, das Verhalten der Befehle anzupassen. und Daten. Früher waren sowohl die Befehle als auch die Daten tatsächlich Zahlen, zum Beispiel wurden Befehle in numerischen Codes geschrieben. In Anwendungssprachen hörten die Befehle jedoch auf, Zahlen zu sein, und wurden zu Wörtern und Handlungszeichen. Nur die «Daten» blieben Zahlen, doch sie weiterhin so zu nennen, ist absurd, denn aus der mathematischen Sichtweise betrachtet sind Zahlen Größen, die sich in Ausgangs- (Daten) und Endergebnisse (gesuchte). "Unbekannte Größe" – das würde lächerlich klingen.

Befehle wurden ebenfalls in zwei Arten von Aktionen unterteilt: mathematische und Dienstaktionen. Mathematische Aktionen sind Operationen. Auf die Dienstaktionen kommen wir später zurück.

In der Programmiersprache C werden vertraute papiergebundene und maschinelle eindeutige oder unitaire mathematische Operationen fast vollständig zu mehrfachen.

Mehrfache Operationen sind mehrere gleichnamige Operationen mit unterschiedlichen Argumentformaten und unterschiedlichen, aber ähnlichen, Handlungen.

Ganzzahligen Argumenten entspricht eine ganze Operation, während für Bruchzahlen eine gebrochene Operation steht. Diese Differenz ist besonders deutlich bei der Division, wenn der Ausdruck 1/2 das Ergebnis 0 anstatt 0,5 ergibt. Diese Notation entspricht nicht den Regeln der papiergebundenen Mathematik, aber die Programmiersprache C strebt nicht an, diese einzuhalten (im Gegensatz zu Fortran) – sie spielt nach ihren eigenen Anwendungs- regeln.

Im Falle der Mischung von ganzzahligen und gebrochenen Zahlen wird einzig und allein die richtige Wertumwandlung der Argumente aktiviert – eine selektive Umwandlung des Wertes von einem Format in ein anderes. Tatsächlich führt die Addition einer ganzen Zahl und einer gebrochenen Zahl zu einem gebrochenen Ergebnis, weshalb das Format der Operation die Umwandlungsoperation einer Ganzzahl in einen gebrochenen Wert auswählt.

Eine Reihe von Operationen bleibt nicht mehrfach, sondern, und einzeln.. Solche Operationen sind nur für einen bestimmten Typ von Argumenten definiert: der Rest der Division – ganzzahlige Argumente, Bitoperationen – natürliche ganze Zahlen. Ma3 zeigt die Vielzahl von Operationen mit den Zeichen (#^) an, für die die Operation definiert ist. Dies ist eine wichtige, aber zuvor übersehene Eigenschaft jeder Operation.

Alle Funktionen sind beliebige einstellige Operationen. Ausnahmen bilden die Operatoren – klammerlose Funktionen, die in die Sprache integriert sind (ursprüngliche Operationen).

Förderung

Förderung – eine begleitende Handlung zur Operation.

Wenn man die Operation als Hauptaktion betrachtet, kann man zwei begleitende Handlungen unterscheiden, die die Operation unterstützen und sich von ihr unterscheiden. Diese sind 1) Variablenverwaltung und 2) Unterordnung. Diese Handlung wird als Förderung.

Hier muss ich kurz innehalten und separat über die russischen Übersetzungen von Lehrbüchern zur Programmierung sprechen. Im Text K/R wurde für die Aufzeichnung von Aktionen ein neues Wort eingeführt, statement (Ausdruck), der versucht hat, die Konzepte eines Maschinenbefehls in verschiedene Aktionen zu unterteilen: 1) Operation, 2) Deklaration und 3) Unterordnung (genannt „Steueranweisungen“). Dieser Versuch wurde von russischen Übersetzern begraben, indem sie „Ausdruck“ durch „Operator“ ersetzt haben, der:

  1. zum Synonym des Maschinenbegriffs „Befehl“ wurde,
  2. sich als Synonym der Wortgruppe „Aktionszeichen“ herausgestellt hat,
  3. und unbegrenzt viele zusätzliche Bedeutungen erhielt. Das heißt, es verwandelte sich in eine Art englischem Artikel „äh…“.

Lassen Sie uns die begleitenden Aktionen betrachten, oder Unterstützungen.

Die Verwaltung einer Variablen

Die Verwaltung einer Variablen (UV) — Erstellung/Löschung von Zellen einer Variablen.
Die UV erfolgt implizit bei der Deklaration einer Variablen, die bereits aus einem anderen Grund geschrieben wird — zur Angabe der Größenart. Nur eine Art von zusätzlichen Variablen wird explizit durch die Funktionen malloc() und free() verwaltet.

Es ist erwähnenswert, dass implizite Aktionen für das Schreiben bequemer sind, da sie tatsächlich nichts erfordern, aber schwieriger zu verstehen sind — sie sind schwerer zu berücksichtigen und zu interpretieren.

Unterordnung

Unterordnung — Anschließen/Trennen von Schichteinteilungen.

Die Programmiersprache C bietet eine von Assembler abweichende, anwendungsorientierte Methode zur Steuerung der Handlungsreihenfolge – die Subordination. Diese spiegelt und entwickelt den Satz mit untergeordneten Strukturen, der eine klare Trennung zwischen dem Hauptsatz (Obersatz) und dem Nebensatz (Abschnitt Unterebene/Subprogramm) aufweist.

Sowohl die Deklaration als auch die Subordination basieren vollständig auf dem Konzept Schicht.

Schicht

Schicht ist eine begrenzte, einheitliche Auswahl an Ausdrücken.

Die Schicht hat sowohl explizit als auch implizit mehrere Aufgaben übernommen:

  1. Strukturierung des Programms,
  2. Einschränkung der Sichtbarkeit von Namen (implizit),
  3. Verwaltung von Variablen (Speicherzellen) (implizit),
  4. Definition von Nebensegmenten für die Subordination,
  5. Bestimmung von Funktionen und Sammlungen und andere.

In maschinensprachlichen Systemen existierte das Konzept der Schicht nicht, weshalb es auch in C/K nicht auftauchte. Wenn etwas dort nicht vorhanden war, wäre es lästerlich und freigeistig gewesen, dieses in späteren Büchern einzuführen. Daher kam das Konzept der Schicht überhaupt nicht vor, obwohl es äußerst nützlich und offensichtlich ist.

Ohne Schichten ist es unmöglich, viele Aktionen und Regeln des Programms kurz und klar zu erklären. Zum Beispiel, warum das einfache goto — schlecht ist, während das komplizierte while — gut ist. Man kann nur machtlos schimpfen, wie Dijkstra es tat («Die Qualifikation von Programmierern ist eine Funktion, die umgekehrt von der Häufigkeit abhängt, mit der goto in ihren Programmen erscheint.» Kurz gesagt, nur Dummies verwenden goto. Der Beweislevel — Gott.) Allerdings ist das nicht so schlimm, wenn Ihre Bücher überhaupt nichts erklären müssen, aber wie bereits erwähnt, ist das nicht unser Schicksal.

Übrigens kann man annehmen, dass Dennis Ritchie goto gerade als Schlüssel hinterließ, um ein unbenanntes Konzept zu suchen, weil es keine Notwendigkeit oder Schönheit im Ausdruck goto gab. Stattdessen gab es das Bedürfnis nach einer einfachen und klaren Erklärung der neuen Prinzipien der Sprache, die Ritchie selbst nicht geben wollte, und die gerade auf dem Konzept basieren. Schicht.

Abweichung

Abweichung — Änderung der normalen Eigenschaften eines neuen Namens.

Die wichtigste Abweichung steht in direktem Zusammenhang mit den schichtenbezogenen Eigenschaften des Programms und wird mit einem Wort beschrieben: «static», das in jedem Schichttyp unterschiedliche Bedeutungen hat.

5. LETZTES KAPITEL. Allgemeinheit der Programmiersprachen

Anwendungsorientierte Sprachen sind bildhafte Sprachen (die ein Bild haben, „typisiert“). Sie basieren auf einer expliziten oder impliziten Nutzung von Bildern. Hier zeigt sich erneut ein Widerspruch: Das explizite Bild ist verständlicher, aber weniger praktisch, und umgekehrt.

Matroschka Si. Schichtsystem der Programmiersprache

(Die Tabellenstruktur ist derzeit nicht verfügbar, daher wird die Tabelle als Bild dargestellt.)

Nach C entwickelte sich die Anwendungsorientierung der Sprachen in Richtung zunehmender Bildhaftigkeit. Der direkteste Nachkomme von C, die Sprache C++, ist hierbei von besonderer Bedeutung für das Verständnis der hohen Bildhaftigkeit. Sie entwickelt die Idee der flexiblen Zuordnung von Operationen zu Werten weiter und setzt diese auf Basis des C-Ausdrucks „Zuweisung“ um, das einen neuen Namen - Objekt - erhält. Allerdings ist C++ nicht so prägnant und ausdrucksstark wie C, aufgrund der Überladung neuer Arten von Zuweisungen und der damit verbundenen Regeln. Übrigens, sprechen wir über „Überladung“.

Überladung und Polymorphismus

Das Wort „Überladung“ (overload) ist ein veralteter Begriff aus dem Maschinenansatz, der die Erstellung von vielfältigen Operationen.

maschinellen (systemischen) Programmierern Vielfalt Operationen konnten durchaus irritierend sein: „Was bedeutet dieses Zeichen (+): die Addition ganzer Zahlen, die Addition von Dezimalzahlen oder vielleicht eine Verschiebung?! So wurde in unserer Zeit nicht geschrieben!“ Daraus ergibt sich der negative Unterton des gewählten Wortes („Übermaß“, „genervt“). Für einen Anwendungsprogrammierer sind multiple Operationen das Fundament, die Hauptleistung und das Erbe der Programmiersprache C, so natürlich, dass sie oft nicht bewusst wahrgenommen werden.

In der Sprache C++ Vielfalt verbreitete sich nicht nur auf die Ausgangsoperationen, sondern auch auf Funktionen – sowohl auf einzelne als auch auf in Klassen zusammengefasste Methoden. Mit den multiplen Methoden kam die Möglichkeit ihrer Überladung in erweiterten Klassen hinzu, die vage als „Polymorphismus“ bezeichnet wurde. Die Kombination von Polymorphismus und Überladung ergab eine explosive Mischung, die sich in zwei Arten von Polymorphismus aufspaltete: „echten“ und „ad-hoc“. Um dies zu verstehen, muss man gegen die verliehenen Namen ankämpfen. Ausländische Bezeichnungen ebnen den Weg zu ad.

Die Erklärung der Art „Überladung“ sollte besser mit dem Wort Nachdeklaration ausgedrückt werden – eine zusätzliche Deklaration der Funktion mit dem gleichen Namen, jedoch mit anderen Argumenten.

Die Bezeichnung der „Polymorphie“ sollte besser mit dem Begriff Überladung — einer überdeckenden Deklaration in einer neuen erweiternden Schicht der gleichnamigen Funktion mit Argumenten des gleichen Typs.

Dann wird es einfach verständlich, dass gleichnamige Methoden verschiedener Typen (Argumente) — neu deklariert werden, während ein Typ — überladen wird..

Russische Begriffe sind entscheidend.

Startbahn

Die Betrachtung der Konzepte hochgradig typisierter Sprachen bestätigt die Bedeutung einer klaren Definition grundlegender Begriffe. Mit einer korrekt beschriebenen C-Syntax wird das Erlernen hochgradig typisierter Sprachen einfach und angenehm.

Besonders wichtig ist dies für implizit hochgradig typisierte Sprachen (PHP, JavaScript). Für sie wird die Bedeutung von Objekten (zusammengesetzten Typen) noch höher als in C++, jedoch wird das Konzept des Typs implizit und schwer fassbar. Bequemlichkeit hat zugenommen, während das Verständnis schwieriger geworden ist.

Daher sollte das Erlernen von Programmiersprachen mit C beginnen und schrittweise in der Reihenfolge des Erscheinens der C-Sprachfamilie fortgesetzt werden.

Das Gleiche gilt für die Beschreibung von Programmiersprachen. Unterschiedliche Sprachen verfügen über einen übereinstimmenden oder sogar kleineren Satz von Datentypen als die Sprache C. Die Anzahl der Arten und Modelle kann variieren: C++ hat mehr Typen als C, JavaScript hingegen weniger.

Besondere Erwähnung verdient die Sprache MySQL. Auf den ersten Blick scheint sie nichts mit C zu tun zu haben, aber sie lässt sich hervorragend mit der Matryoshka beschreiben, was das Verständnis erheblich erleichtert. Dies ist besonders wichtig, wenn man ihre zentrale Rolle im modernen Web- und Programmierumfeld bedenkt. Wo MySQL ist, sind auch die anderen SQL-Varianten. Ebenso können auch Sprachen wie Fortran, Pascal und Python mit der Matryoshka beschrieben werden, sobald man die Zeit findet.

Uns erwarten großartige Aufgaben – eine anwendungsorientierte Beschreibung der Sprache C und eine einheitliche Beschreibung der folgenden Sprachen. „Unsere Ziele sind klar, die Aufgaben definiert. An die Arbeit, Genossen! (Stürmischer, langanhaltender Applaus, der in eine Ovation übergeht. Alle stehen auf.)“

Ihre Meinungen werden mit großer Aufmerksamkeit gehört, Ihre Hilfe bei der Erstellung der Matryoshka-Website wird mit großer Dankbarkeit angenommen. Weitere Informationen über das Buch finden Sie auf der Website, die geschickt in der Matryoshka von C versteckt ist.

Quelle: habr.com

Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server 🔥 Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server | ProHoster