Matroschka C. Schichtsystem der Programmiersprache

Versuchen wir, uns die Chemie ohne das Periodensystem von Mendelejew (1869) vorzustellen. Wie viele Elemente musste man im Kopf behalten, und das in willkĂŒrlicher Reihenfolge... (Damals – 60.)

Dazu genĂŒgt es, an eine oder mehrere Programmiersprachen gleichzeitig zu denken. Die gleichen GefĂŒhle, das gleiche kreative Durcheinander.

Und jetzt können wir die GefĂŒhle von Chemikern des 19. Jahrhunderts nachempfinden, als ihnen all ihr Wissen und etwas darĂŒber hinaus in einem Periodensystem angeboten wurde.

Matroschka C. Schichtsystem der Programmiersprache


Das Buch "Matroschka C. Schichtsystem der Programmiersprache" prÀsentiert alle Einheiten der Sprache C wie auf der HandflÀche. Dies ermöglicht es, sie zu ordnen, veraltete Informationen zu korrigieren und sogar das Konzept eines Programms zu prÀzisieren.

Heute benötigt das Wissensgebiet der Programmierung noch dringlicher eine Systematisierung als die chemischen Elemente vor 150 Jahren.

Die erste Notwendigkeit – Lehre. Mendelejew begann mit dem Aufbau seines Systems, als er vor der Frage stand, mit welchem Element er die Vorlesungen beginnen soll: O, H, N, He, Au... Dabei war es fĂŒr ihn 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 – wissenschaftlicher Ansatz. Mit Hilfe des Periodensystems wurden neue Elemente entdeckt und korrigierte Informationen ĂŒber alte Elemente gefunden. Es half bei der Erstellung des Atommodells (1911). Und so weiter.

Die dritte Notwendigkeit – PrĂ€zisierung des Begriffs "Programm".

Die moderne Programmierung ist mit einem Fuß in den 50er Jahren des 20. Jahrhunderts stecken geblieben. Damals waren Programme einfach, wĂ€hrend Maschinen und Maschinenlanguages kompliziert waren, weshalb sich alles um Maschinen und Sprachen drehte.

Jetzt ist alles umgekehrt: Die Programme sind kompliziert und primĂ€r, die Sprachen sind einfach und sekundĂ€r. Das nennt man den anwendungsorientierten Ansatz, der allen scheinbar bekannt ist. Aber Studenten und Entwickler werden weiterhin ĂŒberzeugt, dass alles beim Alten geblieben ist.

Das bringt uns zurĂŒck zur ersten Vorlesung des Privatdozenten Mendelejew. Was soll man den Erstsemestern sagen? Wo ist die Wahrheit? Das ist die Frage.

Das Buch "Matroschka C. Schichtsystem der Programmiersprache" bietet eine Antwort darauf. Es richtet sich dabei nicht nur an Studenten, sondern auch an erfahrene Programmierer, denn gerade sie, also wir, mĂŒssen die Wahrheit suchen und die weltanschaulichen Konzepte umkehren.

Im Folgenden finden Sie eine kurze Zusammenfassung des Buches.

1. EinfĂŒhrung

Im Jahr 1969 wurde die Programmiersprache C geschaffen, die zu einer grundlegenden Programmiersprache wurde und dies seit 50 Jahren bleibt. Warum ist das so? Zuerst einmal, weil C eine anwendungsorientierte Sprache ist, die dem Programm ein menschliches Erscheinungsbild anstelle von maschinenhaften. Diese Errungenschaft haben Sprachen der C-Familie wie C++, JavaScript, PHP, Java, C# und andere gefestigt. Zweitens ist es eine kurze und elegante Sprache.

Der originale C wird jedoch oft mit Maschinen-Assembler verwechselt, was sein VerstĂ€ndnis kompliziert und verzerrt. Eine weitere ExtremitĂ€t ist die auferlegte „Philosophie“ der Sprache: prozedural, objektorientiert, funktional, kompilierbar, interpretierbar, typisiert und so weiter. Das bringt Emotionen mit sich, hilft aber nicht, die Sprache besser zu beschreiben.

Die Wahrheit liegt in der Mitte, und fĂŒr die Sprache C ist es streng in der Mitte zwischen philosophischem und maschinellem VerstĂ€ndnis.

Die Sprache C ist nicht autonom, sie unterliegt der normalen Schriftsprache und gleichzeitig steuert sie die Assemblersprache. Diese Position beschreibt Das Sprachmodell eines Programms, wonach ein Programm in drei untergeordnete Arten unterteilt wird: sprachlich, kodiert und befehlend. Die Sprache C ist fĂŒr die zweite, die kodierte Art verantwortlich.

Wenn man den Platz der Sprache im Programm definiert, kann man Informationen ĂŒber sie ordnen, was die Schichtsystem der Programmiersprache, das die Sprache C im Geiste des Periodensystems von Mendelejew auf einer Seite reprĂ€sentiert.

Das System wurde unter BerĂŒcksichtigung der Gemeinsamkeit anwendungsorientierter Sprachen, die aus ihrer sprachlichen Untergeordnetheit resultiert. Ein Satz von Matroschka-Einheiten in C ermöglicht es, verschiedene Sprachen zu beschreiben und zu vergleichen, wodurch eine Reihe von Matroschkas entsteht: C++, PHP, JavaScript, C#, MySQL, Python und so weiter. Es ist wĂŒrdig und richtig, dass verschiedene Sprachen mit Einheiten der grundlegenden Sprache beschrieben werden.

2. KAPITEL 1. Sprachmodell eines Programms. VerstÀndliches C

Im ersten Kapitel wird das Sprachmodell eines Programms, das einen anwendungsorientierten Ansatz widerspiegelt, vorgestellt. Laut diesem hat das Programm drei offensichtliche aufeinanderfolgende Arten:

  1. sprachlich – die direkte Rede des Programmierers, der ein Problem löst,
  2. kodiert – die Kodierung der Lösung in mathematischer Form in der Sprache C (oder einer anderen)
  3. und befehlend – die unmittelbaren maschinellen Befehle.

Das Sprachmodell erklÀrt, warum C eine einfache und verstÀndliche Sprache ist. C ist nach dem Vorbild und Gleichnis unserer gewohnten menschlichen Sprache aufgebaut.

Die erste Art von Programmen ist die direkte Sprache des Programmierers. Die Sprache entspricht dem menschlichen Denken. Mit Hilfe der Sprache schreiben AnfĂ€ngerprogramme – zunĂ€chst auf Russisch, dann Schritt fĂŒr Schritt ĂŒbersetzen sie die Aktionen in die Programmiersprache. Und genau nach diesem Muster wurde die Programmiersprache C geschaffen.

Die Schlussfolgerungen des Programmierers, die in Sprache ausgedrĂŒckt sind, werden in einen codebasierten numerischen Ausdruck umgewandelt. Diese Umwandlung sollte man Reflexion, nennen, da Sprache und Code eine gemeinsame Natur haben (Reflexion – Geburt – Herkunft). Dies ist offensichtlich, wenn man die sprachliche (links) und die codebasierte (rechts) Form des Programms vergleicht.

Matroschka C. Schichtsystem der Programmiersprache

Es ist interessant, dass die Reflexion sehr einfach erfolgt – nur mit zwei Arten von AusdrĂŒcken.

Allerdings enthĂ€lt die moderne Beschreibung der Programmiersprache C (von 1978) keine ausreichende Liste von Bezeichnungen, weder zur Beschreibung der Sprache im Allgemeinen noch fĂŒr die spezifische Aufgabe der Reflexion. Daher sind wir gezwungen, kreativ zu werden und diese Bezeichnungen einzufĂŒhren.

Die Wortwahl muss prĂ€zise und klar sein. DafĂŒr benötigte es einen besonderen Ansatz, der kurz so formuliert werden kann – strikte Verwendung der eigenen Sprache. FĂŒr die EnglĂ€nder wĂ€re das Englisch, aber wir sind keine EnglĂ€nder. Also nutzen wir, was wir haben, und bemĂŒhen uns, Russisch zu sprechen.

Die Reflexion erfolgt durch zwei Arten von AusdrĂŒcken:

  1. Berechnung (B) – spiegelt die VerĂ€nderung der Eigenschaften eines Gegenstandes wider. Die Eigenschaft eines Gegenstandes wird durch eine Zahl ausgedrĂŒckt, wobei die Handlung ĂŒber die Eigenschaft – also die Handlung ĂŒber die Zahl – eine Operation ist.
  2. Unterordnung (U) – spiegelt die VerĂ€nderung der Reihenfolge der Aktionen wider. Das Vorbild von U ist der komplexe Satz in der Sprache, daher beginnen die meisten Arten von U mit den unterordnenden Konjunktionen „wenn“, „ansonsten“, „solange“, „fĂŒr“. Andere Arten von U ergĂ€nzen diese.

Übrigens, können Sie sich vorstellen, dass in der Beschreibung von C kein Begriff fĂŒr Berechnung existiert – sie werden einfach „AusdrĂŒcke“ genannt? Nach diesem wird auch das Fehlen einer Bezeichnung und Zusammenfassung fĂŒr die Art der Unterordnung nicht ĂŒberraschen, ebenso wie die allgemeine Knappheit in Bezug auf Bezeichnungen, Definitionen und Verallgemeinerungen. Das liegt daran, dass das berĂŒhmte K/R („Die Programmiersprache C“, Kernighan/Ritchie, 1978) keine Beschreibung ist, sondern ein Handbuch zur Anwendung der Sprache.

Dennoch wĂ€re es wĂŒnschenswert, eine Beschreibung der Sprache zu haben. Deshalb schlĂ€gt er vor, Schichtsystem der Programmiersprache.

3. KAPITEL 2. Schichtsystem. Kurzbeschreibung von C

Jede Beschreibung muss prÀzise und möglichst kurz sein. Bei der Programmiersprache ist eine knappe Beschreibung schwierig.

Hier haben wir ein Programm. Es besteht aus Modulen. Die Module setzen sich aus Unterprogrammen und Sammlungen (structure) zusammen. Die Unterprogramme bestehen aus einzelnen AusdrĂŒcken: Deklarationen, Berechnungen, AbhĂ€ngigkeiten. Es gibt insgesamt zehn Arten von AbhĂ€ngigkeiten. AbhĂ€ngigkeiten verbinden Unterebenen und Unterprogramme. Auch Deklarationen gibt es mehrere. Allerdings werden Deklarationen nicht nur in Unterprogramme und Unterebenen, sondern auch in Module und Sammlungen integriert. Die meisten AusdrĂŒcke bestehen aus Wörtern, die so schwierig zu beschreiben sind, dass man sie normalerweise einfach in zwei Listen gibt — Stamm- und abgeleitete Wörter, mit denen man im Laufe des Lernens und der Anwendung der Sprache vertraut werden muss. FĂŒgen wir dazu die Satzzeichen und eine Reihe weiterer AusdrĂŒcke hinzu.

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

Ein direkter hierarchischer Ansatz zur Beschreibung der Sprache wĂ€re ĂŒbermĂ€ĂŸig kompliziert. Die Suche nach Umwegen fĂŒhrt zu einer Beschreibung der Sprache basierend auf ihrer sprachlichen Natur und der kommandierenden Seite. So entstand das Schichtensystem, das teilweise mit dem Periodensystem von Mendelejew ĂŒbereinstimmt, das ebenfalls schichtigist. Wie sich 42 Jahre nach ihrer Veröffentlichung (1869) herausstellte, steht die PeriodizitĂ€t des Systems in Beziehung zu den elektrischen Schichten (1911, das Bohr-Rutherford-Modell des Atoms). Auch das Schichten- und das Periodensystem verbindet die tabellarische Darstellung aller Einheiten auf einer Seite.

Die Beschreibung der Spracheinheiten wird knapp — nur 10 Arten von AusdrĂŒcken und 8 Arten von anderen Einheiten sowie informativ und anschaulich. Obwohl sie fĂŒr den ersten Kontakt ungewohnt ist.

Die Spracheinheiten sind in 6 Ebenen unterteilt:

  1. Ordnungen — Zeilen der Tabelle
  2. Abteilungen — besondere Gruppen von Arten (Teile der ersten Zeile)
  3. Arten — Zellen (Hauptebene der Teilung)
  4. Oberarten — Trennzeichen der Arten (seltene Ebene)
  5. Arten — Formeln der Einheiten am unteren Rand der Zelle oder separat
  6. Muster — die eigentlichen Einheiten (nur fĂŒr Wörter)

Die Muster der Wörter beschreibt das Wörterbuch — ein separates Teilsystem, das aus denselben sechs Ebenen besteht.

Der sprachliche Bestandteil der Sprache C ist offensichtlich, obwohl er dennoch eine Beschreibung verdient. Die kommandierende Seite der Sprache hĂ€ngt jedoch mit der Steuerung der Kompilierung zusammen, wĂ€hrend der drittes Programm — das Befehlsprogramm — erstellt wird. Hier nĂ€hern wir uns dem spannendsten Aspekt der Sprache C — der Schönheit.

4. FOLGENDEN KAPITEL. Schönes C

Die Programmiersprache C bildet die Grundlage der modernen Programmierung. Warum? Erstens, weil sie am besten der Sprache entspricht. Zweitens, weil sie elegant die EinschrÀnkungen der maschinellen Zahlenverarbeitung umgeht.

Was genau hat C vorgeschlagen? Typ und Struktur.

Das Wort „Typ“ ist die Übersetzung des englischen Wortes „type“, das vom griechischen „prototyp“ — „Urbild“ — stammt. Im Russischen vermittelt das Wort „топ“ nicht die fundamentale Bedeutung des ausgedrĂŒckten Begriffs, und vermischt sich zudem mit der Funktion des Dienstwerts „Sorte“.

UrsprĂŒnglich löste der Typ ein rein maschinelles Problem der Berechnung, bevor er zur Startrampe fĂŒr die Entwicklung objektorientierter Sprachen wurde.

Die Struktur löste sofort mehrere Aufgaben – sowohl maschinelle als auch anwendungsbezogene. Daher beginnt die Betrachtung mit dem eindimensionalen Typ und wechselt zur multidimensionalen Struktur.

Eine der unangenehmen Eigenschaften der historischen Programmierung besteht darin, dass die meisten Konzepte, einschließlich der grundlegenden, ohne Definitionen vermittelt werden. „Die Programmiersprache (Name der FlĂŒsse) hat einen ganzzahligen und einen Gleitkommatyp ...“ – und weiter ging's. Was ist ein „Typ“ (Bild) — eine Definition ist nicht nötig, denn die Autoren selbst verstehen es nicht ganz und werden „zur Klarheit“ schwammig. Wenn sie an die Wand gedrĂ€ngt werden, geben sie eine vage und nutzlose Definition. Es hilft sehr, sich hinter fremdsprachigen Wörtern zu verstecken: fĂŒr russische Autoren – hinter englischen (Typ), fĂŒr EnglĂ€nder – hinter französischen (Subroutine), griechischen (Polymorphismus), lateinischen (Kapselung) oder deren Kombinationen (ad-hoc Polymorphismus).

Aber das ist nicht unser Schicksal. Unsere Wahl sind Definitionen mit einer klaren Haltung in reinem Russisch.

Image

Image – das ist der prototypische Name einer GrĂ¶ĂŸe, der 1) die eigenen Eigenschaften der GrĂ¶ĂŸe und 2) die Auswahl von Operationen zur GrĂ¶ĂŸe bestimmt.

Dem Wort „Typ“ (Sorte) entspricht der erste Teil der Definition: „eigene Eigenschaften der GrĂ¶ĂŸe“. Aber die Hauptbedeutung des Typs liegt im zweiten Teil: „Auswahl von Operationen zu GrĂ¶ĂŸen“.

Der Ausgangspunkt fĂŒr die EinfĂŒhrung des Typs in der Programmiersprache C ist eine gewöhnliche Berechnung, beispielsweise die Addition.

Papier Mathematik, die von Hand geschrieben oder gedruckt wird, macht keinen großen Unterschied zwischen den Arten von Zahlen und betrachtet sie in der Regel als reell. Daher sind ihre Verarbeitungsoperationen eindeutig.

Maschinell Die Mathematik unterscheidet strikt zwischen ganzen und gebrochenen Zahlen. Verschiedene Arten von Zahlen werden unterschiedlich im Speicher abgelegt und von verschiedenen Prozessorbefehlen verarbeitet. Zum Beispiel sind die Befehle zum Addieren von ganzen und gebrochenen Zahlen zwei verschiedene Befehle, die zwei verschiedenen Knoten des Prozessors entsprechen. DafĂŒr gibt es keinen Befehl, der das Addieren eines ganzen und eines gebrochenen Arguments kombiniert.

Angewandte Mathematik, das heißt die Programmiersprache C, trennt Arten von Zahlen, vereint jedoch die Operationen: Die Addition fĂŒr ganze und/oder gebrochene Zahlen wird durch ein einziges Aktionszeichen dargestellt.

Die klare Definition des Begriffs GrĂ¶ĂŸe ermöglicht es, eindeutig von zwei anderen Begriffen zu sprechen: GrĂ¶ĂŸe und Operation.

GrĂ¶ĂŸe und Operation

GrĂ¶ĂŸe – die verarbeitete Zahl.

Operation – die Verarbeitung der Werte der ursprĂŒnglichen GrĂ¶ĂŸen (Argumente) zur Erzielung der Endzahl (Ergebnis).

GrĂ¶ĂŸe und Operation stehen in Beziehung zueinander. Jede Operation ist eine GrĂ¶ĂŸe, da sie ein numerisches Ergebnis hat. Jede GrĂ¶ĂŸe ist das Ergebnis der Übertragung des Wertes in das Register des Prozessors/ausschließlich fĂŒr den Prozessor, das heißt – das Ergebnis der Operation. Trotz dieser Beziehung bleibt die Möglichkeit ihrer getrennten Beschreibung das Hauptmerkmal, auch wenn das gleiche Wort in verschiedenen Abteilungen des Wörterbuchs wiederholt wird, wie es in ma3 der Fall ist.

Der Maschinenansatz teilte alle vom Programmierer verwendeten Zahlen in Befehle und Daten. FrĂŒhere Zahlen beider Arten waren tatsĂ€chlich Zahlen, zum Beispiel wurden Befehle durch numerische Codes geschrieben. In den Anwendungssprachen hörten die Befehle jedoch auf, Zahlen zu sein und wurden zu Wörtern und Aktionszeichen. Nur die "Daten" blieben Zahlen, aber es wĂ€re absurd, sie weiterhin so zu nennen, denn aus mathematischer Sicht sind Zahlen GrĂ¶ĂŸen, die in ursprĂŒngliche (Daten) und endgĂŒltige (gesuchte). "Unbekannte gegebene" wĂ€re ein dummer Ausdruck.

Die Befehle wurden ebenfalls in zwei Arten von Aktionen unterteilt: mathematische und Hilfsaktionen. Mathematische Aktionen sind Operationen. Auf die Hilfsaktionen kommen wir spĂ€ter zurĂŒck.

In der Programmiersprache C werden gewohnte papierbasierte und maschinell eindeutige, oder einzelne, mathematische Operationen nahezu durchweg zu mehrfachen.

Mehrfache Operationen sind mehrere gleichnamige Operationen mit unterschiedlichen Formen von Argumenten und verschiedenen, sinngemĂ€ĂŸen Aktionen.

Zu ganzen Argumenten gehört eine ganze Operation, zu rationalen - eine rationale. Dieser Unterschied wird besonders bei der Division deutlich, wenn der Ausdruck 1/2 das Ergebnis 0 und nicht 0,5 ergibt. Diese Darstellung erfĂŒllt nicht die Regeln der Papiermathematik, aber die Programmiersprache C strebt auch nicht an, sie einzuhalten (im Gegensatz zu Fortran) - sie spielt nach ihren eigenen Anwendungsregeln. Im Falle der Vermischung von ganzen und rationalen Zahlen wird einzig und allein das richtige

Anpassen der Argumentwerte aktiviert – eine Auswahlumwandlung des Wertes von einer Form in eine andere. TatsĂ€chlich ist das Ergebnis bei der Addition einer ganzen und einer rationalen Zahl rational, daher passt das Bild der Operation die Umwandlung einer ganzen Zahl in einen rationalen Wert an. Eine Reihe von Operationen bleibt nicht

