![]() |
Re: Delphigeschädigter Möchtegerncoder alleine mit VC++...
Das heißt zwar in .Net nun generics anstatt Templates, aber es ist ungemein zeitsparend. :)
Code:
public class Miep<T>
where T : IComparable { T value; public T Value { get{return this.value;} set{this.value = value;} } public static bool operator <(Miep<T> left, Miep<T> right) { return left.Value.CompareTo(right.Value) < 0; } public static bool operator >(Miep<T> left, Miep<T> right) { return left.Value.CompareTo(right.Value) > 0; } }
Delphi-Quellcode:
type
Miep<T> = public class where T is IComparable; public property Value : T; class operator Less(left, right: Miep<T>) : boolean; class operator Greater(left, right: Miep<T>) : boolean; end; implementation class operator Miep<T>.Less(left: Miep<T>; right: Miep<T>) : boolean; begin exit (left.Value.CompareTo(right.Value) < 0); end; class operator Miep<T>.Greater(left, right: Miep<T>) : boolean; begin exit (left.Value.CompareTo(right.Value) > 0); end; |
Re: Delphigeschädigter Möchtegerncoder alleine mit VC++...
Zitat:
Der Grund dafür ist, das ein hochrangiger Entwickler von Borland Delphi (habe leider den Namen nicht parat) zu Microsoft :evil: gewechselt hat und dort C# massgeblich mitentwickelt hat. C# benötigt z.B. keinerlei Forward-Deklarationen mehr. Man kann sich also in Klasse A schon auf Klasse B beziehen, obwohl Klasse B erst viel später definiert wird. Entscheidend ist das Unit-Konzept; es gibt also keine Headerfiles wie bei C++ mehr, sondern es ist alles in einer Unit (Datei). Die compilierten Unit enthalten eine Symboltabelle mit allen Infos, die andere Units benötigen. Das ist ein Hauptgrund, warum Delphi so schnell compiliert und dies trifft auch bei C# zu. Ausserdem enthalten Delphi und C# ein automatisches Make-Tool ( ![]() es wird kein make-file mehr benötigt, sondern der Compiler erkennt welche Abhängigkeiten bestehen und was compiliert werden muss. |
Re: Delphigeschädigter Möchtegerncoder alleine mit VC++...
Zitat:
Zitat:
|
Re: Delphigeschädigter Möchtegerncoder alleine mit VC++...
Zitat:
Zitat:
Ich habe behauptet, Delphi legt seine internen Symboltabellen im Objektcode ab. Der Compiler prüft zuerst, ob die DCU-Datei neuer als die PAS-Datei ist. Falls ja, wird die PAS-Datei gar nicht angeschaut, sondern die Symboltabelle aus der DCU-Datei extrahiert. Das ist ein entscheidender Geschwindigkeitsvorteil! Beweiss: wenn man Delphi nur eine DCU-Datei vorsetzt, aber die PAS-Datei vorenthält, kann der Compiler dennoch arbeiten, weil er einfach die Symboltabellen aus der DCU extrahiert. Eine DCU-Datei ist demnach = compilierter Code + Linkersymbole + interne Symboltabelle |
Re: Delphigeschädigter Möchtegerncoder alleine mit VC++...
Zitat:
Zitat:
Ich hoffe du verstehst den kleinen aber feinen Unterschied ... |
Re: Delphigeschädigter Möchtegerncoder alleine mit VC++...
Zitat:
Er war nicht nur irgendein hochrangiger Entwickler bei Borland. Ohne ihn wäre Delphi nie gewesen (er kam ja mit dem ganzen Pascal Kram zu Borland) bzw. nicht das was du heute kennst.</edit> Die meisten Features gewinnt C# aber alleine durch .Net. Es ist sozusagen nur ein dünner Layer über der CLR. Was .Net nicht direkt kann, kann auch C# nicht, selbst wenn es mit nur minimalen Extraklassen/Extracode kompilierbar wäre. C# ist eine feine Sprache, aber nicht das Maß der Dinge. ;) (verglichen zu der in meiner sig ist es aber alles andere als überlegen, IMHO :zwinker: ) Zitat:
Ich für meinen Teil fasse so schnell beruflich keinen Single pass compiler mehr an. Ist einfach zu nervig und die resultierenden Friemeleien kosten IMHO zu viel Zeit. Zitat:
In C#, Chrome, VB.Net, Eifel,... muss man sich überhaupt nicht mehr mit irgendwelchen Dateien bzw. Dateinamen rumärgern. Du musst nur die Dateien dem Compiler bekannt machen (also in deinem Projekt haben), schon kann man mit den enthalten Klassen arbeiten, welche man von überall (also in jeder Datei) in jeder Reihenfolge verwenden kannst. Zitat:
In der Kompiliergeschwindigkeit liegt ein Vorteil von single pass compilern, aber der ist doch in Wirklichkeit ziemlich uninteressant... Falls du damit Assemblies meintest: Die sind ziemlich ähnlich zu den Packages in good old Delphi32. ;) Zitat:
|
Re: Delphigeschädigter Möchtegerncoder alleine mit VC++...
Zitat:
C++ und Pascal unterscheiden sich eben im Dateiverwaltungspunkt recht stark und darin liegt auch eine Menge an verlorener bzw. gewonnener Kompiliergeschwindigkeit. C# kann vorkompilieren? Also ich habe vom C# Compiler noch nie eine .obj/.o Datei erhalten. Der meckert da nämlich immer, dass er kein main() gefunden hat. Das einzige was man da als vorkompilieren bezeichnen kann, sind Assemblies, aber die sindd wiederum bereits erstellte Projekte (DLLs). Warum der C#-Compiler bei größeren Programmen schneller ist als der C++-Compiler liegt wohl daran, dass er nicht zig Millionen Zeilen Header einlesen und verarbeiten muss. (Schon mal Qt 4 kompiliert mir MSVC?) |
Re: Delphigeschädigter Möchtegerncoder alleine mit VC++...
Zitat:
|
Re: Delphigeschädigter Möchtegerncoder alleine mit VC++...
Zitat:
|
Re: Delphigeschädigter Möchtegerncoder alleine mit VC++...
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:22 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz