Ratschläge für die Wahl der Programmiersprache

D

Dexter1997

Gast
Hallo Freunde der Sonne,

Kurzfassung:

Die Frage wird länger. Wer keine Zeit oder Lust hat, aber mir einen Rat geben will, die Kurzfassung:
Welche Programmiersprache sollte man als Programmieranfänger zuerst beherrschen, um einfache Spiele entwickeln zu können?

Ausführlich

Ich beginne bald mein Informatikstudium, möchte aber auch in meiner Freizeit Programme entwickeln, also nicht nur im Rahmen eines Studiums bzw. ausschließlich aus fremdbestimmten Gründen.

Vorallem interessiere ich mich für die Entwicklung von einfachen Computerspielen, speziell Rollenspielen. Später möchte ich auch in der Lage sein, einfache 2D-Spiele zu entwickeln, ähnlich folgendem Aussehen:
https://de.wikipedia.org/wiki/Isometrie-Engine

Hierbei möchte ich möglichst viel selber machen. Die Planung, Programmierung und Erstellung der Grafiken möchte ich selbst übernehmen. Bis dahin ist es aber ein langer Weg.

Ein bisschen was über die Programmierung weiß ich schon. Ich habe Python, Java, C, C++, Javascript (+HTML u. CSS) bereits ausprobiert. Mein Profil auf Code Review zeichnet ein Bild von dem ab, wozu ich schon "in der Lage bin".

https://codereview.stackexchange.com/users/141134/dexter-thorn

Als Anfänger, der ich mein zukünftiges Handwerk "bitterernst" nehme, erschlägt mich vorallem die Große Fülle an Programmiersprachen und die Pro- und Kontraargumente sowie Meinungen von großen Persönlichkeiten über jeweilige Sprachen / Programmierparadigmen. Das führte dazu, dass ich selbsterklärte Lernprojekte nie wirklich durchgezogen habe, weil ich immer hin- und hergerissen war und nur hier und da mal reinschnupperte.

Hier mal ein paar Gedanken meinerseits zu den Programmiersprachen:

Es gibt Programmiersprachen, dessen Programmcodes man erst kompilieren muss und solche, die zur Laufzeit interpretiert werden. Der Performanceverlust bei interpretierten Sprachen ist mir allerdings ziemlich egal, so rechenaufwendig kann das Spiel eines einzigen Programmierers nicht werden. Zumindest nicht meine. Meine Befürchtung liegt eher darin, dass das Erlernen einer interpretierten Sprache nur zu oberflächlichen Erkenttnissen über die Programmierung führen könnte, da solche meist eher einfacher Natur sind (Python, Java) und viele Optionen, die man beispielsweise in C oder C++ hat dort nicht vorhanden sind. Dementsprechend würden hier lehrreiche Lektionen ausfallen. Auch weiß ich nicht, ob es gut ist, als Anfänger direkt objektorientierte Sprachen zu erlernen, ohne zuerst das prozedurale Paradigma verstanden zu haben. Vorallem bin ich dort deswegen unsicher, weil es viele hochkarätige Programmierer gibt, die Objektorientierung nicht nur kritisieren, sondern verachten. Das verunsichert einen nachdenklichen Charaktertyp wie mich sehr.

Hier meine Gedanken zu einigen Programmiersprachen

C

Ich glaube, es wäre gut C zu lernen, da einem das Erlernen dieser Sprache gleichzeitig grundlegende Kentnisse darüber ermöglicht, was beim Programmieren "wirklich vorgeht", was innerhalb des Computers geschieht. Ein von mir befürchteter Nachteil liegt allerdings darin, dass C nicht zum Entwickeln von grafischen Computerspielen gemacht wurde und die Literatur diesbezüglich eher mager ausfallen könnte.

C++

Hier denke ich dasselbe wie C, nur hat C++ bei mir einen Imageschaden, da meine "Vorbilder" (besser gesagt: die Meinungen dieser Leute sind für mich interessant) wie Linus Torvalds oder Richard Stallman und selbst der wichtigste Vordenker der Objektorientierung, Alan Kay, von C++ nichts halten.

Java

Super hierbei ist, dass Java Bibliotheken für so ziemlich alles anbietet, und dann auch noch plattformunabhängig. Nachteil: Man lernt eben nur "oberflächlich" programmieren, da Java vieles vereinfacht und wichtige Konzepte rausschmeißt (Zeiger, Speicherverwaltung) bzw. diese selbst erledigt. Außerdem ist Java eine rein objektorientierte Sprache, ermöglicht also syntaktisch kein anderes Programmierparadigma, ohne hässlichen Code schreiben zu müssen, der umständlich aussieht. Nicht zu vergessen, dass viele hochkarätige Programmierer von Objektorientierung teilweise nichts halten.

Python

Hierbei denke ich dasselbe wie über Java, nur das der Kritikpunkt der Objektorientierung rausfällt.

Abschließend möchte ich noch sagen, das das anfängliche Erlernen einer sehr abstrahierenden, vereinfachenden Sprache vielleicht nicht so problematisch ist, da man das Aneignen von tiefgründigem Wissen über Computer eigentlich von einem Informatikstudium erwarten darf, also sowieso auf mich zukommt.

Was würdet ihr einem verunsicherte Programmieranfänger wie mir raten, der möglichst früh kleinere eigenständige Spiele, und später aufwendigere Spiele größtenteils im Alleingang programmieren will? Ich wäre sehr interessiert an Ratschlägen.

Danke für die Aufmerksamkeit!
 
Zuletzt bearbeitet von einem Moderator:
Bei einfachen Games ist es im Endeffekt latte. Es gibt einige gute Engines die mehrere Sprachen unterstützen.

Professionelle Spiele werden in der Regel in C++ geschrieben und auch die APIs wie z.B DirectX und sehr wahrscheinlich auch Vulkan. Wenn du später beruflich in die Spieleentwicklung möchtes dann würde ich C++ vorschlagen.

greetz
​hroessler
 
Wenn du noch keine Ahnung von Programmieren hast würde ich die Javascriip oder Phyton empfhelen.

Für C++ ist schon recht komplex, und "alleine" ohne vorherige kenntnisse kann es mMn recht schnell die lust verlieren.
 
Dexter1997 schrieb:
Ich beginne bald mein Informatikstudium, möchte aber auch in meiner Freizeit Programme entwickeln, also nicht nur im Rahmen eines Studiums bzw. ausschließlich aus fremdbestimmten Gründen.
Hehe... Es hängt natürlich von dir und der Hochschule ab, aber tendenziell wirst du keine Freizeit mehr haben. :D
Oder dich dann zumindest nicht mit ähnlichen Inhalten beschäftigen wollen.

Ansonsten lernst du zuerst sowieso keine "Sprache", sondern grundlegende Konzepte, Paradigmen etc. Da ist die Sprache selbst nicht so wichtig. C/C++ ist vielleicht etwas weniger gut geeignet, weil du dich da tatsächlich zu viel mit der Sprache beschäftigen musst, aber ob jetzt Java, JS, C#,... das ist im Prinzip alles nicht verkehrt.

Wenn es dir um Spielentwicklung, ist vielleicht eine komplette Engine wie etwa Unity besser geeignet. Sonst kommt man ohne Kenntnisse nur äußerst langsam zu Ergebnissen.
 
Ganz klar C++! Aber zum Einstieg eher C mit C++ Features. Alternativ Java, allerdings da eher auf Prozedurale Programmierung beschränken ->Direkt mit Objektorientierung anzufangen überfordert die meisten.

- Gute Video-Serie über von Grund auf Entwicklung eines professionellem Spiel in C++ inkl. Erklärung jeglicher Technik und Mathematik (Week 0-10 kann ich sehr empfehlen):

https://hero.handmade.network/episodes

https://www.youtube.com/watch?v=F3ntGDm6hOs

- Meine Video-Serie über Entwicklung eines Java 2D-Platformer mit eigener Physik-Engine und Level-Editor (Erfordert aber grundlegende Java Programmierkenntnisse!)

https://www.youtube.com/watch?v=0FUuXQW9jq8

Cheers,
Final
 
Zuletzt bearbeitet:
Im Studium wirst du soviel programmieren, dass du abends eher zum Bier als zur Tastatur greifen wirst. Ansonsten würde ich eher zu C++ tendieren. Meines Wissens haben viele Engines nur Bindings für C++ und auch der ganze OpenGL-Kram war C++, wenn ich mich recht entsinne. Mein Wissensstand ist aber schon etwa 8 Jahre alt, aber das sollte noch ungefähr hinkommen.
 
Fang auf jeden Fall an was zu lernen, mit dem du dann direkt was cooles machen willst. Dann hast du auch genug Motivation und verwendest die Sprache auch praktisch.

Mit C++ würde ich nicht anfangen, einfach weil es das schon so lange gibt es dadurch ein riesen Gebilde ist. Sowohl von Sprachfeatures als auch von verschiedenen Möglichkeiten etwas umzusetzen. Falls du mit C++ anfängst kauf bzw. les am besten ein aktuelles Buch zu modernem C++. Komplett mit C Funktionen in C++ anfangen würde ich nicht machen. Dann gewöhnst du direkt schlechten Stil an. Dann kannste auch gleich C machen.

