Martin09
Hallo,
ich nutze nun seit geraumer Zeit Linux und bin damit auch wirklich sehr zufrieden (yeah!).
Da ich mich nun insgesamt ziemlich gut in die Materie eingearbeitet habe und auch mit Konsole etc. zurecht komme, moechte ich gerne anfangen zu programmieren.
Ein paar wenige Vorkenntnisse habe ich noch, aus der Schule. Soll heissen: Variable, if-else, switch, ich weiss grob was Klassen und Objekte sind, Schleifen etc.
Ich wuerde also nicht ganz bei "Null" anfangen.
Habe mich etwas eingelesen und die Sprachen, die mir Spass machen wuerden waere Java, C++ und Python.
Jetzt frage ich mich, welche von den dreien ich wohl zuerst lernen soll.
Python wird ja generell Beginnern ans Herz gelegt, allerdings las ich, dass dann der Umstieg auf C++ bzw. Java entsprechend schwieriger sein soll, wobei -wenn mann mit C++ beginnt - die anderen Sprachen relativ leicht von der Hand gehen sollen (bergab laufen, quasi).
Programmieren moechte ich ein paar Desktop Apps (Linux, Windows) und eventuell was im 2D Spielebereich.
Nichts mobiles oderso.
Vielen Dank fuer eure Hilfe! 🙂
PaTLux
Du kannst doch gar nicht wissen, welche Sprache dir Spaß machen würde, wenn du damit noch nicht programmiert hast.
Fang doch einfach mal mit C++ an und schau wie es dir liegt. Falls dir C++ nicht zusagt, kannst du jederzeit auf eine andere Sprache wechseln. Auch auf Java oder Python.
Starjumper
Ist völlig egal mit welcher Sprache man anfängt, i.d.R. wirds nicht die Letzte bleiben und Grundlagen sind in jeder Sprache relevant.
Man kann sich aber den Einstieg etwas leichter oder etwas schwerer machen. C++ als Anfänger hat halt eine ziemlich steile Lernkurve.
Ich sags mal so, es gibt noch viel mehr als Java, C++ und Python.
Martin09
Starjumper schriebIst völlig egal mit welcher Sprache man anfängt, i.d.R. wirds nicht die Letzte bleiben und Grundlagen sind in jeder Sprache relevant.
Man kann sich aber den Einstieg etwas leichter oder etwas schwerer machen. C++ als Anfänger hat halt eine ziemlich steile Lernkurve.
Ich sags mal so, es gibt noch viel mehr als Java, C++ und Python.
Was würdest du denn für Einsteiger empempfehlen? 🙂
Creshal
Von allem ein bisschen, und dann schauen, was besser geht.
[gelöscht]
Starjumper schriebC++ als Anfänger hat halt eine ziemlich steile Lernkurve.
Das würde ich so nicht sagen. C++ ist nicht schwerer zu lernen als z.B. Java. Mit C++ gibt es nur sehr viel mehr zu lernen, wenn man alle Features kennen möchte, da die Sprache inzwischen sehr komplex geworden ist.
Starjumper schriebIch sags mal so, es gibt noch viel mehr als Java, C++ und Python.
Allerdings! Scheme ist beispielsweise ganz gut dazu geeignet Programmierkonzepte zu erlernen. Da man sich in Scheme mit define-syntax selber Syntax-Elemente definieren kann unterstützt es auch alle gängigen Programmierparadigmen.
Starjumper
Ich halte mich da an Creshal. Das was ich mag, musst du nicht mögen usw. Probiere ein paar aus und finde Dokumentation dazu. Du wirst schnell merken, was du magst und was nicht.
Schemerin schriebDas würde ich so nicht sagen. C++ ist nicht schwerer zu lernen als z.B. Java. Mit C++ gibt es nur sehr viel mehr zu lernen, wenn man alle Features kennen möchte, da die Sprache inzwischen sehr komplex geworden ist.
Naja, wenn du das bezogen auf C++11 und mit kräftiger Qt Unterstützung meinst, ok. Ansonsten braucht es einfach länger bis man da als Anfänger überhaupt in die Nähe von 2D Spieleentwicklung kommt und auch wirklich versteht was da überhaupt passiert. Dazumal für 2D Spieleentwicklung auf dem Desktop (und allg. Desktop Kram) C++ unnötig komplex ist.
Schemerin schriebAllerdings! Scheme ist beispielsweise ganz gut dazu geeignet Programmierkonzepte zu erlernen. Da man sich in Scheme mit define-syntax selber Syntax-Elemente definieren kann unterstützt es auch alle gängigen Programmierparadigmen.
Scheme als Anfänger? Ich denke nicht, dass es notwendig ist sich derart intensiv mit Programmierkonzepten auseinanderzusetzen um sie verstehen zu können. Eher vergrault man damit IMHO Programmieranfänger. Scheme geht schon stark in den sehr theoretischen universitären Bereich. Wenn der TO das will, auch ok. Nur ich habe den Eindruck, dass es nicht so gefragt ist.
stefanhusmann
Ich hab das in diesem Forum schonmal irgendwo gesagt: Scheme war zu meiner Zeit an der Uni die Sprache, die man Informatik-Erstsemestern als erstes beigebracht hat.
Den Ingenieuren hat man damals eher Fortran oder Modula 2 beigebracht. Für letzteres gibt es heutzutage nicht mal mehr einen funktionierenden Compiler (ich habe mal versucht, die gcc-Modula-2-Variante zum laufen zu bringen) und Fortran würde ich nicht empfehlen, obwohl ich eigentlich nur Fortran 77 wirklich mal angeschaut habe.
Wenn es dir also um das Verstehen von Algorithmen geht, schaue dir Scheme an. Wenn du schnelle Ergebnisse haben willst, scheint Python mit seiner "batteries included"-Philosophie eine gute Wahl zu sein.
[edit: Und wenn du bei Scheme landest, ist die Frage, bei welchem. Die Sprachdefinition ist so klein, dass quasi jede Implementierung über ihn hinausgeht, was den Code natürlich inkompatibel zu anderen Implementierungen macht.]
T.M.
Bei jemandem, der noch nie programmiert hat, muss man die Frage stellen, ob es sich um etwas Ernsthafteres handelt (gar eine künftige berufliche Laufbahn), um Freizeitvergnügen oder gar nur um paar triviale Problemstellungen, die man ggf. auch mit der shell erledigen könnte. Das ist angesichts des Aufwandes eine wichtige Frage.
Vielleicht ist eine interpretierte Skriptsprache für den Anfang wirklich das beste, um überhaupt herauszufinden, wie Programmierung geht, wie man funktional oder meinetwegen objektorientiert denkt, damit man auch erste Erfolge verzeichnen kann usw. Dann nämlich wachsen automatisch auch die Aufgaben, Ideen und Ansprüche. Bei compilierten Sprachen kommen schnell noch weitere, eher handwerkliche Aspekte hinzu: der Compilier- und Link-Vorgang, Aufteilung des Codes in Dateien, Make o.ä., Debuggen, ggf. alles in einer Entwicklungsumgebung, das ist nicht wenig Aufwand, den man am Anfang ggf. umgehen sollte.
An der Uni hab ich (nachdem man sich mühevoll von BASIC gelöst hatte) Pascal gelernt, Standard-Pascal wohlgemerkt, obwohl das objektorientierte TurboPascal 5.5 und die ersten C++-Varianten (gcc 1.3) bereits bekannt waren. Objektorientiertheit war damals noch eine andere, gelegentlich sogar argwöhnisch beobachtete Welt. Man verwies damals den, "der sowas machen wolle", nicht selten auf Smalltalk.
[gelöscht]
stefanhusmann schrieb[edit: Und wenn du bei Scheme landest, ist die Frage, bei welchem. Die Sprachdefinition ist so klein, dass quasi jede Implementierung über ihn hinausgeht, was den Code natürlich inkompatibel zu anderen Implementierungen macht.]
Durch SRFIs ist das schon recht standardisiert:
http://srfi.schemers.org/final-srfis.html
Mit R7RS large wird das hoffentlich bald noch besser. 🙂
Dirk
Spontan (und weil ich Python-Fanboy bin *g*) würde ich sagen: Nimm Python.
Multiplatform Out-of-the-box (ohne neu kompilieren zu müssen), und performanter als Java.
stefanhusmann schriebIch hab das in diesem Forum schonmal irgendwo gesagt: Scheme war zu meiner Zeit an der Uni die Sprache, die man Informatik-Erstsemestern als erstes beigebracht hat.
Scheme hat halt nur einen Nachteil … Es ist Scheme 🙂
(Wann immer ich mit dieser Sprache in Berührung komme, breche ich ins Essen, sorry …)
Creshal
[gelöscht]
Dirk schriebScheme hat halt nur einen Nachteil … Es ist Scheme 🙂
(Wann immer ich mit dieser Sprache in Berührung komme, breche ich ins Essen, sorry …)
Hihi, armer Dirk. ^^ Das ist dann aber kein Nachteil von Scheme sondern eher so eine Art Allergie deinerseits. ;P
Henrikx
brikler
java ist toll! weniger toll ist hingegen, daß von einer java version auf die andere manches nicht mehr funktioniert... das macht viel vergnügen wenn man sich mit altem source code wieder beschäftigt :/
ich glaube nicht, daß es solche brüche auch bei C oder C++ gibt
Creshal
Ja, bei C(++) ist das tolle, dass Programme, die vor 30 Jahren schon gefährlich falsch waren, noch immer kompilieren. 🙂
brikler
Creshal schriebJa, bei C(++) ist das tolle, dass Programme, die vor 30 Jahren schon gefährlich falsch waren, noch immer kompilieren. 🙂
man kann sagen was man will, dem wird mit java ein ordentlicher riegel vorgeschoben. hätte ich ordentlich C oder C++ gelernt und mich damit anfreunden können, bräuchte ich mich nicht um den java riegel kümmern, aber so darf ich einen haufen code umschreiben.
wenn man eine sprache lernt, sollte es eine sein wo bestand hat, man alles machen kann und dabei obendrein etliche andere sprachen einen (fast) in den schoß fallen.
stimmt schon, C ist nicht ganz ungefährlich^^
Wie fangen Wissenschaftler Elefanten und Löwen?
Archäologen jagen Elefanten erst, wenn diese 30 Meter unter der Erde liegen.
Biologen geben sich mit der Analyse von Elefantenkot zufrieden.
C Programmierer bestimmen zuerst mit sizeof() die nötige Speichermenge für einen Elefanten, versuchen diese zu allozieren, vergessen dabei, das Ergebnis abzuprüfen, und schießen dann mit wilden Pointern auf den Elefanten.
C++ Programmierer bestehen darauf, dass der Elefant eine Klasse sei und somit schließlich seine Fangmethoden selbst mitzubringen habe. Und wenn der Elefant Afrika verlassen sollte, dann wird ja automatisch sein Destruktor ausgelöst.
...
Dirk
Schemerin schriebHihi, armer Dirk. ^^ Das ist dann aber kein Nachteil von Scheme sondern eher so eine Art Allergie deinerseits. ;P
Ja, ich bin ein bisschen allergisch gegen Klammersalat und nichtssagende Standardfunktionen 🙂
alfred92
Für den Anfang würde ich auch Python empfehlen. Du wirst früher oder später sowieso noch andere Sprachen lernen (müssen), dann kannst du dir ja Java oder C++ ansehen, je nachdem was du brauchst.
[gelöscht]
Also inzwischen glaube ich, dass die Wahl der Programmiersprache eher zweitrangig ist. Viel wichtiger ist es imo ein Buch / anderes Medium zu finden, das einem wirklich das Programmieren beibringt und nicht nur die Syntax und Features einer Programmiersprache.
Mir geht es mit dem dicken C/C++ Lehrbuch bis jetzt zumindest so, dass ich die darin enthaltenen Beispiele und Programmieraufgaben ziemlich easy nach Python übertragen kann, wenn der C-Code erstmal steht. Für Arrays nehme ich halt Listen, für die meisten for-loops in C range-basierte for-loops mit range-function in Python usw. - ok, für bit shift Operationen und dergleichen hab ich noch kein Python-Äquivalent gefunden, aber für die Programmierung von Microcontrollern nimmt man vermutlich eh keine Scriptsprache. Nichtsdestotrotz scheinen die grundlegenden Programmierkonzepte überall die gleichen zu sein, und diese stilsicher in jeder Situation richtig anzuwenden, ich glaube darum geht es in allererster Linie.