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.

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:
- sprachlich â die direkte Ansprache des Programmierers zur Lösung eines Problems,
- codiert â die Kodierung der Lösung in mathematischer Form in der Sprache C (oder einer anderen)
- 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.

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:
- 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.
- 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:
- Ordnung â Zeilen der Tabelle
- Abteilungen â spezielle Gruppen von Arten (Teile der ersten Zeile)
- Arten â Zellen (hauptsĂ€chliche Gliederungsebene)
- Ăberarten â Trennsymbole fĂŒr Arten (seltene Ebene)
- Arten â Formeln der Einheiten am unteren Ende der Zelle oder separat
- 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:
- zum Synonym des Maschinenbegriffs âBefehlâ wurde,
- sich als Synonym der Wortgruppe âAktionszeichenâ herausgestellt hat,
- 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:
- Strukturierung des Programms,
- EinschrÀnkung der Sichtbarkeit von Namen (implizit),
- Verwaltung von Variablen (Speicherzellen) (implizit),
- Definition von Nebensegmenten fĂŒr die Subordination,
- 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.

(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