multiple einzelne, und . Solche Operationen sind nur fĂŒr eine Art von Argumenten definiert: der Rest einer Division – ganze Argumente, Bitoperationen – natĂŒrliche ganze Zahlen. Die Ma3 zeigt die Mehrzahl der Operationen mit den Zeichen (#^) an, die die Bilder angeben, fĂŒr die die Operation definiert ist. Dies ist eine wichtige, aber zuvor ĂŒbersehene Eigenschaft jeder Operation.Alle Funktionen sind willkĂŒrliche Einzeloperationen. Eine Ausnahme bilden Operatoren -

klausellose Funktionen , die in die Sprache integriert sind (ursprĂŒngliche Operationen).UnterstĂŒtzung

– eine begleitende Handlung zur Operation.

– eine begleitende Handlung zur Operation. Betrachtet man eine Operation als die Hauptaktion, so lassen sich zwei begleitende Handlungen unterscheiden, die die Operation gewĂ€hrleisten und sich von ihr unterscheiden. Das sind 1) die Steuerung einer Variablen und 2) die Unterordnung. Diese Handlung wird als

UnterstĂŒtzung bezeichnet. Hier muss kurz innegehalten und speziell ĂŒber die russischen Übersetzungen von ProgrammierhandbĂŒchern gesprochen werden. Im Text von K/R wurde ein neues Wort eingefĂŒhrt,.

statement fĂŒr die Aufzeichnung von Aktionen, welches versuchte, die Begriffe des Maschinenbefehls in verschiedene Handlungen zu unterteilen: 1) Operation, 2) Deklaration und 3) Unterordnung (genannt „Kontrollkonstruktionen“). Dieser Versuch wurde von russischen Übersetzern begraben, die „Ausdruck“ durch das Wort „Operator“ ersetzten, das: zu einem Synonym fĂŒr das Maschinenwort „Befehl“ geworden ist,

  1. zu einem Synonym fĂŒr den Ausdruck „Aktionszeichen“ wurde,
  2. und auch eine unbegrenzte Anzahl zusĂ€tzlicher Bedeutungen erhielt. Es verwandelte sich also in eine Art englischen Artikel „Àh
“ .
  3. Betrachten wir die begleitenden Handlungen oder

UnterstĂŒtzung. Steuerung einer Variablen.

Variablenverwaltung

Variablenverwaltung (UP) — Erstellung/Entfernung von Variablenzellen.
Die UP erfolgt implizit bei der Deklaration einer Variablen, die auch aus einem anderen Grund geschrieben wird — zur Angabe der Art der Menge. Nur eine Art wird explizit verwaltet. zusĂ€tzliche Variablen mittels der Funktionen malloc() und free().

Es ist zu beachten, dass implizite Aktionen beim Schreiben bequemer sind, da sie ĂŒberhaupt nichts erfordern, aber schwieriger zu verstehen sind — sie sind schwieriger zu berĂŒcksichtigen und zu interpretieren.

Unterordnung

Unterordnung — Anschluss/Trennung von Schichtenabschnitten.

Die Programmiersprache C bietet eine von Assembler abweichende, anwendungsbezogene Möglichkeit zur Steuerung der Reihenfolge von Aktionen — Unterordnung. Sie spiegelt einen komplexen Satz mit einer klaren Trennung zwischen dem Hauptteil (Unterordnungsanweisung) und dem Nebenteil (Abschnitte Unterlevel/Subprogramm) wider.

Sowohl die Deklaration als auch die Unterordnung basieren vollstÀndig auf dem Begriff Schicht.

Schicht

Schicht — ist eine begrenzte, einstufige Auswahl von AusdrĂŒcken.

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

  1. Ordnung des Programms,
  2. EinschrÀnkung der Sichtbarkeit von Namen (implizit),
  3. Verwaltung von Variablen (Speicherzellen) (implizit),
  4. Definition von Nebenschichten fĂŒr die Unterordnung,
  5. Definitionen von Funktionen und Auswahlmöglichkeiten und andere.