Überleg dir einfach was konkretes was du umsetzen willst.
Unity3d ist aktuell auch recht beliebt für Spiele und der Einstieg ist verhältnismäßig einfach. Das wäre dann C# (Syntax mäßig ist C# Java extrem ähnlich).
Unreal Engine ist auch gut. (C++)

Das wichtigste ist, dass du was findest das dich motiviert hält.
 
@39BlooDFreeZe
Hehe dein letzter satz wird wohl eher das problem sein... gerade als Anfänger, im spiele bereich, alleine.
Motivation ist aber bei egal welcher programmiersprache und egal was du damit machst, das wichtigste.
Also rate ich dir, setz die messlatte am anfang nicht zu hoch :-)
 
Also wenn du nicht schon durch dein Projekt auf eine Sprache festgelegt bist, würde ich tatsächlich zunächst mal mit nacktem C anfangen. Man bekommt mit C ein gutes Gefühl für das, was in einem Rechner wirklich abläuft. Und wenn man dann auch mit den ganzen Unzulänglichkeiten von C konfrontiert wird, lernt man gewisse Features von "echten" Hochsprachen mehr zu schätzen bzw. kann sie besser einordnen :D
 
Und die motibvation ist dahin..... :-):-):-)
 
Unity3d ist aktuell auch recht beliebt für Spiele und der Einstieg ist verhältnismäßig einfach. Das wäre dann C# (Syntax mäßig ist C# Java extrem ähnlich).
​Vor allem für den Anfang ist C# wohl eine der am einfachsten benutzbare klassische objektorienterte Programmiersprache.

C++, C, ... Assembler zu können, bringt dir zwar nur Vorteile, kostet aber extrem viele Nerven, die bei anderen Bereichen besser aufgehoben sind.

​Danach kannst du immer noch C++ lernen. Das wird dir nachher aber einfacher fallen, da du dann wahscheinlich weniger dazu tendierst prozedual und objektorientiert zu vermischen, und hoffentlich weißt, wo du den Fokus legen musst. C++ hat einen enormen Umfang. Zudem ist die Syntax nun nicht grundlegend verschieden.

​Vermutlich hast du sowieso einen C,C++ und/oder Javakurs in deinem Studium ;)
 
Ich denke auch C# und Java machen den Einstieg einfach, gerade um einfachere Spiele zu entwickeln, auch schon in 3D mit Unity.

Ob man dann allerdings noch nerv hat sich mit C/C++ auseinander zu setzen, weiß ich nicht, u.U. ist man dann fürs Leben versaut. :) Komplexere Spiele bzw. Spiele die die Ressourcen maximal ausschöpfen können müssen (Großproduktionen) werden dann aber wohl doch eher in C++ geschrieben.
 
C würde ich gar nicht erst in Erwähnung ziehen, wie man sich dort verrenken muss, um einfache Klassen wie string oder vector nachzubilden, ist ziemlich grausam. Für erste einfache Spielchen, dann eine, bei der man mit der WinApi arbeiten kann, also alle C-basierten Sprachen. Deine ersten Spiele werden erst mal in der Konsole stattfinden und dabei kann die WinApi recht hilfreich sein.

Du kannst zwar in allen(?) Hochsprachen fertige GUI-Bibliotheken einbinden, aber wenn Du dies kannst, bist Du kein Anfänger mehr und der Thread erübrigt sich.
 
Meine Empfehlung ist Python. Sie ist einfach zu erlernen, ist sehr gut lesbar und hat geringen Overhead, sowohl was die Sprache selbst angeht als auch bei der ganzen Umgebung. Außerdem gibt es viele und gute Bibliotheken, die einfach zu finden und zu installieren sind und auch die Fehlersuche ist schnell und einfach.

Zu den anderen genannten Optionen:
Java - Gute IDE/Tools vorhanden, Fehlermeldungen oft gut verständlich (JEE mal ausgenommen), gute Bibliotheken. Die Sprache selbst ist hingegen im Vergleich zu Python "aufgeblasen", d.h. du brauchst häufig sehr viel mehr Code um das gleiche zu erreichen.

C - gut um Basics zu lernen. Sicherlich nicht verkehrt ein wenig damit herumzuspielen, aber größere Projekte würde ich vermeiden. Die Sprache selbst bietet nur wenig Komfort und jede Menge Möglichkeiten Fehler zu machen, die häufig für Anfänger nur schwer zu finden sind da auch die Fehlermeldungen häufig nichtssagend, nicht eindeutig oder sogar irreführend sind. Die Sprache ist auch wenig ausdrucksstark was bedeutet, dass man häufig recht viel Code für eigentlich triviale Probleme braucht (noch mehr als bei Java). Manch einer versucht das durch "Magie" (Ausnutzung von Seiteneffekten von eigentlich für andere Dinge vorgesehene Code-Konstrukte) zu kompensieren, was dann aber häufig zu schwer les- und wartbaren Code führt.

