Hi da.
Ich möchte mir gerne eine Win/MAC-Programmiersprache anschauen und würde
deswegen gerne wissen welche Sprache bei Steinberg Cubase verwandt wird.
Ich finde es interessant, dass die Sprache hohe Perfomance und
gleichzeitig auf mehreren Betriebssystemen gut läuft.
Tim
offenbar c++
http://www.steinberg.net/en/company/jobs/softwareentwickler_elicenser.html
Welche Oberfläche weiss ich nicht, wahrscheinlich haben sie ein
abstraction Layer und benutzen dann MFC für windows und cocoa für mac
osx.
Das ist aber nur ein kleiner Teil der Problematik, cubase braucht ja
auch anbindung and soundkarten und dsp-karten mit kontrollierter latenz.
Hi Ihr!
Danke für die Tips!
Wenn man jetzt die Frage in den Raum stellt -
Was ist Zukunft sicherer und performanter:
- das erwähnte C++
- oder C#
Würde C# nicht von sich selber (wegen .net) schon Crossplatform tauglich
sein?
Kann man Qt in etwar mit wxWidgets vergleichen oder sehe ich da was
falsch?
Tim
Tim schrieb:> Was ist Zukunft sicherer und performanter:> - das erwähnte C++> - oder C#
bei c++ sollte man wissen was man macht, dann ist es auch performanter.
C# ist sehr schnell ohne das man sich viele gedanken machen muss.
c# ist halt von MS - ich finde es aber eine schöne sprache. läuft bei
mir auch unter linux - aber ohne GUI
Benutzt Du C# dann ohne diese Bibliotheken?
Das heißt in C# würde eine Programmierung schneller von statten gehen.
Jedoch wäre C++ bei richtiger Handhabung und Erfahrung performanter
denke ich.
Nutzt man für große, neu angefangene Programme dann eher C++ oder C#?
Habe schon einige Threads zwischen den beiden Sprachen gelesen -
trotzdem kann ich mich nur schwer entscheiden.
Sorry also das ich schon wieder das Thema ausgrabe ;-)
Tim
Tim schrieb:> Nutzt man für große, neu angefangene Programme dann eher C++ oder C#?
Das kann man nur beantworten wenn man weiss welche Librarys oder
Frameworks du benutzen möchtest. z.B. wenn du eine GUI unter .NET
programmieren willst, sehe ich keinen Grund warum C++ performanter sein
sollte als C#. Hier würde ich also C# empfehlen. Eine Ausnahme könnte
dann sein, dass du bestimmte Header verwenden willst/musst die unter
C/C++ geschrieben wurden. Dann würde ich C++ nehmen, weil es einfach
näher an C dran ist.
Ist aber auch nur EINE Meinung zu diesem Thema, ich bin schon gespannt
was die Anderen vorschlagen und argumentieren.
Tim schrieb:> Nutzt man für große, neu angefangene Programme dann eher C++ oder C#?
Richtig große Projekte? C oder C++.
Böse Zungen behaupten: C# Vereint die Nachteile von C++ mit den
Nachteilen von Java.
Lern einfach beide, schau was dir besser gefällt.
Platformunabhängigkeit ist zwar schön, aber eigentlich hauptsächlich für
Firmen interressant, die gleichzeitig eine Windows, Mac und
Linux-Version verkaufen möchten.
Z.B. Eagle: das ist C++ mit QT.
Tim schrieb:> Würde C# nicht von sich selber (wegen .net) schon Crossplatform tauglich> sein?
Nö, denn das setzt voraus, daß das .Net-Geraffel auch auf andere
Plattformen portiert wird und dort genauso funktioniert, wie die
aktuelle Vorgabe aus Redmond. Zwar gibt es mit Mono ein entsprechendes
Projekt für Linux, das aber unterscheidet sich im Funktionsumfang vom
MS-"Standard" und hinkt den ständig neu erscheinenden Varianten immer
hinterher.
Tim schrieb:> Nutzt man für große, neu angefangene Programme dann eher C++ oder C#?
"Man" nutzt das, was man besser kennt, und was besser zur Aufgabe passt.
In C++ kann man ein Programm schreiben, das auch auf kleineren Systemen
(embedded Linux o.ä.) läuft, mit dem .Net-Geraffel ist immer ein
größerer Unterbau erforderlich.
Edding schrieb:> Platformunabhängigkeit ist zwar schön, aber eigentlich hauptsächlich für> Firmen interressant, die gleichzeitig eine Windows, Mac und> Linux-Version verkaufen möchten.
Es ist auch für Entwickler interessant, die sich auf dem Arbeitsmarkt
flexibler einen Arbeitgeber aussuchen können möchten.
Rufus Τ. Firefly schrieb:> Es ist auch für Entwickler interessant, die sich auf dem Arbeitsmarkt> flexibler einen Arbeitgeber aussuchen können möchten.
Deswegen:
Edding schrieb:> Lern einfach beide, schau was dir besser gefällt.
Dann kann man sowohl C# als auch C++ in der Bewerbung erwähnen.
In der Arbeit programmier ich zur Zeit C++ mit QT für Client-Anwendungen
(Mac + Windows), C++ "pur" für den Server-Teil (Linux).
Dazu diverse Script-Sprachen + DHTML + Javascript für passende
Web-Clients.
Wenn wegen eines Auftrags halt noch C# dazu kommt, was solls, dann lern
ich das halt.
Und zum Ausspannen in der Freizeit programmier ich ATTinies in C ;)
Ich möchte es für ein größeres Projekt gewerblich nutzen.
Dazu brauchen wir eine performante GUI die auch auf MAC und Win laufen
sollte.
Lern einfach beide ist gut :)
Glaube nicht das mein Arbeitgeber das zahlen wird - mir wäre eine Vorab
- Entscheidung sehr wichtig.
Wenn ich mit C# Crossplatform arbeiten möchte, gibt es doch bestimmt
auch eine Bibliothek wie QT oder.
Tim
Tim schrieb:> Ich möchte es für ein größeres Projekt gewerblich nutzen.> Dazu brauchen wir eine performante GUI die auch auf MAC und Win laufen> sollte.
C# Auf dem Mac (über Mono) ist IMHO noch nicht so weit.
C++ mit QT ist für beide schon lange verfügbar, ausgereift und angenehm
zu programmieren.
QT kann lizenzkostenfrei in komerziellen Anwendungen verwendet werden
(Seit der 4er Version unter der LGPL) solange dynamisch gelinkt wird.
Support und abweichende Lizensierung gibts bei Bedarf von Nokia.
Tim schrieb:> Ich möchte es für ein größeres Projekt gewerblich nutzen.> Dazu brauchen wir eine performante GUI die auch auf MAC und Win laufen> sollte.
Dann nimm C++, das ist der Standard.
C# ist ein nettes Spielzeug, ähnlich wie Visual Basic, aber das steht
und fällt mit der Laune von Microsoft. So wie J++ da kräht kein Hahn
mehr danach. Wenns hauptsächlich im Web (Webservices, dyn. Webseiten
etc.) laufen soll ist wegen der absolut besten Cross-Plattform (und
cross-database) Tauglichkeit auch Java zu empfehlen.
Für Windows Anwendungen mit dicken GUIs dann aber eher nicht.
U.R. Schmitt schrieb:> Dann nimm C++, das ist der Standard.> C# ist ein nettes Spielzeug,
Vorsicht, von MS gibt es mit "Managed C++" bzw. "C++/CLI" eine
Perversion, die mit C++ nicht viel mehr als den Namen gemein hat und
auch auf dem .Net-Geraffel aufsetzt.
Wenn C++, dann "echtes" C++, also welches, das auch von
Nicht-MS-Compilern übersetzt werden kann (nicht, daß der C++-Compiler
von MS schlecht wäre).
Eine Alternative zu Qt ist übrigens wxWidgets - wie ich in diesem Thread
bereit schrieb, ist das die Grundlage für Audacity, das bekanntlich
unter Windows, OS X und Linux verwendbar ist.
Wer nativ unter OS X entwickeln will, der sollte sich allerdings auch in
Sachen Objective-C umsehen, denn das ist AFAIK Voraussetzung für die
Nutzung des Cocoa-Frameworks*, und das wiederum Voraussetzung für
64-Bit-Anwendungen.
Mit dem C-basierten Carbon**-Framework lassen sich nur
32-Bit-Anwendungen erstellen.
*) http://en.wikipedia.org/wiki/Cocoa_%28API%29
**) http://en.wikipedia.org/wiki/Carbon_%28API%29
Rufus Τ. Firefly schrieb:> Wer nativ unter OS X entwickeln will, der sollte sich allerdings auch in> Sachen Objective-C umsehen, denn das ist AFAIK Voraussetzung für die> Nutzung des Cocoa-Frameworks,
QT kann auf dem Mac übrigens PPC + Intel, sowie 32 + 64 Bit und Carbon +
Cocoa:
http://doc.trolltech.com/4.7/developing-on-mac.html
Und QT benutzt die MacOS-X-APIs zum Rendern der GUI, schaut also
"Native" aus, benutzt systemweite Themes und verhält sich im großen und
ganzen automatisch so, wie sich die Mac-User das erwarten.
http://doc.trolltech.com/4.7/qtmac-as-native.html
Vielen Danke auf jeden Fall einmal für all Eure Hilfe.
Die Tips haben mir bisher schon extrem viel weiter geholfen!
Ich habe eigentlich damit gerechnet, das ich nicht so nette Antworten
bekommen würde wenn ich nach C# oder C++ frage ;-)
Hoffentlich finden den Threat auch viele Leute die genau so hin und her
gerissen sind...
Audacity habe ich mir einmal angeschaut - das scheint ja schonmal super
bei Mac und Win zu laufen.
Eagle habe ich auch auf meinem Mac getestet.
Es steht in unserem Fall einiges für C++ statt C#.
Nun noch die genauen Unterschiede zwischen QT und wxWidgets nachschlagen
- ich glaube ich habe bald meine Frage komplett beantwortet, jeappie :)
Tim
> Wenn ich mit C# Crossplatform arbeiten möchte, gibt es doch bestimmt> auch eine Bibliothek wie QT oder.
Nichts was wirklich an Qt oder wxWidgets rankommt. Wenn
Crossplatformfähigkeit dein Hauptkriterium ist, bist du mit C++ mit Qt
oder wxWidgets besser bedient.
Bartli schrieb:> Nichts was wirklich an Qt oder wxWidgets rankommt. Wenn> Crossplatformfähigkeit dein Hauptkriterium ist, bist du mit C++ mit Qt> oder wxWidgets besser bedient.
Siehe hier:
http://www.mono-project.com/Mono:OSX#Building_Client_Applications
d.H. für Windows+Mac müsstest du entweder GTK# oder Windows.Forms
verwenden.
Bei beiden vermerkt:
> Applications look foreign on OSX.
Worauf Mac-User erfahrungsgemäẞ recht allergisch reagieren.
Bartli schrieb:>> Wenn ich mit C# Crossplatform arbeiten möchte, gibt es doch bestimmt>> auch eine Bibliothek wie QT oder.>> Nichts was wirklich an Qt oder wxWidgets rankommt. Wenn> Crossplatformfähigkeit dein Hauptkriterium ist, bist du mit C++ mit Qt> oder wxWidgets besser bedient.
Wenn OSX und Windows reichen kann man sich auch Silverlight ansehen...
(vom geringeren Entwicklungsaufwand gegenüber anderen Frameworks und C++
mal abgesehen scnr).
http://channel9.msdn.com/Blogs/mtaulty/Silverlight-3-Running-Out-Of-Browser-Apps-on-the-Macintosh
Edding schrieb:> QT kann lizenzkostenfrei in komerziellen Anwendungen verwendet werden> (Seit der 4er Version unter der LGPL) solange dynamisch gelinkt wird.
Genauer gesagt seit Version 4.5.
Wenn du wirklich gute Interoperatibilität willst, dann nimm Java.
Das ist wirklich überall gleich gut.
Auch große GUIs gehen damit.
Vielleicht laufen die Anwendungen dann nicht mehr auf 15 Jahre alter
Hardware, aber auf den meisten anderen, auch auf Tablet PCs und
Smartphones mit Android. Wenn dann noch eine "Ähpp" (schrecklicher
Ausdruck!) verlangt wird, kein Problem dank des JavaME, das sogar
Touchscreens unterstützt.
Ich habe es auch schon gesehen, dass die eigentliche Anwendung als DLL
in
C++ geschrieben war und dann eine Java-Oberfläche hatte.
So konnten die Teile, die wirklich Geschwindigkeit brauchten, optimiert
werden (Viele Anwendung brauchen gar nicht die gesamte Rechnenpower
heutiger CPUs) und die Oberfläche sah trotzdem gleich aus.
Auch wenn es hier viele verärgert, ist C# keine schlechte Sprache.
Heutzutage werden sogar Computerspiele bis auf die 3D-Engines in C#
geschrieben. C# ist im Grunde genommen ein Java, das auf Windows
optimiert wurde. Und solange Windows marktführend ist, tja, sollte man
das nicht ignorieren.
Wichtig ist zu wissen, dass ein einfaches Dialogfeld eher gut aussehen
muss als dass die Reaktionszeit bei 15 Nanosekunden anstatt 10
Mikrosekunden liegt.
Also: Immer drauf gucken, was man braucht.
Mit freundlichen Grüßen,
Valentin Buck
Nö, C# ist an sich tatsächlich keine schlechte Sprache.
Das eigentliche Problem ist das .NET Framework: Windows.Forms z.B. kann
sich also echt nicht mit QtGui messen. Monos Framework (nicht die
Compiler, die halten besser mit) hinkt notorisch hinter MS.NET her,
Crossplatformfähig ist man daher also auch nur bedingt.
> Wenn OSX und Windows reichen kann man sich auch Silverlight ansehen...
Silverlight wird für mich ab dann wieder interessant, wenn das Teil (so
wie Silverlight Embedded) ganz ohne Sandbox betrieben werden kann (ja,
dafür ist WPF da. Ich hätte das trotzdem gerne auch für Silverlight).
Ist da was im Gange?
Bartli schrieb:> Nö, C# ist an sich tatsächlich keine schlechte Sprache.>> Das eigentliche Problem ist das .NET Framework: Windows.Forms z.B. kann> sich also echt nicht mit QtGui messen.
Sehe da zwar keine großen Unterschiede, außer das es für WinForms keinen
deklarativen Ansatz gibt wie bei Qt mit QtQuick/QML (was aber im
Vergleich zu WPF+XAML mehr als unausgegoren ist, Javascript im
deklarativen Teil etc. pp.). Vernünftiges DataBinding gibt's dagegen für
WinForms und WPF, für Qt aber immer noch nicht.
>> Wenn OSX und Windows reichen kann man sich auch Silverlight ansehen...>> Silverlight wird für mich ab dann wieder interessant, wenn das Teil (so> wie Silverlight Embedded) ganz ohne Sandbox betrieben werden kann (ja,> dafür ist WPF da. Ich hätte das trotzdem gerne auch für Silverlight).> Ist da was im Gange?
In SL4 wurde schon einiges umgestellt (Stichwort: Trusted Applications
http://msdn.microsoft.com/en-us/library/ee721083(v=vs.95).aspx). Für SL5
wird das nochmals erweitert
(http://www.microsoft.com/silverlight/future/ und abwarten was die Beta
bringt...).
Hmm, die zeitkritischen Sachen könnte man in der Applikation auch in
eine .dll auslagern, das stimmt schon...
Wäre Java wirklich zu verwenden wenn man eine große GUI hat die auch
Gesten und bewegte Timelines verwalten muß?
Tim
Tim schrieb:> Wäre Java wirklich zu verwenden wenn man eine große GUI hat die auch> Gesten und bewegte Timelines verwalten muß?
ich würde sage nein, java fühlt sich auf vielen Platformen wie ein
fremdkörper an. z.b. Standard tastenkombination gehen nicht. Dialoge
sind nur den nativen nachgebaut verhalten sich aber anders usw.
Java hat seinen ganz eigenen Style.
Gestenerkennung geht mit den eingebauten Mitteln gut und die GUI ist
viel flexibler als man denkt.
Nur, wie schon gesagt wurde, die Tastenkombinationen muss man selber
setzen.
Die Beschwerden über Dialoge kenne ich jetzt nicht so (in Win7 und
Debian funktionieren die ganz gut!).
Leider funktioniert der Windows-Style nicht als Aero-Oberfläche, da wird
langsam mal ein Update nötig!
Mit freundlichen Grüßen,
Valentin Buck
Ich würde C++ mit QT nehmen, relativ wenig Aufwand, wenn man es
beherrscht, super Performance und Plattformunabhänig (zum großen Teil,
klar muss für jedes neu kompiliert werden, aber der Code sollte gleich
bleiben).
Java ist auch nicht schlecht, aber etwas unperformant (aber besser als
.NET) und wie gesagt, meine Erfahrung zeigt es passt sich nie dem System
an.
Außerdem wird wie bei C# Zusatzsoftware beim Endbenutzer gebraucht (halt
Java oder .NET Framework, wobei ich dann lieber Java nehmen würde,
alleine weil man die JAR Datei einfach weiter geben kann ohne
Änderungen).
Fazit:
C++ und QT oder wxWiggets (Geschmackssache, ich bevorzuge QT...).
MfG
DDT schrieb:> Ich würde C++ mit QT nehmen, relativ wenig Aufwand, wenn man es> beherrscht, super Performance und Plattformunabhänig (zum großen Teil,> klar muss für jedes neu kompiliert werden, aber der Code sollte gleich> bleiben).
Wenn man vor der Konkurrenz fertig werden will: C# oder Java und nur die
wirklich kritischen Teile in C++. Die Grafikdarstellung ist sowohl bei
Java als auch bei .NET(WPF) seit längerem hardwarebeschleunigt und somit
auch kein Grund für C++. Hinzukommt das es die zu C# und Java gehörigen
Frameworks nicht für C++ gibt (abgesehen von C++/CLI) und Qt nur einen
winzigen Bruchteil dessen zur Verfügung stellt etc.pp.
DDT schrieb:> Java ist auch nicht schlecht, aber etwas unperformant (aber besser als> .NET)
gibt es für diese Behauptung auch Belege? Meine Erfahrung und was ich
gelesen hatte deuten auf das gegenteil hin. .NET wurde extra auf
Performace ausgelegt und schon die ersten Versionen waren teilweise
schneller als Java.
Edding schrieb:> Wenn man aber Java nehmen will, und nicht auf die Vorteile der QT> verzichten möchte:
Völliger Schwachsinn.
Java bringt eine eigene GUI mit.
Guck dir mal die Marktanteile an!
C++ wird nur noch für wirkliche Leistungsanwendungen verwendet, wie
Spiele, Videobearbeitung und Crypto.
Der Rest ist am Absterben.
Java und .NET haben ein zu mächtiges Framework, als dass C++ da was
machen könnte. Teilweise werden ganze Blöcke Code durch eine Zeile
ersetzt.
Das Visual Studio (und übrigens auch das freie SharpDevelop) haben eine
GUI-zusammenklick-Oberfläche.
Klar kann man das mit Pixelangaben und selbst gebauten Steuerelementen
alles noch viel schöner machen, aber dafür ist einfach zu viel da.
Du willst eine Musikdatei abspielen und den User das kontrollieren
lassen? Schnapp dir das Windows Media ActiveX. Oder das VLC ActiveX.
Oder Quicktime.
Oder...
Der größte Nachteil von .NET ist, dass es sehr leicht zu dekompilieren
ist.
Mit teilweise sogar kostenlosen Tools ist man schnell am Quellcode.
In der Sprache deiner Wahl.
Auch für Java gibt es so etwas.
Das kann man verhindern, indem man die Dinger einfach nativ in echten
Maschinencode kompiliert (geht wirklich, aber dann geht die
Interoperatibilität flöten) oder vielleicht so etwas wie eine Lizenz
einbaut.
Wenn man Angst hat, dass einem das Programm gestohlen wird, sollte man
in einen anderen Bereich wechseln. Wenn es eine gute Software gibt, dann
dauert es meistens nicht lange, bis es einen Klon gibt.
Verbergen von Inhalten ist sowiso der falsche Ansatz.
Guck dir mal Open-Source-Softwarefirmen an.
Komisch. Jeder kann das kompilieren und die machen trotzdem Geld.
Und warum? Weil die dann einfach die kompilierte Version verkaufen.
Oder Support (Siehe SUN (jetzt Oracle)).
Die gesamte Branche wird sich entscheidend ändern.
In einigen Jahren wird Software nichts mehr kosten.
Weil es zu viel davon gibt.
Weil Information keine Materie ist.
Und Geld wird man nur noch mit Wissen verdient.
Oder so was...
Mit freundlichen Grüßen,
Valentin Buck
Vielleicht sollte man die Statistik mal gescheit aufdröseln.
Fraglich ist auch, wie sich 'Plattformunabhängigkeit' definiert. Mit
MFC/C# binde ich mir effektiv einen x86-Klotz ans Bein. Selbst bei ARM
rudert man ja schon wieder um Kreis und es will mit Windows nicht
gescheit vorangehen
(http://www.heise.de/newsticker/meldung/ARM-Chef-daempft-Spekulationen-ueber-Windows-Systeme-und-Server-1169698.html
). Bezogen auf WinCE/Mobile herrscht nichtmal unter Windows selbst
Portabilität.
Auch so Dinger wie ActiveX oder COM sind letztlich Augenwischerei.
Verlassen kann man sich dabei auf garnichts, Abhängigkeiten werden nicht
gepflegt. Dann lieber wohldefinierte API in eine Bibliothek hinein. Aber
ne, Microsoft muss erstmal den dynamischen Linker grundlegend
reparieren...
Schreibe ich sauberes C(++) und dann z.B. mit QT, dann erschlage ich
damit so ziemlich alles, was heute irgendwie bootbar ist und sicherlich
auch alles, was in zehn Jahren am Markt sein wird.
Je mehr ich mich mit Windows-Programmierung auseinandersetze, umso mehr
wird es ein Fass ohne Boden. Redundanz in tausend Varianten, gegen die
selbst die 100. Regexp-Bibliothek unter Unix alt aussieht :-)
Auf welches Pferd soll man denn noch setzen?
Viel Spaß damit :-)