• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Programmierung für Einsteiger

MarKre

Member
Hallo Leute,

ich würde gerne eine für Neueinsteiger einfache und zukunftsfähige Programmiersprache erlernen und wollte daher fragen, ob mir dabei jemand Ratschläge, Hinweise und Tipps mit auf den Weg geben kann? Ich würde mich sehr freuen.

Beste Grüße
MarKre
 

abgdf

Guru
Obwohl da sicher jeder was anderes empfiehlt, kann man, glaube ich, sagen, daß Du da mit Python sehr gut bedient wärest.
Jede Menge Informationen dazu einschließlich Links zu freien Online-Büchern findest Du auf meiner Seite hier.

Gruß
 

whois

Ultimate Guru
Frage was willst du genau damit anstellen?
Für manchen Bereiche ist Perl besser für andere wieder Python und C++.
Nein ich will bitte keine Grundsatzdiskussion anfangen ich versuche nur dem TE zu helfen. ;)
 

abgdf

Guru
MarKre schrieb:
für Neueinsteiger einfache
Damit fallen wohl C, C++ und auch Java weg.
MarKre schrieb:
und zukunftsfähige Programmiersprache
Zukunftsfähigkeit wird bei Perl immer wieder bezweifelt.

Bleibt eben Python: Besonders einfach für Anfänger, sogar für Kinder geeignet.
Man kann sogar im einzelnen zeigen, welche Sprachelemente bei Python sauberer sind als bei Perl. Mich hat das überzeugt, auch wenn ich manchmal auch immer noch etwas in Perl schreibe, einfach, weil's Spaß macht.

Gruß
 
Ich persönlich ziehe TCL / TK Python vor. Auf jeden Fall ist es sehr einfach zu erlernen, es gibt ein tolles Wiki, eine sehr gute Dokumentation und eine aktive Community die auch gerne hilft.

Grüße
 

whois

Ultimate Guru
Naja seien wir mal ehrlich gibt es eine einfach zu erlernende Programmiersprache? ;)
Kommt doch immer drauf an was man anstellen will.
 

abgdf

Guru
Logo ist ja vor allem für seine Turtle-Graphics bekannt.
Die gibt es aber auch für Python:

http://www.robertnitsch.de/2007/04/04/python-das-turtle-modul-und-fraktale/
http://mathestuff.de/rekursion_mit_python
http://code.google.com/p/python-turtle-demo/downloads/list

Perl halte ich nur für ein bißchen schwerer/umständlicher als Python: Hauptsache es gibt einfach zu handhabende Datentypen, vor allem Listen und Strings (sowie gute Stringfunktionen). Auch OOP ist in Perl durchaus möglich
Code:
perldoc perltoot
perldoc perlboot
nur eben wieder ein bißchen umständlicher als in Python.

Mir persönlich hat eigentlich geholfen, gleichzeitig zu versuchen, C und Perl zu lernen. Wenn man zunächst mal structs und unions beiseite läßt, kennt C ja eigentlich nur recht wenige Grundstrukturen, die man dann auch in Perl wiederfindet, z.B. die prinzipielle Schreibweise von Funktionen
Code:
myfunc() { ... }
(hab' hier jetzt mal Rückgabewerte und Parameter weggelassen, die Zeile oben ist also kein korrektes C) und die ";" am Ende der Zeilen. Man merkt dann bald, daß es wegen komfortablerer Datentypen einfacher und schneller ist, in Perl zu schreiben. Von dort dann nach Python zu wechseln, macht die Sache noch einmal etwas leichter. Aber es ist schon ganz gut, wenn man die C-Notation mit den "{", "}", ";" usw. zuvor mal kennengelernt hat.
OOP ist dagegen mit einiger Wahrscheinlichkeit am leichtesten direkt anhand von Python zu lernen. Von da kann man die Prinzipien ggf. nach Java oder C++ übertragen.

Übrigens finde ich bash wegen seiner Zeichenexpansion, seiner Pingeligkeit bei Leerzeichen, seiner unausgereiften Unterstützung von Listen und seiner Subshells mit unerwarteten Namensräumen von Variablen ziemlich eigensinnig und gegenüber Python und Perl recht schwer zu lernen :mrgreen: .

Aber der Thread ist so alt, den liest der Fragesteller bestimmt eh' nicht mehr.

Gruß
 
Einfach oder nicht einfach hängt immer davon ab wie man sich bestimmten Aufgaben nähert. Für manchen ist es einfach in größeren, gröberen Zusammenhängen zu denken, denen fällt dann die objekt-orientierte Lösung einfacher, mir persönlich fällt das Herunterbrechen auf einfachste Funktionen leichter.
Wie denkst Du? Zukunft hat letztlich Alles was dir Spaß macht, nicht umsonst gibt es immer noch Sprachen die in Dialekten oder in bestimmten Aufgabenstellungen wieder aufleben. Erst wenn die Aufgabe geklärt ist, kann man dir Tipps geben.

Sollte es dir nur um das Lernen an sich gehen, kannst Du auch gerne "Schulsprachen" wie Delphi bzw. Pascal lernen. Die Grundlagen für alle anderen Sprachen werden damit auch gelernt. Nur die spezifische Herangehensweise an eine bestimmte Lösungsfindung halt nicht. Bestimmte Lösungen sehen in den einzelnen Sprachen deutlich unterschiedlich aus.
 
A

Anonymous

Gast
Das erste was mit dazu wieder einfällt, es führen viele Wege nach Rom

Programmiersprache wirklich richtig lernen :???: na ich weiß ja nicht ich glaube da gibt es nicht viele die wirklich einfach sind.
Sicher kann man mit der einen oder anderen Sprache recht schnell lernen das eine oder andere zusammenzubauen. Kommt eben drauf an was man letztlich überhaupt bauen will. Oftmals funktionierts und man weiß im Grunde genommen nicht mal richtig, warum.

Aber wirklich richtig Programmieren lernen, heißt vor allem erstmal überhaupt von Grund auf programmieren lernen. Dazu gehört zB lernen Probleme überhaupt erstmal in logische Einzelteile zu zerlegen und darauf aufbauend Lösungsmöglichkeiten und Stategien zu erkennen wie man diese Einzelprobleme möglichst logisch eindeutig lösen könnte. Ob man da nun unbedingt Programmablaufpläne und Flussdiagramme schreiben können muss, sei mal dahingestellt. Man muss erst mal lernen logisch zu denken. Paralell dazu kann man dann mal damit anfangen mit den einzelnen vorhanden Sprachelementen einer Sprache zu üben vorgegebene und selbst entwickelte Algorithmen zusammenzubauen und aus kleinen Programmschnipseln zu erkennen was dort eigentlich warum gemacht wird. Da passiert meist erstmal überhaupt nicht viel auf dem Bildschirm und man braucht schon eine ganze Menge Enthusiasmus, um über diese unterste Stufe hinwegzukommen. Der Rest ist ein ewiger Kreislauf aus Suche, Lesen, Probieren, Testen, Debuggen, Ändern, Fluchen und noch einmal von vorne beginnen. In dieser Spirale wird man dann mehr oder weniger Schnell ein Gefühl für die jeweilige Programmierspache bekommen, und dann kann man die ersten Achtungs Erfolge sehen, die einen richtig beflügeln. Jetzt kann man dann je nach Spache in die Klassen, Funktionen und Spezialitäten eintauchen, das Grundprinzip kennt man, der Rest ist jetzt nur noch die vorgefertige Bausteine kennenzulernen und zu lernen sie richtige zu verwenden. Dabei passiert dann zB auf dem Bildschrirm richtig was, Denk- und andere Fehler werden hier aber oft härter bestraft ;)

Allein aus einem "Hello World Programm" alleine kann man bestimmt nicht ableiten wie kompliziert eine Sprache ist, man kann aber durchaus schonmal einen vergleichenden Vorgeschmack ergattern und ansatzweise wichtige Eigenschaften der Syntax einer Programmiersprache erkennen. http://de.wikipedia.org/wiki/Liste_von_Hallo-Welt-Programmen/Programmiersprachen

Ich hab mich in meinem Leben schon mit vielen Prammiersprachen rumgeschlagen, aber was wirklich nachhaltig hängen geblieben ist, und von dem ich heute immer noch profitiere, sind die Grundlagen der Programmierung die ich damals mit Turbo Pascal erlernt habe und die Grundlagen der objektorientierten Programmierung die ich mir ausgiebig mit C++ eingetrichtert habe.


robi
 

abgdf

Guru
robi schrieb:
Ich hab mich in meinem Leben schon mit vielen Prammiersprachen rumgeschlagen, aber was wirklich nachhaltig hängen geblieben ist, und von dem ich heute immer noch profitiere, sind die Grundlagen der Programmierung die ich damals mit Turbo Pascal erlernt habe und die Grundlagen der objektorientierten Programmierung die ich mir ausgiebig mit C++ eingetrichtert habe.
... und - offensichtlich - awk :wink: .
 

whois

Ultimate Guru
robi schrieb:
Ich hab mich in meinem Leben schon mit vielen Prammiersprachen rumgeschlagen, aber was wirklich nachhaltig hängen geblieben ist, und von dem ich heute immer noch profitiere, sind die Grundlagen der Programmierung die ich damals mit Turbo Pascal erlernt habe und die Grundlagen der objektorientierten Programmierung die ich mir ausgiebig mit C++ eingetrichtert habe.
Ack. ;)
..und den Mist den ich damals erstmals gelernt habe Basic unter DOS. :D
Davon weiss ich immer noch die Grundlagen. :irre:
 

framp

Moderator
Teammitglied
robi schrieb:
... Nichts als angewande Grundlagen - Stichwort Assoziative Speicherung. ...
Genau deshalb greife ich auch immer gerne auf awk zurück ;-)

Zu C++ als OO Sprache: Die finde ich für Anfänger nicht geeignet da man sich da die meiste Zeit mit Syntaxfehlern und Laufzeitfehlern (copy ctor fehlt usw) rumplagt und nicht die eigentlichen OO Konzepte anwenden kann.
 

abgdf

Guru
Geier0815 schrieb:
Für manchen ist es einfach in größeren, gröberen Zusammenhängen zu denken, denen fällt dann die objekt-orientierte Lösung einfacher, mir persönlich fällt das Herunterbrechen auf einfachste Funktionen leichter.
Ich find's auch gut, wenn Sprachen OOP anbieten, aber einen nicht dazu zwingen. So machen das wiederum Python und Perl.
In Java dagegen muß man blöderweise sogar für "Hallo Welt" eine Klasse schreiben.
Andererseits: Eine grafische Oberfläche sollte man unbedingt mit OOP schreiben, denn da hängt die Anwendung regelmäßig in einem Event-Loop, der bei Benutzerangaben bestimmte Funktionen aufruft. Da ist es schon sehr praktisch, wenn die Funktion dann auch gleich das Widget kennt und darauf zugreifen kann. Etwa wenn eine Funktion nach einem Mausklick ein Eingabe-Widget kennt und dann mit einer .get()-Methode den Text, der sich gerade darin befindet, zur Weiterverarbeitung herauszieht.
Kann man sich bzgl. Python/Tkinter z.B. mal auf meiner Seite (so ab Punkt 4) anschauen, wie ich das meine.

Und noch fortgeschrittener :p : Bei größeren Programmen (und an diese Grenze kommt man recht schnell) sollte man Datenverarbeitung und GUI trennen, idealerweise so, daß man verschiedene GUI-Toolkits (z.B. Tk(inter), wxGTK, Qt) an dieselbe Datenverarbeitungsengine "andocken" kann: Das tut man (unabhängig von der verwendeten (objektorientierten) Sprache) mittels MVC oder MVP.
(Das scheint so eine Art "Geheimwissen" zu sein, denn in meinen gängigen Programmierlehrbüchern einschließlich dem Kamel-Buch steht davon nichts.)
Auch diese Entwurfsmuster gehen jedenfalls nur mit OOP.
Das in Python gut (und möglichst allgemeingültig und wiederverwendbar, also in einem Code-Skeleton) umzusetzen, ist gerade etwas, was mich interessiert. Ist aber schon eine Herausforderung (für einen "ungelernten" Hobby-Hacker wie mich).

Viele Grüße
 
Oben