C++ - Für den professionellen Einsatz in manchen Bereichen fast alternativlos. Um Konzepte zu lernen mMn aber eher ungeeignet. Auch gilt bei der Fehlersuche ähnliches wie bei C nur das Templates das ganze nochmal deutlich schwieriger machen. Einen sauberen Programmierstil vorausgesetzt kann C++ Code durchaus ausdrucksstark sein, aber die Regel ist das nicht.

C# - In vielerlei Hinsicht ähnlich wie Java. Ich habe zwar nicht viel Erfahrung mit der Sprache, aber sie scheint mir im Vergleich zu Java häufig etwas moderner und bietet hier und da ein paar nützliche Extras. Ungünstig ist mMn die enge Bindung an MS und Windows. Es gibt zwar auch Mono für andere Betriebssysteme aber da fehlen eben einige Module.

Eine weitere Alternative, die ich in die Runde werfen möchte, ist Kotlin. Eine ausdrucksstarke Sprache, die auf der JVM aufbaut, aber in vielerlei Hinsicht moderner als Java und auch C# ist. Wegen der JVM-Basis kann man Bibliotheken mit Java teilen. Sie ist wenig verbreitet hat aber eine gute IDE/Tools und wird seit kurzem auch offiziell von Android unterstützt.
 
Danke für eure Empfehlungen! Ich habe mir einiges durchgelesen und mich für Python entschieden. Für meine ersten Projekte ist die Sprache vollkommen ausreichend, und professionelles Programmieren mit kompilierten Sprachen lerne ich sicherlich dann an der Hochschule, wäre also doppelte Zeitinvestition, die sich eigentlich nicht lohnt. Ich danke für alle Ratschläge!
 
Zuletzt bearbeitet von einem Moderator:
Hallo Dexter1997,

Dexter1997 schrieb:
Welche Programmiersprache sollte man als Programmieranfänger zuerst beherrschen, um einfache Spiele entwickeln zu können?
Oh-ha. Fragetypus 10 Gefragte, 12 Meinungen.

Dexter1997 schrieb:
Hierbei möchte ich möglichst viel selber machen. Die Planung, Programmierung und Erstellung der Grafiken möchte ich selbst übernehmen. Bis dahin ist es aber ein langer Weg.
Durchaus. Da kannst Du getrost die geplante Zeit mal 10 nehmen.

Dexter1997 schrieb:
Als Anfänger, der ich mein zukünftiges Handwerk bitterernst nehme, erschlägt mich vorallem die Große Fülle an Programmiersprachen und die Pro- und Kontraargumente sowie Meinungen von großen Persönlichkeiten über jeweilige Sprachen / Programmierparadigmen. Das führte dazu, dass ich selbsterklärte Lernprojekte nie wirklich durchgezogen habe, weil ich immer hin- und hergerissen war und nur hier und da mal reinschnupperte.
Ich verstehe. Schließe mich aber der hier schon geäußersten Meinung an, dass man viele Konzepte in unterschiedlichen Sprachen wiederfindet. Wenn man also eine Sprache lernt, ist dieses Wissen nicht obsolet, nur weil man irgendwann in eine andere Sprache einsteigt. Vieles wird man mitnehmen. Und umso mehr Sprachen man beherrscht, umso leichter ist auch die Einarbeitung in eine Neue.

Daher ist es auch zunächst zweitrangig, mit welcher man loslegt. Es macht also kaum Sinn darüber sich der Idee hinzugeben, gleich mit einer etwaig optimalen Sprache zu starten.
Außerdem tauchen immer wieder neue Sprachen auf oder man lernt welche kennen, die heute nicht unbedingt allgemein bekannt sind.

Zudem hast Du noch das Ding, dass für jeden Anwendungsfall jeweils andere Sprachen geeignet sind.

Dexter1997 schrieb:
Es gibt Programmiersprachen, dessen Programmcodes man erst kompilieren muss und solche, die zur Laufzeit interpretiert werden.
Es gibt sogar welche, die kompiliert und trotzdem zur Laufzeit erst Interpretiert werden (Java) oder wo noch mal ein Kompilestep zur Laufzeit kommt (Java-VM mit JIT Compiler). Es ist sogar sowohl als auch möglich.

Insofern macht es nur begrenzt Sinn Sprachen nach interpretiert und compiliert zu unterscheiden. Früher war eine solche Unterteilung eher möglich. Heute aber kaum noch.

Dexter1997 schrieb:
Zumindest nicht meine. Meine Befürchtung liegt eher darin, dass das Erlernen einer interpretierten Sprache nur zu oberflächlichen Erkenttnissen über die Programmierung führen könnte, da solche meist eher einfacher Natur sind und viele Optionen, die man beispielsweise in C oder C++ hat dort nicht vorhanden sind.

Das hat aber nicht unbedingt was mit interpretiert vs. compiliert zu tun. Zumal es tatsächlich auch C-Interpreter gibt.
Dexter1997 schrieb:
Dementsprechend würden hier lehrreiche Lektionen ausfallen. Auch weiß ich nicht, ob es gut ist, als Anfänger direkt objektorientierte Sprachen zu erlernen, ohne zuerst das prozedurale Paradigma verstanden zu haben.
Das geht schon und ich wüsste auch nicht, was dagegen spricht.

Dexter1997 schrieb:
Vorallem bin ich dort deswegen unsicher, weil es viele hochkarätige Programmierer gibt, die Objektorientierung nicht nur kritisieren, sondern verachten.
Objektorientierung hat Vorteile wie auch Nachteile. Objektorientierung hatte damals ihren Siegeszug, als grafische Oberflächen aufkamen. Ganz einfach, weils dafür sehr praktikabel ist. Aber es gibt eben auch Problemkreise, für die ist es weniger praktikabel. Allerdings neigen moderne Sprachen dazu sich nicht auf ein Paradigma festzulegen.
Das genannte Python ist ja z.B. so eines. Es ist zwar objektorientiert, aber man merkt es ihm nicht unbedingt so an, wenn man nicht möchte. Mann kann damit auch eher prozedual oder funktional programmieren.

Anders als beispielsweise Java, wo man ja kein Hello World-Programm schreiben kann, ohne nicht wenigstens eine Klasse zu schreiben.

Dexter1997 schrieb:
Ich glaube, es wäre gut C zu lernen, da einem das Erlernen dieser Sprache gleichzeitig grundlegende Kentnisse darüber ermöglicht, was beim Programmieren wirklich vorgeht, was innerhalb des Computers geschieht.
Ja. C ist gut, wenn man sozusagen dicht am Metall sein möchte. Weil man da sich um jede Kleinigkeit kümmern muss. Das gibt einem viele Freiheiten, man lernt halt auch die kleinteiligen Schritte. Außerdem hat C den Vorteil sehr universell zu sein. Denn praktisch jede Sprache bietet eine C-Schnittstelle.
C ist deshalb auch dann nützlich, wenn man gar nicht primär in C entwickelt, sondern vielleicht nur mal eine Funktion die man in Python braucht die aber z.B. besonders schnell laufen soll.

Dexter1997 schrieb:
Ein von mir befürchteter Nachteil liegt allerdings darin, dass C nicht zum Entwickeln von grafischen Computerspielen gemacht wurde und die Literatur diesbezüglich eher mager ausfallen könnte.
Tatsächlich ist das durchaus ein Problem. Der Aufwand ist einfach viel höher. Schon allein deshalb weil die Sprache sehr primitiv ist. Wie schon gesagt, es spricht nix dagegen C mit einzubeziehen. Aber das ganze Projekt in C aufzuziehen ist dann doch nicht ganz ohne. Und meist leidet die Motivation, wenn Anfangserfolge länger auf sich warten lassen.
Ein größeres Projekt in C sollte man vielleicht eher machen, wenn man schon mehr oder weniger umgfangreiche Erfahrungen in Sachen Programmierung hat. Dann kann man eher abschätzen, worauf man sich einlässt.

Dexter1997 schrieb:
Hier denke ich dasselbe wie C, nur hat C++ bei mir einen Imageschaden, da meine Vorbilder (besser gesagt: die Meinungen dieser Leute sind für mich interessant) wie Linus Torvalds oder Richard Stallman und selbst der wichtigste Vordenker der Objektorientierung, Alan Kay, von C++ nichts halten.
Ja. Wobei man auch bedenken muss, aus welcher Richtung die jeweiligen Leute kommen. Linus hat seinen Kernel in C geschrieben. Was auch damals sehr pragmatisch war.
Stallman kommt eher aus der Lisp-Ecke. Die Lisp-Maschinen waren damals so ihrer Zeit voraus, dass C++ quasi ein Rückschritt in die Steinzeit bedeutete. Kein Wunder das er kein Freund von C++ ist. Gleiches gilt für Alan Kay. Wenn man sich die Objektorienitierung und Syntax von Smalltalk anguckt verglichen mit der von C++ , dann kann man nicht wirklich warm werden mit C++.

