Beruflich später Desktopprogramme entwickeln -> Welche Sprache? (Java, C# oder C++)

KROKvsKROK

Ensign
Registriert
Apr. 2013
Beiträge
149
Nach dem Studium werde ich warscheinlich als Entwickler für Desktopprogramme anfangen.
Ich frage mich, mit welcher Sprache (kommen ja wohl nur Java, C# oder C++ in Frage) für diesen Bereich am ehesten geeignet ist bzw. in diesem Bereich die am meisten verwendete ist.

Java ist stark auf der Serverseite im Webbereich vertreten. Fast jede Java-Stellenanzeige zielt auf JEE ab. Zudem ist Java natürlich auch auf Android verbreitet.
Aber auf dem Desktop sieht es doch eher etwas mau aus finde ich. Wirklich viele bekannte Programme gibt es nicht (JDownloader, Eclipse, Umlet, ProjektLibre). Und man muss sagen, dass man bei all diesen Programmen wirklich merkt, dass diese in Java entwickelt sind. JDownloader ist richtig lahm, Umlet und ProjektLibre haben auch eine sehr unflüssige und teils bughafte GUI und Eclipse ist auch nicht wirklich flott. Keine Ahnung ob das direkt an Java liegt oder eher an Swing?

C# soll ja angeblich (?) für den Desktopbereich besser als Java sein. Einerseits bietet C# mehr Sprachfeatures und zum anderen sollen bei C# die GUI's wesentlich flotter laufen. Außerdem kann man mit C# etwas Systemnäher arbeiten, da man Zugriff auf die Windows-API hat.
Allerdings muss ich gestehen, dass mir kein einziges bekanntes C#-Programm einfällt. Selbst Google liefert da nur Programme, von denen ich bisher noch nie etwas gehört habe.

C++ soll schwer sein und wird (angeblich) nur bei extrem Performancelastigen Dingen (Simulationen, aufwändige Spiele etc) verwendet. Schaue ich mir allerdings mal einige der bekanntesten Programme (ImgBurn, Adobe Reader, WinRar, Antivirenprogramme, Firefox, Chrome, Steam, Skype...) an, dann fällt auf, dass diese allesamt in C++ geschrieben sind.
Und bei den Programmen hier handelt es sich um wesentlich populärere Programme als bei den oben aufgezählten 4 Java-Programmen.


Was meint ihr, welche die am meist verwendete Sprache ist, um Desktopprogramme zu programmieren (im Beruflichen Umfeld) und mit der man auch die besten Chancen auf dem Arbeitsmarkt hätte? (Momentan kann ich nur Java)
 
KROKvsKROK schrieb:
Nach dem Studium werde ich warscheinlich als Entwickler für Desktopprogramme anfangen.

Welcher Studiengang und wie lange bist du schon dabei/wie lange ist es noch hin?

Es kommt eigentlich immer ganz darauf an, wo man landet, also was das Unternehmen/die Firma/die Abteilung benutzt.

Laut TIOBE Index bist du prinzipiell mit jeder der von dir genannten Sprachen für den Standalone-Anwendungssoftware-Bereich gut aufgestellt.
 
KROKvsKROK schrieb:
Was meint ihr, welche die am meist verwendete Sprache ist, um Desktopprogramme zu programmieren (im Beruflichen Umfeld) und mit der man auch die besten Chancen auf dem Arbeitsmarkt hätte? (Momentan kann ich nur Java)
Vollkommen wumpe... Du lernst "programmieren", nicht "Java" oder "C". Die Sprache ist nur Mittel zum Zweck, es gibt für alle Sprachen viele Frameworks und Libs.

Kurz: Lern (am besten) eine (C-basierte) Sprache, dann kannst du (fast) alle. Frameworks sind das Entscheidende, wo du bei jeder "neuen" Sprache auf die Gusche fliegst und Zeit brauchst, um dich dort einzuarbeiten. Nur weil man C++ kann, kann man noch nicht automatisch mit der WinAPI, Qt oder sonstigen Tools/Frameworks umgehen.
 
Yuuri schrieb:
Vollkommen wumpe... Du lernst "programmieren", nicht "Java" oder "C". Die Sprache ist nur Mittel zum Zweck, es gibt für alle Sprachen viele Frameworks und Libs.

Das können noch so viele noch so oft wiederholen, dadurch wird's auch nicht zur Wahrheit. Lern Java, und erzähl mir dann was (fundiertes) über Pointer. Klar, grundlegende Konzepte - Variablen, Schleifen, If-Bedingungen etc. sind gleich. Auch Syntax zum Teil. Aber das ist dennoch nur ein Teil des Ganzen, wenn auch ein großer. Es macht aber halt schon eine Unterschied, ob jemand einfach PHP lernt, oder im gleichem Atemzug mit einem Framework wie Symfony und den dahinterstehenden Konzepten anfängt.
 
Zuletzt bearbeitet:
Ich muss Yuuri aber Recht geben. Selbstverständlich gehören Kenntnisse der Programmierspache dazu, um in dieser programmieren zu können. Aber ganz allgemein lernt man imerativ/objektorientiert/funktional/etc programmieren. Das Erlernen der einzelnen Sprache geht recht fix, sobald man erstmal ein Programmierparadigma gelernt hat. Ähnlich schnell, wie sich in ein Framework einzuarbeiten.
 
siconize schrieb:
Das können noch so viele noch so oft wiederholen, dadurch wird's auch nicht zur Wahrheit.
Lern Java und erzähl mir was über Register... Lern Java und erzähl mir was über Linq...

Jede Sprache hat seine Eigenheiten, mit denen man sich dann herumschlagen muss. Deswegen weißt du trotzdem "wie" man etwas programmiert und nur darauf kommt es an. Das restliche Lernen vom Umgang mit der Sprache, ist kein langwieriger Prozess und kann man sie sich innerhalb weniger Tage problemlos aneignen.

Aber nenn mir doch mal den Sinn von "Pointern", wenn ich in C# mit .NET arbeiten muss (ergo Managed Code). Oder was ich mit Pointern in PHP zu tun habe?! Ich weiß deshalb trotzdem, wie man einen String a in Datentyp b und Format c transformiert, dazu muss ich mich nicht zwangsweise mit Pointern herumschlagen, sondern algorithmieren können. Sachen in seine elementarsten Dinge herunterbrechen und die Problemlösung angehen.

Ich sagte ja auch "die Sprache ist Mittel zum Zweck". Wenn du auf einmal deinen Hammer durch einen Schraubenzieher ersetzt, weißt du doch auch nach fünf Minuten wie es funktioniert. Wenn du aber nicht mal weißt, wie du ein Loch in die Wand bekommst und nen Dübel rein bringst, hilft dir auch das ganze Werkzeug nichts.

"Programmieren" heißt nicht, wie man sich mit C und Pointern herumschlägt.
 
Yuuri schrieb:
Aber nenn mir doch mal den Sinn von "Pointern", wenn ich in C# mit .NET arbeiten muss (ergo Managed Code).
Da arbeitest du wie bei Java auch dauernd (indirekt) mit Zeigern…
Mal davon abgesehen, dass du in C# mit unsafe jederzeit direkt mit Zeigern arbeiten kannst…
 
Ich find auch, es kommt drauf an, wo du am ende landest, was für Frameworks, usw.

Mein Ausbildungsbetrieb hat ASP.Net, Windows Programme, Server Software und Winds Apps in C# entwickelt, ein berufsschulkolege war ein Java Ass, da die nur in Java geprogt haben usw.

Im prinzip kannst du eine sprache, ist eine andere nicht das problem. Schon eher das Konzeptionele drum herrum.
Jede Sprache hat ihre induviduellen Stärken und Schwächen
 
Zuletzt bearbeitet:
Yuuri schrieb:
Vollkommen wumpe... Du lernst "programmieren", nicht "Java" oder "C". Die Sprache ist nur Mittel zum Zweck, es gibt für alle Sprachen viele Frameworks und Libs.

Da stimme ich dir teilweise zu. Aber irgendwann kommt der Tag X, an dem ich mich anfange zu bewerben.
Und wenn ich da dann vorher nicht ausreichend mit z.B. C++ gearbeitet habe, dann würde ich mich niemals auf eine C++ Stelle Bewerben. Zur Professionellen SW-Entwicklung in der Sprache XY gehört doch schon mehr dazu, also nur die Syntax von if-Abfragen und Schleifen zu kennen.
Wenn es so einfach wäre, dann könnte sich ein PHP-Programmierer ja auch mal ganz locker auf eine C++ Stelle bewerben, ohne vorher 1 Zeile in einer anderen Sprache außerhalb von PHP geschrieben zu haben.


An die bisherigen Posts: Bleibt bitte beim Thema!
Es geht hier nicht darum, welches die tollste Sprache ist, oder dass Programmiersprachen nur Mittel zum Zweck sind.
Es geht lediglich darum, welches die am meist verwendete und die optimalste Programmiersprache für die Entwicklung von Desktopprogrammen ist!
 
Yuuri schrieb:
Lern Java und erzähl mir was über Register... Lern Java und erzähl mir was über Linq...

Jede Sprache hat seine Eigenheiten, mit denen man sich dann herumschlagen muss. Deswegen weißt du trotzdem "wie" man etwas programmiert und nur darauf kommt es an.

Wenn du es rein methodisch meinst... Sicher. Aber ich denke nicht, dass der TE das möchte. Er möchte nicht C++ lernen mit Konzepten wie Pointern und vielen eingenen Befehlen und Eigenarten und dann feststellen müssen, dass er
a) vieles für sagen wir Java eben nicht braucht,
b) es dann dort doch anders ausschaut und auch nicht immer mit einmal kurz auf die andere Syntax schauen getan ist und
c) das, was in C++ als guter Stil gilt, bei Java in der Praxis es dann noch lange nicht sein muss.
Ganz ehrlich, ich stimme dir ja auch insofern zu: Wenn er C++ lernt, dann sollte der Umstieg der wohl leichteste sein. Heißt aber dennoch nicht, dass er jetzt auf gut Glück irgend eine Sprache wählen soll weil es "wumpe" ist.
 
