C++ Anwendungsbereiche
-
Artchi schrieb:
Der Mythos, das man mit C++ nur umständlich GUIs bauen kann, hält sich anscheinend hartnäckig.
Genauso das Mono unter Linux super gut ist. Das ist der letzte Bullshit, und wie Rüdiger schon sagte, fliegt es bei den meisten eh wieder raus. Das .NET Framework ist für Windows entworfen worden, dort soll es auch bleiben. Warum zum Henker wollen eigentlich ausgerechnet die Linux Leute das .NET Framework auf Linux??
Und wie Artchi schon sagte, es gibt auch für C++ gute Sachen. Ich bevorzuge Qt.
-
Plattforumunabhängigkeit wird, wie immer, maßlos überbewertet.
Was genau ist denn "Bullshit" am Mono?
-
Wo ist im Moment das .NET Framework? Ich glaub bei Version 4, oder?
Und Mono? Bei 2.x oder so. D.h., die neuen Sachen funktionieren gar nicht, mal davon abgesehen das die Entwickler jetzt lieber Android/iOS machen.
Aber bei einem muss ich dir recht geben, Plattformunabhängigkeit funktioniert wahrscheinlich noch bei einem "Hello World" Programm, bei anderen Sachen schon nicht mehr.
-
Besonders bei GUI ist Plattform-Unabhängigkeit (also ein Code/Design für mehrere) meistens von Nachteil. Denn letztendlich entscheidet sich ein Anwender für ein Betriebssystem, wegen dessen spezieller GUI.
Was aber plattformneutral geht, sind allgemein Algorithmen, Netzwerk- und Datei-Streams. Aber auch bei Datei-I/O kann man schon native Filesystem-Features vermissen, die einem vielleicht ein Betriebssystem anbietet. Oder OLE ist auch so eine Sache, die eine Anwendung mit wenig Aufwand leistungsfähiger und komfortabler machen kann.
-
Das Mono so schlecht da steht, habe ich nicht mitbekommen. Das sie dem .NET APIs hinterher hängen, ist mir dagegen bekannt. Und hier sehe ich es wie in der C++-Welt: ich kann mit der Verzögerung leben und evtl. andere APIs dazu nehmen, die nicht vom .NET vorgegeben sind. Z.B. muß ich unter Mono nicht zwingend WinForms haben, weil ich unter Mono das GTK# nutzen kann, welches es wiederrum auch auf Windows gibt. D.h. ich kann Mono als gemeinsamen Nennen nutzen.
Wenn Mono generell in der Entwicklung nicht weiter geht, ist das natürlich trotzdem nicht gut.
-
Fedora hat es schon komplett rausgekickt, und Ubuntu wird es ab 12.04 auch wieder raus nehmen. Wie es bei anderen aussieht weiß ich nicht.
Es gibt zwar nette Mono Programme für Linux, wie z.B. den Medien-Player Banshee, aber nur deshalb installier ich mir nicht den gleich den kompletten Rattenschwanz an Abhängigkeiten von Mono. Aber der Hauptgrund ist wohl auch das es nicht vorwärts geht mit Mono.
-
Wieso nicht Java? Java laeuft auf sehr viele Plattformen (weit mehr als die meisten C++ Toolkits unterstuetzen...).
In Java hast du alles dabei, was du brauchst, in C++ dagegen musst du dich mit externen Bibliotheken rumschlagen, die noch dazu eine veraltete API haben und moderne C++ Sprachfeatures nicht nutzen (Qt z.B. benutzt einen eigenen Praeprozessor - d.h. Qt erweitert/veraendert die C++ Sprache ... wxWidgets benutzt Makros ohne Ende).
-
Artchi schrieb:
Besonders bei GUI ist Plattform-Unabhängigkeit (also ein Code/Design für mehrere) meistens von Nachteil. Denn letztendlich entscheidet sich ein Anwender für ein Betriebssystem, wegen dessen spezieller GUI.
Was aber plattformneutral geht, sind allgemein Algorithmen, Netzwerk- und Datei-Streams. Aber auch bei Datei-I/O kann man schon native Filesystem-Features vermissen, die einem vielleicht ein Betriebssystem anbietet. Oder OLE ist auch so eine Sache, die eine Anwendung mit wenig Aufwand leistungsfähiger und komfortabler machen kann.
Ob Plattformunabhängigkeit nun sinnvoll ist oder nicht hängt natürlich ganz von dem Fall ab. Idealerweise hat man natürlich einen separaten Kern (hier bietet sich C++ an) und entwickelt dann schöne individuell an das System angepasste GUIs in welcher Programmiersprache auch immer. Das ist aber natürlich sehr aufwendig und kann gerade bei kleineren Teams die Entwicklung schnell zum erliegen bringen. Wenn man sich nun auf ein System konzentriert, dann schließt man Kunden auf anderen Systemen aus und das kann je nach Zielgruppe ganz erhebliche Auswirkungen haben. Gerade für speziellere oder kleinere Entwicklungen dürfte sich daher etwas wie Qt lohnen, wo der Portierungsaufwand minimal gehalten wird.
@Artchi
Wenn man GTK# nimmt, dann schaut die GUI wieder unter Windows nicht native aus und man verliert die Vorteile mit denen .NET ja überhaupt angepriesen wird.
-
Aussagen wie "Vergiss Mono" oder "Bullshit" wird dem Projekt nicht gerecht.
Schaut euch doch mal die Release-Notes an:
http://mono-project.com/OldReleasesInsbesondere unter 2.8 gab es große Fortschritte. ("Mono now implements the C# 4.0 language")
Imho wird nur an WPF nicht gearbeitet, aber ansonsten schließt das Projekt stets auf. Klar, MS haut alle zwei Jahre ein neues Framework raus. Ein, zwei Schritte hinten zu liegen ist nicht schlimm.
Und Winforms ist portiert. Es gibt imho nur keinen Designer im Gegensatz zu GTK#.
Wenn die Entwicklung eingestellt wird, wäre das natürlich sehr schade.
-
Nun gut, GUI scheint mittlerweile auch in C++ kein allzu großer Akt mehr zu sein. Allerdings lief meine anfängliche Frage darauf hinaus, ab welchen Proportionen C++ sich wirklich lohnt. Von der Hardwarenähe erstmal abgesehen. Wäre es sinniger bei kleinen- bis mittelgroßen Projekten auf beispielsweise C# auszuweichen ?
-
Man nimmt immer das, was man am besten kann. Fuer kleine, mittlere und grosse Sachen ist das C++ bei mir, und Scheme just for fun.
-
Mal was aus der Praxis (Firma mit ca. 450 Mitarbeitern):
der Trend bei uns (und ich glaube nicht nur bei uns ;)) geht mittlerweile steil in Richtung Web-Anwendungen, d.h für uns:
- die Frage nach dem GUI stellt sich nicht mehr -> GUI ist der Browser.
- die Frage nach Portierbarkeit stellt sich nicht mehr -> Plattform ist der Browser.Neue Anwendungen werden nur noch in C# (ASP.NET, WebForms bzw. MVC3) erstellt. Portabilität egal (siehe oben), einzig die Webserver müssen halt Windows-Server sein.