Allerdings darf man das auch jetzt nicht überbewerten. Klar. C++ wird oft kritisiert und sicher auch zu Recht. Das liegt aber auch daran, dass C++ oft missverstanden ist. Der Vorteil von C++ ist halt die Geschwindigkeit. Das heißt, C++ hat keine Features die irgendwie Geschwindigkeit kosten (daher auch die teilweise merkwürdig anmutende Implementierung von Objektorientierung oder Beschränktheit in bestimmten Dingen).
C++ ist eine Sprache ähnlich zu C der man aber mehr Abstraktionsmöglichkeiten in die Hand gibt. Aber halt nur alle, die zero-cost sind. Man kann sich also sicher sein, dass wenn man ein C++-Feature benutzt, dass keine oder nur minimale Laufzeitnachteile mitsich bringt.

Und in den Kontext muss man C++ auch sehen. Es ist nicht dazu gedacht, besonders hübsch oder besonders einfach zu sein.
Hinzu sollte man sagen, dass C++ sich auch gewandelt hat. Insbesondere mit C++ 11 hat sich Einiges getan. Und wenn man sich auf die Sachen beschränkt, die als modern C++ bezeichnet werden, dann ist C++ durchaus ganz gut zu benutzen.

Dexter1997 schrieb:
Abschließend möchte ich noch sagen, das das anfängliche Erlernen einer sehr abstrahierenden, vereinfachenden Sprache vielleicht nicht so problematisch ist, da man das Aneignen von tiefgründigem Wissen über Computer eigentlich von einem Informatikstudium erwarten darf, also sowieso auf mich zukommt.
Da Du vorhin schon Alan Key ansprachst, möchte ich an der Stelle mal auf Pharo verweisen. Das ist ein Smalltalk-Dialekt. Genauer gesagt ist es ein Fork von Squeak (an der ja auch Alan Key beteiligt ist/war). Pharo erfreut sich einer aktiver Entwicklergemeinschaft und ermöglicht sehr einfaches Programmieren ohne dabei aber Mächtigkeit/Ausdrucksstärke einzubüßen.

Was das entwickeln so angenehm macht ist neben der vielen grafischen Tools die Tatsache, dass es keinen klassischen Edit-(Compile)-Run-Zyklus gibt, sondern man quasi am laufenden Programm entwickelt und dies on-the-fly ändert und erweitert. Dadurch kann man in relativ kurzer Zeit Sachen auf die Beine stellen.
Die Sprache gehört (genauso wie die Smalltalk-Familie ansich) zwar nicht zum Mainstream, kann aber durchaus als Geheimtipp gelten.
Ergänzung ()

mental.dIseASe schrieb:
Im Studium wirst du soviel programmieren, dass du abends eher zum Bier als zur Tastatur greifen wirst.
Kann ich so nicht bestätigen. Ein Informatikstudium ist kein Programmierkurs. Gerade im Grundstudium (oder wie auch immer das heute heißt) hat man nur wenig mit Programmierung zu tun.


mental.dIseASe schrieb:
Ansonsten würde ich eher zu C++ tendieren. Meines Wissens haben viele Engines nur Bindings für C++ .
Viele Engines werden eher mit einer Skriptsprache gesteuert, weil dafür sich keiner C++ antun möchte. Lua ist oft verbreitet in diesem Bereich.

mental.dIseASe schrieb:
und auch der ganze OpenGL-Kram war C++, wenn ich mich recht entsinne. Mein Wissensstand ist aber schon etwa 8 Jahre alt, aber das sollte noch ungefähr hinkommen.
OpenGL kann man inzwischen von so ziemlich überall ansteuern.
Ergänzung ()

The Ripper schrieb:
​Vor allem für den Anfang ist C# wohl eine der am einfachsten benutzbare klassische objektorienterte Programmiersprache.
Naja. Wenn schon klassisch objektorientiert, dann Smalltalk. Dann haut das auch mit einfach benutzbar gut hin.

The Ripper schrieb:
​​Vermutlich hast du sowieso einen C,C++ und/oder Javakurs in deinem Studium ;)
Java ist tatsächlich sehr beliebt an deutschen Unis (warum auch immer). Ansonsten gibts traditionell eher eine Tendenz zu Sprachen die der "reinen Lehre" folgen, sprich irgendein Paradigma elegant umsetzen oder minimalistisch sind wie z.B. Scheme.
Ergänzung ()

Limit schrieb:
C++ - Für den professionellen Einsatz in manchen Bereichen fast alternativlos. Um Konzepte zu lernen mMn aber eher ungeeignet. Auch gilt bei der Fehlersuche ähnliches wie bei C nur das Templates das ganze nochmal deutlich schwieriger machen. Einen sauberen Programmierstil vorausgesetzt kann C++ Code durchaus ausdrucksstark sein, aber die Regel ist das nicht.
Für den "professionellen Einsatz" zählt ohnehin oftmals nicht, wie gut eine Sprache geeignet ist, sondern andere Dinge wie zum Beispiel Stabilität und Entwicklung über größere Zeiträume hinweg. Und auch so Dinge, wieviel Programmierer am Markt zu bekommen sind.
Daher ist ja auch Java so "beliebt".

Limit schrieb:
C# - In vielerlei Hinsicht ähnlich wie Java. Ich habe zwar nicht viel Erfahrung mit der Sprache, aber sie scheint mir im Vergleich zu Java häufig etwas moderner und bietet hier und da ein paar nützliche Extras. Ungünstig ist mMn die enge Bindung an MS und Windows. Es gibt zwar auch Mono für andere Betriebssysteme aber da fehlen eben einige Module.
Falsch. C# war schon immer offen. problematisch war bisher das .NET-Framework. Allerdings gibt es mit .NET-Core von Microsoft eine Neuimplementierung die auch ganz offiziell auf Nicht-Windows-Plattformen läuft. Ziel ist es, dass langfristig .NET-Core das klassische .NET ablöst.


Limit schrieb:
Eine weitere Alternative, die ich in die Runde werfen möchte, ist Kotlin. Eine ausdrucksstarke Sprache, die auf der JVM aufbaut, aber in vielerlei Hinsicht moderner als Java und auch C# ist. Wegen der JVM-Basis kann man Bibliotheken mit Java teilen. Sie ist wenig verbreitet hat aber eine gute IDE/Tools und wird seit kurzem auch offiziell von Android unterstützt.
Ja. Alternative JVM-Sprachen gibt es inzwischen eine ganze Menge. Auch Python läuft auf der JVM.
 
Naja. Wenn schon klassisch objektorientiert, dann Smalltalk. Dann haut das auch mit einfach benutzbar gut hin.
​Noch nie von einem der beiden gehört.
Kann ich so nicht bestätigen. Ein Informatikstudium ist kein Programmierkurs. Gerade im Grundstudium (oder wie auch immer das heute heißt) hat man nur wenig mit Programmierung zu tun.
​Hat man nicht gerade am Anfang Vorlesungen, die sich mit Programmierung (prozedural+objektorientiert) beschäftigen und später aufbauend häufig Projekte, die u.a. erfordern Code zu schreiben? ;)

​Und das nichtmal nicht nur Informatikstudium - kenne ich zumindest bei einigen Unis/Hochschulen so.
 
@andy_m4: Schöner Beitrag.:)

andy_m4 schrieb:
Oh-ha. Fragetypus 10 Gefragte, 12 Meinungen.
So ist das doch eigentlich immer unter Entwicklern. Das Problem ist dabei meist, dass man sich mit der Sprache die man selbst am häufigsten nutzt ein Stück weit identifiziert und gleichzeitig andere Sprachen (durch weniger intensivere Verwendung) häufig schlechterer beurteilen kann. Zudem kenne ich Kollegen die sich so auf eine Sprache festgefahren haben, dass Sie andere Konzepte gerne voreilig als schlecht abstempeln.
Sehe hier häufig die Tendenz, dass Entwickler aus der Riege der älteren, prozeduraleren Sprachen, die moderneren, höheren Programmiersprachen (ähnlich wie im Eingangspost) gerne als "oberflächlich" abstufen.

Man muss das ganze aber schlichtweg, wie andy_m4 das gemacht hat, differenzierter beleuchten:
andy_m4 schrieb:
Für den "professionellen Einsatz" zählt ohnehin oftmals nicht, wie gut eine Sprache geeignet ist, sondern andere Dinge wie zum Beispiel Stabilität und Entwicklung über größere Zeiträume hinweg. Und auch so Dinge, wieviel Programmierer am Markt zu bekommen sind.
Daher ist ja auch Java so "beliebt".
Kann nur zustimmen. Sprachen wie zB Java bringen viel mit, um in kürzester Zeit große aber dennoch flexible und erweiterbare Software zu schreiben. In der Wirtschaft ist meist die Business-Logik entscheidend. Da wird dir kein Chef eine Gehaltserhöhung aussprechen, weil du ein mehrdimensionales Array besonders elegant mittels Pointern durchlaufen hast (flapsig ausgedrückt).
Es gibt hier aber natürlich auch verschiedene Anforderungsbereiche und auch Typen von Entwicklern. Ich persönlich behaupte ein Verständnis für die Logiken im Hintergrund (Speicherallozierung als Beispiel) zu haben, möchte mich darum aber gar nicht jedes mal kümmern müssen.
Es braucht natürlich solche und solche.

