Programmieren lernen?

Hallo!

Ich komme mir total blöd vor, aber ich würde gern programmieren lernen. Ich kann im Moment gar nichts. Wie soll ich das anfangen? Welche Sprache? Welches Buch?

Eine Empfehlung: such dir als erstes mal ein kleines Projekt, das du umsetzen möchtest. Dann machst du dir Gedanken, was du alles für die Umsetzung brauchst - ohne konkret auf Details wie Programmiersprachen oder zu verwendende Programme einzugehen.

Wenn du das alles hast, liegt der Weg quasi vor dir. Du kannst dich mit der Umsetzung der einzelnen Schritte befassen, ohne dein Ziel aus den Augen zu verlieren. Ausserdem siehst du dann Fortschritte, was ein wichtiger Motivationsfaktor ist.

So, wenn du das alles hast, können wir über Programmiersprachen sprechen :wink:
Wobei, das hier ist das falsche Forum für Programmiersprachen. Da bist du in unserem Partnerforum “Developers Guide” besser aufgehoben.

Als Ergänzung zum obengenannten: Du könntest dir ein Buch zur Einführung in objektorientierte Konzepte oder ähnliches besorgen und anhand einer Skriptsprache wie Python erstmal die Konzepte und Prinzipien nachvollziehen. Das macht wenig Aufwand am Anfang und kann später beliebig verkompliziert werden. Welches Buch musst du selbst entscheiden, es gibt da recht vieles, auch sprachspezifisch, was ich aber für den Anfang nicht unbedingt empfehlen würde.

Gruß Uwe

Hallo Kati,

Aus der alltäglichen Programmierpraxis kann ich Dir sagen, daß das was von
Dir an Wissen erwartet wird oft nicht mit dem übereinstimmt was Du an den
Unis oder auch durch Lehrbücher vermittelt bekommst.

Du solltest vielleicht für Dich päzisieren wohin die Reise für Dich gehen soll.
Wenn Du im wissenschaftlichen Bereich oder in mathematisch/physikalischen
Bereichen arbeiten willst, dann wirst Du viel mehr Detailwissen benötigen.

Wenn Du jedoch in einer mittelgroßen Firma arbeitest, z.B im Versand oder
einem Produktionsbetrieb, dann wirst Du nur die grundlegenden Kenntnisse
brauchen und deine Tätigkeit geht eher in den Bereich Problemlösung,
Troubleshooting, Datenpflege. Reporting u.s.w.

Vielleicht zum Abschluss noch eine kleine Liste der Fähigkeiten im
Programmierbereich die sich generell als begehrt und sinnvoll erwiesen haben:

