Ich erstelle eine detaillierte Geschichte der Pascal-Sprache, und es fehlen einige Details.
Es gibt heute so viele Funktionen, die wir für selbstverständlich halten. Welche Merkmale haben maßgeblich zur Entwicklung von Pascal beigetragen, und warum waren sie von Bedeutung?
Ich suche nach Sprachfunktionen, nicht nach Plattform- oder Framework-Funktionen. So wie das Überladen von Operatoren oder Standardparametern, aber nicht die Linux-Unterstützung oder das neue Rich-Text-Widget.
Ich weiß, dass es einige verschiedene Varianten von Pascal gibt (Delphi, Free Pascal, Oxygene, Quick Pascal, Apple Pascal usw.), und sie haben die gleichen Funktionen zu verschiedenen Zeiten und parallel eingeführt. Das ist ok. Ich betrachte die Pascal-Sprache als Ganzes und wann die wesentlichen Meilensteine aufgetreten sind (Daten, Versionen usw.)
Apps
eine neue Variante von Client-Server).Antworten:
Aus sprachgeschichtlicher Sicht war der wahrscheinlich größte Beitrag von Pascal die starke Typensicherheit. Dieser Kampf ist jetzt größtenteils vorbei - Pascals Seite hat gewonnen - und der industrielle Wendepunkt war Java. Aber für eine sehr lange Zeit wurde C vor Pascal von Leuten bevorzugt, die sich zu einem großen Teil als erwachsene Programmierer betrachteten: Die Leute wollten die Freiheit, ihre Zeiger so zu manipulieren, als wären sie ganze Zahlen. Praktische Implementierungen von Pascal hatten jedoch Lücken, wie Gewerkschaften, die das Diskriminanzfeld nicht dynamisch überprüften, oder hatten sogar eine vollständige Typisierung von Zeigern, bis sie alle außer C-Äquivalent waren (Turbo Pascal war eine davon).
Dies und eine Vereinfachung der komplizierten ALGOL 68-Spezifikation [1] könnten ein Ausgangspunkt sein.
[1] Lies mal den ALGOL 68-Bericht - er ist definitiv ein Produkt der 60er! Eine Seite im Internet erwähnt einige ihrer seltsamen Ausdrücke: "Bus-Token", "unsichtbare Produktionsbäume", "Urumgebung", "Inzest-Gewerkschaften", "Begriffe", "Protonotionen", "Metanotionen", "Hypernotionen", " Paranotionen usw.
quelle
Ich würde sagen, dass die beiden wichtigsten Triebkräfte in der Geschichte von Pascal waren:
quelle
Man muss wirklich zu den Ursprüngen zurückkehren - eine Geschichte von Niklaus Wirth finden. Pascal begann sein Leben als Unterrichtssprache. "Algorithmen + Datenstrukturen = Programme" ist ein guter Ausgangspunkt.
Zu dieser Zeit war Pascal viel einfacher als Algol 68 und PL / 1. Es erzwang Struktur und Deklaration und starke Typensicherheit, im Gegensatz zu Fortran4 (Fortran 77 verbesserte die Dinge ein wenig, aber man konnte immer noch furchtbar schnell und locker spielen). Und im Vergleich zu COBOL war es kurz, einfach und einfacher, Programme zu schreiben. (Hallo Welt in ca. 6 Zeilen statt 600).
Als es anfing, gab es in Pascal Dinge wie Zeichen-Arrays - das war es für das String-Handling. Die Dinge haben sich im Laufe der Jahre verbessert.
Wenn Sie wirklich in eine Pascal-Geschichte eintauchen möchten, müssen Sie einige Punkte berücksichtigen:
In den 1980er Jahren gab es ein riesiges Schneckenfest zwischen Pascal und C. In beiden Lagern war eine enorme Entwicklung und Aktivität zu beobachten.
In der Folge sind seltsame und wundervolle Dinge wie Bliss-32, Algol und PL / 1 so gut wie verschwunden - aber Ideen aus diesen haben sich in Pascal eingeschlichen.
BEARBEITEN: Zeichen-Arrays konnten gepackt werden, was einige spezielle Eigenschaften verlieh, aber wenn Sie das wollten, was wir jetzt als String-Handling kennen, mussten Sie es selbst erweitern.
quelle
packed array[1..n] of char;
, zB in Read (ln) und Write (ln)Objektorientierte Erweiterungen! Object Pascal war der größte (inoffizielle) Standardsprung mit der Veröffentlichung von Delphi (1) Mitte der 90er Jahre. Es ist schwierig, nur eines herauszufinden, aber der gesamte Kern des gesamten Objektmodells hat dazu beigetragen, die Sprache auf den neuesten Stand zu bringen. Leider wurde es bis heute nicht zu einem offiziellen einheitlichen Standard gemacht, dem alle Compiler hinsichtlich der Codierungssymmetrie entsprechen würden.
Zum Glück haben die Free Pascal-Projektentwickler den Delphi-Funktionen von Borland und Embarcadero durchaus Rechnung getragen. RemObjects sind weniger wichtig, haben aber zumindest Verbindungen zu Embarcadero unter Delphi Prism, sodass jede Abweichung von einem Standard (um die Sprache besser .NET-kompatibel zu machen) in hohem Maße dokumentiert wäre.
quelle
virtual
Schlüsselwort verwenden, um sie durch Unterklassen überschreibbar zu machen.Nur ein oder zwei Dinge, an die ich mich erinnere, als ich Pascal vor langer Zeit mit MS-DOS verwendet habe:
Turbo Pascal führte in den 80er Jahren mehr oder weniger eine Art IDE ein (und die Kompilierungsleistung wurde im Vergleich zu UCSD Pascal erheblich gesteigert)
Irgendwie änderte Borland Mitte der 90er Jahre den Namen von Turbo in Borland Pascal . In einem ersten Schritt wurden die Units eingeführt, die es ermöglichten, große Projekte in separate Zusammenstellungseinheiten aufzuteilen.
Später kamen auch objektorientierte Programme hinzu.
quelle
Einer der wichtigsten Evolutionsschritte in Pascal war der richtige Begriff von Strings. ISO 7185 ("Standard Pascal") hatte sie nicht, was irgendwie peinlich ist. Alle echten Programmierer brauchten sie jedoch, und funktionsfähige Pascal-Implementierungen (wie Borland / Turbo Pascal) stellten sie zur Verfügung.
quelle
Rückblick auf Delphis Pascal-Sprachinnovationen - Ich würde das Property-, Method-, Event- (PME) -Modell und den Abschnitt "Published" für Klassen hinzufügen. Das machte nativen Code benutzerfreundlich und ermöglichte die Erweiterung des Komponentenaufbaus. Die Komponenten erfüllten Brad Cox 'Versprechen von Software-ICs.
quelle
Der Kampf zwischen vielen Geschmacksrichtungen von Pascal in den 80er und frühen 90er Jahren.
Sie hatten Apple Pascal , Microsoft Pascal und QuickPascal und Turbo Pascal .
Alle haben Object Pascal auf die eine oder andere Weise eingeführt (QuickPascal 1.0 und Turbo Pascal 5.5 im selben Zeitrahmen). Apple, weil sie es für ihre Plattform benötigten, Microsoft und Borland, weil OO "cool" wurde (dann starb QuickPascal bald danach und Turbo Pascal 6.0 fügte ein vernünftiges OO-Framework mit dem Namen Turbo Vision hinzu ).
Rudy Velthuis ist diesbezüglich in seinem Forumsbeitrag ziemlich vollständig .
Sie können ein ISO-Image mit DOS 6.22 und einigen DOS Pascal-Compilern aus dieser Zeit herunterladen .
quelle
Ich denke, die Einführung von Interfaces (in Delphi 3 IIRC) war sehr wichtig, um es zu einer modernen objektorientierten Sprache zu machen.
quelle
Ich werde der Mischung anonyme Methoden und Generika hinzufügen.
quelle
Neue Sprachfunktionen zwischen Delphi 7 und Delphi XE werden in diesem Whitepaper von Embarcadero auf Seite 52 beschrieben:
http://www.embarcadero.com/images/dm/technical-papers/reasons-to-migrate-to-delphi-xe -white-paper.pdf
quelle
Für mich waren die beiden größten Dinge (nach einigen anderen Sprachen wie C ...) die Unempfindlichkeit gegenüber Groß- und Kleinschreibung und die Geschwindigkeit des Compilers.
Und danach ist die Tatsache, dass es einfacher ist, mit der finnischen Tastatur zu schreiben, weil ich nicht ständig die {} oder andere Tasten brauche, die schwer zu erreichen sind ...
Ich bin seit Delphi2 an Bord, habe aber D1 ein paar Jahre in der Arbeit benutzt ...
quelle
Beginnen Sie mit "Structured Programming" von Dahl, Dijkstra und Hoare. Der Abschnitt von Dijkstra ist auch heute noch von grundlegender Bedeutung. Der Abschnitt von Tony Hoare über Datenstrukturierung hat PASCAL in hohem Maße vorbereitet. (Dahls Abschnitt sprach darüber, was letztendlich objektorientierte Programmierung wurde. Er beschrieb, was in Simula 67 zu Klassen wurde.)
Schauen Sie sich ALGOL-W an, Wirths Implementierung einer Variante von ALGOL-60.
Sie müssen zu diesem Zeitpunkt auch über PL / I und den IBM 360 Link Editor (Linker) informiert sein. Es war ein Wunder der Allgemeinheit, mit dem kleinen Problem, dass es im Januar in Juneau, Alaska, langsamer lief als Melasse. PASCAL wurde speziell entwickelt, um aus Gründen der Geschwindigkeit in einem Durchgang kompiliert und verknüpft zu werden. (Es hat geholfen, dass die Sprache auf einem CDC 6400 Junior-Supercomputer mit viel Speicher zum Leben erweckt wurde, wodurch ein One-Pass-Compiler praktisch wurde.)
Es gab zwei Hauptversionen von PASCAL von der ETH Zürich. Die Sprache, die derzeit jeder als PASCAL kennt, war PASCAL2, die zweite Version.
quelle