Hilfe für eine Präsentation

rfinal

Neuling
Thread Starter
Mitglied seit
30.08.2009
Beiträge
504
Hi
Suche jemanden der mir ein paar sachen für eine Präsentation erklären kann.
Es geht um die Sprache C#, besser gesagt um diese eckpunkte:
-Zeiger
-Netframework
-Zwischencode
-Virtuelle Maschiene
 
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
Naja die Fragen stehen eigentlich schon im anfangspost.
Wie würdet ihr diese "eckpunkte" erklären ?
 
Mit einem Blick auf Wikipedia. Wie wärs, wenn du wenigstens etwas Selbstinitiative zeigst und erst recherchierst für deinen Vortrag und dann mit konkreten Fragen zu den jeweiligen Themen kommst?
 
Selbstverständlich hab ich mich informiert.
Als Beispiel Zwischencode, mir ist bekannt das der Zwischencode quasi zwischen der Pregrammiersprache und dem Maschienencode sitz habe aber dafür keine guten artikel oder Bilder gefunden.
Dieser Zwischencode wird ja benutzt damit die VM damit arbeiten kann aber könnte die VM nicht auch direkt Maschienencode verarbeiten ?
 
Auf Zwischencode ists doch eig. gut beschrieben. Zwischencode ist Code, der bei der Übersetzung der Quell- in die (maschinennahe) Zielsprache erstellt wird. Eine VM als Laufzeitumgebung (wie die JVM von Java oder das Äquivalent für .NET) wertet diesen Code dann aus und wendet während der Laufzeit diverse Optimierungen darauf an.
Solche VMs sind nur darauf ausgelegt, den entsprechenden Zwischencode zu verarbeiten. Vertausch diese VMs nicht mit denen, die virtuelle Rechner zu Verfügung stellen und damit die Verwendung von mehreren Betriebssystemen auf einem Rechner gleichzeitig erlauben.
 
Netframework ist ja sozusagen ein Gerüst für C# welches Klassenbibliotheken, Programmierschnittstellen und Dienstprogrammen beinhaltet.Aber wieso braucht c# dies, und weshalb ist c# theoretisch plattformunabhängig aber Praktisch nicht durchführbar ? Was ich weiß ist das es damit zusammen hängt das c# nicht 100% kompatibel zu mac und linux ist. aber wieso braucht netframework auch eine Laufzeitumgebung (Common Intermediate Language).
 
Eine Programmiersprache gibt dem Entwickler sinnvollerweise Hilfen zur Hand, um alltägliche Dinge zu erledigen. Dazu gehören Datenstrukturen, Möglichkeiten zur Datenspeicherung etc. Das wird alles durch Schnittstellen, Bibliotheken etc. gelöst. Ohne diese Dinge müsste der Entwickler alles selbst machen, wobei niemand extra Zeit zur Entwicklung einer einfach verketteten Liste etc. aufwenden will :d
C# ist theor. plattformunabhängig durch den Zwischencode. Er enthält keine plattformspezifischen Methoden (wie dies bsp. bei C++ durch die Verwendung der WinApi wäre), sondern Befehle, die die VM auswertet und ausführt. Dadurch ist es möglich, unter Linux durch Mono ebenfalls eine VM anzubieten.
Net braucht eine Laufzeitumgebung, weil es so konzipiert wurde. Die Vorteile und Nachteile einer VM stehen auf Wikipedia. Es wurde einfach so eintwickelt, dass es eine solche Zwischensprache besitzt. Es war eine Designentscheidung bei der Spezifikation der Sprache.
Hätte es keine Laufzeitumgebung, müsste der Code in Maschinensprache direkt übersetzt werden.
 
C# ist ja nur eine Sprache und eine Sprache selbst kann nur ein paar mathematischen Rechenoperationen. Jegliche Ein- und Ausgaben muessen quasi ueber diesen Framework verlaufen. Netframework erlaubt einem also Benutzeroberflaechen zu erstellen, Netzwerkzugriff zu haben, Dateizugriff, Threading, Timers usw… (Da der CLR aber sehr stark mit dem Framework verknuepft ist geht es nicht ohne!) C# ist theoretisch Platformunabhaengig, weil der Framework ja immer auf andere Programmierschnittstellen aufbaut. Wuerde man ein Netframework fuer Linux basteln (so wie Mono), welches fuer die C# Programme die gleiche Schnittstellen hinterlaesst, allerdings intern die anderen Schnittstellen fuer das entsprechende Betriebssystem verwendet dann koennte(kann) man ein Programm schreiben welches auf mehrere Platformen funktioniert. Dies ist nur Problematisch, weil .Net sehr stark mit der Programmierschnittstelle von Windows verknuepft ist. Waehrend .Net z.B. in Windows im Hintergrund die schon vorhandenen WMI Schnittstellen verwenden kann gibt es diese in Linux nicht.

