Laden...

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

Erstellt von SirGawain vor 19 Jahren Letzter Beitrag vor 19 Jahren 19.517 Views
SirGawain Themenstarter:in
19 Beiträge seit 2004
vor 19 Jahren
Wozu C#, wenn es C/C++ gibt?

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

N
4.644 Beiträge seit 2004
vor 19 Jahren

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.

165 Beiträge seit 2004
vor 19 Jahren

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++...

F
71 Beiträge seit 2004
vor 19 Jahren

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.

H
704 Beiträge seit 2003
vor 19 Jahren

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.

[last.fm](http://www.last.fm/user/hauptmanAlpha/)
C
1.215 Beiträge seit 2004
vor 19 Jahren

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

F
71 Beiträge seit 2004
vor 19 Jahren

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.

445 Beiträge seit 2003
vor 19 Jahren

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.

F
529 Beiträge seit 2003
vor 19 Jahren

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

V
842 Beiträge seit 2003
vor 19 Jahren

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

U
228 Beiträge seit 2004
vor 19 Jahren

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.

G
36 Beiträge seit 2004
vor 19 Jahren

Moin,

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

6.862 Beiträge seit 2003
vor 19 Jahren

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.

C
61 Beiträge seit 2004
vor 19 Jahren

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 ...

N
4.644 Beiträge seit 2004
vor 19 Jahren

Original von cYaONE

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. 😉

F
529 Beiträge seit 2003
vor 19 Jahren

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.....

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

333 Beiträge seit 2004
vor 19 Jahren

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})

N
4.644 Beiträge seit 2004
vor 19 Jahren

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, ....).

4.207 Beiträge seit 2003
vor 19 Jahren

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

1.373 Beiträge seit 2004
vor 19 Jahren

@NoOneKnows: ich weiß, du meinst es gut, aber was du sagst, lässt mir in weiten Teilen die Haare zu Berge stehen!

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.

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?

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.

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.

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

333 Beiträge seit 2004
vor 19 Jahren

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 🙂

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.

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.

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.

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 😉

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

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})

N
4.644 Beiträge seit 2004
vor 19 Jahren

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++

F
71 Beiträge seit 2004
vor 19 Jahren

Original von Noodles

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 😉

333 Beiträge seit 2004
vor 19 Jahren

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})

F
529 Beiträge seit 2003
vor 19 Jahren

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

F
10.010 Beiträge seit 2004
vor 19 Jahren

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.

V
842 Beiträge seit 2003
vor 19 Jahren

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

N
4.644 Beiträge seit 2004
vor 19 Jahren

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.

V
842 Beiträge seit 2003
vor 19 Jahren

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

N
4.644 Beiträge seit 2004
vor 19 Jahren

Gib hier mal C# als Suchbegriff ein, da kommt schon einige ganze Menge.

333 Beiträge seit 2004
vor 19 Jahren

Original von Code-Hacker
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.

Da magst du durchaus Recht haben, daß sich diese Sprachen im endeffekt doch nicht soviel nehmen. Ein wichtiger Apsekt ist jedoch, das es zeitaufwendiger ist eine Problematik mit C++ zu lösen als sie mit Java oder C# anzugehen. In C++ müssen einem im Hintergrund immer tausende Dinge bewußt sein, sonst rennt man sich schnell den Kopf ein. In C# hält sich das vielmehr in Grenzen, man kann sich leichter auf das wesentliche konzentrieren. Außderdem kommt hinzu das es in C++ länger braucht einen Wissensstand zu erreichen als in C#, sprich C# oder Java lassen sich viel leichter erlernen. Wenn man Jahre benötigt um sich in C++ einschließlich Standardbibliotheken usw. zurechtzufinden, dann ist das für heutige ansprüche uneffizient. Allerdings existiert C++ lange genug, so daß viele Fachkundige vorhanden sind. Wer kann heute schon von sich behaupten, daß er C# + Framework bis in alle Ecken kennt? Dafür ist die Sprache noch zu jung. Aber man sieht das C# extrem großes potenzial hat. Von daher wird sich C++ niemals als anwendungsorientierte Programmiersprache behaupten können, auch wenn es in der Vergangenheit anders war. C++ entspricht für mich nicht mal ansatzweise dem, was man modernes programmieren nennt salz in die wunde streu 😉

([bb]|[^b]{2})

F
529 Beiträge seit 2003
vor 19 Jahren

Wennn ich näher über dieses Thema nachdenke, dann komme ich zu dem Schluss, dass man C++ nicht mit C# vergleichen kann. C# ist extrem mächtig bei der Entwicklung von Anwenungen, die benutzerfreundlich sind. Klar, dafür wurde ja C# auch desingt, ebenso wie es für sichere Anwendungen desingt wurde, da man keine Rücksprungadressen überschreiben oder Overflows erzeugen kann.
C++ dagegen wurde so desingt(kommt natürlich auf den Compiler an), dass C-Programme sehr gut optimiert sind(Keine ArrayÜberlaufprüfungen oder sowas) und daher auch auf langsameren Maschienen weniger Resourcen fressen(wobei es auch auf den Programmierstil ankommt). Außerdem wurde bei C Wert darauf gelegt, dass man mit C++ viele Möglichkeiten bezüglich des Programmierstils hat.(Was bei C# auch bald der Fall ist). Denn man kann mit C++ in einem Programm prozedural, objektorientiert, generisch und was weiß ich nicht noch welche Stile verwenden.

--
mfg
Franknstein

Besuchen sie das VisualC++ - Forum

V
842 Beiträge seit 2003
vor 19 Jahren

Hi!

@NoOneKnows:
Stimmt. Man muss auch das zeitliche betrachten. Ich beschäftige mich jetzt seit 2 Jahren intensiev mit C++ und davor 1 Jahr lang (oder länger) nur theoretisch, wobei ich niemanden hatte der mir irgendwie hätte sagen können was ich falsch mache (mittlerweile lache ich über den Fehler). Und ich kann es immer noch nicht perfekt. Wobei mir die C-Vorlesungen wonach man ausegehen kann das man ANSI-C relativ gut beherrscht sehr geholfen haben, aber das reicht für C++ lange nicht.

Bei C# habe ich mit einem Referenzbuch angefangen und nachdem ich mich mit C++ mehr beschäftigt habe und da alles verstanden habe und auch durch Pascal und Delphi kann ich C# schon viel besser, wenn ich auch das Framework nicht wirklich gut ausnutzen kann, da ich mich darin nicht direkt auskenne. Aber wie du sagst es ist ein wesentlicher Zeitunterschied.

@Franknstein:
Stimmt man hat bei C++ versucht möglichst ein Allroundwerkzeug zu haben und hat dabei viele stärken verschiedener Programmiersprachen (siehe Stroustup Auflage 4. Seite 1.4 "Historische Anmerkungen") berücksichtigt, was auch einigermaßen geklappt hat, aber dafür wie bereits gesagt auch schwer zu erlernen ist.
In C# wird wie in Java alles wie ein Objekt behandelt.

Irgendwie finde ich verleitet C# zur GUI. Was sicher auch wichtig ist in der Softwareentwicklung. Da C# so sicher ist, ist es auch leichter darin ein halbwegs sicheres Programm zu realisieren. C++ kann man wederum sehr gut verwenden wenn es um zeitkritische Routinen geht, wobei man sich da mehr auf die Logik und Richtigkeit als auf das aussehen konzentrieren muss. Zumindest ist das so mein Empfinden wenn ich in den beiden Sprachen programmiere. Darauf komme ich aus folgendem Grund: Ich habe überlegt mein letztes Projekt zu überarbeiten und diverse Routinen in eine C-DLL packe und für die Grafik und damit zusammenhängende Sachen mit C# realisiere. Da C gute Effizienz liefert und C# durch Sicherheit verwaltende Aufgaben und weniger zeitkritische Routinen gut erledigen kann ohne das ich mir unbedingt über 100 andere Sachen noch einen Kopf machen muss.

@Noodles:
Ich werde mal gucken, vielleicht finde ich ja einen Job in meiner Nähe suche schon seit längerem. 🙂

Code-Hacker

4.207 Beiträge seit 2003
vor 19 Jahren

Hallo,

die ganze Diskussion läuft für mein Empfinden in eine gänzlich falsche Richtung. Es war nach einem Vergleich der Sprachen C# und C++ gefragt ... Argumente bezüglich der Eignung zur Entwicklung von GUIs sind hier eindeutig fehl am Platze, auch die MFC und wxWindows und Windows Forms haben hier nichts verloren. Denn es geht um die Sprache, und nicht um die zusätzlich erhältlichen Frameworks.

Die wesentlichen Unterschiede bei den Sprachen - schaut man sich einmal die Sprachreferenzen an - sind wohl:

  • C# ist deutlich stärker objekt-orientiert als C++
  • C# bietet ein Exception-Handling mit try / catch / finally
  • C# verzichtet auf Pointer, benutzt statt dessen Referenzen
  • C# bietet keine Destruktoren und keine Mehrfachvererbung
  • C# baut die OOP stärker aus als C++ mit beispielsweise override und new

Die sonstigen Sprachkonstrukte sind relativ ähnlich, Unterschiede liegen hier nur noch in Details, wie zum Beispiel, dass bei switch kein case-Fallthrough mehr möglich ist.

DAS sind die Unterschiede zwischen den Sprachen. Weder C++ noch C# sind per se besser oder schlechter für GUIs geeignet, da beide Sprachen das nicht out-of-the-box können, sondern zusätzliche Frameworks brauchen.

In diesem Sinne,

Golo

Wissensvermittler und Technologieberater
für .NET, Codequalität und agile Methoden

www.goloroden.de
www.des-eisbaeren-blog.de

X
2.051 Beiträge seit 2004
vor 19 Jahren

Original von golohaas.de

  • C# bietet keine Destruktoren

es gibt Destruktoren auch in C# (oder heißen zu mindest so), die werden allerdings ganz anders behandelt.

  • man kann mit dessen Hilfe nicht bestimmen, wann ein Objekt zerstört wird.
  • Intern wird Destruktor in eine Finalize Methode übersetzt.
  • wird irgendwann von GC aufgerufen
  • man soll aber die Verwendung von Destruktoren vermeiden, das es zu Leistungeinbußen führt

Bsp:

using System;

namespace ConsoleApplication1
{
	class Class1
	{
		public Class1()
		{
			Console.WriteLine("Erstellt!");
		}
		~Class1()
		{
			Console.WriteLine("Gelöscht!");
		}
		[STAThread]
		static void Main(string[] args)
		{
			new Class1();
			GC.Collect();

			Console.ReadLine();
		}
	}
}
333 Beiträge seit 2004
vor 19 Jahren

Original von golohaas.de
die ganze Diskussion läuft für mein Empfinden in eine gänzlich falsche Richtung. Es war nach einem Vergleich der Sprachen C# und C++ gefragt ... Argumente bezüglich der Eignung zur Entwicklung von GUIs sind hier eindeutig fehl am Platze, auch die MFC und wxWindows und Windows Forms haben hier nichts verloren. Denn es geht um die Sprache, und nicht um die zusätzlich erhältlichen Frameworks.

Eine Sprache ohne Bibliotheken ist wertlos, von daher ist das drumherum schon wichtig. Denn wenn du programmierst gehts es nicht darum in wie weit die Sprachen syntaktisch unterschiedlich sind, sondern vielmehr um den Aufwand eine Problematik umzusetzen. Was nützt dir die beste Syntax (ist außerdem eh Geschmackssache), wenn viele Funktionalitäten in den Standardbibliotheken fehlen? Von daher verbinde ich mit einer Programmiersprache nicht nur eine Syntax sondern auch den Umgang mit den verfügbaren Bibliotheken.

  • C# bietet keine Destruktoren und keine Mehrfachvererbung

Ne, jede Klasse darf einen Destruktor besitzen, auch wenn der Nutzen eher Fragwürdig ist.

Mehrfachvererbung brauchts auch nicht unbedingt. Wenn man sich ein vernünftiges Klassenmodell ausdenkt, kommt man sehr gut ohne aus. Mehrfachvererbung macht die Sache auch komplizierter als sie meist wirklich ist.

([bb]|[^b]{2})

4.207 Beiträge seit 2003
vor 19 Jahren

Hallo!

Eine Sprache ohne Bibliotheken ist nicht wertlos ... natürlich unterscheiden sich Programmiersprachen an sich schon ziemlich heftig, was zum Beispiel die Möglichkeiten angeht, Code sauber und objektorientiert strukturieren zu können.

Der Punkt mit den Klassenbibliotheken ist doch, dass es an und für sich jedem offen steht, eine entsprechende Anbindung für jede x-beliebige Sprache zu schreiben. Keine Sprache ist an eine bestimmte Bibliothek unabdingbar gebunden.

Von daher macht es schon Sinn, die Sprache an sich zu vergleichen.

In Basic zum Beispiel (ich meine damit NICHT VB.NET) fehlt mir zum Beispiel die OOP, eine vernünftige Fehlerbehandlung, ... an Perl / Python / PHP gefällt mir nicht, dass sie nicht stark und statisch typisiert sind ... an C++ mag ich eben wieder was anderes nicht. Das hat doch mit den Frameworks zunächst mal gar nichts zu tun.

Gut, zu C# gehört das .NET Framework, aber welches Framework gehört denn nnun zu C++? Das hängt ja wohl vom jeweiligen Hersteller ab, also was soll's? Wenn nach der Berechtigung von C# gegenüber C++ gefragt wird, spielt das Framework zunächst keine Rolle, denn dieses gibt es ja genauso auch für C++.

Man muss also auf die Unterschiede in den Sprachen schauen, und auch hier hat C# einige Vorteile gegenüber C++ meiner Meinung nach ...

Viele Grüße,

Golo

Wissensvermittler und Technologieberater
für .NET, Codequalität und agile Methoden

www.goloroden.de
www.des-eisbaeren-blog.de

F
10.010 Beiträge seit 2004
vor 19 Jahren

Code-Hacker:
Glaube mir, ich habe 10 Jahre in C/C++/IA86 gearbeitet und dabei Software
für Echtzeitsysteme gemacht.
Für diesen Bereich wird sicher auch noch für lange Zeit C# nicht geeignet sein.
Auch kann man "selbst in C/C++" vernünftig Programmieren, und wenn man
sich an gewisse Konventionen hält, auch ohne leaks u.ä.

Es geht MIR hier auch nicht um die Eleganz einer Sprache oder ähnliches.
Aber das DotNet-Framework ist soviel umfangreicher als jede mir bekannte
C/C++ Umgebung.

Und das man in ein C++ Programm einen GC implementieren kann,
ist mir vollkommen klar, er ist aber nicht standartmässig drin, das ist es doch.

Bei DotNet und damit auch C# ist soviel von Haus aus drin, das man sich
in den anderen Systemen erst selber erstellen muss, siehe CodeAccess,
Datenbanken, WindowsForms, WebForms, Compact-Framework ....

Ich hatte mal einen Kollegen, der hat sich 1986 eine "Textverarbeitung" geschrieben in '123' ( falls dir das was sagt 😉).
Es geht, es funktioniert, aber man kann es sich auuch einfacher machen.

Und nur weil Du in der glücklichen Lage bist Lage bist C++ zu meistern,
trifft das leider auf das Groh der normalen Programmierer die ich bis jetzt
getroffen nicht ganz zu.
Die beherrschen zwar das Programmieren mir C/C++ aber was dabei rauskommt
ist selten wirklich effizient(Resourcenschonend) und/oder absturzsicher programmiert.

In DotNet ist es nicht so einfach Memmoryleaks, und fehler durch Pointer-arithmetik zu produzieren.

333 Beiträge seit 2004
vor 19 Jahren

@golohaas.de
Okay, dann unterscheiden sich unsere Auffasungen etwas. Klar ist die Syntax auch wichtig bzw. ob OOP oder nicht. Aber Syntax ist Geschmackssache und OOP-Sprachen gibts mittlerweile auch schon genügend. Von daher ist dies, meiner Meinung, nicht der entscheidende Punkt. Die Bibliotheken bestimmen über den Leistungsumfang. Für C/C++ kann man sich sicherlich noch tausende DLLs ausm Netz ziehen. Bei .NET ist jedoch schon so gut wie alles wichtige dabei. Außerdem ist der Umgang mit Libraries in C/C++ aufwendiger als in C# mit dem Framework. Dazu kommt, daß Programmiersprachen nicht jede X-beliebige Bibliothek nutzen kann. So differenziert man z.B. Assembler/C-Biblotheken, COM-Libraries oder .NET-DLLs. Und wenn ich eben aufgrund des alters einer Sprache oder warum auch immer bestimmte Arten nicht nutzen kann oder nur mit viel Aufwand, dann ist das ein Entscheidender negativer Punkt, schließlich muß der Quellcode im schlimmsten Falle neugeschrieben werden.

Original von golohaas.de
Von daher macht es schon Sinn, die Sprache an sich zu vergleichen.

Hast ja auch recht, im grundegenommen hängt es auch damit zusammen, wie Effizient eine Programmiersprache ist. Es entscheidet sich jedoch auch durch viele andere Faktoren. Die ursprüngliche Frage war ja: Wozu C#, wenn es C/C++ gibt? Der Grund ist eben, das C und C++ heutzutage einfach uneffizient sind. Und daher sollte man das Gesamtbild sehen 🙂

([bb]|[^b]{2})

4.207 Beiträge seit 2003
vor 19 Jahren

Okay, ich gebe Dir an und für sich recht ... aber um auf die ursprüngliche Frage noch einmal einzugehen ...

Nach Deiner Argumentation ist mir nicht klar, wozu ich C# brauche ... was geht bitte mit C# + .NET Framework, was nicht auch mit C++ + .NET Framework ginge?

Ich gebe zu, die Frage ist absichtlich provokativ gestellt 😉

Wissensvermittler und Technologieberater
für .NET, Codequalität und agile Methoden

www.goloroden.de
www.des-eisbaeren-blog.de

V
842 Beiträge seit 2003
vor 19 Jahren

Hi!

@FZelle:
Meistern tu ich die Sprache auch nicht. Ich mache auch noch des öfteren Fehler die zwar im nachhinein irgendwie peinlich sind. Deswegen würde ich sagen das mir noch etwa 1-2 Jahre Erfahrung fehlen bis ich evtl. von beherrschen sprechen darf. So war meine letzte Aussage aber auch nicht gemeint.

Was C# betrifft so denke ich schon das es in der Windowswelt stark an bedeutung bereits zugenommen hat. Allerdings glaube ich kaum das es für wirklich zeitkritische Dinge eingesetzt wird, da dort C/C++ vielleicht sogar Assembler (wohl eher bei nicht optimierenden Compilern) viel besser geeignet sind.

@NoOneKnows:
Ich muss golohaas.de zustimmen. Eine Sprache ohne Bibliothek ist durchaus sehr wertvoll. C beispielsweise kann man ganz genau so ohne Bilbiothek nutzen und die Sprache verliert kaum etwas. Immerhin kann man sich alles was C bereits mitliefert genau so implementieren, wenn man es braucht. Was man natürlich nicht macht, immerhin gehört sie zu C, also bringt das nicht all zuviel. Assembler ist dafür vielleicht sogar ein besseres Beispiel, da muss man eigentlich alles selbst machen, wenn man keine API verwenden kann muss man sich in die Grafikkartenprogrammierung einarbeiten.

Ich sehe C/C++ nicht als uneffizient an. Besonders bei C kann man es wirklich innehalb von 4 Monaten schaffen es zu können. Mehr Zeit hatte ich auch nicht bis zur Klausur (wobei die noch nicht ganz rum sind). Und es geht wirklich, wenn man sich damit ein wenig auseinandersetzt. Immerhin hat man so ANSI-C drauf, ob man es dann beherrscht oder nicht ist eine andere Sache, aber notfalls weiß man einfach wo man nachsehen kann. C++ dauert da schon entscheident länger und die rein OOP orientierten Sprachen sind den Hybriden gegenüber teilweise wirklich leichter zu erlernen, da man direkt ein Konzept und nicht mehrere lernt.

@golohaas.de:
C++ bietet auch das fangen von Ausnahmen, allerdings nur try und catch, es gibt also keinen finally Block. Referenzen sind zumindest in C++ auch möglich.

Code-Hacker

333 Beiträge seit 2004
vor 19 Jahren

Original von golohaas.de
Nach Deiner Argumentation ist mir nicht klar, wozu ich C# brauche ... was geht bitte mit C# + .NET Framework, was nicht auch mit C++ + .NET Framework ginge?

Ganz einfach: Alles was mit C# & Framework geht, geht auch mit C++ & Framework. Überrascht? 🙂 Der Unterschied ist bloß, das sich der C#-Entwickler schon längst von dem wohlverdienten Geld in der Südsee sonnen kann, während der C-Programmier seine Zeit schweißbadend vorm Computer verbringt 😉 Und darin liegt für mich die Ineffizienz. Zugegeben ist in bestimmten Bereichen C unabdingbar. Klassisches Beispiel ist die Spiele-Entwicklung. Jedoch stellen Spiele-Programmierer nur einen winzigen Anteil an allen Software-Entwicklern. Hauptsächlich wird in der Wirtschaft anwendungsorientierte Software, wie Frontends, Datenbank-Applikationen, usw. geschrieben. Und da kommt es auf Highspeed-Development an und nicht auf Highspeed-Applikationen. Programmierer sind teuer und da kann es sich ein Unternehmen nicht leisten einen Programmierer 3 Monate mit einer Endbenutzernawendung in C++ zu beschäftigen, wo es in C# vielleicht 1 Monat bräuchte.

Original von Code-Hacker
Ich sehe C/C++ nicht als uneffizient an. Besonders bei C kann man es wirklich innehalb von 4 Monaten schaffen es zu können. Mehr Zeit hatte ich auch nicht bis zur Klausur (wobei die noch nicht ganz rum sind). Und es geht wirklich, wenn man sich damit ein wenig auseinandersetzt. Immerhin hat man so ANSI-C drauf, ob man es dann beherrscht oder nicht ist eine andere Sache, aber notfalls weiß man einfach wo man nachsehen kann. C++ dauert da schon entscheident länger und die rein OOP orientierten Sprachen sind den Hybriden gegenüber teilweise wirklich leichter zu erlernen, da man direkt ein Konzept und nicht mehrere lernt.

Drücken wirs so aus: C++ ist uneffizienter als C# 🙂 Is ja auch logisch. Wie kann eine Sprache, die vor langer Zeit entstanden ist, effizienter sein als eine Sprache die gerade mal 2 Jahre hinter sich hat. So konnte man aus den Fehlern von C++ lernen und eine neue moderne Programmiersprache entwickeln. Und bei dem Entwicklungs-Apperat, der hinter C# bzw. .NET stand kann man sich auch sicher sein, daß dabei etwas vernünftiges heraus kommt.

So und nun an alle C-Fans hier: Wenn ihr C so effizient und so gut findet, und ihr denkt das es nichts besseres gibt, warum befasst ihr euch dann mit C#? 😉

([bb]|[^b]{2})

H
704 Beiträge seit 2003
vor 19 Jahren

Original von golohaas.de

  • C# bietet ein Exception-Handling mit try / catch / finally

C++ unterstützt ebenfalls Exeption Handling. Sogar (Win32)C hat das schon unterstützt: try,catch,finally und leave.

[last.fm](http://www.last.fm/user/hauptmanAlpha/)
V
842 Beiträge seit 2003
vor 19 Jahren

Hi!

@NoOneKnows:
Eigentlich kam das so das mir in einem Praktikum als ich nach einer IDE fragte zu MS neuer Sprache C# geraten wurde (warum auch immer, der Typ mag MS eigentlich gar nicht so richtig und proggt es auch nicht). Nunja, ich habe mich damit befasst und fand einige Sachen gar nicht schlecht, z.B. das gezwungene "break" in switch-case-Verteilern. Allerdings konnte ich nicht all zu viele unterschiede die rein sprachlicher Natur waren feststellen. Imho braucht man kein foreach und ob man in C# explizit einen nonBoolean prüfen muss mit einem gegenwert oder ob C++ das selbst macht war mir ohnehin immer Wurst, wobei es da scheinbar auch einige Fehler von Programmierern gab, wenn sie nicht explizit verglichen haben.

Ich finde C++ auch weiterhin besser, allein weil ich damit auch Plattformunabhängige Systeme erstellen kann (wobei es mehr Plattformen für C als C++ gibt, da fehlen wohl noch die eine oder andere). Abgesehen davon habe ich bei mC++ noch zusätzlich (wenn auch bis zu diesem Zeitpunkt nicht ausgereift) neben .NET die STL verwenden zu können was heißt das ich mich nicht unbedingt in alles neu einarbeiten muss, desweiteren entsteht so der Vorteil das ich bereits entwickelte Namsespaces/Klassen(/Bibltiotheken) ohne weitere Schwierigkeiten wiederverwenden kann.

In wiefern C# effizienter ist hängt größtenteils allerdings damit zusammen wie gut ich C/C++ kann. Wenn ich das besser kann, würde ich es auch weiter programmieren. Dies ist bei mir und (O-)Pascal genau so. Ich komme nicht ganz mit dieser Syntax klar (ich hasse sie) und hasse noch ein paar andere unschöne Dinge und ich kann C/C++ wesentlich schneller und effizienter programmieren und genau so verhält es sich in C#, jemand der lieber C++ programmiert wird sich in C# vielleicht von anderen dingen gestört fühlen und deswegen lieber bei C++ bleiben.

Und ich finde es nicht verwerflich das sich ein C++ Programmierer mit C# beschäftigt obwohl er das andere lieber mag. Umso mehr Sprachen man einmal programmiert hat umso besser kommt man in Projekte rein besonders wenn bei diesen mehr als nur eine Sprache benutzt wird und man in (fast) allen wenigstens mal die Grundlagen erlernt hat.

@hauptmann:
Ja, aber es gibt kein finally (siehe mein letztes Posting).

Code-Hacker

H
704 Beiträge seit 2003
vor 19 Jahren

Original von Code-Hacker

@hauptmann:
Ja, aber es gibt kein finally (siehe mein letztes Posting).
r

in C++ nicht, aber bei Win32 C gibts ein finally 😉

[last.fm](http://www.last.fm/user/hauptmanAlpha/)
F
71 Beiträge seit 2004
vor 19 Jahren

Ich denke das die Diskussion hier immer wieder in Richtung GUI-Entwicklung schlägt.
Selbst (bzw. ganz sicher!) ist C# ohne Windows.Forms für GUIs ziemlich aufgeschmissen.

Wer Borland IDEs kennt, sieht ganz klar die Handschrift des Delphi-Entwicklers an der gesamten WYSIWYG-IDE Umgebung Ich muss sogar sagen, die die Windows-Forms in einigen Bereichen der VCL sogar noch recht deutlich hinterherhinken! Von daher liegen (wenn es auf die GUI-Entwicklung ankommt) immer nocht Delphi bzw. Borland C++ Builder relativ weit vorne. Die VCL ist ein wirklich gutes und sehr durchdachtes Framework.

An Sprach-Diskussionen habe ich nie verstanden, warum man eine bestimmte Sprache als das Allheilmittel herausstellt?

  • brauche ich eine Anwendung die performant auf möglichst verschiedenen Rechnern läuft, nehme ich VC++
  • brauche ein zum ersten Beispiel noch ne gute GUI und kann im Gegensatz auch ein wenig Performance verzichten, nehme ich Borland (Delphi, BCB)
  • brauche ich eine Anwendung die auf möglichst vielen Plattformen läuft, nehme ich Java.
  • brauche ich eine Anwendung, die eine möglichst lange Lebenszeit haben soll, und unter Windows läuft, nehme ich C#
  • brauche ich was für Pocket PC, nehme ich C# (eventuell in Verbindung mit VC++ DLLs für Rechenintensives)
  • brauche ich was für den Palm, nehme ich GCC

usw...

Muss ich ein Konzept für die Industrie erarbeiten, kommt C# eh nich in Frage. Überrede mal nen Admin das er ein Framework auf einem laufenden Produktivrechner installieren soll..... kannste vergessen. Da geht kein Weg über BCB oder VC++. C# wird da noch lange nicht eingesetzt. Nicht bevor Longhorn sich durchgesetzt hat, also in ca. 6 Jahren.

Es geht beim programmieren nicht darum, eine bestimmte Sprache zu beherrschen. Das kann im Falle C++ kaum einer. COM/COM+ noch dazu, die MFC, die WinAPI etc..... das ist nunmal alles dabei, und muss oft genug benutzt werden.

Es kommt darauf an, einen Kunden eine Lösung zur Verfügung zu stellen, die einwandfrei funktioniert. Wie bunt das ist, ist ihm wurscht wenns das tut was es soll, und er keine weitere Arbeit damit hat. Und ob er 1 oder 3 Monate wartet, ist ihm (wenn das Programm denn auch dann genau das macht was ER will) ziemlich egal....

333 Beiträge seit 2004
vor 19 Jahren

Original von Ftee
Selbst (bzw. ganz sicher!) ist C# ohne Windows.Forms für GUIs ziemlich aufgeschmissen.

Entwicklung von Endbenutzeroberflächen ist heutzutage gefragter denn je, deshalb dreht sich viel um Windows.Forms. Aber im endeffekt mach es nur einen kleinen, aber sehr bedeutenden Teil des Frameworks aus. Und die kinderleichte Oberflächenentwicklung ist nunmal eine Stärke von C#. "Hätte, wäre, wenn" bringt an dieser Stelle garnichts.

  • brauche ein zum ersten Beispiel noch ne gute GUI und kann im Gegensatz auch ein wenig Performance verzichten, nehme ich Borland (Delphi, BCB)

Genauso nennt sich eine der wichtigsten GUI-Sprachen VB6 und die hat keinen unbedeutenden Anteil.

Überrede mal nen Admin das er ein Framework auf einem laufenden Produktivrechner installieren soll..... kannste vergessen.

Naja, du verallgemeinerst das zu sehr. Sicherlich hat .NET noch keine große Präsenz, aber die nimmt stetig zu. Wir bei uns im Unternehmen, und es sei gesagt, daß wir unsere Brötchen nicht mit der Software-Entwicklung verdienen, setzten sehr wohl auf die .NET-Technologie. Auf nahezu allen Prodiktivsystemen befindet sich daher bei uns auch das .NET-Framework 1.1. Du stempelst das so ab als wärs das reinste Risiko das Framework irgendwo zu installieren und das ist schlichtweg falsch. .NET hat eine sehr sichere Architektur. Wenn man sich die Zeit nimmt und es sich näher anschaut würde man dies auch zur Kenntnis nehmen.

Muss ich ein Konzept für die Industrie erarbeiten, kommt C# eh nich in Frage.
[...]
Da geht kein Weg über BCB oder VC++. C# wird da noch lange nicht eingesetzt.

Was heißt denn Konzept? Man kann für allesmöglcihe ein Konzept erstellen. Und du stellst es jetzt wieder so dar, als wenn C# generell Schrott wär. Ich verweise gern wieder darauf, daß Unternehmen bereits die .NET-Technologie verwenden und damit ihre Software realisieren. Selbst dein geliebtes Borland verschließt sich in keinsterweise der .NET-Technologie, im Gegenteil sie versuchen beispielsweise mit dem C#-Builder oder mit Delphi auf den Zug aufzuspringen. Fragt sich ja dann warum? Schließlich fördern sie mit diesem Schritt auch den Wachstum von .NET. Auf längere Zeit gesehen werden sich sich schwelich dieser neuen Technologie verschließen können.

Es kommt darauf an, einen Kunden eine Lösung zur Verfügung zu stellen, die einwandfrei funktioniert. Wie bunt das ist, ist ihm wurscht wenns das tut was es soll, und er keine weitere Arbeit damit hat. Und ob er 1 oder 3 Monate wartet, ist ihm (wenn das Programm denn auch dann genau das macht was ER will) ziemlich egal....

Dem Kunden mag es egal sein, aber einem ökonomisch handelnden Unternehmen sicherlich nicht. Oder würdest du freiwillig 2 Monatsgehälter eines Programmiers aus dem Fenster werfen?

([bb]|[^b]{2})

333 Beiträge seit 2004
vor 19 Jahren

Original von NoOneKnows

Original von Ftee
Selbst (bzw. ganz sicher!) ist C# ohne Windows.Forms für GUIs ziemlich aufgeschmissen.
Entwicklung von Endbenutzeroberflächen ist heutzutage gefragter denn je, deshalb dreht sich viel um Windows.Forms. Aber im endeffekt mach es nur einen kleinen, aber sehr bedeutenden Teil des Frameworks aus. Und die kinderleichte Oberflächenentwicklung ist nunmal eine Stärke von C#. "Hätte, wäre, wenn" bringt an dieser Stelle garnichts.

  • brauche ein zum ersten Beispiel noch ne gute GUI und kann im Gegensatz auch ein wenig Performance verzichten, nehme ich Borland (Delphi, BCB)

Genauso nennt sich eine der wichtigsten GUI-Sprachen VB6 und die hat keinen unbedeutenden Anteil.

Überrede mal nen Admin das er ein Framework auf einem laufenden Produktivrechner installieren soll..... kannste vergessen.
Naja, du verallgemeinerst das zu sehr. Sicherlich hat .NET noch keine große Präsenz, aber die nimmt stetig zu. Wir bei uns im Unternehmen, und es sei gesagt, daß wir unsere Brötchen nicht mit der Software-Entwicklung verdienen, setzten sehr wohl auf die .NET-Technologie. Auf nahezu allen Prodiktivsystemen befindet sich daher bei uns auch das .NET-Framework 1.1. Du stempelst das so ab als wärs das reinste Risiko das Framework irgendwo zu installieren und das ist schlichtweg falsch. .NET hat eine sehr sichere Architektur. Wenn man sich die Zeit nimmt und es sich näher anschaut würde man dies auch zur Kenntnis nehmen.

Muss ich ein Konzept für die Industrie erarbeiten, kommt C# eh nich in Frage.
[...]
Da geht kein Weg über BCB oder VC++. C# wird da noch lange nicht eingesetzt.
Was heißt denn Konzept? Man kann für allesmöglcihe ein Konzept erstellen. Und du stellst es jetzt wieder so dar, als wenn C# generell Schrott wär. Ich verweise gern wieder darauf, daß Unternehmen bereits die .NET-Technologie verwenden und damit ihre Software realisieren. Selbst dein geliebtes Borland verschließt sich in keinsterweise der .NET-Technologie, im Gegenteil sie versuchen beispielsweise mit dem C#-Builder oder mit Delphi auf den Zug aufzuspringen. Fragt sich ja dann warum? Schließlich fördern sie mit diesem Schritt auch den Wachstum von .NET. Auf längere Zeit gesehen werden sie sich nur schwerlich dieser neuen Technologie verschließen können.

Es kommt darauf an, einen Kunden eine Lösung zur Verfügung zu stellen, die einwandfrei funktioniert. Wie bunt das ist, ist ihm wurscht wenns das tut was es soll, und er keine weitere Arbeit damit hat. Und ob er 1 oder 3 Monate wartet, ist ihm (wenn das Programm denn auch dann genau das macht was ER will) ziemlich egal....
Dem Kunden mag es egal sein, aber einem ökonomisch handelnden Unternehmen sicherlich nicht. Oder würdest du freiwillig 2 Monatsgehälter eines Programmiers aus dem Fenster werfen?

([bb]|[^b]{2})

F
71 Beiträge seit 2004
vor 19 Jahren

Original von NoOneKnows

Original von Ftee
Selbst (bzw. ganz sicher!) ist C# ohne Windows.Forms für GUIs ziemlich aufgeschmissen.
Entwicklung von Endbenutzeroberflächen ist heutzutage gefragter denn je, deshalb dreht sich viel um Windows.Forms. Aber im endeffekt mach es nur einen kleinen, aber sehr bedeutenden Teil des Frameworks aus. Und die kinderleichte Oberflächenentwicklung ist nunmal eine Stärke von C#. "Hätte, wäre, wenn" bringt an dieser Stelle garnichts.

  • brauche ein zum ersten Beispiel noch ne gute GUI und kann im Gegensatz auch ein wenig Performance verzichten, nehme ich Borland (Delphi, BCB)

Genauso nennt sich eine der wichtigsten GUI-Sprachen VB6 und die hat keinen unbedeutenden Anteil.

Auch Visual Basic hat einen Nachteil, und der nennt sich Runtime-Engine.

Überrede mal nen Admin das er ein Framework auf einem laufenden Produktivrechner installieren soll..... kannste vergessen.

Naja, du verallgemeinerst das zu sehr. Sicherlich hat .NET noch keine große Präsenz, aber die nimmt stetig zu. Wir bei uns im Unternehmen, und es sei gesagt, daß wir unsere Brötchen nicht mit der Software-Entwicklung verdienen, setzten sehr wohl auf die .NET-Technologie. Auf nahezu allen Prodiktivsystemen befindet sich daher bei uns auch das .NET-Framework 1.1. Du stempelst das so ab als wärs das reinste Risiko das Framework irgendwo zu installieren und das ist schlichtweg falsch. .NET hat eine sehr sichere Architektur. Wenn man sich die Zeit nimmt und es sich näher anschaut würde man dies auch zur Kenntnis nehmen.

Ich rede von Produktivrechner, die in der Industrie z.B. die Datenkontrolle von SPSen übernehmen. Da sind die Leute schon froh wenn das endlich einwandfrei funktioniert. Wenn so ein Rechner wegen eines neu installierten Frameworks und/oder updates nicht mehr so läuft wie vorher, dann hängt der Admin an der Hallendecke.... und du gleich mit 🙂
Der macht nichts auf seinem Rechner ohne unsägliche Schmerzen dabei zu emfinden. Und das fängt schon bei einfachen Updates an.

Muss ich ein Konzept für die Industrie erarbeiten, kommt C# eh nich in Frage.
[...]
Da geht kein Weg über BCB oder VC++. C# wird da noch lange nicht eingesetzt.

Was heißt denn Konzept? Man kann für allesmöglcihe ein Konzept erstellen. Und du stellst es jetzt wieder so dar, als wenn C# generell Schrott wär. Ich verweise gern wieder darauf, daß Unternehmen bereits die .NET-Technologie verwenden und damit ihre Software realisieren. Selbst dein geliebtes Borland verschließt sich in keinsterweise der .NET-Technologie, im Gegenteil sie versuchen beispielsweise mit dem C#-Builder oder mit Delphi auf den Zug aufzuspringen. Fragt sich ja dann warum? Schließlich fördern sie mit diesem Schritt auch den Wachstum von .NET. Auf längere Zeit gesehen werden sich sich schwelich dieser neuen Technologie verschließen können.

Du unterschlägst, das ich bei Zukunfstsicherheit bereits auf C# verwiesen habe. Und zum "heissgeliebten Borland" ..... Ich dachte eigentlich das klargeworden ist, das es mir ziemlich scheissegal ist mit was ich was programmieren muss. Es kommt darauf an was gefordert ist, und was noch integriert werden muss. DANACH suche ich aus, welche Sprache, Framework oder Entwicklungsumgebung ich nutze.

Es kommt darauf an, einen Kunden eine Lösung zur Verfügung zu stellen, die einwandfrei funktioniert. Wie bunt das ist, ist ihm wurscht wenns das tut was es soll, und er keine weitere Arbeit damit hat. Und ob er 1 oder 3 Monate wartet, ist ihm (wenn das Programm denn auch dann genau das macht was ER will) ziemlich egal....

Dem Kunden mag es egal sein, aber einem ökonomisch handelnden Unternehmen sicherlich nicht. Oder würdest du freiwillig 2 Monatsgehälter eines Programmiers aus dem Fenster werfen?

Ähm.... ich weiss nicht was du für Kunden meinst.... wenn ich von Kunden rede, dann SIND das Unternehmen. Und nicht grade kleine. Und ein ökomomisch arbeitendes Unternehmen nimmt in erster Linie das, wo man schon GUTE Erfahrung mit hatte, bevor was neues genommen wird. Und wenn ich für bestimmte Klassen und Schnittstellen die allesamt in C++ geschrieben sind meine Hand ins Feuer legen kann, weil die woanders schon rund um die Uhr ohne Ausfalls ihren Dienst tuen, dann nehme ich die als DLL mit in das nächste Projekt, wenn ich die da gebrauchen kann.

Der Kunde bekommt das was er wünscht, ohne das er zusätlichen Aufwand hat. Wenn die Frage nach dem .NET-Framework mit "nein" bzw. "was ist das?" beantwortet wird.... gut. Dann wird es eben nicht genommen.
Steht der Kunde vorher nicht fest, d.h. die Anwendung wird für ein Clientel geschrieben welches sich erst noch für das neue Produkt interessieren muss, ist es relativ egal womit man es realisiert wurde. Aber auch da würde ich nach Anforderung entscheiden.

Dieser Sprachenglaubenskrieg ist so ziemlich das zweitalbernste nach dem OS-Glaubenskrieg.

Man nimmt das was man am besten gebrauchen kann. Punkt.

R
139 Beiträge seit 2004
vor 19 Jahren

Dieser Sprachenglaubenskrieg ist so ziemlich das zweitalbernste nach dem OS-Glaubenskrieg.

jungs das was ihr so schreibt ist wirklich interessant, aber seid ihr alle nicht mitglieder des myCSHARP Forums?! 😉

posted by the real prince of persia