andy_m4 schrieb:
Kann ich so nicht bestätigen. Ein Informatikstudium ist kein Programmierkurs. Gerade im Grundstudium (oder wie auch immer das heute heißt) hat man nur wenig mit Programmierung zu tun.
Kann ich so ebenfalls nicht bestätigen. Je nach Uni wird man eher zum Softwarearchitekten ausgebildet. Ich hab 4 Semester Informatik studiert. Hier bestanden die Module eigentlich nur als (Höherer) Mathematik, Komplexitätstheorie, Algorithmen und Datenstrukturen, technischer Informatik usw.
Programmiert wurde nur in praktischen Modulen. Aber hier gibts sicher auch Unterschiede zwischen Uni und FH.



andy_m4 schrieb:
Alternative JVM-Sprachen gibt es inzwischen eine ganze Menge. Auch Python läuft auf der JVM.
Ich schaue aktuell recht hoffnungsvoll auf die Zukunft von Kotlin (nativ). Kotlin ist in jedem Fall eine schöne Sprache und wenn sich diese zukünftig auch nativ kompilieren lässt dürfte dass einige Vorzüge vereinen.
 
Zuletzt bearbeitet:
G00fY schrieb:
Kann ich so ebenfalls nicht bestätigen. Je nach Uni wird man eher zum Softwarearchitekten ausgebildet.

Auch wenn der Anteil nicht übermäßig hoch war, aber Programmieren ging mir nach einiger Zeit im Studium nur noch auf den Sack, obwohl ich vor dem Studium auch in meiner Freizeit viel und gerne programmiert habe. Erst im Berufsleben habe ich wieder einen wohlwollenden Zugang dazu gefunden. Nach Feierabend nichts mehr mit Entwicklung/Informatik zu machen, habe ich aber beibehalten.
 
andy_m4 schrieb:
Ergänzung ()

Kann ich so nicht bestätigen. Ein Informatikstudium ist kein Programmierkurs. Gerade im Grundstudium (oder wie auch immer das heute heißt) hat man nur wenig mit Programmierung zu tun.
Das war bei mir auch so. Neben viel Mathe gab es die ersten Semester hauptsächlich einen groben Überblick über die verschiedenen Bereiche. Dazu gehörte zwar auch eine kurze Einführung in Java, aber über 80-100 Codezeilen ging das nie hinaus. An FHs und manchen Unis mag das etwas anders sein, aber Informatik ist von seiner Natur her ein eher Theorie-lastiges Fach.

andy_m4 schrieb:
Java ist tatsächlich sehr beliebt an deutschen Unis (warum auch immer). Ansonsten gibts traditionell eher eine Tendenz zu Sprachen die der "reinen Lehre" folgen, sprich irgendein Paradigma elegant umsetzen oder minimalistisch sind wie z.B. Scheme.
Während meines Studiums gab es im Grundstudium hauptsächlich Java und Haskell und ein klein wenig Assembler. Im Hauptstudium hatte ich dann aufgrund meiner Wahlfächer hauptsächlich mit C und VHDL/Verilog zu tun.

andy_m4 schrieb:
Falsch. C# war schon immer offen. problematisch war bisher das .NET-Framework. Allerdings gibt es mit .NET-Core von Microsoft eine Neuimplementierung die auch ganz offiziell auf Nicht-Windows-Plattformen läuft. Ziel ist es, dass langfristig .NET-Core das klassische .NET ablöst.
Prinzipiell richtig, allerdings zielt .NET-Core eher auf den Server-Bereich ab. Für Desktop-Anwendungen fehlt der größte Teil der GUI-Bibliotheken. Mit .NET entwickelte Desktop-Anwendungen lassen sich daher praktisch nur auf Windows ausführen. Die Verbreitung von C# oder .NET auf anderen Plattformen als Windows ist nach wie vor sehr gering. MS versucht das im Moment im Server- bzw. Business-Bereich zu ändern, aber Java hat sich da eigentlich schon festgesetzt.

G00fY schrieb:
Kann nur zustimmen. Sprachen wie zB Java bringen viel mit, um in kürzester Zeit große aber dennoch flexible und erweiterbare Software zu schreiben.
Das ist immer relativ. Im Vergleich zu C/C++ und anderen älteren Programmiersprache mag das stimmen. Einige der neueren Sprachen haben da aber trotzdem noch deutlichere Vorteile. Bei Java muss man immernoch viel boilerplate code schreiben nur um dem Paradigma genüge zu tun ohne dass dieser Code in irgendeinerweise der Problemlösung dienlich ist. Das versucht man teilweise durch große und aufwendige Frameworks zu kaschieren. Man tauscht damit deutlich höhere Komplexität im Framework für etwas mehr Komfort für den Nutzer desgleichen ein. Spätestens bei Debugging kann diese zusätzliche Komplexität aber wieder zum Vorschein kommen.
 
Zurück
Oben