1.Grundlegende OOP Kenntnisse (Objektorientierung )
2.Java Kenntnisse (die derzeit weit verbreitetste Programmiersprache)
3.Grundkentnisse in C/C++ (die ehemals weit verbreiteste/n Sprache/n)
4.SQL Kenntnisse (und diverserse varianten hiervon z.B ORACLE PL/SQL)
5.Betriebssystemkentnisse wo Du programmieren wirst.
6.Grundlegende .NET Konzepte unter Windows (am besten anhand C#)

Kleine Warnung:
Es gib im Programmierbereich Sprachenfanatiker, Betriebssystemfanatiker,
Datenbankfanatiker, Sicherheitsfanatiker und jede menge mehr Fanatiker :slight_smile:

Oft werden Dir irgendwelche Skriptsprachen empfohlen wie Ruby, Groovy
oder noch exotischeres Zeug wie Miranda oder Eifel. Das Problem dabei ist
jedoch, das es akademisch interessant ist, daß aber in der Praxis (freien Wirtschaft)
kein Mensch einsetzt. Daher empfehle ich Dir deine Grundlagen anhand der meisteingesetzten
Programmiersprachen wie Java, C/C++ und C# zu erlernen, damit Du anschließend auch über
Kentnisse verfügst, die am Markt auch gefragt sind.

Kleine Liste an frei verfügbaren Werkzeugen:

(Java) (kostenfrei)
http://download.netbeans.org/netbeans/6.1/final

Kleine Programmierbeispiele mit NetBeans zum lernen / mit Bildern (English)
http://java.sun.com/docs/books/tutorial/getStarted/cupojava/netbeans.html

(C/C++ für Windows / C#.NET für Windows) (kostenfrei)

Erstes Programm mit Microsoft Visual C/C++ für Windows (kostenfrei)

Hello World mit Microsoft Visual C#NET

Hinweis:
Für diese freien Werkzeuge benötigt Du einen PC mit Windows XP und mind 512 MBytes
Arbeitspeicher (mehr ist immer besser) und ca. 2 GBytes freihen Speicher auf deiner Festplatte
zum installieren aller 3 Tools. Microsoft Visual C/C++ und Microsoft Visual C#.NET gibt es
nur für Windows. Mit NetBeans kannst Du neben Windows auch noch unter Linux, Mac und Unix
programme erstellen.

Grüße, Marc

Hallo Katja!

Manche versuchen es zuerst mit einer “echten” Programmiersprache, wie z.B. PHP oder Java. Das kann recht frustrierend sein, ich habe da schnell aufgegeben. Ich würde eigens entwickelte Programmier-Lern-Umgebungen empfehlen.

Kara wurde an der ETH Zürich entwickelt:
http://www.educ.ethz.ch/lehrpersonen/informatik/unterrichtsmaterialien_inf/programmieren/kara_umgebung/index
Dort programmierst du einen Marienkäfer, der verschiedene Aufgaben lösen soll. Ist gratis, aber leider ein bisschen abstrakt: bis du dein erstes Programm in einer “normalen” Programmiersprache schreibst, dauert es ganz schön lang.

Direkt mit Java startest du im Hamster-Modell, an der Uni Oldenburg entwickelt:
http://www.java-hamster-modell.de/
Ist halt auch ein bisschen Uni-mässig staubig-trocken, bietet aber eine gute Einführung.

Wesentlich attraktiver (aber leider nicht ganz gratis) ist CeeBot4, wo du Roboter in 3D programmieren lernst:
http://www.ceebot.org/index.php?lang=ge
Die Demoversion gibt einen ersten Einblick, damit lernst du aber nicht programmieren, dafür musst du schon die Vollversion kaufen.

Wenn du es trotz allen Warnungen sofort mit einer “echten” Programmiersprache versuchen willst, kann ich folgende Websites für Java empfehlen:
http://www.gailer-net.de/tutorials/java/java-toc.html
http://www.boku.ac.at/javaeinf/
http://hestia.hs-niederrhein.de/~gkorsch/javakurs/Javagk.htm
Und folgende für PHP:
http://www.php-dummies.de/
http://alexander-projects.de/
http://cgi.tu-harburg.de/~rztmbr/Kurse/PHP/PHP_Kurs/
Websites haben vor Büchern den Vorteil, dass man die erklärten Programme direkt in den Programmeditor kopieren kann. Auch findest du viele Foren, wo du Fragen stellen kannst, bevor du ganz verzweifelst. Echt pädagogisch ist aber keine der Websites “für Anfänger”, die ich gefunden habe.

Hallo Lena,

Ich finde es ja gut das Du Katja versucht Tipps zu geben, aber Du solltest
aufpassen was Du da eigentlich empfiehlst, z.B Stichwort PHP.

Wenn jemand neu ist und Objektorientierte Programmierung erlernen
möchte, dann ist es wichtig das er auch mit einer Sprache und
Programmierabeitsoberfläche arbeiten kann, die OOP auch wirklich
unterstützt. PHP ist sicherlich für einige Website Projekte geeignet,
aber wenn Sie versuchen will die OOP Konzepte die sie aus Büchern
lernt in PHP wiederzufinden, wird sie vermutlich verzweifeln und tot
unglücklich über die dauernden Verständnisprobleme sein, denn PHP
ist als Programmiersprache z.B im Vergleich zu C++, Java, C#,
Object Pascal, Eifel, Miranda, Haskel, Pyhton oder Smalltalk so
ziemlich eines der schlimmsten Sprachen um OOP zu lernen.

Gefährlich ist auch die Verquickung von OOP und Imperativ.
Wie willst Du z.B einen Neuling erklären, daß er zwar mit OOP
Objekten herrumhantiert, die dann aber in teilweise imperative
Stukturen gekapselt sind, die wiederum gar keine OOP Charakteristik
mehr aufweisen? Das verwirrt erheblich und erzeugt nur Frust, weil
es noch schwerer am Anfang zu begreifen ist.

Wenn imperativ (veraltet) dann sollte sie bewußt eine non OOP
Sprache lernen. Wenn sie die modernen Standards und das OOP
Konzept verstehen und erfolgreich einsetzen will, dann sollte Sie
etwas lernen das OOP gut erklärt und wo sich das erworbene
Wissen auch später in echten Programmierprojekten erfolgreich
einsetzen lässt.

  1. aufhören zu glauben, du könntest nix
  2. aufhören zu glauben, wir könnten mehr
  3. wie jeder anfaengt → hello world

also der versuch, den text “hello world” auf dem bildschirm auszugeben …

ich empfehle dir, 2 programmiersprachen/umgebungen auszusuchen

  1. entweder java oder c# oder VB.NET
  2. PHP oder python

für alles gibt es sog. entwicklungsumgebungen in netz … und das schoene am netz ist auch, dass zu allem wirklich viel hilfe zu finden ist (zumindest fuer anfaenger) …

google mal nach “hello world” + irgendeine sprache …

Von PHP würde ich als Anfänger eher abraten, es sei denn, du hast explizit damit zu tun. Programmierkonzepte sind in anderen Sprachen deutlich besser umgesetzt, da böte ich vielleicht eher Perl an, was auch recht häufig genutzt wird und eine gute Community hat.
Das Abstrahieren auf PHP dürfe weniger ein Problem sein, wenn man die Prinzipien verstanden hat als andersrum. Sollte jetzt kein Bashing sein, aber PHP machts einem eher schwer, vernünftig programmieren zu lernen.
Ansonsten kann ich das von meinem Vorposter bekräftigen. Fang einfach an, keiner von uns hat das mit der Muttermilch eingesaugt :wink: , Unterstützung kriegt man in den allermeisten Fällen auch sehr schnell.

CU Uwe

Diese Video-Reihe Kann ich wärmstens empfehlen:

Vorlesungsmitschnitte Algorithmen WS 2006/2007

Es gibt dazu auch noch ein image der AlgoTools CD zum Download um 1:1 die Beispiele in den Vorlesungen nachzuvollziehen.

Es geht vordergründig um Algorithmen, also ist der Inhalt ist recht allgemeingültig und lässt sich auch abseits von Java sehr gut verwursten. Zudem hat der Prof. Dr. Oliver Vornberger einen subtilen Unterhaltungswert, der einem dicken Schmöker doch eher abgeht.
Java selbst mag ich nicht so, weil es mir für meine eher übersichtlichen Anwendungen zu viel Overhead hat. Ich bevorzuge Python.

wir wollen hier doch keinen flame vom zaun brechen :smiley: - ich wollte nur sagen, dass es sich lohnt vertreter der 2 klassischen sprach-typen (script-sprache + compiler-sprache) auszusuchen …

Ich persönlich finde Java sehr elegant - Python schlimm - liegt bestimmt daran, dass ich in a mehr erfahrung habe als in b :sunglasses:

wir wollen hier doch keinen flame vom zaun brechen :smiley: - ich wollte nur sagen, dass es sich lohnt vertreter der 2 klassischen sprach-typen (script-sprache + compiler-sprache) auszusuchen …

Ich persönlich finde Java sehr elegant - von overhead keine spur - Python schlimm - keine explizite strukur - viel zu fehleranfaellig - liegt bestimmt daran, dass ich in a mehr erfahrung habe als in b :sunglasses:

Abseits jedes Flame-Gedankens :wink: hat Python den Vorteil sehr sauberen Code zu liefern. Speziell für Anfänger ist das ein Vorteil, den meist ist man da noch nicht so bekannt mit den Vorschriften und Konventionen zur ‘Quellcode-Gestaltung’. Auch scheint mir z.B. unübersichtlich, wenn ich für jede Klasse ein eigenes File anlegen muß.
Meine eigene Erfahrung in Python zeigt auch, das es durch die klare und konstante Strukturierung ermöglicht wird, sehr schnell fremder Leute (und nach einger Zeit den eigenen :wink: ) Code zu verstehen. Ich hatte einen Anfangsversuch mit Java hinter und fand dann Python weitaus eingängiger und handhabbarer, was aber nicht der alleinige Grung für meine Wahl der Umgebung war. Auch der Anspruch an die IDE ist sehr niedrig, es klappt in gleicher Weise mit vim, Eclipse, eric, Ultredit, zumindest bei einfachen Projekten und Skripten. Dies finde ich auch einen sehr großen Vorteil.

Gruß UWe

  • “sauberen” code liefern in erster linie entwicklungs-umgebungen
  • lesbar wirds durch bonbon-farben
  • schwachsinn kann man in jeder sprache “coden”
  • details sind fuer anfaenger nicht so wichtig (jede klasse -> ein file, was uebrigends kein MUSS ist sondern eine konvention, die von gaengigen entwicklungsumgebungen fuer java einfach eingehalten wird, und das wiederum WEIL es UEBERSICHTLICHER wird - klassen werden von allein sehr umfangreich - da muss man z.B. dann spaeter weniger zeit mit refactoring zubringen g)

ich habe einst sehr sehr viel delphi programmiert - da hab ich auch oft ueber java gemosert - ok - vor 1.3 war java m.E. auch noch mit vorsicht zu geniessen - inzwischen muss ich aber gestehen, dass viele konventionen durchaus sinn machen. vielleicht eben aber einfach in ihrem kontext

es macht wahrscheinlich auch wenig sinn ueber konventionen einer sprache zu urteilen indem man sie mit einer anderen vergleicht - diese einrueckungs-geschichte von python z.B. gefaellt mir garnicht - ich vermute aber das liegt wie bei allen dieser dinge an der gewohnheit - an einem selbst

es gibt ganz andere ecken an denen java aus meiner perspektive schwaechelt - die sind aber nicht offensichtlich.

kritisch sein ist immer gut - sollten sich hier auch ein paar leute in bezug auf Postgres angewöhnen :smiley:

ich wollt eben eine compiler-sprache empfehlen (wieviel “compiler” java ist - ist ein anderes thema) und eine klassische interpreter-sprache - python ist da sicher eine gute wahl - PHP haette ich aber der verbreitung und des banalen konzeptes wegen empfohlen - man hat sehr schnell ein erfolgserlebnis

sauereien werden von anfaengern ohnehin produziert - das ist ja auch kein beinbruch - wenn ich anschau was ich damals alles so erzeugt hab … hui hui :wink: - daher kein thema was zum “programmieren lernen” gehört. da zaehlen erstmal die handvoll einfacher struktur-elemente … OOP hat da noch zeit … das kommt vielleicht auch ganz von allein … wie bei mir … das hat mir auch niemand “beigebracht” …

und den anspruch" an die IDE sehe ich bei python erhöht - durch diese “einrueckungs” geschichte … ansonsten ist PHP (oder jede andere scriptsprache) ebenfalls sehr genuegsam

bei compiler-sprachen ist die IDE auch nicht zwingend notwendig - macht sich aber gut, damit man den compiler nicht auch noch von hand bedienen muss

wenn man debuggen will kommt man ohnehin kaum noch um ne gescheite IDE herum - naja PHP und debugging ist die hoelle - aber da muss er/sie dann durch :slight_smile:

ach ja … eclipse in einem zug mit anspruchslos -> ein bisschen editor … zu nennen halte ich fuer aeusserst gewagt lacht

-Sauberen Code krieg ich mit Python auch ohne IDE hin
-‘Bonbonfarben’ sind nützlich und sind sogar im vim zu finden, übertrieben hindern sie eher die lesbarkeit

  • richtig, schwachsinn kann man immer machen, genauso wie Details für Anfänger nicht wichtig sind. Python hat da auch genug, so ist net.

Eclipse ist sicher nicht einfach, keine Frage. Schön ist aber, das ich auf so ein ‘Monstrum’ nicht angewiesen bin. Die Einrückung ist sicher ein Streitpunkt. Aber über gängige Konventionen ist die eh anzuwenden, und wenn einer ein Problem damit hat, hält er sich nicht an Konventionen. Das gibt spätestens Probleme, wenn man zu vielt an einem Projekt herumbastelt. Ganz banal spart die einrückung Unmengen an Kommas, Klammern und sonstigen Trennzeichen, deren Fehlen zu Fehlern führt und die Lesbarkeit deutlich herabsetzt.
Wie auch immer bevor ich jetzt noch anfange, ‘whyPyhonisbetterthanJava’-Links zu posten, hör ich jetzt auf. Du magst Java, ich Python. Gut das man die Wahl hat. Ich hoffe, wir haben der O-Posterin jetzt genug demonstriert, das sie ihre Wahl selbst treffen muß :wink:

CU WotW

Diesen interaktiven Lisp-Kurs fand ich so grundlagentechnisch auch recht erhellend.
Zum Programmieren lernen braucht man ja eigentlich erst einmal gar keine Programmiersprache. Es geht doch in erster Linie darum, das Prinzip und diverse Standardtechniken zu verstehen.

Um das Ganze dann auszuprobieren und daran herumzuspielen ist ein interaktiver Interpreter, wie ihm z.B. Python mitbringt geradezu ideal. Das ist quasi eine echte “Was-passiert-dann-Maschine”. Da sieht man sofort, was geht und was nicht. Das fördert den “Spieltrieb” und motiviert zum Weitermachen. Beim Lernen ist das sicher ein nicht zu unterschätzender Faktor. Mir hat das sehr geholfen und macht auch immer noch Spaß.

Java ist sicher eine wichtige Sprache an der man kaum vorbeikommt. Zum Erlernen des Prinzips “Programmieren”, halte ich sie jedoch nur für bedingt geeignet. Man hat als Anfänger einfach zu viel mit den sprachlichen Eigenheiten und Fallstricken zu schaffen, das lenkt ab, frustriert bisweilen und man verliert dann gerne den Blick für das Wesentliche. Gleiches (nur Schlimmer) gilt für C/C++. Das nennt man dann wohl “steile Lernkurve”.

Bei Lisp und Exoten, wie das oben erwähnte mir nicht bekannte Kara, mag ja die Didaktik weit vorne sein, aber mir fehlt persönlich dann doch die praktische Verwendungsmöglichkeit im Alltag um das Wissen zu verfestigen. Da ist Python mit der “batteries included” Philosophie einfach praxisorientierter.

By the way wird Python zur Ausführung auch in Bytecode “compiliert” (wie Java). :slight_smile:

ich bin an python ja selbst durchaus interessiert - ich habe nur keine zeit dafuer - leider ist mir noch kein python-projekt begegnet, in das ich mich mal reinhaengen koennte - und das letzte web-projekt ist schon lange her

ich denke man kann mit allen “modernen” oop-sprachen sehr produktiv arbeiten - ich denke nicht, dass dort unterschiede abhaengig von der wahl der sprache messabar sind - auch java kann ich (weil ich mich auskenne) rel. gut in einem text-editor prorammieren - nur wer will das? wann passiert einem das schon mal? man hat ja heute dank laptop immer irgendwie das ganze buero dabei incl. aller dreh und hobelmaschinen.

von daher ist das nur ein schein-argument, weil - wenns denn eine rolle spielen wuerde - eine sprache mit leistungsfaehiger IDE einer anderen sprache ohne ide immer vorzuziehen ist - das war einst das killerfeature von delphi - weswegen sich die sprache durchsetzte - heute ist delphi nicht mehr so relevant, weil es fuer alles moegliche IDEs gibt.

ach ja … ich finde java zwar recht huebsch … aber mit glaubenskriegen ist man bei mir sowieso falsch … ich bin sogar der meinung, dass mir C# besser gefallen wuerde, wenn ich damit mal laenger frickeln koennte g

da stimm ich mal uneingeschränkt zu …

Auf meinen Servern dreh und hobel ich meist von Hand. Und für kleine Dinge bin ich mit einem Editor einfach schneller. Was nicht heisst, das ich die Vorteile einer IDE (vorzugsweise Eric und Qt-Designer) nicht zuschätzen wüsste :slight_smile:

Grüssle Uwe

PS: Gibt übrigens auch Jython, was immer man davon auch halten mag :wink:

siesch’ … “kleine Dinge” mach ich eher selten …

und bis man denn mal irgenwann was kleines zu “deployen” hat, dann existiert auch schon irgendwelcher krimskrams in der IDE welcher das auf knopfdruck erledigt

:slight_smile:

@symbiont: Bitte lies dir einmal das OP durch und erkläre mir, wie man mit einer “guten” IDE das Programmieren lernt. Mit Deiner Argumentation kann man weitergedacht auch sagen: wozu soll ich Programmieren lernen? Es gibt doch genug fertige Programme, die ich einfach benutzen kann bzw. es gibt doch genug Programmierer die das können.
Aber das ist aber wohl nicht die Intention des OP.