Inwiefern hat Delphi die C # -Sprache beeinflusst?

8

Ich suche speziell nach sprachlichen Einflüssen (im Gegensatz zu Framework). Auf den ersten Blick scheint C # eine Weiterentwicklung von C / C ++ oder Java zu sein. Aber wir wissen, dass C # den gleichen Designer wie Delphi hat, und er erkannte sogar einige Ähnlichkeiten an und sagte: "Gute Ideen gehen nicht einfach weg." Das einzige Beispiel, das ich für etwas in C # sehe, das nicht in Java oder C / C ++ enthalten ist, sind Eigenschaften. Ist es das? Gibt es noch andere

Jim McKeeth
quelle
Es ist wirklich schade, dass einige von ihnen es tatsächlich getan haben. Schauen Sie sich an, wie lange die .NET-Leute gebraucht haben, um die dynamischen Funktionen, die Delphi variantseit so ziemlich ewig in diesem Typ zur Verfügung hatte, wieder zu implementieren ...
Mason Wheeler
Zum Glück hielten sie sich nicht an BEGIN und END ...
Newtopian
2
@Newtopian: Also bevorzugen Sie Interpunktion gegenüber lesbaren Wörtern? Eher ein APL-Programmierer?
Jim McKeeth
Turbo Pascal (Vorfahr von Delphi) wurde von Anders Hejlsberg , Chefarchitekt der C # -Sprache bei Microsoft, geschrieben. Verbinde die Punkte.
Robert Harvey
5
APERSANDJim COLON yesCOMMA Ich bevorzuge die Zeichensetzung gegenüber ihrer englischen Aussprache EXCLAMATIONMARK, weil ich denke, dass dies das Ganze viel lesbarer macht. POINT COLON DASH SEMICOLON
Newtopian

Antworten:

4

Nicht so viel, was für den Programmierer sichtbar ist, aber ziemlich viel hinter den Kulissen, aber viele davon befanden sich in der IDE und im Windows Forms Control-Design und nicht in der Sprache selbst. Ich verwende Delphi 7 seit ungefähr 10 Jahren und C # für ungefähr 5, also habe ich ein paar aufgegriffen:

1) Die Ankereigenschaft ist identisch mit Delphi

2) Die Standardposition des Formulars

3) Die Objekthierarchie für die Steuerelemente

4) Der Formulardesigner fühlt sich im Allgemeinen sehr ähnlich - ich kann meinen Finger nicht genau darauf legen.

Einige Dinge in der Sprache selbst sind mir aufgefallen:

1) Bestimmte Datentypen, auch bekannt als Währung / Dezimalzahl

Einige Dinge in der Sprache, die sehr unterschiedlich sind:

1) Konstruktorvererbung (Delphi wird verwendet, um alle Konstruktoren an Basisobjekte zu erben, die in nachgeordneten Klassen nicht erneut definiert werden mussten)

2) Delphi hatte die Möglichkeit, die Sichtbarkeit einer Methode oder Eigenschaft in Nachkommenklassen herabzustufen, aber den Polymorphismus intakt zu halten, C # erlaubt dies nicht (ich vermisse dies sehr)

Ich habe wahrscheinlich jede Menge Dinge verpasst. Bitte fügen Sie sie hinzu, wenn Sie an sie denken.

Aaron Murgatroyd
quelle
Ich wünschte, Sprachdesigner würden die von der Basisklasse geerbte Außenweltschnittstelle, die Außenweltschnittstelle der abgeleiteten Klasse und die Schnittstelle, die die Basisklasse der abgeleiteten Klasse präsentiert, als unterschiedlich erkennen. Wenn verschiedene Klassen überlappende Sätze von Fähigkeiten haben, ist es viel einfacher, eine gemeinsame Basisklasse oder Schnittstelle zu verpacken, die alle diese Fähigkeiten zusammen mit dem Mitglied verfügbar macht, um zu sagen, welche tatsächlich verwendbar sind, als eine Vielzahl von Klassen zu verpacken, die unterschiedliche Kombinationen dieser Fähigkeiten verfügbar machen Fähigkeiten; Es gibt jedoch keinen Grund, warum abgeleitete Klassen ...
Supercat
... stellen - als Mitglieder ihres eigenen Typs (im Gegensatz zum Basistyp) - Mitglieder zur Verfügung, die mit ihrem eigenen Typ nicht verwendet werden können. Wenn ein Basisklassenvertrag besagt, dass jede abgeleitete Klasse, deren CanWoozleEigenschaft true zurückgibt, eine verwendbare Woozle()Implementierung bereitstellen muss , eine bestimmte abgeleitete Klasse jedoch immer false zurückgibt CanWoozleund eine rechtmäßig unbrauchbare WoozleImplementierung hat, gibt es keinen Grund, warum die abgeleitete Klasse ihr WoozleMitglied verfügbar machen muss .
Supercat
2

Anders war bis Delphi 3 bei Borland - er war der ursprüngliche Architekt von Delphi sowie Turbo Pascal. Wenn Sie Delphi 1 laden, rufen Sie die About-Box auf und geben Sie AND ein. Sie erhalten ein Bild von Anders, das Sie anblinzelt.

Als er Borland für MS verließ, machte er zunächst J ++, was Sun ein wenig "verärgerte". Dann erstellte er C #. Die Punkte, denen Sie beitreten sollten, stammen von Borland Object Pascal -> Java / J ++ -> C #

C # ist der Versuch von Microsoft, ein besseres Java zu erstellen. Als alter Delphi-Codierer würde ich akzeptieren, dass sie wahrscheinlich erfolgreich waren.

mcottle
quelle
1
Ich bin nicht der Meinung, dass C # ein Versuch ist, "ein besseres Java zu erstellen". Obwohl das C # -Design-Team Java-Experten enthält, führen wir beim Entwerfen von Sprachfunktionen nur sehr selten explizite Vergleiche mit Java durch.
Eric Lippert