Die Laufzeitumgebung ist sozusagen dein VM, welches Bytecode ausfuehren kann.
 
OK also zusammen gefasst kann man sagen, das in netframe diese ganzen sachen (Klassenbibliotheken, Programmierschnittstellen und Dienstprogrammen) hinterlegt sind, damit man nicht alles immer wieder schreiben muss.
Was bedeutet dieser satz (Die Common Language Runtime (CLR) ist die Laufzeitumgebung von .NET und stellt somit den Interpreter für den standardisierten Zwischencode, die Common Intermediate Language (CIL), dar. ) Heißt es auch das CLR die Laufzeitumgebung von c# ist oder nur no netframe ?
Der compiler von windows für c# heißt dotGNU und für linux/apple mono ?
Kann man nicht auf der Vm auch maschienencode zum laufen bringen ähnlich wie bei c++ doer wieso wird der Zwischencode benutz?
Mann könnte doch das Programm Compilieren und zwar in Maschiencode und das die Vm Rechen lassen wie quasi der "echten" CPU.
 
Zuletzt bearbeitet:
"OK also zusammen gefasst kann man sagen, das in netframe diese ganzen sachen (Klassenbibliotheken, Programmierschnittstellen und Dienstprogrammen) hinterlegt sind, damit man nicht alles immer wieder schreiben muss."
Das gilt für jede Sprache. Jede bringt Schnittstellen etc. mit.

Das .NET Framework ist nur ein Framework. Es stellt die erwähnten Klassenbibliotheken etc. zu Verfügung. Zu diesem Umfang geht eben auch die CLR. Damit der Zwischencode durch die Laufzeitumgebung verwendet werden kann, muss er zuerst interpretiert werden (siehe Interpreter der erste Satz sagt alles, wobei statt Quellcode bei .NET der Zwischencode verwendet wird). Daher ist "nur" das CLR die Laufzeitumgebung, was jedoch Teil des Frameworks ist.
dotGNU ist von der FSF, Mono ist für viele Betriebssysteme verfügbar. Aber das sind nicht Compiler, sondern Nachbauten des kompletten .NET Frameworks.

"Kann die Vm nicht auf der Vm auch maschienencode zum laufen bringen ähnlich wie bei c++ ?"
Das Ziel der VM ist die Interpretierung des Zwischencodes und anschließende Kompilierung in die Maschinensprache. Nur dazu und zu nichts anderem ist sie fähig. Die Arbeitsweise unterscheidet sich grundlegend von C++. Dazu ist die Just-in-Time Kompilierung (JIT) anzumerken, die ein wichtiger Punkt für diese VMs sind.
 
Die Common Language Runtime ist die Microsoft Implementierung der Common Language Infrastructure (CLI) und ist fuer die Ausfuehrung von Bytecode (Zwischencode) verantwortlich. C# ist nur die Programmiersprache und wird zu Common Intermediate Language compiliert. Mann kann genauso Visual Basic.net zu CIL kompilieren. Der Compiler von Microsoft heist csc.exe (C-Sharp-Compiler) und wird als Teil des Frameworks installiert. Mono ist ein Versuch .Net auch zu anderen Betriebssystemen zu bringen (und auch open source).

Der Vorteil von Maschinencode ist es immer, dass es direkt auf der CPU ausgefuehrt werden kann, von daher macht es kein Sinn auf der VM Maschinencode zum laufen zu bringen. Stattdessen wird dieser Bytecode ausgefuehrt. Das Problem von Maschinencode ist halt, dass es ziemlich primitive und numerisch ist. Bytecode dagegen kann viele Sicherheitsfeatures enthalten, so gibt es zum Beispiel Typechecking um sicher zu stellen, dass gewisse Variablen nur dann zugeordnet werden koennen, wenn sie "passen" und Sandboxing womit Programme vom System isoliert werden koennen. Bei Windows Phone 7 sollen zum Beispiel alle Programme im Kernelspeicher laufen, da allerdings alles durch .Net isoliert werden kann ist dies kein Problem. Um die ganze Sache aber ein bisschen schneller zu machen nutzt man ein JIT-Kompiler um diesen Bytecode in Maschinencode umzuwandeln (siehe ngen).


Edit: Verdammt Thunderhit hat es schon wieder geschafft schneller zu posten lol.
 
Waren hilfreiche sachen dabei danke erstmal für die Mühe.
 
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh