Der steinige Weg des Erlernens einer Programmiersprache

ari

Well-Known Member
Es als Neujahrsresolution zu bezeichen würde ich für gewagt halten aber dennoch habe ich mir gedacht, das neue Jahr will besser genutzt werden weil ich mit dem, was ich letztes Jahr geleistet beziehungsweise gelernt habe nicht sonderlich zufrieden war. Ich war ein fauler Hund. Und das gehört geändert. Neben dem Wechsel zu FreeBSD als Desktopbetriebssystem möchte ich endlich einmal vernünftig eine Programmiersprache lernen (Wenn ich dabei das Programmieren an sich auch gleich zu einem gewissen Teil mitlerne wäre das natürlich ein glücklicher Umstand.). Die Frage ist nur: Wie stelle ich es (richtiger als bisher) an?

Kurz zu meinem "Hintergrund": Nach abgeschlossenem Abitur folgte ein zweisemestriger Besuch auf einer technischen Universität, momentan (bis voraussichtlich Oktober 2013) in Ausbildung als IT-Techniker befindlich. Computer, neben Literatur, als größtes Hobby.

Ich habe mich im Laufe der letzten Jahre immer wieder mit den verschiedensten Programmier- und Skriptsprachen auseinandergesetzt, ohne jedoch eine wirklich zu lernen oder gar das Programmieren selbst (Techniken, Paradigmen, ..) wirklich nahegebracht zu bekommen. Da war Java während meines kurzen Universitätsabstechers, Shell, Perl und Python welches im Zusammenhang mit dem alltäglichen Betriebssystemgebrauch aufgetaucht ist, C und C++, ein winziges Stückchen (x86-Intel-)Assembler, der Dreisatz HTML, CSS, PHP irgendwann mal mittendrin und im Zuge meiner jetzigen Ausbildung sogar ein bisschen Visual Basic. All diese Lernbestrebungen und Beschäftigungen haben nie sonderlich lange gedauert, vielleicht mal ein halbes Jahr, aber dann nicht intensiv genug um halbwegs Wissen anzusammeln und im Langzeitgedächtnis zu verankern.

Ein großes Problem, welches immer wieder aufgetaucht ist, war beziehungsweise ist, dass die meisten Lehrmaterialien immer gleich aufgebaut - und zu einem gewissen Grad gleich langweilig waren. Simpelste Taschenrechner programmieren, einfache mathematische Formeln implementieren, Strings einlesen. Das ist, auch als Anfänger, extrem langweilig. Scheinbar braucht mein Gehirn (.. oder vielleicht rede ich mir das auch nur ein?) vernünftige Sachen zu tun. Ein Programm dass mir einen Arbeitsschritt erleichtert, einen 1-Zeilen-Codebug den ich fixen kann um damit irgendetwas zu reparieren.

Weiters ist es irgendwann zu einem Problem geworden dass ich irgendwann rudimentär wusste, was es für Datentypen gibt. Was eine Variable ist. Was eine if-Abfrage und eine while-Schleife ist. Was Funktionsparameter sind. Und jedes Mal wenn ich dann an den Punkt gekommen bin wo ich etwas neues gelernt hätte war die Lust bereits verflogen und ich bin an dem selben Punkt gewesen wie vorher - ahnungslos und wieder auf dem selben Stand wie vorher.

Zumindest das, was mir Spaß macht (Ich habe nicht das Ziel im Beruf aktiv als Programmierer zu sein.) hat sich langsam aber doch herauskristallisiert: Probleme lösen, Dinge kreieren die mir helfen, zu anderen Projekten etwas beitragen. Definitiv auf lokaler Ebene, Websprachen sind absolut nicht meines.

Ich kann meine Fragestellung nicht einmal wirklich genau formulieren. Vielleicht hat jemand einen Tipp wie man eines meiner Probleme lösen könnte. Oder einen Erfahrungsbericht wie es ihm/ihr beim Erlernen einer Programmiersprache ergangen ist. Einen Buchtipp, einen Seitentipp oder ein Video dass ich sehen sollte. Vielleicht ist es die Frage nach einer Programmiersprache. Oder nach einem Weg den ich gehen soll. Da bin ich mir selbst nicht so ganz sicher.

Ich scheue mich nicht davor Bücher zu lesen, mich durch Texte zu wälzen oder wirklich in eine Thematik einzuarbeiten. Auch am Zeitaufwand soll es nicht scheitern. Eher habe ich das Gefühl ein bisschen in mir selbst verloren zu sein und deshalb nicht weiterzuwissen. :ugly:

Mir ist bekannt dass es aberhunderte Threads im Internet gibt die sich mit diesem oder ähnlichen Themen ("Welche Programmiersprache ist für mich geeignet?", "Wie programmieren lernen?", etc. pp.) beschäftigen. Aber hier finde ich wohl einen relativ großen Haufen Erfahrungswerte nachdem alles von Autodidakten über Informatikstudenten bis Langzeitprogrammierer vorzufinden ist. Vielen Dank schonmal im Voraus!

// edit:
Ich hab's deswegen unter Geplauder und nicht unter Programmieren geposted weil es keine richtige Frage zu einem Programm ist.
 
Mein Tipp wäre, wirklich genau das zu tun, was du selber vorschlägst: Such dir irgendein kleines Projekt und arbeite daran. Gerade bei den BSDs gibt es davon einige.
Oder geh mal durch die Datenbank, im Fall von NetBSD, durchsuch die Datenbank nach "bin"-Bugs. Es gibt häufiger mal was, was "einfach nur" programmiert werden muss.

Oder guck dir von den BSDs die Projektseiten an. Oft gibt es Projekte, die nicht allzu groß sind, aber trotzdem von niemandem gemacht werden.

Wo du auf Probleme stößt mit deinen Kenntnissen, wirst du dann schon schnell sehen, was du dir noch anlesen musst. Grundlagen in Datenstrukturen (Listen verschieden verlinkt, Hashtabellen) solltest du schon haben, wenn nicht, dann guck dir vielleicht ein Skript aus einem kleinen Kurs an der Uni an.

Daher würde ich dir auch zu C raten. Da hat man eine sehr steile Lernkurve und du kannst sehr viele nützliche Dinge in der BSD-Welt tun.
Alternativ, wenn du ein Android- oder Iphone-Handy hast oder ein Tablet und die nicht zu schlimm findest, lern die entsprechende Sprache dazu. Da gibt es oft schicke Dokumentation und ich kann dir einige Projekte nennen, die sehr nützlich wären. ;-)

Aber am ehesten würde ich dir empfehlen, C zu lernen und die Bugdatenbanken der BSDs durchzugehen. Da findest du einiges und lernst auch sehr viel, weil du fremden Code analysieren und reparieren musst.
Geh z.B. auf http://gnats.netbsd.org und such als Kategorie bin aus. Und schon findest du eine Menge Bugs, die nicht viel Kenntnisse, aber Ausdauer benötigen, um sie zu finden und zu fixen.
 
Programmiersprachen sind nur Werkzeuge. Es macht keinen Sinn möglichst viele davon zu "lernen".

Wichtiger ist es Programmierpraktiken zu lernen, zu verstehen und umsetzen zu können.

Ich finde dieses Buch absolut genial darin (zumindest für die objektorientierte Welt):
http://www.amazon.de/Entwurfsmuster-von-Kopf-bis-Fuß/dp/3897214210/

Das ist auch alles andere als langweilig geschrieben. Es nutzt zwar Java, aber das Thema ist nicht alleine auf Java beschränkt und gilt quasi für alle Sprachen.

Alternativ kannst du dir auch mal andere Sachen ansehen als nur "Wieder ein C-Abkömmling"-Programmiersprachen. Da wären z.B. Scheme oder Haskell. Damit betrittst du dann die Welt der funktionalen Programmierung, die mehr oder weniger immer mehr Einzug in die "normale imperative/objektorientierte" Welt hält.
 
Die Design Patterns kann ich auch sehr empfehlen, allerdings nur im Original auf englisch.
Ansonsten, wie schon erwähnt: Suche dir Aufgaben, die du mit Hilfe einer Programmiersprache lösen kannst.
Bestimmt gibt es Dinge, von denen du denkst: "Ich suche schon ewig eine Software, die das kann." Und wenn du sowas hast, fang damit an, es selber zu implementieren. Zu kompliziert? Nimm ein Teilproblem davon und implementiere einen Algorithmus dafür. So hast du ein Ziel und am Ende was, was du tatsächlich brauchen kannst und selber hergestellt hast.
 
programmieren lernen ist wie ein musikinstrument lernen:
ueben
ueben
ueben

an- und fuer sich beschraenkt sich programmieren in egal welcher sprache aber auf folgende teile:

- ausgeben (printf)
- rechnen (x=a+b)
- funktionen aufrufen (func())
- dateien laden/speichern (fopen)
- schleifen (for/while)
- konditionen (if/switch)


spontan faellt mir als erstes ein kleines projekt fuer dich ein:
leg dir eine .txt datei an, in die schreibst du immer ein +, -, * oder / und zwei zahlen.
und dann schreibst du dir ein programm was diese sachen einliest und ausrechnest. in c wird dir die funktion atoi() dabei helfen.

Code:
% cat >rechne.txt
+ 1 2
/ 9 3
* 4 3
% ./ausrechnen rechne.txt
3
3
12
%

wenn du das kannst, dann rate ich dir ein buch ueber qt-programmierung zu holen. und die beispiele abzutippen. ich hab das buch von blanchette/summerfield. lass die finger vom qt creator, aber so eine graphische oberflaeche zu coden ist schon motivierender als nur text ausgabe.
 
Zuletzt bearbeitet:
Also ich habe eine Ausbildung zum Fachinformatiker gemacht (2003 fertig) und da wurde auch Java gelehrt, allerdings hat mir das damals eigentlich gar nichts gebracht. Und im Endeffekt konnte man sich mehr oder weniger durchmogeln. Es verging einige Zeit und nun studiere ich Informatik und da hatten wir im ersten Semester einen Programmierkurs und wenn man den bestanden hatte, dann hatte man schon sehr viele Sachen drauf. Aber diese Grundlagen zu Datenstrukturen (Arrays, verkettete Listen, Hash-Tables etc.) sind ebenfalls sehr wichtig.

Die Programme, die wir wöchentlich abliefern mussten, waren auch nicht so spannend... Aber wenn sie denn liefen, hat es doch Spaß gemacht :D Nun muss ich allerdings sagen, dass ich immer gedacht habe, ich würde gerne programmieren können und nun da ich es ein bisschen beherrsche, mache ich das auch nicht. Es ist aber gut und wichtig im Informatikbereich ein grundlegendes Verständnis von Programmierprinzipien zu haben. Die Programmiersprache ist da fast egal...

Ach ja, ich habe nun Java gelernt, wie es auch an vielen anderen Unis der Fall ist. Ich glaube, es hilft alles nichts, wenn du dich selber nicht motivieren kannst. Ideal ist es natürlich, wenn man jemanden hat, der ein bisschen über die Schulter schaut und auch Tipps geben kann und schwerwiegende Fehler ausmerzen kann.
 
hi

fuer mich ist es immer wichtig , wenn ich etwas lernen will , ich brauche ein grund.
wie zz der NXT von lego deswegen arbeite ich mich in nxc ein.

holger
 
Kann den bisherigen Schreibern nur beipflichten: Die größte Motivation sich mit dem Programmieren von Anwendung zu beschäftigen, ist ein gewisser Leidensdruck. Der da wäre: Ich brauche ein Programm, das meinen Vorstellungen entspricht und auf dem Markt ist keins verfügbar oder verfügbar, aber nicht ausreichend. Auf blauen Dunst irgendwas zu proggen wird nicht zielführend sein.
 
Da stimme ich die (euch) zu. Das Problem an der Sache ist meist nur, dass Programme die man "bräuchte" zum Beginn der Programmierkarriere ziemlich überdimmensioniert sind (und man vorher mal die Grundlagen trainiert haben sollte) und Programme die in die Kategorie "Anfängertauglich" fallen eher unspannend sind bzw bereits zu Hauf existieren.
 
Eine Seite die ich sehr gut finde als Neuling in einer beliebigen Programmiersprache

projecteuler.net

Trifft jetzt auf das Topic nicht vollständig zu, allerdings für die Grundlagen, Schleifen, Datentypen,
Datei einlesen usw. gut geeignet.
 
Ich denke eben auch, dass die Motiviation das wichtigste ist. Erstmal denkt man ja, dass das heißt, man müsse irgendwas programmieren, was einem wichtig ist. Ich habe allerdings auch gemerkt, dass es sehr befriedigend ist, eine bestimmte Anforderung zu erfüllen, ganz gleich, was man davon hält. Auch in einem eigenen Projekt wird man irgendwann einen Punkt erreichen, den man irgendwie langweilig findet oder nervig oder sonstwas. Da muss man sich dann durchbeißen und das ist wohl mit das wichtigste beim Programmieren.
 
Ich habe immer durch konkrete Probleme gelernt. Theorie kann ich mir immer erst vermitteln wenn ich praktisch Hand angelegt habe. Nicht sehr wissenschaftlich aber so funktioniere ich halt.

Wenn ich dann erst mal selbst Problemlösungen gefunden habe kann ich mich mit viel Enthusiasmus und Begeisterung in das etablierte Wissen einarbeiten und meine eigenen Ansätze in bestehende Kategorien einsortieren.
 
Erstmal eine Buchempfehlung: "The Pragmatic Programmer". Ich lese es gerade und muss sagen: Es vermittelt zwar viel Common Sense (also Dinge auf die man auch so gekommen wäre), langweilt aber dennoch nicht, weil es alles sehr gut auf den Punkt bringt und (mir zumindest) druchaus mal andere Blickwinkel eröffnet hat. Es hat dabei außerdem in fast jeglicher hinsicht einen sehr neutralen Blickpunkt, geht also nicht von einem bestimmten Entwicklungsprozess oder einer bestimmten Sprache aus. Ein Buch, das sich universal mit dem Thema Programmierung auseinander setzt könnte man also sagen.

Nun zum eigentlichen Thema: Ich finde es ist falsch, sich eine konkrete Programmiersprache zu suchen und zu sagen "die lerne ich jetzt". Das habe ich Jahrelang mit C probiert - mit mäßigem Erfolg. Was will man schließlich schreiben, wenn einem das Projekt fehlt, das einen motiviert. Der Schritt zu Sprachen höherer Ebene fiel mir dabei recht lange schwer, aber im Nachhinein muss ich sagen, dass ich ihn nicht bereue. Konkret schreibe ich momentan fast ausschließlich Java (DuckundRenn) und kam da im letzten halben Jahr sowohl mit Sachen, die mich begeistert haben, als auch mit Sachen, die mich weniger begeistert haben in Kontakt - jedenfalls würde ich mittlerweile behaupten, dass ich so weit in der Sprache drin stecke, dass ich langsam behaupten kann sie wirklich zu kennen.

Wieso Java? Primär, war das nicht meine Entscheidung, sondern war so, weil das Forschungsprojekt mit dem ich mich beschäftige nunmal vor meiner Involvierung bereits in Java geschrieben war. Sekundär interessieren mich für verteilte Systeme, Datenbanken und solche Späße. Durch meine Forschungstätigkeit kam ich dann mit Hbase und Zookeeper in Kontakt, wo ich mich mittlerweile sehr zuhause fühle, auch ein paar Frameworks habe ich gefunden, die mir einfach Spaß machen und so entwickelt sich gerade auch ein eigenes Projekt in Java, eben weil ich die Sprache mittlerweile gut kenne und mögen gelernt habe (nicht dass ich sie nicht mindestens genau so viel kritisieren könnte).

Nebenbei habe ich auch immer wieder zu Ruby und konkret Ruby on Rails geschielt, aber auch das ist mittlerweile mehr oder weniger Vergangenheit, weil ich mittlerweile einfach weiß, wie das in Java geht und ich es in Rails wahrscheinlich nicht schneller hinkriegen würde. Ruby ist zwar eine Sprache, die weiterhin auf meinem Radar bleiben wird, aufgrund ihrer enormen Einfachheit, aber auch Ruby hat halt so seine Schwächen - vor allem aber sehe ich Java als die geeignetere Sprache für meine momentanen Projekte.

Meine Sprachen für die Zukunft: C++0x oder D will ich mir mal anschauen, wenn mir das geeignete Projekt über den Weg läuft, ansonsten sollte ich sicher mal Richtung Scala schielen, läuft immerhin auch auf der JVM und ist mittlerweile sehr populär und wohl irgendwann mal C# mittels Mono - viele Java-Programmierer schwärmen mittlerweile von den Sprachfeatures von C#. Wie gesagt aber eben nur, wenn das Projekt kommt, bei dem ich einen Nutzen darin sehe, eine dieser Sprachen zu vertiefen, denn sonst fehlt mir einfach das Ziel. Ein Hello-World oder einen Taschenrechner kann jeder in einer beliebigen Sprache schreiben, die ganze Toolchain drumherum und die Ecken und Kanten einer Sprache, die lernt man eben nur mit einem Projekt in dem man sich mal eine Weile verlieren kann.
 
Ein großes Problem, welches immer wieder aufgetaucht ist, war beziehungsweise ist, dass die meisten Lehrmaterialien immer gleich aufgebaut - und zu einem gewissen Grad gleich langweilig waren. Simpelste Taschenrechner programmieren, einfache mathematische Formeln implementieren, Strings einlesen. Das ist, auch als Anfänger, extrem langweilig. Scheinbar braucht mein Gehirn (.. oder vielleicht rede ich mir das auch nur ein?) vernünftige Sachen zu tun. Ein Programm dass mir einen Arbeitsschritt erleichtert, einen 1-Zeilen-Codebug den ich fixen kann um damit irgendetwas zu reparieren.
Vom Berufsbild her schonmal in Richtung Software Testing / Quality Managment geguckt? Als Entwickler liebe ich Leute, die bugs in meiner Software suchen und finden umso mehr (ist mehr ein Wunschtraum), wenn sie gleich auch noch selbst in der Lage sind, die Bugs auch noch anständig auch noch in Form eines Codepatches zu beschreiben.
 
Ich bedanke mich gleich zu Beginn für eure Antworte, ich hatte nicht mit großer Resonanz gerechnet. :)

Programmiersprachen sind nur Werkzeuge. Es macht keinen Sinn möglichst viele davon zu "lernen".
Das ist mir klar, darum eben auch die Intention eine Sprache vernünftig zu lernen (Von syntaktischer und semantischer Seite her betrachtet.) und mir im Laufe dieses Prozess Wissen über Problemlösung, Programmierung im Allgemeinen, etc. anzueignen sofern das möglich ist. Danke für den Buchtipp.

Vom Berufsbild her schonmal in Richtung Software Testing / Quality Managment geguckt? Als Entwickler liebe ich Leute, die bugs in meiner Software suchen und finden umso mehr (ist mehr ein Wunschtraum), wenn sie gleich auch noch selbst in der Lage sind, die Bugs auch noch anständig auch noch in Form eines Codepatches zu beschreiben.
Noch nicht wirklich, nein. Meine momentane Tätigkeit ist im Rechenzentrumsbetrieb, und dort fühle ich mich auch wirklich wohl. Sollte es mir möglich sein würde ich das auch nach dem Abschluss meiner Ausbildung sehr gerne weiterhin tun.

Erstmal eine Buchempfehlung: "The Pragmatic Programmer". Ich lese es gerade und muss sagen: Es vermittelt zwar viel Common Sense (also Dinge auf die man auch so gekommen wäre), langweilt aber dennoch nicht, weil es alles sehr gut auf den Punkt bringt und (mir zumindest) druchaus mal andere Blickwinkel eröffnet hat. Es hat dabei außerdem in fast jeglicher hinsicht einen sehr neutralen Blickpunkt, geht also nicht von einem bestimmten Entwicklungsprozess oder einer bestimmten Sprache aus. Ein Buch, das sich universal mit dem Thema Programmierung auseinander setzt könnte man also sagen.
Auch dieses Buch habe ich mir notiert beziehungsweise in digitaler Form beschafft. Das erste reinstöbern hat mich ein bisschen zweifeln lassen ob das ob meiner beschränkten Kenntnisse für den Anfang nicht doch etwas heftig ist. Aber das wird sich zeigen.

und .not?
was machst du jetzt?
Auf einem Notebook mit E350-APU alles aus den Ports bauen was ewig und noch drei weitere Tage dauert. :D Spaß beiseite: Ich habe die letzten Tage damit zugebracht darüber nachzudenken was mir Spaß macht, was mich interessiert beziehungsweise wo meine Interessensgebiete allgemeiner liegen. Gleichzeitig auch zwei Bücher zum Thema "lernen" gelesen und dabei bemerkt wie viele Fehler mir da unterlaufen sind, wie falsch ich mich stellenweise selbst eingeschätzt habe (Was meine Konzentrationsdauer betrifft, was die für mich geeignetste Lernmethode betrifft, etc.) - alleine das Wissen wie gewisse Dinge in Bezug auf das Gedächtnis funktionieren hat mir schon sehr geholfen.

Ich habe mich dazu entschlossen mich C++ zuzuwenden. Java oder C wären zwar vielleicht naheliegender, beide Sprachen sind mir aber leider - sicherlich auch zum Teil selbstverursacht - ein Graus, und wenn ich die Sprache unbewusst schon ablehne kann das nur mäßig ein Erfolg werden wenn ich mich durchquäle. Dass ich mir deswegen trotzdem noch lange nichts leichter vorgenommen habe weiß ich natürlich. Aber ich habe das Gefühl "klüger" zu sein, rationaler an die Dinge heranzugehen.

Mir ist aufgefallen dass ich das Üben und ausprobieren der angelesenen Kenntnisse immer vermieden habe und zwar recht viel in den jeweiligen Büchern zu einer Sprache gelesen, aber immer relativ wenig Code geschrieben habe und ich so logischerweise keine Ahnung hatte. Vielleicht aus Angst vor Frustration, vielleicht aus Langeweile der gestellten Aufgaben ich weiß es nicht. Aber das möchte ich definitiv ebenfalls ändern.
 
c++ ist ein hehres ziel, aber mit dem qt-buch schaffst du das.

und nochmal: lernen heisst
ueben
ueben
ueben

und falls irgendwas ist, wir sind fuer dich da.
Code:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
   printf("Hello world\n");
}

compilieren mit
Code:
% g++ -o helloworld helloworld.cpp

aufrufen mit
Code:
% ./helloworld
 
C++ ui ui

Vorweg, ich mag C++ und nehme es wo immer es sich für mich anbietet.
Ich hab mich irgendwie in C++ "verliebt", allerdings ist es zuweilen eine Hassliebe :)

Python, C und Haskell (da bin gerade mit angefangen) mag ich auch.

C++ setzt sich aus 3 Teilen zusammen:
1) die Standardsprache
2) Standard-Template Library
3) Templates
Dann noch der neue Standard C++11.

C++ ist in seiner Gesamtheit ein Monstrum. Es dauert Jahre, um ein guter C++ Programmierer zu werden. Und erst nach Jahren ist man in der Lage, meiner Meinung nach, die volle Kraft aus C++ zu schöpfen.

Ich bin der Meinung, C++ ist ein "Powertool für Profis".
(Soll nicht heißen das ich ein Profi bin!)

Darum weiß ich nicht, ob es gut ist mit C++ anzufangen.

Wenn ich sehe wie viele Bücher ich mittlerweile gelesen habe, wie lange ich auf StackOverflow und vor allem auf comp.lang.c++.moderated mitlese, wie oft ich mich mit der boost-lib auseinander gesetzt habe usw.
Das sind jetzt schon ein paar Jahre.
Alleine die Syntax von C++ ist schon furchtbar.
So Kleinigkeiten wie:
const char *p = sentence;
const char* p = sentence;
char const *p = sentence;
char const* p = sntence;
char* const p = sentence;
Ja was ist denn jetzt konstant?

// diese Zeile ist gar quatsch da eine Reference immer const ist
Fred& const x;
oder
typedef char* CHARS;
typedef const CHARS CPTR;
sieht aus wie
typedef const char* CPTR
ist es aber nicht...der Zeiger ist konstant.

Ich habe noch lange nicht das Gefühl, C++ vollständig durchdrungen zu haben.

C++ ist wie eine Kampfsportart, bei den Danen geht es erst wirklich los.
Es gibt nen schönen Podcast zu C++
http://cre.fm/cre063

Wie schön ist da z.B. Python.
Alles mit dabei (Battery included), klare Syntax und gut.
Sicher, wo Licht ist, ist auch Schatten.

Wenn ich Kindern programmieren näher bringe, fange ich immer mit Python an.
Bei technisch interessierten Jugendlichen nehme ich C.

Ich lese gerade Real World Haskell und spiele ein bißchen mit Haskell herum.
Viele Dinge beneide ich an Haskell. Da gibt es dann auch noch so sexy Dinge wie den Curry-Howard-Isomorphismus.

Lange Rede kurzer Sinn:
Ich bin der Meinung, man sollte mit C anfangen und seinen Compiler kennen lernen, sprich nebenbei sich Assembler aneignen und gucken was der Compiler eigentlich macht.
Man kann dann auch wunderbar sich die Sourcen von FreeBSD angucken oder so wunderbare Libraries wie von fefe
http://www.fefe.de/libowfat/
lesen.

Oder einfach mal auf github oder googlecode rumstöbern.

Wenn man dann zwischendurch mal was anderes sehen möchte, um den Kopf frei zu bekommen, guckt man sich sowas wie Python oder Ruby an.
Oder man macht einen Abstecher, wenn man die Grundlagen der jeweiligen Sprache drauf hat, in die Welt der GUI-Programmierung (Qt, GTK, oder was es von Java da so gibt).
Denn Programme mit GUIs sind schon schöner anzugucken. :)

Hat man das "Grundprinzip" durch C und seinen Compiler verstanden, ist man einen großen Schritt weiter.
Dann guckt man sich die nächsten Sprache intensiver an, wie C++ oder Java.

Als nächstes dann vielleicht eine rein funktionale wie Haskell oder auch sowas wie Javascript, wenn es einen ins Web zieht.

Ich glaube nämlich, dass man sich verschiedene Sprachen mal etwas näher angeguckt haben sollte, denn dadurch erweitert man seine Problemlösungsstrategien erheblich.

