Die Qual der Wahl

compag2000

Banned
Registriert
Okt. 2013
Beiträge
5
ich brauche dringend Eure Hilfe ich habe nun das erste Lehrjahr als Fachinformatiker Anwendungsentwicklung angefangen. Unsere Firma entwickelt und Supportet für andere Firmen Programme. Nun habe ich von meinen Chef die Frage gestellt bekommen welche Sprache ich nach der Ausbildung dann "Supporten" will. Zur Auswahl stehen C# C++ und Java. Da ich die Freie Wahl habe will ich eine wo ich auch im "Alltag" nutzen kann. Ich will keine 3d High End Games machen ich will lediglich vielleicht mal ein Android Spiel (Java) oder auch mal für Windows kleiner Anwendungen wie MP3 Player mit eigenem Design erstellen.
Ansich liegt mein Hauptinteresse an Android Apps, aber Java ist ja wiederum für den Computer nicht die Effizienteste Variante.
C++ würde mich auch reizen da man doch Spiele oder Anwendungen für Windows gut erstellen kann.
An C# gefällt mir der "Designer (WPF) (Windows 8 APPS)" usw.

Tendieren würde ich ja zu C++ da man laut Google ja mit einem "NDK" auch Android Apps erstellen kann aber anscheinend nur Eingeschränkt.
Java will ich aber nicht lernen wen es nur für Android ist und bei meinetwegen Aufwendigeren Anwendungen auf Windows dank der Performance versagt.

Also was sagt ihr was würdet ihr mir Empfehlen? Bitte mit Begründung z.B. Leichter zu Lernen usw.
 
Nur als kleine Info: Mittels Xamarin lassen sich auch Apps für iOS und Android in C# programmieren.
Kleiner Feature-Vergleich zwischen C# und Java: StackOverflow.com
Zusätzlich bietet C# mit XNA auch eine Möglichkeit zur Entwicklung von Spielen. Unity3D unterstützt ebenfalls C#.
Mit Mono ist C# sogar auf Linux lauffähig. Und das .NET-Framework ist natürlich ein riesen Plus für C# (auch für C++)

Java bietet natürlich den Vorteil der Plattformunabhängigkeit. Somit ist eine Applikation auf sehr vielen Systemen verfügbar. Zusätzlich setzt Android natürlich auf Java, darauf legst du großen Wert.

Syntaktisch ähneln sich Java und C# auch.

Eine wirkliche Antwort auf deine Frage kann dir aber keiner geben. Ich würde zu C# greifen, da es mir persönlich sehr leicht gefallen ist die Programmiersprache zu lernen und sie sehr viele Features bietet. Mit Windows als OS kannst du auch den Großteil der Anwender beliefern. Java kann man danach immer noch lernen.

Frage:
Welche Programmiersprache lernt ihr in der Schule?
 
Zuletzt bearbeitet:
Ich würde dir auch zu C# raten.
C++ ist doch recht schwierig, wenn man es richtig können will und eigentlich nur für zeitkritische Teile einer Anwendung interessant.

C# ist mit Mono auch (teilweise) auf Linux lauffähig. Zudem erzeugst du relativ sicherere Anwendungen (verwalteter Code).

Java wäre auch möglich aber das hat ja jeder mal gelernt und scheint performancetechnisch auch nicht ganz einfach zu sein.
 
SubNatural schrieb:
Nur als kleine Info: Mittels Xamarin lassen sich auch Apps für iOS und Android in C# programmieren.
Kleiner Feature-Vergleich zwischen C# und Java: StackOverflow.com
Zusätzlich bietet C# mit XNA auch eine Möglichkeit zur Entwicklung von Spielen. Unity3D unterstützt ebenfalls C#.
Mit Mono ist C# sogar auf Linux lauffähig. Und das .NET-Framework ist natürlich ein riesen Plus für C# (auch für C++)

Java bietet natürlich den Vorteil der Plattformunabhängigkeit. Somit ist eine Applikation auf sehr vielen Systemen verfügbar. Zusätzlich setzt Android natürlich auf Java, darauf legst du großen Wert.

Syntaktisch ähneln sich Java und C# auch.

Eine wirkliche Antwort auf deine Frage kann dir aber keiner geben. Ich würde zu C# greifen, da es mir persönlich sehr leicht gefallen ist die Programmiersprache zu lernen und sie sehr viele Features bietet. Mit Windows als OS kannst du auch den Großteil der Anwender beliefern. Java kann man danach immer noch lernen.

Frage:
Welche Programmiersprache lernt ihr in der Schule?

Wir fangen mit php an und Dan c und später Entscheidung zwischen den großen Sprachen also c++ und Java
 
miac schrieb:
C++ ist doch recht schwierig, wenn man es richtig können will und eigentlich nur für zeitkritische Teile einer Anwendung interessant.
Definiere "richtig können"... Klar ist C++ durch die manuelle Speicherverwaltung etwas schwerer als Java oder C#, aber dafür weiß man am Ende, wo der Hase im Pfeffer liegt.
Ich bereue es nicht, dass ich etwas C und C++ mitgenommen habe, auch wenn ich es nicht benutze.

C# ist mit Mono auch (teilweise) auf Linux lauffähig.
Das ist oftmals ein verdammt winziges "teilweise". Eine falsche Bibliothek, und das wars. C# ist in erster Linie Windows, und du kannst eben nur beten und hoffen, dass es unter anderen OS läuft.

Java wäre auch möglich aber das hat ja jeder mal gelernt und scheint performancetechnisch auch nicht ganz einfach zu sein.
Das mit der Performance ist ne Fehlinformation. Tatsächlich ist Java ziemlich flink. Es ist langsamer als C/C++, aber das ist ja wohl offensichtlich. Es ist aber trotzdem selbst für umfangreiche Anwendungen performant genug.
Schau dir z.B. mal Open Xchange an, eine freie, auf Java basierende, Exchange-Alternative. Ein mittelstarker Dedicated Server bedient da flockig 1000 Clients.

Außerdem ist nur ein Bruchteil der Anwendungen so zeitkritisch, dass man den Leistungsvorteil von C/C++ braucht. Oftmals wird ganz woanders Leistung verloren. Was bringt es dir, wenn dein Codesegment an sich in 1 statt 1.3ms durchläuft, wenn du in der Realität eine Datenbankabfrage drin hast, die im günstigsten Fall 10ms dauern wird?
Genau deshalb optimieren clevere Webentwickler auch nicht ihren PHP-Code. Es bringt nichts, es hängen fast immer die Datenbank-Teile.

Und "jeder" lernt Java? Mag stimmen. Ich habs auch mal gelernt. Ist ewig her, ich würd grad so Hello World zum Laufen bringen... aber was stört das? Java-Entwickler sind im Enterprise-Umfeld sehr gefragt. Java ist eben weit mehr als Bunti-Klicki-Anwendungen für hohlköpfige Konsumenten.
Der richtig geile Scheiß läuft irgendwo auf einem Tomcat-Server und ist so komplex, dass du einfach nur mit den Ohren schlackerst.

Kein Aas schreibt z.B. Webanwendungen in C#, kaum jemand in C++. In Java hingegen? Das Battle.net - Forum war zumindest vor ein paar Jahren noch eine Tomcat-Anwendung.... Groß genug?

compag2000 schrieb:
Wir fangen mit php an und Dan c und später Entscheidung zwischen den großen Sprachen also c++ und Java
Na is doch cool. Nimm Java. Es ist mächtig, es ist flexibel, du bindest dir kein Microsoft ans Bein, es gibt viele geile Einsatzgebiete,...
 
Das große Problem von C++ sind die Zeiger. Dazu kommt, daß, wenn du verwalteten Code erzeugen willst, dies nicht nativ vorhanden ist.
Mit der Objektorientierung sind Zeiger eigentlich überflüssig und nur ein Risiko. Als Applikationsprogrammierer brauchst Du nicht zu wissen, wie jedes Byte im Speicher liegt. Da kannst du deine Zeit besser investieren.

zu Java: na, da war ich ja vorsichtig.
Ich kenne eigentlich nur wenige richtige Java Applikationen: JDownloader, Active Trader und vor allem TV Browser und ein paar eMail Appliaktionen.

