Hallo ich war grade auf der Suche nach Gründen für und wider C++ bzw Java,um mir Entscheidungshilfen zu holen,welche Sprache ich als Mathemtik-student lernen sollte.
Der ewige Streit zwischen J & C++ in verschiedensten Foren brachte mich darauf,das beide Sprachen ähnlich weil verwandt sind,aber Java leichter lernbar,weniger „störanfällig“ ist,da viele Fehler schon während des Debuggens entdeckt werden.
C++ preist sein Hardwarenahes programmieren,und der große Nachteil von Java als interpretierte Sprache ist die dadurch bis zu 20 mal schlechtere Performance.
Java läßt sich (laut Google)u.a. mit GCC-Java direkt in nativen Code compillieren läßt,nichtmehr plattformunabhängig,aber dafür mit besserer Performance.
Jetzt meine Fragen:
Ist die Performance so gut,wie bei C++?
Ist die „Hardwarenähe“ so gut?
Wie sieht es mit C# in der Hinsicht aus?
In wieweit kann man .net-Sprachen direkt in nativen Code compillieren?
Danke schon mal im Vorraus.
Sindbad
Hi!
C# (bzw. die .NET Sprachen allgemein) werden von Haus aus in native code kompiliert.
Allerdings nicht sofort beim kompilieren der Sourcen in CLR-code, sondern dann während der Ausführung durch einen JIT-Compiler, der schließlich native code erzeugt.
Dieses „Kompilieren zur Laufzeit“ kann aber auch durch ein Tool namens ngen vorweggenommen werden, damit stehen dann tatsächlich Versionen der entsprechenden DLLs als native code zur Verfügung.
Hardwarenähe von C# ist sicherlich nicht so gut wie bei (unmanaged) C++, aber durch die Möglichkeit von .NET, ohne allzu großen Aufwand praktisch beliebige Funktionen in externen DLLs (z.B. Win32 API) aufzurufen, kann man damit auch praktisch alles machen.
Was nicht ganz trivial ist (soll auch nicht verschwiegen werden) sind z.B. unions, die es zwar in C++ gibt (und die z.T. auch bei hardwarenahen Sachen gern verwendet werden), aber in C# so nicht.
Da man der CLR aber jeweils beim Aufruf einer externen „legacy“-Funktion sehr genau angeben kann, wie die Parameter auf den Stack gelegt werden sollen, ist das i.d.R. auch irgendwie zu lösen.
Gruß,
Martin
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]