Konkrete Probleme die man lösen möchten, sind immer eine große Hilfe.

Allerdings sollte man nicht den großen Fehler machen, mit allem anzufangen und sich dann zu verzetteln.

Viel Erfolg, Spaß und Durchhaltevermögen wünsche ich Dir, egal wofür Du Dich entscheidest.

Lass mal von Dir hören.

Meine 2 Cent
 
Nachtrag:
Wenn Du Dich für C++ entscheidest,
dann programmiere C++ und nicht C.
Nutze die Mittel (STL, Referencen, Klassen später Smart-Pointer usw.) die C++ Dir bietet.
Nutze auch direkt drei einfache Dinge aus dem neuen Standard C++11:
1) auto
2) ranged-base-loops
2) lambdas

Willst Du Büchertipps?
 
Ich hab die Erfahrung gemacht, dass das nur geht, wenn man ein konkretes Projekt hat. Die üblichen Programmieraufgaben wie "Taschenrechner" oder "Bubblesort" schreiben sind langweilig und bringen einfach nichts. Es ist einfach eine ganz andere Motivation wenn man sieht dass mit einem kleinen selbstgeschriebenem Programm ein bestimmtes Problem gelöst wird und die Leute begeistert sind weil jetzt alles schneller/besser geht.
 
Hi,

na dann wage ich mich mal herab vom Elfenbeinturm :).


Hier ein paar Buchtips:
^^^^^^^^^^^^^^^^^^^^^^^
#1: Advanced Programming in the UNIX Environment 2nd Edition, W.R. Stevens
#2: Expert C Programming, Peter van der Linden.
#3: Queueing Systems, Volume 2: Computer Applications, Leonard Kleinrock (geiles Buch, hat viel Mathematische Abstraktion)

Gerade mathematische Abstrahierung, d.h. Probleme als Bestandteile eines Systems (d.h. im Sinne der Systemtheorie, also Kybernetik) mit den Mitteln der Sprache Mathematik zu beschreiben, was meistens eine Problemloesung impliziert. Es ist der anstrengende Weg, aber es lohnt sich. Rechnen ist keine Mathematik, denn Mathematik ist reine Sprache!!!

#4: TCP/IP Illustrated Volume 2, The Implementation, W.R. Stevens.
#5: Programmieren mit OSF/Motif, Version 2 (guter Startpunkt objekorientierte Denkweisen mit C zu erlernen.
#6: Literatur von Donald Knuth bspw. http://en.wikipedia.org/wiki/The_Art_of_Computer_Programming

Lerne C zu begreifen, dann kannst Du dich in jeden Trash einarbeiten. Vergifte deinen Geist nicht mit C++. :)
 
@dettus:
Welches QT-Buch empfiehlst du denn? Ich habe mir bisher immer alles aus dem Netz gesucht was ich so brauchte, aber wir wollten hier für die Firma ein Buch anschaffen damit jeder sich mal in die Thematik einlesen kann. Da wäre was gut was eher bodenständig ist und das gesamtkonzept leicht vermittelt.
 
Wobei bei Qt zu beachten wäre, dass QWidget und Derivate jetzt sehr stiefmütterlich behandelt werden, weil QML "the thing" ist. Wer jetzt mit also Qt anfängt, sollte sich direkt in QML einarbeiten und nicht in QWidgets!
 
Bis heute habe ich kein wirklich gutes Buch über Qt gefunden. Ich nenne "GUI Programmierung mit Qt 3" von blanchette/summerfield mein eigen und ein Buch von Jürgen Wolf "GUI Entwicklung mit C++" für Qt4. Die waren eher nicht hilfreich für mich, was aber sehr moderat ausgedrückt ist. Eine echte Hilfe hingegen war die hervorragende Dokumentation von Qt selbst. Die habe ich Stück für Stück durchgearbeitet und das hat mir wirklich weitergeholfen.
 
Zurück
Oben