In Maschinensprachen gab es das Konzept der Schicht nicht, daher gab es es auch nicht in K/R, und wenn es dort nicht vorkam, wĂ€re es Aberglaube und Freigeist, es in spĂ€teren BĂŒchern einzufĂŒhren. Deshalb existiert das Konzept der Schicht ĂŒberhaupt nicht, obwohl es Ă€ußerst nĂŒtzlich und offensichtlich ist.

Ohne Schicht ist es unmöglich, viele Aktionen und Regeln eines Programms kurz und prĂ€zise zu erklĂ€ren. Zum Beispiel, warum so einfach wie drei Groschen goto schlecht ist, wĂ€hrend das komplizierte while gut ist. Man kann nur kraftlos schimpfen, wie Dijkstra es tat ("Die Qualifikation von Programmierern ist eine Funktion, die umgekehrt von der HĂ€ufigkeit der Verwendung von goto in ihren Programmen abhĂ€ngt."). Kurz gesagt, nur Esel verwenden goto. Der Grad der BegrĂŒndung — Gott.) Das ist nicht so schlimm, wenn Ihre BĂŒcher ĂŒberhaupt nichts erklĂ€ren mĂŒssen, aber wie bereits gesagt, ist das nicht unser Schicksal.

Übrigens kann man annehmen, dass Den Ritchie goto gerade als SchlĂŒssel fĂŒr die Suche nach einem nicht benannten Konzept hinterlassen hat, da es keine Notwendigkeit oder Schönheit im Ausdruck goto gab. Vielmehr gab es das BedĂŒrfnis nach einer einfachen und verstĂ€ndlichen ErklĂ€rung neuer Sprachprinzipien, die Ritchie selbst nicht geben wollte und die genau auf einem Konzept basieren. Schicht.

Abweichung

Abweichung — Änderung der ĂŒblichen Eigenschaften eines neuen Namens.

Die wichtigste Abweichung hĂ€ngt genau mit den Schichteigenschaften des Programms zusammen und wird mit einem Wort beschrieben: „static“, das in jeder Schicht unterschiedliche Bedeutungen hat.

5. LETZTES KAPITEL. Gemeinsamkeit der Programmiersprachen

Programmiersprachen sind bildhafte Sprachen (die ein Bild haben, „typisiert“). Sie basieren auf einer expliziten oder impliziten Nutzung eines Bildes. Hier zeigt sich erneut ein Widerspruch: Ein explizites Bild ist verstĂ€ndlicher, aber weniger praktisch, und umgekehrt.

Matroschka C. Schichtsystem der Programmiersprache

(Die Tabellenformatierung wurde bisher nicht bereitgestellt, daher wird die Tabelle als Bild dargestellt.)

Nach C entwickelte sich die Entwicklung der Programmiersprachen in Richtung einer erhöhten Bildlichkeit. Der wichtigste Nachfahre von C, der fĂŒr das VerstĂ€ndnis von hoher Bildlichkeit entscheidend ist, ist die Sprache C++. Diese entwickelt die Idee der willkĂŒrlichen Zuordnung von Operationen zu Werten und verkörpert sie auf der Grundlage von C's Ausdruck Auswahl, der einen neuen Namen erhĂ€lt — Objekt. Allerdings ist C++ nicht so prĂ€gnant und ausdrucksstark wie C, aufgrund der Überladung neuer Arten von Auswahl und der damit verbundenen Regeln. Übrigens, sprechen wir ĂŒber „Überladung“.

Überladung und Polymorphismus

Das Wort „Überladung“ (overload) ist ein veralteter Begriff des Maschinenansatzes, der die Schaffung bezeichnet mehrerer Operationen.

Maschinen (System) Programmiert Vielfalt von Operationen konnte durchaus belĂ€stigend sein: „Was bedeutet dieses Zeichen (+): Addition ganzer Zahlen, Addition von Dezimalzahlen oder ĂŒberhaupt eine Verschiebung?! In unserer Zeit schrieb man so nicht!“ Daher der negative Unterton des gewĂ€hlten Wortes („Überreaktion“, „genervt“). FĂŒr den Anwendungsprogrammierer sind mehrere Operationen der Eckpfeiler, die Hauptleistung und das Erbe der Programmiersprache C, so natĂŒrlich, dass sie oft nicht bewusst sind.

In der Sprache C++ Vielfalt Die Verbreitung erstreckte sich nicht nur auf die ursprĂŒnglichen Operationen, sondern auch auf die Funktionen – sowohl als einzelne als auch in Klassen zusammengefasste Methoden. Mit den zahlreichen Methoden kam die Möglichkeit ihrer Überschreibung in erweiterten Klassen, die vage als „Polymorphismus“ bezeichnet wurde. Die Kombination von Polymorphismus und Überladung ergab eine explosive Mischung, die sich in zwei Polymorphismen spaltete: „echter“ und „ad-hoc“. Um dies zu verstehen, muss man sich gegen die vergebenen Namen behaupten. Mit fremdsprachigen Bezeichnungen ist der Weg zu ad geebnet.

Die Bekanntmachung des Typs „Überladung“ drĂŒckt sich besser mit dem Wort Nachdeklaration – der HinzufĂŒgung einer gleichnamigen Funktion mit Argumenten einer anderen Art.

Die Bekanntmachung des Typs „Polymorphismus“ sollte besser mit dem Wort Neudeklaration – der Überschreibung einer gleichnamigen Funktion in einer neuen erweiterten Schicht mit Argumenten derselben Art bezeichnet werden.

Dann wird es leicht zu verstehen sein, dass gleichnamige Methoden verschiedener Arten (Argumente) – Nachdeklarationen, eine einzige Art – Neudeklarationen.

Die russischen Begriffe klÀren dies.

Die Startbahn

Die Betrachtung von Begriffen hochgradiger Sprachen bestÀtigt die Wichtigkeit klarer Definitionen grundlegender Konzepte. Mit einer richtig beschriebenen C-Sprache wird das Lernen hochgradiger Sprachen einfach und angenehm.

Besonders wichtig ist dies fĂŒr implizite hochgradige Sprachen (PHP, JavaScript). FĂŒr sie wird die Bedeutung von Objekten (zusammengesetzten Arten) noch höher als in C++, aber das Konzept der Art selbst wird implizit und schwer fassbar. In Bezug auf die Benutzerfreundlichkeit sind sie einfacher geworden, aber in Bezug auf das VerstĂ€ndnis – komplexer.

Deshalb sollte das Lernen von Programmiersprachen mit C beginnen und weiter in der Reihenfolge der Entstehung der C-Familie von Sprachen erfolgen.

Dasselbe gilt fĂŒr die Beschreibung von Sprachen. Verschiedene Sprachen haben meist einen ĂŒbereinstimmenden oder kleineren Satz an Typen von Einheiten als die C-Sprache. Die Anzahl der Typen und Exemplare kann in beide Richtungen variieren: in C++ gibt es mehr Typen als in C, in JavaScript weniger.

Besondere ErwĂ€hnung verdient die MySQL-Sprache. Auf den ersten Blick scheint es nichts Gemeinsames zu geben, aber sie lĂ€sst sich hervorragend mit der Matrjoschka beschreiben, und das Kennenlernen wird schneller und einfacher. Was wichtig ist, angesichts ihrer Bedeutung fĂŒr das Web – die Hauptstraße der modernen Programmierung. Und wo MySQL ist, sind auch andere SQLs. Nun, auch verschiedene Fortrans-Paskals-Pythons lassen sich mit der Matrjoschka beschreiben, sobald es die Zeit erlaubt.

So steht uns Großes bevor – eine anwendungsbezogene Beschreibung der Programmiersprache C und eine einheitliche Beschreibung ihrer Nachfolge-Sprachen. „Unsere Ziele sind klar, die Aufgaben definiert. An die Arbeit, Genossen! (StĂŒrmischer, langanhaltender Beifall, der in eine Ovation ĂŒbergeht. Alle stehen auf.)“

Ihre Meinungen werden mit großem Interesse angehört, Ihre Hilfe bei der Erstellung der Matroschka-Website wird mit großem Dank angenommen. Detailliertere Informationen ĂŒber das Buch finden Sie auf der clever in der Matroschka C versteckten Website.

Quelle: habr.com

60GB SSD 8Gb DDR4