Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Wozu C#, wenn es C/C++ gibt?
SirGawain
myCSharp.de - Member

Avatar #avatar-1515.jpg


Dabei seit:
Beiträge: 19
Herkunft: Wien

Themenstarter:

Wozu C#, wenn es C/C++ gibt?

beantworten | zitieren | melden

Hi,

solche (oder ähnliche) Fragen sind bestimmt schon oft gefallen, aber ich habe leider nichts gefunden. Also sry, wenn ich schon wieder mit so einer Frage nerve, aber falls ihr einen Link zu einem anderen Thread mit diesem Thema wisst, bitte posten

Nun zu meiner Frage:
Wieso sollte Man C# können, wenn es sowieso schon C/C++ gibt, mit dem man ja so gut wie alles realisieren kann?

Ich stelle diese Frage absichtlich so provokant, damit sich auch wirklich jeder, der das hier ließt, berufen fühlt, mit zu reden

Auf die Frage bin ich eigentlich gekommen, als mich ein Freund gefragt hat: "Und wo genau liegt der unterschied zu C/C++? Was kann man mit C# machen, was mit C/C++ nicht geht?"

Und diese Frage konnte ich ihn ehrlichgesagt nicht beantworten (ok, bin auch noch ziemlicher neuling in C#, aber das soll sich ja ändern ).

So, jetzt seid ihr an der Reihe. Gebt eure Meinung dazu ab, und schreibt vllt. dazu, wieso ihr euch für C# entschieden habt anstatt für C++, oder falls ihr C++ doch könnt, wieso ihr dann zusätzlich noch C# gelernt habt.

mfg gawain
private Nachricht | Beiträge des Benutzers
Noodles
myCSharp.de - Experte



Dabei seit:
Beiträge: 4802
Herkunft: Leipzig

beantworten | zitieren | melden

C# ist die Sprache von .NET, es gibt noch andere aber C# ist die Hauptsprache. MS stellt die Firmenstrategie auf .NET um und deswegen werden mit hoher Wahrscheinlichkeit immer mehr Leute auf C# bzw .NET umsteigen.
Die Klassen des Frameworks sind sehr typensicher und objektorientiert und man kann mit ihnen sehr schnell ein kleines lauffähiges Programm schreiben.
Wie gesagt es ist ziemlich einfach ein kleines C# Programm zu schreiben, im Gegensatz zu den MFC.

Eines der Hauptziele von .NET ist, XCopy Deployment.
Das heißt, man kann eine Anwendung die auf einem Rechner installiert einfach auf einen anderen kopieren. Weil mit .NET nichts mehr im System Verzeichnis bzw in der Registry registriert wird oder werden sollte (soweit dies möglich ist), sondern die Assemblies im GAC referenziert werden.

Ich denke C# bzw .NET wird sich in der Windowsprogrammierung immer mehr durchsetzen, weil man Programme in einer schneller Zeit schreiben kann wie z.B. mit dem MFC.
private Nachricht | Beiträge des Benutzers
ernie04
myCSharp.de - Member

Avatar #avatar-1516.jpg


Dabei seit:
Beiträge: 174
Herkunft: Erkrath / Düsseldorf

beantworten | zitieren | melden

Hallo,

man macht es zwar nicht, aber trotzdem beantworte ich Deine Frage mal mit einer Gegenfrage: Hast Du schon mal mit C# entwicklet oder C#-Code gesehen?

Alleine die Struktur, die hinter dem C# / .NET Gedanken steckt ist wesentlich besser als bei einer "verstaubten" Sprache wie C/C++...
private Nachricht | Beiträge des Benutzers
Ftee
myCSharp.de - Member



Dabei seit:
Beiträge: 71

beantworten | zitieren | melden

C++ ist in jedem Fall deutlich flexibler als C#, keine Frage.

Die Frage ist, wa du machen willst?

Wenn du unter .NET entwickeln willst, dann wirst du in C# alles finden, was du brauchst. Alles was du unter C++ mochtest, wird dir auf einmal abgenommen, bzw. zu Gunsten des Sicherheitssystems von .NET nicht mehr gestattet (ich rede hier ausschliesslich von managed code!). Pointer gibts nicht. Destruktoren sind nicht mehr nötig, bzw. kannst du auch garnicht mehr in dem Sinne verwenden. Wie auch, ohne Pointer?

Die Zukunft von Windows liegt in .NET
COM und die Abarten sind im selben Moment gestorben, als .NET als Zukunftsplattform von MS propagiert wurde. .NET wird sich durchsetzen, ob es nun alle wollen oder nicht, spielt keine Rolle. MS will es, das reicht. Sich dagegen zu wehren wäre schlichtweg dumm.

Nebenbei ist C# eine wirklich geile Sprache. Es macht Spass damit zu entwickeln.
private Nachricht | Beiträge des Benutzers
hauptmann
myCSharp.de - Member



Dabei seit:
Beiträge: 771
Herkunft: Österreich/Kärnten

beantworten | zitieren | melden

Hi!

Weil C++ lange vor Dingen wie des Erfolgs des Internet,XML etc. erfunden wurde. Ergo ist es recht schwierig eine Ordentliche Integration dieser Dinge in C++ zu machen. Außerdem enthält C# viele nützliche Helfer, die das RAD(Rapid Application Development) enorm fördern. Schon allein dadruch hat C# eine große Daseinsberechtigung.
private Nachricht | Beiträge des Benutzers
Cord Worthmann
myCSharp.de - Member



Dabei seit:
Beiträge: 1205

beantworten | zitieren | melden

sie c# syntaktisch und funktionell einfach so, wie es von MS gemeint ist *g* - als eine verbesserung von c++!
...im grunde wie java.

klassische probleme von c++ wurden ausgemerzt, vor allem durch die bereits genannte typsicherheit.
durchfallen in select/case-anweisungen ist nicht mehr möglich usw...

durch die automatische speicherverwaltung ist es nicht mehr notwendig, dass der coder selbst sich darum kümmert - bisweilen ein wahrer segen!

und - ganz wichtig - c#, bzw. das .net-framework werden wohl auch zukünftig vergleichsweise plattformunabhängig anzusehen sein - portierungen auf z.b. linux sind schon recht weit entwickelt.
du schreibst also wie in java einen einzigen code, der, so er nicht zu speziell ist, auf allen unterstützten plattformen läuft.

auch ein mittelmässiger coder kann mittels c# schnell zum zuge kommen, wohingegen performante und stabile programmierung unter c/c++ schon einige jahre erfahrung erfordert.



grtz
chief
private Nachricht | Beiträge des Benutzers
Ftee
myCSharp.de - Member



Dabei seit:
Beiträge: 71

beantworten | zitieren | melden

Was mir noch einfällt....

Schau NICHT nach C# .... schau auf das .NET Framework!

Du kannst da locker mit C++.NET arbeiten, wenns Dir Spass macht. Auch mit VB.NET, mit Delphi.NET, mit Eiffel.NET oder mit J# oder oder oder......

Es geht nicht um C#. Es geht um .NET. C# ist lediglich eine Sprache, die dem Framework .NET auf den Leib geschrieben wurde, und dieses am besten ausnutzen kann.

Und dazu ist es vollkommen egal, in welcher Sprache du dein Assembly (DLL) geschrieben hast, oder in welcher Sprache es geschrieben wurde. Es kann benutzt werden.

Warum nun C#? Ganz einfach, weil es .NET am besten ausnutzt, und weil es simpelst zu erlernen ist. Es gibt etwas weniger als 40 Schlüsselwörter, und die Syntax ist C/C++ kompatibel.
private Nachricht | Beiträge des Benutzers
zeus
myCSharp.de - Member

Avatar #avatar-8.jpg


Dabei seit:
Beiträge: 451
Herkunft: /home

beantworten | zitieren | melden

Hi,

wenns dir Spass macht, in C++ zu programmieren, dann lad dir mal VS Express-Beat herunter, und Spiel mal 'n bisschen mit C++/CLI rum. Es unterstützt das volle Standart-C++, und das volle .net (Delegates, Events, Generics...). Du siehst, es ist egal, in welcher Sprache du .net Programmierst. C# wird aber von vielen Programmierern bevorzugt, weil es auf .net zugeschitten ist, und keine Altlasten mit sich trägt.
Viele Grüße
www.mycsharp.de

Bitte vor dem Fragen immer in die FAQ schauen und die Suche benutzen. Danke.
private Nachricht | Beiträge des Benutzers
Franknstein
myCSharp.de - Member



Dabei seit:
Beiträge: 531

beantworten | zitieren | melden

Wer mit C# programmiert hat und als Referenz mal mit C++ der wird feststellen, dass C# deutlich besser von der Hand geht, und bei den meisten Aufgaben weniger Aufwand betrieben werden muss, um diese zu entwickeln.
Managed C++ finde ich noch nicht allzugut, denn man wird wie gesagt zimlich eingeschränkt..
Aber ich muss sagen, dass man mit isoC++ und wxWindows auch zimlich gut Programme erstellen kann.... allerdings musst du da aufpassen, dass man auch wieder alles wieder löscht was man mit new erzeugt hat....

--
mfg
Franknstein
Besuchen sie das VisualC++ - Forum
private Nachricht | Beiträge des Benutzers
Vellas
myCSharp.de - Member



Dabei seit:
Beiträge: 854

beantworten | zitieren | melden

Hi!

Also ich programmiere zwar auch in C#, habe mein letztes Projekt in C++.net (weiterentwicklung eines C#-Programms) realisiert und hatte dabei keine Probleme, wobei ich sagen muss das besonders die Stringverarbeitung in C# leichter ist, da in C++ alles Pointer sind.
Was teilweise noch unschön ist, ist der Nachteil das es kein foreach gibt wie in C# (abgesehen von dem der Standardbibliothek). Was noch sehr gut wäre bei C++, wenn man die Standardbibliothek besser nutzen könnte, diese ist teilweise nicht kompatibel zum .NET-Framework, was sich wie zeus bereits sagte ja zu .NET2.0 ändern soll.
Ein schönes Beispiel ist dabei das auslesen der PCs im Netzwerk, siehe dir dazu mal die Codes in C# und in C++ an:
C++: http://www.visual-cplusplus.net/forum/cms_view_article.php?aid=4
C#: http://www.mycsharp.de/wbb2/thread.php?threadid=1474

Welche Sprachen es für .NET gibt habe ich mal aus der MSDN gesucht, du kannst sie dir hier ansehen:
http://www.visual-cplusplus.net/forum/cms_view_article.php?aid=2

Ich für meinen Teil habe ich aber mehr entschlossen C++ in .NET zu programmieren, obwohl C# zugegebenermaßen in einigen Punkten besser ist. Allerdings muss ich dann nicht unbedingt DLLs verwenden um diverse Klassen zu benutzen und ich kann auch Klassen die ISO und .NET verwenden schreiben, was man aber nicht unbedingt braucht.

IMHO ist es Geschmackssache mit welcher Sprache man programmiert, .NET-Framework ist in allen Sprachen gleich anwendbar, immerhin werden ja auch die gleichen NS/Klassen verwenbet.


Code-Hacker
private Nachricht | Beiträge des Benutzers
Unikum
myCSharp.de - Member



Dabei seit:
Beiträge: 229
Herkunft: München

beantworten | zitieren | melden

Hallo,
auch als Neuling in der Programmierung und Umschüler, hat unser Dozent mal gesagt C# und Java und alle anderen Sprachen die eine externe Laufzeitumgebung benutzen, damit deren Programme funktionieren, werden NICHT als Hochsprache interpretiert, sondern nur als Interpretersprache. Einfach auch dem Grund, weil die Engine von z.B. C# oder Java in nichts anderem als C++, bzw. C geschrieben worden sind, damit C# oder Java rauskommt. Denn C# kann sich nicht selbst schreiben.
Im Hintergrund laufen nichts anderes als C++-Klassen (wie bei Basic), die den Code einfach erstmal übersetzen.
Als Hochsprache könnte man die Sprachen erst dann bezeichnen, wenn der Übergang gleich zum Assembler erfolgt (sprich native Codes müssen erstellt werden können), ohne das eine andere Hilfssprache von Extern nötig ist.
private Nachricht | Beiträge des Benutzers
GhoBu
myCSharp.de - Member



Dabei seit:
Beiträge: 36
Herkunft: Stade

beantworten | zitieren | melden

Moin,
Zitat
Original von Unikum
Als Hochsprache könnte man die Sprachen erst dann bezeichnen, wenn der Übergang gleich zum Assembler erfolgt (sprich native Codes müssen erstellt werden können), ohne das eine andere Hilfssprache von Extern nötig ist.

dieses liefert aber keinen Grund C# als Interpretersprache zu bezeichnen. Denn der aus C# generierte MSIL wird nicht interpretiert, sondern in nativen Code übersetzt und dann ausgeführt.

Gruß
Jürgen
private Nachricht | Beiträge des Benutzers
talla
myCSharp.de - Experte

Avatar #avatar-3214.jpg


Dabei seit:
Beiträge: 7290
Herkunft: Esslingen

beantworten | zitieren | melden

Zitat
Original von Unikum
Hallo,
auch als Neuling in der Programmierung und Umschüler, hat unser Dozent mal gesagt C# und Java und alle anderen Sprachen die eine externe Laufzeitumgebung benutzen, damit deren Programme funktionieren, werden NICHT als Hochsprache interpretiert, sondern nur als Interpretersprache. Einfach auch dem Grund, weil die Engine von z.B. C# oder Java in nichts anderem als C++, bzw. C geschrieben worden sind, damit C# oder Java rauskommt. Denn C# kann sich nicht selbst schreiben.
Im Hintergrund laufen nichts anderes als C++-Klassen (wie bei Basic), die den Code einfach erstmal übersetzen.
Als Hochsprache könnte man die Sprachen erst dann bezeichnen, wenn der Übergang gleich zum Assembler erfolgt (sprich native Codes müssen erstellt werden können), ohne das eine andere Hilfssprache von Extern nötig ist.

Dein Dozent ist da aber leicht fehlinformiert.

Interpretiert wird da nämlich gar nichts. Beim Erstellen wird erst der C# Code in IL übersetzt und dann beim Start vom Programm von IL in Maschienencode kompiliert! Da wird nichts interpretiert. In welcher Sprache der C# Kompiler geschrieben ist kann ich dir nicht sagen, aber die BCL (Base Class Library) ist in C# geschrieben und gerade die macht ja den Großteil aus, was viele immer für C# halten. Und der Mono C# Kompiler ist z.b. vollständig in C# geschrieben und selfhosting - sprich er kompiliert sich selber.

Wieso soll das deiner Meinung nach nicht gehen?

Und wenn C# und Java keine Hochsprachen sind fress ich nen Besen! Das sind eindeutig welche. Und es geht nicht danach ob sie Maschienencode direkt generieren, sondern eher nach funktionalen Merkmalen.
Baka wa shinanakya naoranai.

Mein XING Profil.
private Nachricht | Beiträge des Benutzers
cYaONE
myCSharp.de - Member



Dabei seit:
Beiträge: 62
Herkunft: Unterfranken/Bayern

beantworten | zitieren | melden

Zitat
Original von Unikum
Einfach auch dem Grund, weil die Engine von z.B. C# oder Java in nichts anderem als C++, bzw. C geschrieben worden sind, damit C# oder Java rauskommt. Denn C# kann sich nicht selbst schreiben.

So ein Quatsch!

Warum sollte man in C# keinen C#-, C/C++- oder Java-Compiler schreiben können? (Ich hoffe dass du das gemeint hast) - Das ganze .NET Framework (mit CLR und allem drum und dran) könnte damit geschrieben werden ...
private Nachricht | Beiträge des Benutzers
Noodles
myCSharp.de - Experte



Dabei seit:
Beiträge: 4802
Herkunft: Leipzig

beantworten | zitieren | melden

Zitat
Original von cYaONE
Zitat
Original von Unikum
Einfach auch dem Grund, weil die Engine von z.B. C# oder Java in nichts anderem als C++, bzw. C geschrieben worden sind, damit C# oder Java rauskommt. Denn C# kann sich nicht selbst schreiben.

So ein Quatsch!

Warum sollte man in C# keinen C#-, C/C++- oder Java-Compiler schreiben können? (Ich hoffe dass du das gemeint hast) - Das ganze .NET Framework (mit CLR und allem drum und dran) könnte damit geschrieben werden ...

Der größte Teil des Frameworks ist auch in C# geschrieben.
private Nachricht | Beiträge des Benutzers
Franknstein
myCSharp.de - Member



Dabei seit:
Beiträge: 531

beantworten | zitieren | melden

Zitat
Der größte Teil des Frameworks ist auch in C# geschrieben. Augenzwinkern
Und ich behaupte das ist einer der Gründe warum es so wenige Bugs gibt.....
Zitat
Original von Unikum
Einfach auch dem Grund, weil die Engine von z.B. C# oder Java in nichts anderem als C++, bzw. C geschrieben worden sind, damit C# oder Java rauskommt. Denn C# kann sich nicht selbst schreiben.

Es ist gang und gebe ein Compiler für eine Sprache mit einer Sprache selbst zu schreiben. Und das geht so: Zuerst schreibt man einen relativ schlechen Compiler mit C oder sowas in der Art für die neue Programmiersprache. Dann erstellt man mit der neuen Programmiersprache eine neuen, besseren Compiler, kompilliert diesen mit dem alten, und dann nochmal mit sich selbst(Der alte optimiert ja kaum).... Genau so wurde das vermutlich auch bei C# gemacht(Bei mono sogar sicher).... das Framework ist zum Teil mit C# gemacht, aber vermutlich ist der Kern, welcher die Maschienensprache aus dem IL erzeugt, ist mit C oder sowas erstellt(C++ warscheinlich nicht, da zu abstakt). Das vermute ich jedenfalls, aber ich weiß nicht, ob das wirklich zutrifft.....

--
mfg
Frankstein
Besuchen sie das VisualC++ - Forum
private Nachricht | Beiträge des Benutzers
NoOneKnows
myCSharp.de - Member

Avatar #avatar-1526.gif


Dabei seit:
Beiträge: 334
Herkunft: Hannover

beantworten | zitieren | melden

Um nochmal auf die ursprüngliche Frage zurückzukommen. C# und C/C++ haben an sich nichts gemein, mit Ausnahme der grundlegenden Syntax. Hinter den Sprachen stecken zwei unterschiedliche Arten Anwendungen zu entwickeln. In C/C++ brauchste eben 5 Stunden um eine Windows-Anwendung zu entwickeln und in C# eben nur eine. Die Vorteile liegen also auf der Hand. Die meisten .NET-Entwickler arbeiten mit Sprachen wie C# oder VB.NET und die wenigsten mit Managed C++. Das hat eben seine berechtigten Gründe

C++ is auch schon recht alt und damit eben einfach nicht mehr Stand der Technik. In bestimmten Bereichen ist der Einsatz durchaus sinnvoll und berechtigt aber für tagtägliche Windows oder Datenbank-Entwicklung einfach komplett ungeignet. Ziel muß es immer sein, mit so wenig Arbeit wie möglich sein Ziel zu erreichen. Außerdem kommt hinzu, das C# um ein vielfaches leichter zu erlernen ist als C/C++. Da ises mit dem ganzen Pointerzeugs eher ne Wissenschaft für sich. Pointer sind in modernen Programmiersprachen völlig überflüssig. Das ist nur ein Beispiel. Wie gesagt, man kann direkt nach Rom fahren oder auch ein Umweg über New York machen... *g*
([bb]|[^b]{2})
private Nachricht | Beiträge des Benutzers
Noodles
myCSharp.de - Experte



Dabei seit:
Beiträge: 4802
Herkunft: Leipzig

beantworten | zitieren | melden

Zitat
Original von NoOneKnows
In C/C++ brauchste eben 5 Stunden um eine Windows-Anwendung zu entwickeln und in C# eben nur eine.

Mit C++ kann man keine Windows Anwendungen entwickeln.
Man benötigt dazu immer eine zusätzlich Library (WinAPI, MFC, VCL, ....).
private Nachricht | Beiträge des Benutzers
Golo Roden
myCSharp.de - Member

Avatar #avatar-2167.png


Dabei seit:
Beiträge: 4649
Herkunft: Riegel am Kaiserstuhl

beantworten | zitieren | melden

Zitat
Mit C++ kann man keine Windows Anwendungen entwickeln.
Man benötigt dazu immer eine zusätzlich Library (WinAPI, MFC, VCL, ....).

Ebenso wenig wie mit C#. Auch dazu benötigt es das .NET Framework, und das ist nun mal nicht die Sprache C#.
Wissensvermittler und Technologieberater
für .NET, Codequalität und agile Methoden

www.goloroden.de
www.des-eisbaeren-blog.de
private Nachricht | Beiträge des Benutzers
VizOne
myCSharp.de - Member

Avatar #avatar-1563.gif


Dabei seit:
Beiträge: 1551

beantworten | zitieren | melden

@NoOneKnows: ich weiß, du meinst es gut, aber was du sagst, lässt mir in weiten Teilen die Haare zu Berge stehen!
Zitat
Original von NoOneKnows
C++ is auch schon recht alt und damit eben einfach nicht mehr Stand der Technik.
Alt != veraltet. C++ ist ausgereift. Allerdings vermute ich auch, dass der Trend in Zukunft eher in Richtung verwaltete Sprachen gehen wird.
Zitat
In bestimmten Bereichen ist der Einsatz durchaus sinnvoll und berechtigt aber für tagtägliche Windows oder Datenbank-Entwicklung einfach komplett ungeignet.
Unsinn. Warum wurden sonst so unendlich viele Windows-Anwendungen in C++ geschrieben?
Zitat
Ziel muß es immer sein, mit so wenig Arbeit wie möglich sein Ziel zu erreichen.
Grundsätzlich stimmt das schon, aber so wie du das sagst, klingt es viel zu dogmatisch.
Zitat
Da ises mit dem ganzen Pointerzeugs eher ne Wissenschaft für sich. Pointer sind in modernen Programmiersprachen völlig überflüssig.
Vollkommener Unsinn. Zeiger sind ein Mittel der Indirektion, und ohne Indirektion kommt keine Programmiersprache aus, die etwas leisten will. Auch C#/.NET verzichtet nicht auf Zeiger (nur sagt man hier gerne Referenzen). Wenn du MC++ programmierst, wird das deutlich. Nur weil C# die typischen C++-Symbole vor dir standardmäßig versteckt, heißt es nicht, dass dort nicht mit Zeigern/Referenzen gearbeitet wird.
Zitat
Das ist nur ein Beispiel. Wie gesagt, man kann direkt nach Rom fahren oder auch ein Umweg über New York machen... *g*
Ohne Zeiger müsste ich mir ganz Rom nach hause holen - mit Zeigern nur ne Ansichtskarte oder einen Atlas.

Um eines klarzustellen - ich bin ein großer Verfechter von C# (habe zuvor allerdings Jahre lang in C++ geschrieben) und halte die Sprache im täglichen Einsatz dem syntaktisch komplizierteren C++ was Effizienz angeht deutlich überlegen (deshalb programmiere ich z.Z. auch mindestens zehn Mal so viel in C# wie in C++). Allerdings klingen deine Aussagen für mich so, als bist du ein gescheiterter C++ler der nun in C# sein Asyl sucht


MfG VizOne
private Nachricht | Beiträge des Benutzers
NoOneKnows
myCSharp.de - Member

Avatar #avatar-1526.gif


Dabei seit:
Beiträge: 334
Herkunft: Hannover

beantworten | zitieren | melden

Zitat
Original von VizOne
@NoOneKnows: ich weiß, du meinst es gut, aber was du sagst, lässt mir in weiten Teilen die Haare zu Berge stehen!
Dann zeigt das provokante Posting wohl doch seine Wirkung Naja, nix gegen C++, aber so wirklich konnte ich mich dafür nie begeistern. Man hat uns damit 3 Jahre in der Berufsschule gequält und das ist schon viel mehr als es eigentlich bräuchte um von C++ geheilt zu werden
Zitat
Allerdings vermute ich auch, dass der Trend in Zukunft eher in Richtung verwaltete Sprachen gehen wird.
Eindeutig! Mit immer weniger Quellcode, soll immer mehr Arbeit verrichtet werden. Effizienz ist sehr wichtig und das leisten eben nur solche Sprachen wie C# oder Java.
Zitat
Unsinn. Warum wurden sonst so unendlich viele Windows-Anwendungen in C++ geschrieben?
Leider gibts C# erst seit 2 Jahren Ne, aber im Ernst: Sprachen wie VB6 waren schon immer deutlich besser für Windows-Entwicklung geeignet als C++. Die MFC ist so zum Beispiel ein einziges Rätsel für sich. Um da durchzusteigen brauchts wahrscheinlich schon allein ein Studium von 10 Semestern. Da ist das .NET-Framework wesentlich verständlicher.
Zitat
Grundsätzlich stimmt das schon, aber so wie du das sagst, klingt es viel zu dogmatisch.
Dogmatisch hat immer so ein negativen Unterton. Es ist schon sehr wichtig. Dafür kann man eben bei heutigen Prozessoren in Kauf nehmen, das MSIL-Programme etwas langsamer ausgeführt werden als C++-Anwendungen.
Zitat
Vollkommener Unsinn. Zeiger sind ein Mittel der Indirektion, und ohne Indirektion kommt keine Programmiersprache aus, die etwas leisten will. Auch C#/.NET verzichtet nicht auf Zeiger (nur sagt man hier gerne Referenzen). Wenn du MC++ programmierst, wird das deutlich. Nur weil C# die typischen C++-Symbole vor dir standardmäßig versteckt, heißt es nicht, dass dort nicht mit Zeigern/Referenzen gearbeitet wird.
Ich bin nich ganz unwissend Klar, wird in C# oder Java mit Referenzen gearbeitet. Aber diese Sprachen nehmen einem selbst dadurch Denkarbeit ab. Ich meine unter anderem den Adress-Operator, Dereferenzierungs-Operator oder Pfeil-Operator. Allesamt überflüssig dadurch. Und solche Dinge wie Pointer auf Pointer belasten nur unnötig die Nerven. Ich mein, es gibt Freaks die brauchen sowas. Es sei ihnen gegönnt, damit sie glücklich werden *g* Aber der vernunftbegabte Programmierer ist froh, wenn er sich bei der Programmierung auf die wesentlichen Aspekte beschränken kann. So bleibt der Kopf frei für andere Dinge
Zitat
Ohne Zeiger müsste ich mir ganz Rom nach hause holen - mit Zeigern nur ne Ansichtskarte oder einen Atlas.
Ne, is schon klar, jede Sprache braucht irgendwo Zeiger. Aber in C/C++ muß man aufpassen. Verrutscht dir nämlich beim markieren der Strecke im Atlas das Lineal, dann kannst du auch leicht mal in Afghanistan rauskommen. Und sowas kann dir in C# nicht passieren ;-P
Zitat
Allerdings klingen deine Aussagen für mich so, als bist du ein gescheiterter C++ler der nun in C# sein Asyl sucht
*räusper* Ich würd sagen ich bin schiffbrüchiger VB6-Programmierer, der in C# seine Paradiesinsel gefunden hat
([bb]|[^b]{2})
private Nachricht | Beiträge des Benutzers
Noodles
myCSharp.de - Experte



Dabei seit:
Beiträge: 4802
Herkunft: Leipzig

beantworten | zitieren | melden

Zitat
Original von NoOneKnows
Ne, aber im Ernst: Sprachen wie VB6 waren schon immer deutlich besser für Windows-Entwicklung geeignet als C++. Die MFC ist so zum Beispiel ein einziges Rätsel für sich.

Das stimmt wohl, aber ich würde es anders ausdrücken:
GUI -> VB
Logik -> C++
private Nachricht | Beiträge des Benutzers
Ftee
myCSharp.de - Member



Dabei seit:
Beiträge: 71

beantworten | zitieren | melden

Zitat
Original von Noodles
Zitat
Original von NoOneKnows
Ne, aber im Ernst: Sprachen wie VB6 waren schon immer deutlich besser für Windows-Entwicklung geeignet als C++. Die MFC ist so zum Beispiel ein einziges Rätsel für sich.

Das stimmt wohl, aber ich würde es anders ausdrücken:
GUI -> VB
Logik -> C++


Wer sich zur Oberflächenprogrammierung VC++ ausgesucht hatte, war mich Sicherheit auf der GUI nicht wirklich effektiv....
Borland C++ Builder ist da um längen besser.
(Teilweise ist der auch im Vergleich zu C# besser!)

Allerdings ist die reine Programmierung unter VC++ insgesamt angenehmer. Aber man kann ja locker nen Dll-Mix machen

Und C++ ist garnicht so schlimm, auch die Pointer nicht
Und sowas wie eine Triple-Pointerdefinition (***bla) auf die dann im Code nochmal ein Pointer-Cast über einen Pointer auf den Pointer mit sich machen lässt ((type*)*(*bla)), sorgt zumindest für ein irres grinsen im Gesicht, wenn es klappt

Man weiss zwar nicht ganz hundertprozentig was nun genau wo passiert, aber ohne diesen leicht mystischen Touch würds doch keinen Spass machen
private Nachricht | Beiträge des Benutzers
NoOneKnows
myCSharp.de - Member

Avatar #avatar-1526.gif


Dabei seit:
Beiträge: 334
Herkunft: Hannover

beantworten | zitieren | melden

Zitat
Original von Ftee
Und C++ ist garnicht so schlimm, auch die Pointer nicht
Und sowas wie eine Triple-Pointerdefinition (***bla) auf die dann im Code nochmal ein Pointer-Cast über einen Pointer auf den Pointer mit sich machen lässt ((type*)*(*bla)), sorgt zumindest für ein irres grinsen im Gesicht, wenn es klappt
Das hört sich wie ein "Denn sie wissen nicht, was sie tun" an, naja, Freaks halt Ne aber ehrlich, is das bei so nem Erfolgserlebnis so als wenn man grad auf Gras is? Dann muß ich mir das Zeug auch mal reinziehen
([bb]|[^b]{2})
private Nachricht | Beiträge des Benutzers
Franknstein
myCSharp.de - Member



Dabei seit:
Beiträge: 531

beantworten | zitieren | melden

Zitat
Zitat:

Ohne Zeiger müsste ich mir ganz Rom nach hause holen - mit Zeigern nur ne Ansichtskarte oder einen Atlas.

Ne, is schon klar, jede Sprache braucht irgendwo Zeiger. Aber in C/C++ muß man aufpassen. Verrutscht dir nämlich beim markieren der Strecke im Atlas das Lineal, dann kannst du auch leicht mal in Afghanistan rauskommen. Und sowas kann dir in C# nicht passieren ;-P
Sollte eigentlich nicht, aber das passiert auch ab und an, besonders bei Plugins für Map Point....

Im übrigen kann man das Argument, dass man mit C++ keine ordentlichen GUIs erstellen kann, nicht gelten lassen. Denn es gibt geniale Apis wie wxWindows(das ist echt geil) oder QT von Trolltech (soll nicht schlecht sein, aber ich hatte die ehre noch nicht). Ok, vielleicht braucht man bei wxWindows einige Wochen um sich einzuarbeiten, und auch etwas länger für die Projektrealisiereung, aber wenn man nur mit wxWindows (und im extremsten Falle noch Boost) Programme erstellen kann, die auf wirklich jeder Plattform laufen, die eine GUI hat, dann kann es einem das wohl Wert sein... (Somit währe auch das Argument der Plattforminkompatiblität ausgeräumt)

--
mfg
Franksntein
Besuchen sie das VisualC++ - Forum
private Nachricht | Beiträge des Benutzers
FZelle
myCSharp.de - Experte



Dabei seit:
Beiträge: 10083

beantworten | zitieren | melden

Es geht hier nicht darum, das man in C++ nicht vernünftige GUI's hinbekommt,
denn das liegt wirklich in der Verantwortung der Programmierer,
es geht darum, das man sich bei C++ um jeden schei.... selber kümmern muss.

Wenn Du einen Treiber für eine Echtzeit messkarte schreibst, ist C/C++
und IA86 wichtig, aber ansonsten ....

Wer schon mal in einem 500.000 Zeilen Programm einen Programmfehler
gesucht hat, der durch einen Memmory-overrun passiert ist, der weis wovon
ich rede.

Weshalb gibt es denn Lint und andere Konsorten?

Performance ergibt sich nicht nur aus dem Compilat, sondern auch aus
den Algorythmen und der Aufgabe.
Schau dir mal den Performance-Test der C't zu C/++,Java,C# und Delphi
an : c't 19/03, Seite 204, und c't 21/03, Seite 222


Aber diese Diskusion gab es schon zu den Zeiten als Delphi kam.

Und Platformunabhängigkeit kann ich nicht mehr höhren.
Ich bin seit 15 Jahren als Software-Entwickler unterwegs, und ständig
wollen Kunden/Chefs, das man dies oder jenes aber Platformunabhängig
implementiert.
Aber keiner von denen weiss was das heisst, oder wird es jemals brauchen.

An Java AWT sieht man was echte Platformunabhängig im Allgemeinen bedeutet:
Aufgabe der Vorteile einer bestimmten Plattform!
Performance könnte besser sein.

Erst als Sun sich per Swing auf die jeweiligen Plattformen eingestellt hat,
wurde es ein bischen besser.

Aber wirklich gut sehen die meisten Java-Programme nicht aus.
Das wird dir jeder MAC und Windows Benutzer bestätigen.
Linux-Leute sehen das anders, dann da sehen fast alle Programme so
aus.

Das look und feel ist halt bei jeder Plattform anders.

Aber jeder soll mit einer Sprache glücklich werden.

Aber von beruflicher Seite ist zu sagen, das TimeToMarked mit C#/VB.NET
deutlich kürzer ist.
private Nachricht | Beiträge des Benutzers
Vellas
myCSharp.de - Member



Dabei seit:
Beiträge: 854

beantworten | zitieren | melden

Hi!

@FZelle:
Wenn ich mich recht erinner ist das der c'T-Tes der im c-plusplus-Forum sehr heiß duskutiert wurde und nachdem sich ein paar extrem gute C++ Programmierer daran gesetzt haben diesen Code einmal richtig zu schreiben wie es ein C++-Profi macht sahen die anderen Sprachen schon wieder um einiges schlechter aus als dargestellt. Die c'T ist sowieso eine Sache für sich. Ich habe gemerkt das man Experten lieber nicht auf die c'T oder heise.de anspricht, man sollte sich bessere Informationsquellen suchen.
Um jeden Scheiß muss man sich in C++ aber auch nicht kümmern. Immerhin um wesentlich weniger als in C, was wenn man beides mal intensiev programmiert hat wirklich auffällt. Wem C zuviel ist der hat vermutlich noch nie Assembler versucht.

Vielleicht bin ich jemand der nicht richtig von C++ lassen kann da es schon immer (seit ich mit Programmierung zu tun hatte das erste mal) mein Traum war C++ zu beherrschen. Ich mein wer einen Pointer auf einen Pointer auf einen Pointer zeigen lässt hat des öfteren einen Denkfehler. Es kommt sogar selten vor das man einen Pointer auf einen Pointer benötigt. Naja, ich glaube ich würde was vermissen wenn ich gar keine Pointer mehr zur Verfügung hätte und ich bin nicht unbedingt jemand der diese Teile liebt.
Abgesehen davon denke ich lassen sich Pointer gegenüber C sehr stark vermeiden und statt dessen Iteratoren (und Algorithmen) verwenden. In C++ muss man sich also nicht mehr um so viel selbst kümmern. Also ich programmiere jetzt schon länger C++ und als ich jetzt C von der FH aus lernen musste habe ich sehr viel vermisst besonders weil man sehr viel selbst machen muss und keine fertigen Implementierungen verwenden kann, wie z.B. die Liste oder die Map weshalb man sich sich selbst so einen Mischmasch aus Map und List bauen muss.
Und eine GC in C++ einzubauen ist auch nicht das größte Problem, davon gibt es ja zig getestete, wer's also braucht kann dies auch in C++ haben, wenn auch nicht direkt mitgeliefert, was ich sehr gut finde.
Naja, eine Pointerdiskussion hatten wir ja bereits.

GUI-Entwicklung ist mit Borland wirklich sehr leicht (wenn ich die IDE auch nicht besonders mag). Aber da muss ich FZelle zustimmen, wie die Oberfläche am Ende aussieht das ist dem Programmierer sein Problem.

Was die Zukunft betrifft so werden C und C++ wohl weiterhin eine wichtige Rolle spielen, zumindest in naher Zukunft. Ich gucke des öfteren bei den Stellenangeboten und ich habe bisher nur 2x C# dort gesehen, ansonsten wird viel nach Delphi und C/C++ gefragt. Und bei C++ ist es ja nun nicht so als das diese Sprache nicht erweitert würde. Immerhin soll 2006 ein neuer Standard kommen, dabei wird vermutlich Boost mit aufgenommen.

Eben nochmal den Thread durchgesehen und bin da auf das Stichwort Effizienz von NoOneKnows gestoßen. Das mit der Effizienz wurde des öfteren getestet und es kamen verschiedene Ergebnisse bei verschiedenen Aufgaben heraus. Und schlecht abschneiden tut C++ da nicht wirklich, teilweise sind die Programm gleich effizient. Und ein Java/C#-Programm wird mit weniger Quellcode bestimmt nicht mehr verrichten als das C++-Programm. Es sei denn du gehst von der Tiparbeit des Programmierers aus.


Code-Hacker
private Nachricht | Beiträge des Benutzers
Noodles
myCSharp.de - Experte



Dabei seit:
Beiträge: 4802
Herkunft: Leipzig

beantworten | zitieren | melden

Zitat
Original von Code-Hacker
Was die Zukunft betrifft so werden C und C++ wohl weiterhin eine wichtige Rolle spielen, zumindest in naher Zukunft. Ich gucke des öfteren bei den Stellenangeboten und ich habe bisher nur 2x C# dort gesehen, ansonsten wird viel nach Delphi und C/C++ gefragt.

8o Echt?
Also ich finde, dass die Stellenangebote zu .NET (C#/VB.NET) immer mehr werden. Man muss warten, was passiert nachdem Windows Longhorn auf dem Markt ist.
private Nachricht | Beiträge des Benutzers
Vellas
myCSharp.de - Member



Dabei seit:
Beiträge: 854

beantworten | zitieren | melden

Hi!

@Noodles:
Ja das stimmt. Ich habe wirklich nur 2x ein Angebot zu C# gefunden. Dazu sei angemerkt das es auch die einzigen angebote zu .NET allgemein waren. Ich denke aber auch das sich das häufen wird mit .NET-Angeboten eben wegen Longhorn wie du sagst.

Vielleicht liegt das auch ein wenig an den Regionen. Keine Ahnung die TU München wird vielleicht sogar überhäuft mit Angeboten immerhin gibt es dort ja eine C#.net Veranstaltung.


Code-Hacker
private Nachricht | Beiträge des Benutzers
Noodles
myCSharp.de - Experte



Dabei seit:
Beiträge: 4802
Herkunft: Leipzig

beantworten | zitieren | melden

Gib hier mal C# als Suchbegriff ein, da kommt schon einige ganze Menge.
private Nachricht | Beiträge des Benutzers