Jede dieser Anwendung braucht ewig, bis sie startet. Danach geht es so. Jedoch hat keine dieser Anwendung die Möglichkeit, native Windows (oder besser betriebssystemkonforme) Dialoge zu erzeugen. Vom Look and Feel her also problematisch.
Java lohnt sich eigentlich nur, wenn man portierbare Applikationen erstellen will.
 
miac schrieb:
Das große Problem von C++ sind die Zeiger. Dazu kommt, daß, wenn du verwalteten Code erzeugen willst, dies nicht nativ vorhanden ist.
Mit der Objektorientierung sind Zeiger eigentlich überflüssig und nur ein Risiko. Als Applikationsprogrammierer brauchst Du nicht zu wissen, wie jedes Byte im Speicher liegt. Da kannst du deine Zeit besser investieren.

Was haben denn Zeiger bitte mit Objektorientierung zu tun? Und wo genau liegt das "große Problem" bei den Zeigern?
 
miac schrieb:
Jede dieser Anwendung braucht ewig, bis sie startet.
Das liegt natürlich nie daran, dass z.B. TV-Browser noch (je nach Konfiguration) hunderte Dateien von der Platte liest, bevor die Daten angezeigt werden können. Wäre das Programm in C geschrieben, würde das keine Sekunde dauern!1!!

Die Performanz eines (Desktop-)Programms hängt in erster Linie vom Design ab. Könnte man TV-Browser z.b. beschleunigen, in dem man eine Datenbank anstatt einzelner Dateien verwendet? Oder wäre das zu CPU-Lastig?
Speichere ich meine Daten in einer Array-, Linkedlist oder HashMap? Speichere ich sie überhaupt oder errechne ich sie mir jedes mal neu?

Es bringt nichts, wenn die die "schnellste" Programmiersprache benutzt, dann aber keinen Plan hast, wie die Speicherverwaltung funktioniert und wie man damit effizienten Code schreibt. Ich kann in C# auch alle Aufgaben dem Dispatcher-Thread zum abarbeiten geben, so dass die GUI ruckelt oder komplett hängt. Fazit: C# ist extrem unperformant.

Lesenswert: C++ performance vs. Java/C#
 
Hey Leute Danke für eure Antworten.
Ich habe diese Frage bereits auf anderen Coding Seiten gepostet und diese waren weitestgehend Identisch mit euren.

Nun bin ich soweit das C++ wegfällt, und meine Entscheidung zu Java oder C# fallen muss.

Jetzt habe ich noch ein paar kleine Fragen: durch diese Windows Forms usw. sind mit C# ja relativ geile Oberfläche möglich wie sieht das mit Java aus´? Oder muss man die Standart Oberfläche nutzen Das ist für mich eine Ansprechende Oberfläche:( http://i.i.cbsi.com/cnwk.1d/i/tim2/2013/10/15/avast_2014_IS_Home_eng_610x434.png ).

Und wen ihr das Bewerten müsstet was ist leichter zu lernen, also nicht von der Zeit sondern von dem Verständnis?
Welche Sprache ist langlebiger also Zukunft sicherer?
C# hat ja die .Net Bibliothek bringt diese irgendwelche Vorteile?
Kann man Java sofort in Verbindung mit Android lernen? Und daran dann Üben/Wachsen?
Wo gibt es bessere Literaturen dazu?

Das wars dann denke ich mal.
MFG, Marco
 
miac schrieb:
zu Java: na, da war ich ja vorsichtig.
Ich kenne eigentlich nur wenige richtige Java Applikationen: JDownloader, Active Trader und vor allem TV Browser und ein paar eMail Appliaktionen.
Wenn das alles ist, was du mit Java verbindest, solltest du dir nicht so starke Urteile erlauben und pauschalisieren. Java auf Client-Seite ist irrelevant und wenn man es benutzen will, dann reicht eben "jeder hat es mal gelernt"-Wissen nicht aus. Ja, man kann auch in Java katastrophalen Code erzeugen. Ebenso wie in anderen Sprachen.

Mich schreckt bei C# auch immer die Windows-Bindung sehr ab. Wenn ich mal eine sinnvolle Anwendung schreibe, möchte ich die doch nicht nur mit Windows-Dullys teilen, die ihre Rechner eh nur als potentere Spielkonsole benutzen. Aber wenn man selbst nur Windows benutzt, ist einem das wahrscheinlich egal.
 
Java und C# sind sich konzeptionell sehr ähnlich, wenn du eine der beiden Sprachen lernst, dann ist vieles auch bei der anderen anwendbar. Damit hättest du dann die Entwicklung für Android und den Windows-Desktop abgedeckt (klar, das sagt sich jetzt so leicht... auf was ich hinaus wollte: es muss an dieser Stelle keine strikte "entweder, oder"-Entscheidung sein).

Sonstiges: Das NDK von Google ist nicht für die klassische App-Entwicklung gedacht und nicht als gleichgestellte Alternative für Java anzusehen, sondern lediglich für wirklich performancekritische ProgrammTEILE vorgesehen.
Wenn dir Java nicht effizient genug ist (was nicht der Fall sein wird, wenn man sauber vorgeht), dann ist sind es C# und 95% aller anderen Technologien auch nicht und dir bleibt wirklich nur C/C++, D und Co.
 
Zuletzt bearbeitet:
SubNatural schrieb:
(...) Zusätzlich bietet C# mit XNA auch eine Möglichkeit zur Entwicklung von Spielen. (...)
XNA wird nicht mehr weiterentwickelt und wird wohl aussterben.

Grundsätzlich ist es wie mit jeder anderen Frage nach der richtigen Programmiersprache: Es ist nicht wirklich wichtig, wenn du programmieren kannst, wirst du früher oder später sowieso in der Lage sein die Sprache zu wechseln und für jedes Projekt die am besten geeignete zu wählen. Ich persönlich würde, um täglich damit zu arbeiten, C# wählen. Aber das ist einfach nur Geschmackssache.

​Wenn du mit allen schon einmal gearbeitet hast, wähle einfach die Sprache, die dir am meisten Spaß macht oder mit der du am besten klar kommst.
 
compag2000 schrieb:
Nun bin ich soweit das C++ wegfällt, und meine Entscheidung zu Java oder C# fallen muss.

Erstaunlich!


compag2000 schrieb:
Jetzt habe ich noch ein paar kleine Fragen: durch diese Windows Forms usw. sind mit C# ja relativ geile Oberfläche möglich wie sieht das mit Java aus´? Oder muss man die Standard-Oberfläche nutzen Das ist für mich eine Ansprechende Oberfläche:( http://i.i.cbsi.com/cnwk.1d/i/tim2/2013/10/15/avast_2014_IS_Home_eng_610x434.png ).

Sieht mehr nach einer Webseite, denn einer nativen Anwendung aus, aber das ist wohl der Trend :D Natürlich geht das auch mit Java, wobei man dafür aber vielleicht ohnehin besser gleich HTML5 nimmt und nur das Backend mit Java etc. umsetzt.


compag2000 schrieb:
Und wen ihr das Bewerten müsstet was ist leichter zu lernen, also nicht von der Zeit sondern von dem Verständnis?

C# ist komplexer, aber Java holt bald wieder auf :)


compag2000 schrieb:
Welche Sprache ist langlebiger also Zukunft sicherer?

Meine Glaskugel sagt, dass Scala das Rennen macht und Fachinformatiker dadurch obsolet werden :D


compag2000 schrieb:
C# hat ja die .Net Bibliothek bringt diese irgendwelche Vorteile?

Vorteile gegenüber was? Der Nichtverwendung?


compag2000 schrieb:
Kann man Java sofort in Verbindung mit Android lernen?

Klar, wobei Android kein Java verwendet. Es fühlt sich nur so an.


compag2000 schrieb:
Und daran dann Üben/Wachsen?

Das kommt auf Dich an!
 
soares schrieb:
Klar, wobei Android kein Java verwendet. Es fühlt sich nur so an.

