PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Alles zu C#



Durandal
10.12.2003, 00:53
Servus

Hier im Forum kann man eine Menge Themen über Delphi, C++ und Basic lesen, über C# wird aber nicht viel gesagt ...
Aus diesem Grund dachte ich mir, dass ich mal einen Sammelthread dazu starte.

Hier mal etwas grundlegendes zu der Sprache: (Quelle: http://www.guidetocsharp.de/ )



Herkunft
Im Prinzip gehört C#, dessen Name als C Sharp gesprochen wird, der Sprachfamilie von C und C++ an, da sowohl die Syntax als auch einige Sprachkonzepte an diese beiden Sprachen angelehnt sind. C# wurde von Microsoft in Kooperation mit Anders Hejlsberg, dem Designer der Sprache Delphi, entwickelt und am 14. Februar 2002 im Rahmen des .net Framework veröffentlicht, über das Sie später in » was ist .net noch mehr erfahren werden.

Ein Ziel bei der Entwicklung von C# war unter anderem, die Sprache so einfach wie möglich zu gestalten und dabei auch einige fehlerträchtige Konzepte von C und C++ wie beispielsweise Mehrfachvererbung zu vermeiden. Der Gefahr, dass sich die weit verbreitete Meinung, C und C++ seien schlecht verständlich und schwer erlernbar, auch auf C# übertragen könnte, wollte Microsoft so von vornherein begegnen.

Plattformunabhängigkeit
Der größte und auffälligste Unterschied zwischen C# auf der einen und C beziehungsweise C++ auf der anderen Seite ist, dass mit C# entwickelte Programme plattformunabhängig sind. Das heißt, ein Programm läuft nicht nur unter dem Betriebssystem, unter dem es entwickelt wurde, sondern auf allen Systemen, für die eine Version des .net Framework existiert.

Dabei müssen diese Systeme nicht unbedingt PCs sein, es kann sich dabei beispielsweise auch um tragbare Geräte wie PDAs oder Mobiltelefone handeln. So existiert zum Beispiel eine speziell an die Eigenschaften mobiler Endgeräte angepasste, besonders kompakte Version des .net Framework. Ein ähnliches Konzept verfolgt die Sprache Java mit ihren verschiedenen Editionen (J2SE, J2ME, J2EE), womit ebenfalls plattformunabhängige Programme erzeugt werden können.

Da die Plattformunabhängigkeit jedoch keine spezielle Eigenschaft von C#, sondern eine generelle Eigenschaft von .net ist, finden Sie nähere Informationen dazu unter » was ist .net.
» nach oben
Objektorientierung und andere moderne Konzepte
C# ist wie fast jede andere moderne Programmiersprache objektorieniert, wobei die Objektorientierung von C# deutlich konsistenter und weitreichender ist als die anderer Sprachen, denn in C# wird fast alles als Objekt angesprochen. Sogar die einfachen Basisdatentypen für Ganz- und Dezimalzahlen oder für einzelne Zeichen lassen sich in C# als Objekt darstellen und entsprechend flexibel und vielseitig einsetzen.

Ergänzt wird C# durch die ebenfalls durchgängig objektorientierte Klassenbibliothek des .net Framework, die gerade im Vergleich zu den anderen häufig eingesetzten Klassenbibliotheken wie MFC oder JFC deutlich übersichtlicher gestaltet ist.

Des weiteren enthält C# einige Konzepte, die stark an Java angelehnt sind, teilweise aber deutlich ausgereifter arbeiten, wie beispielsweise eine umfassende und durchdachte Fehlerbehandlung oder eine automatische Resourcenverwaltung (Garbage collection).


Hier noch einige Details für erfahrenere Programmierer:


Details
C# hebt sich trotz der gemeinsamen Sprachfamilie deutlich von C und C++ ab, was beispielhaft an zwei Aspekten erläutert werden soll.
Das Konzept der Mehrfachvererbung wurde in C++ eingeführt, um eine Klasse von mehr als nur einer Basisklasse ableiten zu können. Dabei besteht allerdings die Gefahr, dass die abgeleitete Klasse, beispielsweise auf Grund namensgleicher Methoden in den Basisklassen, semantisch nicht eindeutig und der Code daher aufwändig und kompliziert ist. Um diese Probleme zu vermeiden, wird Mehrfachvererbung von C# nicht unterstützt, sondern nur die einfache Vererbung.
Zeiger stellen in C und C++ ein elementares und sehr mächtiges Konzept zur Manipulation von Daten dar. Allerdings werden auf Zeigern basierende Speicherzugriffe während der Laufzeit nicht geprüft, so dass der gesamte Speicher von einem in C oder C++ geschriebenen Programm manipuliert werden kann. Da dies vor allem auf Systemen, in denen mehrere Anwendungen gleichzeitig laufen, zu erheblichen Sicherheitsproblemen führen kann, werden Zeiger von C# nicht unterstützt.


Meine persönliche Meinung dazu:

C# ist SEHR Objektorientiert.
Einige Leute werden dadurch leider abgeschreckt, weil der eintieg in objektorientierte Programmierung dieser Art am Anfang sehr kompliziert erscheint.
Der Syntax ist logisch und strukturell aufgebaut und hat viele Ähnlichkeiten zu C++, meiner Meinung nach kann man allerdings den C# Syntax leichter verstehen. (muss jeder für sich selber wissen)
C# gilt offiziell als Einsteigerfreundlich, ich allerdings würde es als Einstiegssprache nur bedingt empfehlen (an Klassen, Strukturen und Vererbung von C# ist schon mancher Anfänger zu Grunde gegangen) aber auch das sollte jeder für sich selber entscheiden.
Vorallem wird C# eine rosige Zukunft versprochen - wir werden sehen.

Hier sind die größten Unterschiede zu anderen Sprachen:
LINK (http://www.galileocomputing.de/openbook/csharp/kap34.htm)

Tutorials über diese Sprache sind noch nicht sonderlich weit verbreitet (sehr neue Sprache) und oft fehlerhaft!
Aus diesem Grund würde ich unbedingt ein Buch empfehlen!

Hier ist eine online Version des Buches C#, welches als das beste Buch für erfahren Programmierer zählt, vorallem wenn man von einer anderen Sprache umsteigen will(geschrieben von einem C# Entwickler selber)
C# (http://www.galileocomputing.de/openbook/csharp/index.htm)

Hier ein Link zu dem Buch "Einstieg in C#", welches auch ich mir kaufte. (bis zur Seite 80 kann man auch dieses Online probelesen und dient damit bestens um sich mit den Grundzügen von C# vertraut zu machen, als Ersatz für ein online Tutorial so gesehen)
Einstieg in C# (http://www.galileocomputing.de/katalog/buecher/titel/gp/titelID-458?GalileoSession=20242290A1GMjGFjQ5k)
Wenn ihr Probelesen wollt einfach auf "Leseprobe(PDF)" klicken,

Ineluki
10.12.2003, 02:11
leider haben sie die zwe4i groessten fehler von Java auch gemacht ...

Da .net auch pseudocodeaehnlich ist, ist es wahnsinig langsam, da es interpretiert wird *korrigiert mich, wenn ich mich irre*

und ohne Zeiger kann und will ich einfach nicht programmieren .... das ist doch absoluter schwachsinn .... manche probleme koennen ohne zeiger gar nicht geloest werden, oder nur mit erheblichem mehraufwand

allein schon wegen letztem punkt, ist die sprache im prinzip fuer mich gestorben

Jesus_666
10.12.2003, 03:33
Für mich sieht C# aus wie ein kastriertes, .net-abhängiges C++.
Sicher, mit .net ist C# portabel... Auf Systemen, die .net unterstützen, und das sind in erster Linie Microsoft-Systeme - die Bemühungen, .net zu Linux zu portieren wurden von Microsoft unterbunden.

Es bleibt also eine einsteigerfreundliche, eingeschränkte, nicht sehr schnelle C-Version, die auf Microsoft-Systemen lauffähig ist. Sozusagen die Visual C++ Anfänger Edition.

Ich bleibe bei ISO-C++. Da kann ich meine Programme wenigstens ohne große Änderunge unter Linux weiternutzen, wenn ich wechsle.


@Ineluki: AFAIK ist das genau, wie dotnet funktioniert: Dein Programm wird durch eine VM gejagt (das Framework) und so ausgeführt (IIRC wird sie vorher noch dynamisch kompiliert - JIT heißt das Zauberwort). Soll immerhin schneller als Java sein, obwohl das auch kein besonderes Merkmal für bestechende Geschwindigkeit ist.

Durandal
10.12.2003, 03:51
Zeiger kann man verwenden im Notfall, sind aber nicht mehr so nötig wie bei C++ (näheres dazu im C# Buch)

Interpretiert wird es soweit ich weiß nicht, sondern richtig compiliert.
Auf jeden Fall hab ich in Sachen Geschwindigkeit noch nichts schlechtes gehört und nichts schlechtes erlebt.
In diesem fall kann ich auch keine 100% Aussage geben, müsste man nachlesen.
Auf jeden Fall ist C# nicht langsam.

.net für Linux wurde von Microsoft auch nicht unterbunden - im Gegenteil, nach meinen Informationen soll das sogar demnächst erscheinen.

[Edit] Jetzt sehe ich was du mit Zeigern meinst.
Da oben steht es wird nicht unterstützt, in meinem Buch steht es ist im Notfall verwendbar - was denn nun??:eek:
Das meine ich mit fehlerhaften Tutorials ....... :/

Ineluki
10.12.2003, 06:53
ich hab vor, demnaechst mal eine einfuehrung in Zeigerarithmetik und ihren Gebrauch zu geben ... da wirst du schnell sehen, dass die dinger lebensnotwendig sind ^^

aber naja ... gibt es wenigstens noch referenzen ?
referenzen sind ja auch nix anderes, als automatisch dereferenzierte zeiger ^^

Durandal
10.12.2003, 18:56
Das hier habe ich in einem offiziellen Tutorial gefunden:


In C# gibt es keine Zeiger. Nun, es gibt Zeiger im unsafe-Modus, diese werden jedoch selten eingesetzt. Statt dessen werden Verweise verwendet, die denen von C++ ähneln, jedoch nicht alle der C++-Einschränkungen aufweisen.
Ich hatte also Recht.

Referenzen gibt es.
Kannst du auch in einem FAQ nachlesen

Hab noch weiteres gefunden: (im vergleich zu C++)

Quellen werden in Assemblierungen kompiliert, die sowohl den kompilierten Code (ausgedrückt in der .NET-Zwischensprache IL) als auch Metadaten zur Beschreibung des kompilierten Codes enthalten. Alle .NET-Sprachen fragen über die Metadaten die gleichen Informationen ab, wie sie in den C++-.h-Dateien enthalten sind; die include-Dateien fallen weg.

C# ermöglicht gegenüber C++ eine verbesserte Versionssteuerung. Da das Laufzeitsystem den Mitgliedsentwurf handhabt, stellt die binäre Kompatibilität kein Problem dar. Die Laufzeit bietet, falls gewünscht, die Möglichkeit zur Verwendung nebeneinander existierender Komponentenversionen sowie eine geeignete Semantik zur Versionssteuerung für Frameworks, C# ermöglicht dem Programmierer die Angabe des beabsichtigten Versionszwecks

C# verwendet keine Headerdateien, sämtlicher Code wird intern geschrieben, und während eine Präprozessorunterstützung für bedingten Code vorhanden ist, werden Makros nicht unterstützt. Die Einschränkungen ermöglichen dem Compiler eine schnellere Analyse des C#-Codes und ermöglichen es darüber hinaus einer Entwicklungsumgebung, den C#-Code besser zu verstehen.

Im Vergleich zu Java:

Unterschiede zwischen C# und Java
C# und Java gehen auf gleiche Wurzeln zurück, daher ist es nicht überraschend, dass zwischen den beiden Sprachen Ähnlichkeiten vorhanden sind. Dennoch gibt es auch einige Unterschiede. Der größte Unterschied besteht darin, dass sich C# oberhalb der.NET-Frameworks und der .NET-Laufzeit befindet und Java den Frameworks und der Laufzeit von Java übergeordnet ist.

Unsicherer Code
Der so genannte unsichere Code in C# ermöglicht die Verwendung von Zeigervariablen und wird eingesetzt, wenn die Leistung extrem wichtig ist oder eine Integration mit vorhandener Software benötigt wird, beispielsweise mit COM-Objekten oder systemeigenem Code in DLLs. Die fixed-Anweisung wird dazu verwendet, ein Objekt »festzunageln«, damit es bei einer Speicherbereinigung nicht verschoben wird.

Da von der Laufzeit nicht geprüft werden kann, ob der unsichere Code gefahrlos ausgeführt werden kann, kann eine Ausführung nur erfolgen, wenn dem Code vom Laufzeitsystem vertraut wird. Dies verhindert eine Ausführung in Downloadszenarien.

Jesus_666
10.12.2003, 20:42
1.) Ich meinte mit der Linux-Implementierung von dotnet Mono und DotGNU. Windows wird vermutlich das dotnet-Framework als Closed Source veröffentlichen (eventuell sogar mit NGCSB*-Funktionalität); sämtliche Open Source-Implementierungen werden nach Möglichkeit niedergeknüppelt.
Tatsächlich war MS mit den Unterbindungsversuchen bisher nicht erfolgreich. Das heißt aber nicht, daß sie es nicht weiter versuchen. Zum Beispiel mit Softwarepatenten (http://www.theregister.co.uk/content/4/29283.html).

2.) Bei C# gibt es also keine Includes mehr, das macht es dem Compiler/der IDE einfacher, den Code zu verstehen. Für den User bedeutet das vermutlich lustige Cut-and-Paste-Orgien. Okay...

* ehemals Palladium

Ineluki
10.12.2003, 21:34
das wird ja immer schlimmer ...

jetzt hat das schon keine Macros mehr *argh* .. die wuerd ich auch in delphi einfuehren, wenn ich koennte ...

und was nuetzt unsicherer code, wenn der dann doch nur auf einem speziellen system lauffaehig ist, da kann ich dann doch gleich richtig programmieren ... zudem c++ ist meist schon sher platformunabhaengig, da die bibliotheken ja fuer jedes system angepasst sind ...

aber das die die includes rausgeschmissen haben .. das find ich auch bescheuert ... die konnte man so schoen als referenz gebrauchen, wenn man nicht mehr wusste, wie das mit parametern oder dem funktionsmanen war ^^ ... haben die dann das konzept von Delphi/pascal mit den units uebernommen, oder machen die das jetzt gar nicht mehr modular @_@

na ja .. also mich kann C# in keinster weise ueberzeugen
Wieder ein Beispiel, wie eine schoene Sprache mit unnoetigen konzepten verhunzt wird ...

Hm .. wenn ich mich nicht irre, hast du gequotet, das fuer die verwendung von COM unsicherer code verwendet werden muss @_@ .. na toll alle ruesten auf COM um (DX9 ist ja auch COM) und die werfen erneut knueppel in den weg .... da sag ich nur NEIN DANKE

MuadDib
10.12.2003, 22:54
Man sollte sich erst mit dem Konzept einer Framework-Abhängigen Sprache wohl besser vertraut machen, dann würde man auch die zig Vorteile einer solchen Sprache sehen.

Einige Punkte:


Bei C# gibt es also keine Includes mehr, das macht es dem Compiler/der IDE einfacher, den Code zu verstehen.
Who needs includes?? Wir arbeiten hier auf objektorientierter Basis und haben eine Riesen-Klassenbibliothek im Nacken, die uns alle nötigen Funktionen anbietet ... mit denen sich auch wirklich arbeiten lässt und die einem allerlei Implementierungsaufwand abnimmt.
Modularisieren ist ebenfalls kein Problem.. man definiere sich eigene Namespaces (mit der 'aufwendigen' Syntax namespace DeinNameSpace {}) und verwendet jenen eben in all deinen Dateien, in denen du deine Funktionen auslagern willst. Java mit ihren Packages arbeitet da auf einer IMO noch anwendungsfreundlicheren Ebene


jetzt hat das schon keine Macros mehr
Makros in C# nennen sich Delegates, und haben in dieser Sprache auch das erste Mal Sinn... Ich programmiere seit 6 Jahren, davon 3.5 'hauptberuflich', und habe noch NIE Makros verwendet... bis C#


ich hab vor, demnaechst mal eine einfuehrung in Zeigerarithmetik und ihren Gebrauch zu geben ... da wirst du schnell sehen, dass die dinger lebensnotwendig sind ^^
Nenn mir einen Grund, wo Zeiger und deren Arithmetik wirklich von Nöten ist, ausser in der Speicherverwaltung? Ich habe keinen wirklichen gefunden. Gottseidank übernimmt die Speicherverwaltung in C# das Framework und der Garbage Collector, wieder eine Sorge weniger.


.net für Linux wurde von Microsoft auch nicht unterbunden
Zwei Dinge: MS hat nichts dagegen, dass an einem .net für Linux gearbeitet wird. Allerdings hat MS die Rechte auf die CLL ... und ohne der ist Programmieren unter C# ziemlich sinnlos

Noch etwas zum Interpretation-Compilierungs - Thema:
C# wird in einen .net-Framework Bytecode compiliert, ähnlich wie Java in einen Bytecode für die JVM. Das ist natürlich langsamer als wenn der Code direkt für den PC selbst compiliert wird, wenn die VM allerdings erstmal im Laufen ist, merkt man kaum einen Unterschied (hier könnte ich noch viel weiter ausholen, aber das würde am Thema vorbeigehen). .net ist noch dazu in der nächsten Windows-Version komplett integriert... macht also dann keinen Unterschied mehr, ob ich nun mit dem Betriebssystem kommuniziere oder mit dem Framework.

Alles in Allem:

Vorteile
- Selbstständige Speichermanagement
- Umfangreiche und auch verwendbare Klassenbibliothek! (schon mal ein Zeichenprogramm unter C programmiert - ohne GUI-Ersteller? Ich hab dafür eine knappe halbe Woche gebraucht... mit Java hatte ich das in einer Stunde erledigt)
- Schnelle Softwareentwicklung durch eben jene Klassenbibliothek
- viel umgänglicher als die Maschinennahen Sprachen

Nachteile
- nicht so mächtig wie C++

Besonderer Nachteil bei .net ist auch, dass man versucht, soviel Sprachen wie möglich für ein Framework zu integrieren (währen Java versucht, eine Sprache für soviel Frameworks wie möglich zu integrieren :)).

Noch ein Beispiel aus der Praxis: Ich programmiere gerade ein Spiel für mein kleines Siemens S55 mit Hilfe der JVM. Großer Vorteil ist, dass es kaum Unterschied macht, ob ich nun mein Handy oder meinen PC programmiere... und ich sehr schnell alles wichtige machen kann. Hätte ich nur C(++) zur Verfügung, müsste ich mich zuerst mit der genauen Hardwarearchitektur und Speicherarchitektur vertraut machen... würde allein in diese Einarbeitung mehr Entwicklungsaufwand hineinstecken als ins Programmieren dann selbst.

Sicher, für andere Dinge geht nichts an C vorbei... vor allem bei der Grafikprogrammierung. Aber für Softwareapplikationen sind Frameworkbasierte Sprachen einfach die Zukunft... C++ ist nun auch schon über 10 Jahre alt...

Jesus_666
10.12.2003, 23:32
Die x86-Architektur ist schon 25 Jahre alt. PowerPC ist neuer, wird trotzdem aber nicht überall benutzt.
D (http://www.digitalmars.com/d/) ist auch neu und hat besonders im Bereich der Arrays Features, die weder C++ noch C# bieten (zugegeben, das ist vielleicht syntactic sugar, aber C# soll ja auch anwenderfreundlich sein).

Der Umstand, daß etwas neu ist bedeutet nicht, daß es auch sofort benutzt werden muß. C++ hat den Vorteil der extremen Vielseitigkeit und der gewaltigen Menge an verfügbarem Code - ob als Beispiel oder zur direkten Implementierung, freier C++-Code ist für viele Dinge verfügbar.


BTW, ich mag Includes, weil sie mir die Möglichkeit geben, meine Projekte aufzuteilen. So würde ich bei einem GUI-basierten IRC-Client den Netcode, den GUI-Code und den Rest (wie den Funktionsparser) trennen, was IMO übersichtlicher ist als alles in eine Datei zu packen. Das muß aber nicht bedeuten, daß ich auch drei Namespaces verwenden will.


Mit C++ habe ich im Internet eine reichhaltige Codebibliothek zur Verfügung stehen (daß der Großteil dieser Bibliothek mich an die GPL bindet ist mir momentan schlicht egal). Ich habe die Möglichkeit, den Code so aufzuteilen, wie ich am besten damit arbeiten kann.
Und: Ich arbeite unabhängig von einer undurchsichtigen und (erlaube mir meinen OSS-Aktivismus) proprietären VM, die momentan nicht allzu portabel ist und deren OSS-Äquivalente einem Patent zum Opfer fallen könnten.

Ich entscheide mich für die portable, mächtige Sprache. Noch ist sie aktuell und ich habe eh nichts zu verlieren, da ich frühestens in ca. 6 Jahren überhaupt mit Programmieren Geld verdienen kann.

Daß C#/dotnet für bestimmte Aufgaben gut geeignet ist will ich nicht abstreiten. Sie ist nur für meine Zwecke ungeeignet.

MuadDib
10.12.2003, 23:50
Original geschrieben von Jesus_666
Der Umstand, daß etwas neu ist bedeutet nicht, daß es auch sofort benutzt werden muß.
Das mein ich auch nicht. Ich rede nicht von der Sprache selbst, sondern von der Frameworkbasierten Softwareentwicklung. Kein Mensch verwendet die WINAPI, wenn er diesselbe GUI mit nur 5% des ursprünglichen Codes erstellen kann.


BTW, ich mag Includes, weil sie mir die Möglichkeit geben, meine Projekte aufzuteilen. So würde ich bei einem GUI-basierten IRC-Client den Netcode, den GUI-Code und den Rest (wie den Funktionsparser) trennen, was IMO übersichtlicher ist als alles in eine Datei zu packen. Das muß aber nicht bedeuten, daß ich auch drei Namespaces verwenden will.
Vielleicht habe ich mich falsch ausgedrückt.... ich erklärs mal so:

C:

#include 'myfile.h'
Java:

import mysourcepackage.myfile;
import mysourcepackage.*;
bzw., falls im gleichen Verzeichnis, verwende die Datei einfach

C#

using myExternalFile;
Okay, man hat die includes herausgenommmen... aber wer sagt, dass es keine Alternativen gibt?


Ich habe die Möglichkeit, den Code so aufzuteilen, wie ich am besten damit arbeiten kann.
In C# und Java nicht?


Und: Ich arbeite unabhängig von einer undurchsichtigen und (erlaube mir meinen OSS-Aktivismus) proprietären VM, die momentan nicht allzu portabel ist und deren OSS-Äquivalente einem Patent zum Opfer fallen könnten.
Ich bin auf für Open Source... das ändert allerdings nichts daran, dass es einfacher ist, auf einer (kostenlosen) VM zu arbeiten.


Ich entscheide mich für die portable, mächtige Sprache.
PORTABEL???? Wo bitte ist C++ portabel? Klar, wenn ich von MacOS auf Win auf *nix wechsle geht das in den meisten Fällen aufgrund standardisierter Schnittstellen. Wenn ich allerdings dasselbe Programm sowohl auf meinem PC laufen haben möchte, als auch auf meinem Mobiltelefon, als auch auf meinem PDA oder wenns geht auf meinem Kühlschrankdisplay... ich brauche NICHTS ändern. Java rulez :D


Daß C#/dotnet für bestimmte Aufgaben gut geeignet ist will ich nicht abstreiten. Sie ist nur für meine Zwecke ungeeignet.
Wie gesagt, im Grafikprogrammierbereich und im Mulitprozessorbereich geht nichts an C vorbei, einfach wegen der Maschinennähe... wenn du allerdings Applikationen programmieren willst (die vorzugsweise auch hierzulande wirklich gefragt sind), wird die Zukunft den VMs gehören. Denk aus der Sicht des Auftraggebers, der dich nach LoC bezahlt...

Jesus_666
11.12.2003, 00:36
Original geschrieben von MuadDib
Das mein ich auch nicht. Ich rede nicht von der Sprache selbst, sondern von der Frameworkbasierten Softwareentwicklung. Kein Mensch verwendet die WINAPI, wenn er diesselbe GUI mit nur 5% des ursprünglichen Codes erstellen kann.
Stimmt. Sobald ich frameworkbasiert das tun kann, was ich atm tue werde ich mir auch einen Wechsel überlegen. Da es aktuell aber nicht geht (da Mono und DotGNU noch unsicher sind) lasse ich es.


In C# und Java nicht?
Ah, jetzt weiß ich, was du versucht hast, mir zu erklären.
Ich habe in C# immer noch die gleiche Funktionalität wie in C++ (Codeteile in andere Dateien abschieben), sie hat aber einen anderen Namen. Okay. Tod den Includes, es lebe "using"!


PORTABEL???? Wo bitte ist C++ portabel? Klar, wenn ich von MacOS auf Win auf *nix wechsle geht das in den meisten Fällen aufgrund standardisierter Schnittstellen. Wenn ich allerdings dasselbe Programm sowohl auf meinem PC laufen haben möchte, als auch auf meinem Mobiltelefon, als auch auf meinem PDA oder wenns geht auf meinem Kühlschrankdisplay... ich brauche NICHTS ändern. Java rulez :D
Ich will meine aktuellen Programe weder zu meinem Kühlschrank noch zu meinem Rasiergerät portieren. Ich ziele momentan auf Windows/Linux-Portabilität ab, hauptsächlich damit ich bei einem Betriebssystemwechsel meinen Code weiterbenutzen kann (und damit er, wenn ich auf Linux code, auch auf Win läuft). Da die freien dotnet-Implementierungen rechtlich anfechtbar sind (wegen Patentverletzung) bieten sie für mich momentan keine Alternative zu normalem, begrenzt portablem Code. Die Microsoft-VM ist für *nix nicht verfügbar und könnte "Features" enthalten, die ich nicht haben will, beispielsweise NGCSB.

Zum Thema "Java rulez": C++ gefällt mir besser als Java. Geschmackssache. Egal.



Wie gesagt, im Grafikprogrammierbereich und im Mulitprozessorbereich geht nichts an C vorbei, einfach wegen der Maschinennähe... wenn du allerdings Applikationen programmieren willst (die vorzugsweise auch hierzulande wirklich gefragt sind), wird die Zukunft den VMs gehören. Denk aus der Sicht des Auftraggebers, der dich nach LoC bezahlt...
Zwischen mir und bezahlter Arbeit liegt höchstwahrscheinlich ein Informatikstudium. Das ist viel Zeit, um Neues zu lernen und vor Allem auch viel Zeit, während der sich die Industrie verändern kann.
Ich sehe einfach bei meiner momentanen Zielgruppe (mir selbst) keinen Markt für Applikationen, die in ein OS integriert sind, das ich nach Möglichkeit vermeiden will und die auf einem Framework basieren, das irgendwann vielleicht mal mit Linux (das ich nach Möglichkeit verwenden will) kompatibel sein könnte.
Daß ich damit für Mobiltelefone programmieren kann ist toll. Ich bin zwar der Meinung, daß niemand ernsthaft ein komplexeres Handy als ein Nokia 3210 braucht, aber vielleicht muß ich ja in nächster Zeit den RS232-Port eines Handys pingenau ansprechen, um darüber ein LCD-Display anzusteuern; da kann ich meinen Code dann sicher gut für gebrauchen.

Ich bleibe dabei: Sicherlich eine gute Sprache mit einigen Verbesserungen gegnüber C++, aber für mich ungeeignet.

Freezy
11.12.2003, 23:55
ICh hab es mir nicht nehmen lassen und mich mal über das neue Framework informiert:

Egel welchen Compiler wir verwenden (Delphi 8, C#), es kommt am ende (so wie ja auch vorher die PE) immer das gleiche raus. Eine art Skript das sich Microsoft Intermediate Language (MSIL) nennt. Soweit so gut... nun... dieses Skript wird erst auf dem Rechner des Users Compiliert (Just-in-Time-Compiler (JIT))- das hat zum vorteil das sich das Proggy an die Umgebungen anpassen kann und gefährlichen code erkennen kann (wenns ein Virus ist wirds garnicht Compiliert).

Vorteil: Mein Delphi Comiliert seinen Source in eine PE die für Pentium optimiert ist... wenn ich was P4 optimiertes schreiben wollte hätte ich pech gehabt.

Nachteil: Da das Proggy erst mal auf dem User rechner Compiliert werden muss wird es beim ersten Start ein wenig harcken.

Das alles laut meiner Information ^^

Durandal
12.12.2003, 02:02
Meiner Meinung nach ist es zu früh um über .net und C# zu spekulieren.
Beides ist noch ziemlich neu und zudem in der Entwicklung.
Ausreichende Erfahrung durch Developer gibts auch noch nicht.

Die Versprechungen von Microsoft sehen auf jeden Fall viel versprechend aus .... auch wenn ich mir nicht vorstellen kann, dass Microsoft ihr .net nicht wieder ausschließlich zum Vorteil der eigenen Firma und zum Nachteil der Benutzer und des freien Marktes verwenden werden. :rolleyes:

Ich persönlich würde jedem empfehlen, sich nicht auf c# zu fixieren.
Immer schön flexibel bleiben :D