Zuletzt bearbeitet:
Ich selber bin für C++, weil

- Erfahrungswerten mit anderen Programmierern
- Eigene Erfahrung

Bin selbst von C nach C++, wegen den viel mehr Möglichkeiten. Dann stand ich vor der Wahl nach C# zu gehen, aber dies ist bekanntlich nur für Windows. Um aber dennoch noch mehr zu machen wurde C++/CLI draus. Stellte aber fest, das man da auch nicht viel weniger als in C# an alles mögliche gebunden ist, was mir nicht gefällt. Somit zu C++ zurück. Jetzt Arbeite ich mich gerade in Kombination dazu in wxWidget ein, dass ich (weiter) Plattformunabhängig bin. Assambler würde ich nicht raten, das verlangt schon viel, habe aber trotzdem das Grundwissen, da ich es mal für Anwendungen brauchte.

Zu Java kann ich keine Einschätzung abgeben, nur aus den oben genannten Programmiererkreis weiß ich, etwa die Hälfte können es, aber >75% habe sich letztendlich für C++ (fest) entschieden. Aber ich rate dennoch nicht von Java ab, da der Wechsel von C++ zu Java nicht schwer sein soll.
 
Und jetzt schau mal, ob's in meinem Post noch steht. Advents-Überraschung! ;) Sorry ich editiere immer wie wild. (Sollte man mir echt mal verbieten :rolleyes:)
 
Zuletzt bearbeitet:
siconize schrieb:
Das können noch so viele noch so oft wiederholen, dadurch wird's auch nicht zur Wahrheit.
Der Anfang eines jeden Programms ist ein aufgeschlüsselter Programmablauf, z.B. grafisch aufbereitet als PAP. Der Anfang aller Programme ist der Algorithmus, nicht die Sprache. Die Sprache ist vollkommen irrelevant. Du kannst aus demselben PAP in zig Sprachen (in ihrer Funktion) identische Programme schreiben.

Lern Java, und erzähl mir dann was (fundiertes) über Pointer.
Lern C, und erklär mri was über Objektorientierung, oder über die Funktionsweise des $GLOBALS-Array in PHP...
Das sind Spitzfindigkeiten, mehr nicht. Spätestens wenn man sich an komplexere und allgemein anerkannte Patterns hält, verschwimmen die Grenzen.

Es macht aber halt schon eine Unterschied, ob jemand einfach PHP lernt, oder im gleichem Atemzug mit einem Framework wie Symfony und den dahinterstehenden Konzepten anfängt.
Erst krabbeln, dann laufen. Erst "nacktes" PHP, dann Symfony. Erst "pures" JS, dann jQuery/Mootools,... Warum? Weil es Unmengen blöder Fragen und Fehler verhindert.

siconize schrieb:
Wenn du es rein methodisch meinst... Sicher. Aber ich denke nicht, dass der TE das möchte.
Der TE möchte Anwendungen entwickeln. Jede Anwendungsentwicklung basiert auf der logischen Zergliederung in atomare Programmabläufe.
Ob er dies jetzt mit Java, C, PHP oder Brainfuck lernt, ist vollkommen egal.

Nur bei deklarativen Programmiersprachen tickt die Uhr anders. Aber um das zu verstehen studiert er ja. Da lernt man auch deklarative Ansätze.
 
Daaron schrieb:
Der TE möchte Anwendungen entwickeln. Jede Anwendungsentwicklung basiert auf der logischen Zergliederung in atomare Programmabläufe.
Ob er dies jetzt mit Java, C, PHP oder Brainfuck lernt, ist vollkommen egal.
Schön wie du das formuliert hast. Weder dadurch noch durch Repetition wird die Ausgangsaussage allgemeingültig. Der TE möchte nicht " Anwendungen entwickeln". Der TE möchte Anwendungen entwickeln unter der Prämisse, nicht erst eine Sprache erlernen zu müssen, und dann noch eine andere. Wie gesagt, methodisch, so wie du es ja auch darlegst, ist es dann das selbe. Die Lebensrealität sieht aber anders aus. Er hat ja herzlich wenig davon, Algorithmen entickeln zu können, den PAP zu skizzieren, die "logische Zergliederung in atomare Programmabläufe" durchführen zu können, wenn er dann doch feststellt: Für meine Berufswelt wäre Java besser gegewesen, ich bin nun aber C#-Experte, und damit eben noch kein Experte in Java.
 
Zuletzt bearbeitet:
Ich habe nun schon genug Sprachen hinter mir um sagen zu können: Wenn du in Sprache A ein professionelles Niveau erreicht hast, dann wird dir das Erlernen verwandter Sprachen B, C oder D nicht schwer fallen. Die Prinzipien sind dieselben und oftmals sind sogar die einzelnen Befehle gleich oder sehr ähnlich.
 
siconize schrieb:
Er hat ja herzlich wenig davon, Algorithmen entickeln zu können, den PAP zu skizzieren, die "logische Zergliederung in atomare Programmabläufe" durchführen zu können, wenn er dann doch feststellt: Für meine Berufswelt wäre Java besser gegewesen, ich bin nun aber C#-Experte, und damit eben noch kein Experte in Java.

Genau darum geht es mir hier in diesem Thread!!!

Das Thema ist echt zum verzweifeln irgendwie.
- Möchte man in die Webentwicklung -> PHP, JS oder Java(EE)
- Möchte man Hardwarenah entwickeln -> C
- Möchte man (grafisch aufwändige) Spiele entwickeln -> C++
- Möchte man performance kritische Sachen entwickeln -> C++
- Möchte man Android-Apps entwickeln -> Java

Und nun die Frage, ob die es hier einzig und allein geht:

- Möchte man Desktop-Programme entwickeln -> ???


Ja, C#, C++ und Java mögen dafür geeignet sein. Das ist mir klar. Aber mir geht es einfach nur darum, welche dieser Sprachen die meist verwendete in diesem Bereich ist?!

Nach meiner Analyse im Startpost ja wohl offensichtlich C++. Aber ist das wirklich so? Oder liegt die Tatsache, dass die meisten bekannten Programme in C++ geschrieben sind, nur daran, dass all diese Programme vor ~10 Jahren begonnen wurden zu entwickeln und damals eben Java wirklich noch eine lahme Ente (im Gegensatz zu heute) gewesen ist?
 
Zuletzt bearbeitet:
Dein Analyse ist insofern unvollständig, dass du nur "normale" Anwendersoftware untersucht hast. Im Business- und Individualsoftwarebereich haben sowohl Java als auch C# (Lexware z. B. hat vor einiger Zeit auf .NET migriert) einen sehr relevanten Marktanteil (C++ ist dort natürlich auch dabei). Einen klaren "Marktführer" wird dort es nicht geben. Das hat viel mit Geschäftspolitik, Kundenanforderungen, "Altlasten" und Kenntnissen des vorhanden Personals zu tun.

Egal welche Sprache du lernst, es wird immer Stellen geben für die du nicht qualifiziert bist. Außerdem kann es durchaus passieren, dass du in deinem späteren Berufsleben eine andere Sprache lernen musst (aus oben genannten Gründen).
Mit allen drei Sprachen (Java, C#, C++) machst du nichts falsch und dürftest etwa die gleichen Chancen auf dem Arbeitsmarkt haben.

Ich schlag dir folgendes vor: Lies ein paar Stellenanzeigen, schau welche dich thematisch ansprechen und finde heraus, welche Sprache dabei am meisten verwendet wird. Dann hast du eine Einschätzung vom für dich relevanten Arbeitsmarkt.
 
TheCadillacMan schrieb:
Ich schlag dir folgendes vor: Lies ein paar Stellenanzeigen, schau welche dich thematisch ansprechen und finde heraus, welche Sprache dabei am meisten verwendet wird. Dann hast du eine Einschätzung vom für dich relevanten Arbeitsmarkt.

Thematisch ansprechen tuen mich eigentlich alle gleich viel/wenig, da in den wenigsten Stellenanzeigen wirklich eine konkrete Beschreibung der Aufgaben steht. Bei 99% steht eigentlich immer nur der Standartsatz "Softwareentwicklung unter Java....." drinnen.
Außerdem haben Java und C# Stellen die Tücken, dass es sich dabei eventuell auch um eine JEE bzw. ASP.Net Stelle handeln könnte, was mich absolut nicht intressiert. Und wenn man sich mal die Java-Stellenangebote anschaut, dann ist bei den meisten schon von "JEE", "Hibernate", "Glassfish" oder "Tomcat" die Rede, was auf JEE hindeutet.
Und viele Sellenanzeigen haben eben nur den Standartsatz "Softwareentwicklung unter Java....." drinnen stehen, obwohl es sich dabei doch um JEE handelt.

Aber was klar auffällt ist, dass es mit Abstand die meisten Stellenanzeigen für Java gibt, wovon allerdings auch der Großteil nunmal JEE Stellen sind, auf die ich keine Lust habe. Bei C# gibt es weniger Stellen (davon sicher auch der Großteil ASP) und bei C++ die wenigsten Stellen. Zwar gibts bei C++ keine versteckten Webentwicklungs-Stellenanzeigen, dafür aber Treiberentwicklung oder Hardwarenahe Entwicklung, was mich auch eher weniger intressiert.
Welche Sprache in der Anwendungsentwicklung nun die Nase vorn hat, ist schwer bis garnicht herauszufinden....

Ich denke das beste ist einfach, dass ich mir erstmal demnächst C++ und C# in den Grundlegensten Dingen (Grundlagen, IO, GUI-Programmierung, Client-Server) anschaue. Vielleicht gefällt mir da C# oder C++ besonders gut oder eben nicht und eine der beiden Sprachen fällt weg und ich habe meine alternative.
Bei C# reizt mich die angeblich besonders bequeme GUI-Erstellung und flüssigere GUI. Aber man ist eben an MS gebunden.
Bei C++ reizt mich eher, dass man sich keine Türen verschließt. Aber angeblich eben schwer.
 
Zurück
Oben