Klar verwendet Android die Sprache Java. Die technische Ausführung und Umsetzung ist eine andere Frage, der erzeugte Bytecode mag komplett anders aussehen, aber die verwendete Sprache ist trotzdem unbestreitbar Java. Das fühlt sich nicht nur so an, das ist so :)
 
Zuletzt bearbeitet:
Also ich sehe C# als die beste Einsteigersprache. Man hat mit Visual Studio so ziemlich die angenehmste Arbeitsumgebung die man haben kann, die MSDN Dokumentation ist extrem gut (die offizielle Java Dokumentation ist n Witz dagegen), es gibt mehr Sprachfeatures die meiner Meinung nach extrem praktisch sind und einem viel triviale Schreibarbeit ersparen. Dazu übertrifft der GUI Designer so ziemlich alles was für Java irgendwie möglich wäre (jedenfalls im "halbwegs" kostenlosen Bereich). Da wäre auch noch der Vorteil, dass .NET riesig ist. Natürlich muss man aufpassen, dass man als Anfänger in den Features nicht untergeht, das kriegt man aber ganz gut hin denk ich. Aus all dem folgt, dass man als Anfänger schnell kleine Etappenziele erreicht hat und so nicht die Motivation verliert. Der Wechsel zu Java ist keine große Sache, wenn man mal eine Programmiersprache wirklich verstanden hat.

Aussterben werden beide Sprachen so schnell nicht :-)
 
...nur bist du mit C# eben an Windows-Desktops gebunden. Kein Aas schreibt ne komplexe Server-Applikation in C#. Java fühlt sich hingegen sowohl im Desktop- als auch im Serverbereich sehr wohl. Es ist egal, ob das komplexeste Java-Programm,d as man mal in Aktion gesehen hat, eben der jDownloader ist. Tatsache ist: im Hintergrund so mancher großer Online-Ressource werkelt ein Apache Tomcat mit nem monströs komplexen Java Backend. Man sieht es nciht, aber es ist da. Siehe eben z.B. Battle.net.
 
Tumbleweed schrieb:
Wenn das alles ist, was du mit Java verbindest, solltest du dir nicht so starke Urteile erlauben und pauschalisieren. Java auf Client-Seite ist irrelevant und wenn man es benutzen will, dann reicht eben "jeder hat es mal gelernt"-Wissen nicht aus.

Sag mal, hast Du Probleme mit "Text verstehen" oder warum bist Du so aggressiv.

Wenn du schon zugibst, daß "Java auf Client Seite irrelevant" ist, dann hast Du meine Meinung bestätigt. Denn darum geht es dem TE ja.

Also kühle deine Fanboy Kopf mal ein wenig ab.
 
Muss ich dir jetzt erst die Nutzungsstatistiken der verschiedenen Server-Typen und Sprachen zeigen? ASP.NET -> MS IIS... und IIS is der blanke Hohn. Noch 1-2 Jahre, dann liegt sogar nginx drüber. Gegen Apache schmatzt die Krücke ja seit jeher ab. ASP.NET klammert sich verzweifelt an seine letzten ~25% Marktanteil, die ihm in naher Zukunft auch noch von anderen Ansätzen, z.B. Ruby oder Node.JS, abgefressen werden.
 
Im Enterprise-Umfeld ist neben Java auch .NET stark vertreten und bekam mit Sharepoint nochmals Aufschwung. Möchte man in dem Umfeld arbeiten, dann drehen sich alle Stellenanzeigen um Java oder .Net. Mir stellt sich eher die Frage, wer derartige Anwendung ernsthaft mit Rails oder Node.js schreiben möchte.

Verstehe mich nicht falsch, ich bin überhaupt kein Freund des IIS, aber die Aussage "Kein Aas..." ist dann doch etwas übertrieben, wobei die 20% oder 25%, wenn auch rückläufig, ja nicht nichts sind. Zumal dort Intranet und vor allem komplexe B2B Systeme gar nicht auftauchen, die nun mal den größten Brocken ausmachen.

Klar nutzt keine hippe Webagentur ASP.NET... Aber "komplexe Server-Applikation (Zitat)" sind eben was ganz anderes als normale (und von mir aus auch komplexe) Websites.
 
Zuletzt bearbeitet:
Zurück
Oben