myGully.com Boerse.SH - BOERSE.AM - BOERSE.IO - BOERSE.IM Boerse.BZ .TO Nachfolger
Zurück   myGully.com > Computer & Technik > Programmierung
Seite neu laden

Wie Lerne ich Programmierung? Ein Grundlagenguide.

Antwort
Themen-Optionen Ansicht
Ungelesen 11.11.18, 19:56   #1
Erik/Schreier
Ist öfter hier
 
Registriert seit: Feb 2011
Ort: Eastgermany
Beiträge: 222
Bedankt: 356
Erik/Schreier erschlägt nachts Börsenmakler | 26395 Respekt PunkteErik/Schreier erschlägt nachts Börsenmakler | 26395 Respekt PunkteErik/Schreier erschlägt nachts Börsenmakler | 26395 Respekt PunkteErik/Schreier erschlägt nachts Börsenmakler | 26395 Respekt PunkteErik/Schreier erschlägt nachts Börsenmakler | 26395 Respekt PunkteErik/Schreier erschlägt nachts Börsenmakler | 26395 Respekt PunkteErik/Schreier erschlägt nachts Börsenmakler | 26395 Respekt PunkteErik/Schreier erschlägt nachts Börsenmakler | 26395 Respekt PunkteErik/Schreier erschlägt nachts Börsenmakler | 26395 Respekt PunkteErik/Schreier erschlägt nachts Börsenmakler | 26395 Respekt PunkteErik/Schreier erschlägt nachts Börsenmakler | 26395 Respekt Punkte
Standard Wie Lerne ich Programmierung? Ein Grundlagenguide.

Änderungen Stand 20.01.2018: Bessere Formatierung und neue Quelle mit Beschreibung unter Punkt 6.

Programmieren ist ein sehr interessantes aber auch strittiges Thema in der Welt der Computer. Wie man hier im Forum sieht gibt es viele Fragen zum Thema einstieg und diese werden meist nur mit unnützen Kommentaren und wissen von dritten beantwortet. Da es hunderte Threads zum Thema gibt und fast alle die Selben Themen haben entschloss ich mich dazu die wichtigsten Dinge hier im Thread zusammenzufassen ohne dabei auf spezielle Dinge einzugehen. Ich möchte darauf hinweisen dass es sich bei diesem Thread um einen Guide handelt wie man am besten in die Programmierung einsteigt und um kein Programmiertutorial!


1. Programmierung im Wandel der Zeit

Die Programmierung für den Heimgebrauch wurde 1970 von Atari ins Leben gerufen als diese mit dem Atari auch einen Interpreter für Basic auslieferten, diese Sprache war zwar simpel aber durch ihre Goto Befehle wurden größere Projekte unlesbar und Fehleranfällig. Die Sprache wurde zwar im Laufe der Zeit ständig weiterentwickelt und um Funktionen erweitert jedoch glaube ich dass ihr trotz der großen Fangemeinde niemanden findet der euch ernsthaft empfiehlt damit anzufangen.

Richtig loslegen konnte man 2 Jahre später als die ersten Compiler für C herauskamen, diese Sprache machte einen großen Schritt da sie neben Schleifen und Verzweigungen unter anderem auch Funktionen einführte. Der Code wurde plötzlich les- und wartbar und ermöglichte auch größere Projekte wobei die Sprache auch da noch sehr komplex und fehleranfällig war.

Als C dann in C++ um Klassen erweiert wurde ermöglichten diese noch einmal bessere Strukturierung der Programme jedoch wurde durch die Vermischung von altem und neuen die Fehleranfälligkeit erhöht und die Sprache unnötig kompliziert. Die Sprache ist auch heute noch in bestimmten Anwendungsgebieten das Nonplusultra jedoch für uns als Anfänger noch weit weg, falls wir sie überhaupt jeh lernen müssen.

Sun entwickelte mit Java dann eine Alternative zu C++, sie hatte den Vorteil dass sie völlig neu Konstruiert wurde und dadurch (zum damaligen Zeitpunkt) ein konsequentes Arbeiten ermöglichte, des weiteren war es mit Java durch die Interpretation zum ersten mal möglich Programme einmal zu schreiben und sie auf allen Betriebssystemen laufen zu lassen (was heute auch nicht mehr in allen Fällen zutrifft.) Die Sprache selbst war jedoch, auch wenn die Grundlagen recht einfach waren, sehr Komplex und viele Anfänger standen an einem bestimmten Punkt vor unlösbaren Aufgaben und gaben frustriert auf.

Im laufe der letzten Jahrzehnte entwickelten sich auf Basis der vergangenen Sprachen nicht nur solche die für spezielle Problemlösungen entwickelt wurden sondern auch solche die Anfängern die Programmierung so gut wie möglich erleichtern sollten, zugleich aber auch den Vollen Umfang der bekannten besitzen sollten. Kopierten Sprachen wie C# und Visual Basic nur altbekannte Konzepte entstanden damit auch Sprachen wie Python und Ruby welche einen unglaublich verständlichen Code ermöglichen und dabei alle Funktionen besitzen welche man auch als Profi benötigt.

Noch vor 10 Jahren als Python immer mehr an Beliebtheit gewann wurde Bemängelt dass die Sprache durch den Interpreter zu langsam sei und für größere Anwendungen ungeeignet, erfahrene Anwender wussten jedoch dass sie die Sprache in diesem Fall schon damals um C oder C++ Bibliotheken erweitern konnten um diesem Problem entgegenzuwirken. Seit in der 3.x Version eine Vielzahl der bekannten Schwachstellen abgestellt wurden und Programmierer sich kaum noch Gedanken um Resourcen machen müssen wächst die Fangemeinde jedoch stetig und selbst erfahrene Entwickler welche strikt gegen sie waren Steigen nun auf die Sprache um. Die Dokumentation, eine Vielzahl an verfügbaren Bibliotheken und die Masse an guten Tutorials in Verbindung mit der Leistungsfähigkeit der Sprache machen sie zum heutigen Zeitpunkt zum besten was man als Anfänger finden kann.

An alle "Profis" welche sich hier zu Wort melden möchten um ihre Sprache in den Vordergrund zu bringen, wie schwer ist es euch gefallen in euren ersten Tagen zugang zu Quellen und Dokumentationen zu finden, wie schwer fiel euch das Lernen und was bietet eure Sprache die Python im alltagsgebrach nicht bietet?


2. Was benötige ich WIRKLICH

Es ist schwer für jeden einzelnen zu sagen was er für Software benötigt, ich kenne eine IDE für Basic welche 500kb groß ist und alles benötigt um Programme zu schreiben, jedoch ist die Sprache veraltet, wichtige Funktionen fehlen und der Comfort fehlt gänzlich. Ich werde hier auf die Dinge eingehen welche sich in den letzten Jahren durchgesetzt haben und vom Anfänger bis zum Profi benutzt werden. Als Betriebssystem empfehle ich eine Linux Umgebung da diese auf jedem System durch Emulatoren verfügbar ist und besonders im Bereich Programmierung die Community am besten zusammenarbeitet und Plugins entwickelt um die Programmiererfahrung zu verbessern. Außerdem sind 100% der Programme für Linux kostenlos und nach eigenen Wünschen anpassbar.

Falls ihr kein Linux besitzt sucht euch einfach eine Möglichkeit für euer Betriebssystem eine Linux Shell zu emulieren. Mehr als die Kommandozeile benötigt ihr die ersten Monate oder Jahre nicht und die Emulatoren sind als Open Source für jedes Betriebssystem mit 1 Klick installiert ohne dass ihr etwas einstellen müsst. Ich selbst nutze momentan Termux auf meinem Samsung Tablet um unterwegs zu programmieren und kann keine Nachtile zu meiner Windows Umgebung feststellen.

Das wichtigste ist als Anfänger der sichere Umgang mit der Tastatur. Ihr solltet euch angewöhnen die Maus so wenig wie möglich zu nutzen und mit Shortcuts und Makros arbeiten da der Wechsel von Tastatur zu Maus und zurück zum ersten lange dauert und zum zweiten sehr stark ablenken kann. Gewöhnt euch das 10 Finger System an bei welchem eure Finger auf <A> <S> <D> <F> .. <J> <K> <L> <Ö> liegen und auf die für den Finger festgelegten Zeichen wechseln. Sollte euch das Probleme bereiten dann gibt es unter Linux das Programm gtypist welches über ein sehr gutes Tutorial mit Übungen verfügt. (apt-get install gtypist)

Am wichtigsten um effektiv Code zu schreiben ist ein Texteditor welcher euch dabei unterstützt. Ich sage hier explizit Texteditor da IDE's uns zwar sehr viel Arbeit abnehmen jedoch bieten sie wenn wir mit dem Texteditor wirklich umgehen können kaum Funktionen die wir in diesem nicht finden und erschweren uns im späteren Verlauf den Lern und Programmierprozess sogar noch, auch wenn sie am Anfang verlockend wirken. Unter den Texteditoren hat sich bei Entwicklern Emacs und Vim durchgesetzt. Atom für Windows zieht zwar nach jedoch ist dieser noch im Anfangsstadium. Ich empfehle hier Vim bzw. die Neuauflage Neovim. Der Grund ist einfach, diese Editoren wurden speziell für uns Programmierer entwickelt, sie bieten uns Syntaxhervorhebung für nahezu alle Sprachen, ermöglichen uns Funktionen wie automatische Einrückung und Codevervollständigung drch Plugins und was am aller Wichtigsten ist, sie sind zu 100% mit der Tastatur bedienbar (daher sicherer Umgang mit der Tastatur). Wir können mit einem simplen Tastendruck in Zeile n springen, Codezeilen bei Bedarf auskommentieren oder bearbeiten, uns das Vorkommen einzelner Variablen und Befehle hervorheben lassen, Codeblöcke ein und ausblenden und vieles mehr. Eben weil der Einstieg in diese Programme sehr kompliziert sein kann (wenn man das Prinzip einmal verstanden hat jedoch intuitiv ist) empfehle ich Neovim da Swaroop zu diesem einen hervorragenden Guide geschrieben hat der alles nötige bis ins kleinste Detail verständlich erklärt.

Hier kommt auch der Punkt zum Tragen weshalb ich Linux empfehle, dort ist es möglich Vim in der Kommandozeile auszuführen (und er sieht trotzdem super aus) und ihm Plugins und Einstellungen einfach aus vorgefertigten Sets mithilfe des git clone Befehls zu übergeben. Wer sich einmal richtig mit dem Programm befasst hat wird feststellen dass es keine bessere Community als Github gibt egal welche Sprache man nun lernen möchte.

Nun kommen wir zur Wahl der Programmiersprache, wir benötigen auf jeden Fall eine Standardisierte, der Programmierstil sollte festen Konventionen folgen und die Dokumentation solle verständlich und leicht zugänglich sein. Bereits bei diesen Kriterien bleiben nur wenige übrig, wollen wir dann noch einfache Tutorials welche für Anfänger verständlich sind und in die absoluten Grundlagen einführen kann man die die übrig bleiben an einer Hand abzählen. Da wir Zukunftsorientiert lernen wollen und nichtmehr wie früher darauf angewiesen sind eine Lernsprache zu benutzen um dann später auf eine Hochsprache umzusteigen entscheiden wir uns ohne wenn und Aber für Python (Ruby ist ebenfalls eine gute Alternative, jedoch gibt es für diese Sprache kaum deutsche Quellen und sie ist mehr für die Web Programmierung geeignet) da diese einen verständlichen Syntax besitzt und Hunderte vorinstallierte Bibliotheken welche uns alles bieten was wir brauchen (und tausende von dritten wie GUI Programmierung für Android, Spieleprogrammierung usw.).


3. Wie lerne ich effektiv?

Es gibt viele wichtige Punkte um effektiv und zukunftsorientiert zu lernen, ihr müsst nicht nur die Sprache selbst lernen sondern auch die jeweiligen Konventionen, stellt euch vor ihr reist durch Deutschland. Alle sprechen deutsch aber das deutsch eines Bayers ist ein anderes als das des Schwaben, in Deutschland hat man sich daher auf Hochdeutsch geeinigt was jeder versteht (oder zumindest sollte). Genauso verhält es sich mit Programmiersprachen, es gibt viele Wege diese zu schreiben und die Funktion wäre die gleiche. Ihr wollt aber dass andere Programmierer euren Code lesen können und gleichzeitig wollt ihr in der Lage sein den Code eines anderen zu lesen. Die Konventionen für Python werden im PEP 8 Standard festgehalten, es sind Regeln wie man seinen Quelltext formatieren sollte damit er für andere lesbar wird, auch wenn es kein Zwang ist solltet ihr ihn euch von Anfang an daran halte. Vim bietet hierfür ein wunderbares Plugin welches diese Konventionen überwacht und euch darauf hinweist wenn ettwas nicht den Vorgaben entspricht.

Um die Sprache selbst zu lernen benötigt ihr ein Tutorial, hierbei ist es egal ob ihr eines in Textform verwendet oder Videotutorials, es sollte für euch jedoch verständlich sein. Ein gutes Beispiel in Python ist z.B. A Byte of Python von Swaroop, dieses ist kostenlos im Netz verfügbar und leicht verstädlich, es gibt jedoch auch eine Vielzahl weiterer guter Quellen unter anderem im Ebook Bereich des Forums. Zu empfehlen sind die meisten Bücher von OREILLY und PACKT, bei diesen findet man fast ausschließlich Autoren welche seit Jahren die Sprache verwenden und auch in der Community aktiv sind. Abzuraten ist von Büchern des Reinwerk (Gallileo) Verlags da diese meist die Codebeispiele aus anderen Sprachen Portieren und die Autoren meist kaum Erfahrung haben.

Habt ihr euch für ein Tutorial entschieden, arbeitet es Stück für Stück durch, wichtig dabei ist dass ihr den Inhalt nicht auswendig lernt sondern ihr ihn versteht. Es bringt nichts wenn ihr wisst wie ihr Funktion b von Klasse A aufruft jedoch zwei kapitel Später nichtmehr wie es mit funktion c funktioniert. Wenn euch ein Kapitel Probleme bereitet dann lest es noch einmal bis ihr alles verstanden habt und überfliegt das Buch nicht nur. Auch wenn ihr euch sicher seid dass ihr bestimmte Themen bereits aus einer anderen Sprache kennt, lest euch den gesamten Text durch, meistens findet ihr immernoch eine Besonderheit oder Neuerung die euch nicht bewusst war.

Eine gute Hilfe beim Lernen ist es sich auf Papier Spickzettel anzufertigen auf welchen ihr festhaltet wie ihr Instanzen erstellt und verwendet, wie ihr Schleifen aufruft usw. Gerade bei selten verwendeten Funktionen ist es nützlich zu wissen wo man es festgehalten hat statt ein 500 Seiten Buch zu durchsuchen. Legt euch ein Kochbuch zur Sprache zu, in diesen sind meist häufig auftretende Problemlösungen Schritt für Schritt erklärt und durch mehrere Beispiele gelöst. Die Dokumentaton besonders bei Python ist hervorragend, ihr habt zum einen die HTML Datei in welcher ihr euch in den einzelnen Bereichen durchklicken und einlesen könnt und zum zweiten den hilfe() Befehl im Interpreter welcher euch für die einzelnen Befehle die Funktion, die benötigten Parameter und vor allem die Funktionen die in Verbindung mit ihr verwendet werden können.


4. Was fange ich mit meinem Wissen an?

Wenn ihr ein Tutorial zur Programmiersprache durchgelesen habt dann werdet ihr nicht 2 Tage später in Heimarbeit euren eigenen Shooter programmieren. Die Grundlagen welche ihr im Buch lernt nützen euch nur insoweit dass ihr nun alles besitzt um euch selbst Programme zu erstellen und euch sind dabei tatsächlich keine Grenzen gesetzt. Wenn ihr euch vor Augen haltet bei wievielen Spielen im Startbildschirm "Cryengine X" auftaucht wisst ihr wieviele Spieleentwickler nichts anderes tun als sich eine Bibliothek Dritter zu suchen und diese in ihrem Code zu verwenden. Diese Cryengine wiederum wurde von hunderten Programmieren über Jahre entwickelt und gepflegt. Ein gutes Beispiel was allein Möglich ist, Stardew Valley, ein hervorragendes Spiel mit Tiefgang über Jahre von einem einzelnen entwickelt.

Als Programmierneulinge die ihr nun seid solltet ihr euch in den Foren eurer Sprache herumtreiben, seht euch Code anderer an, versucht herauszufinden ob ihr ihn verbessern könntet, schaut euch an auf welche Probleme andere treffen und ob ihr ihnen helfen könnt. Selbst wenn ihr mit einem Vorschlag für ein Programm unrecht habt wird euch im Python Forum keiner den Kopf abreißen, ihr habt dort tatsächlich Entwickler welche sich Zeit für euch nehmen und detailiet beschreiben aus welchem Grund ihr unrecht habt und was ihr verbessern könnt (auch wenn es einige wenige gibt die mit unnützem Wissen punkten wollen).

Eine weitere gute Möglichkeit euch zu verbessern ist sich die Bestandteile von Python genauer anzusehen, nehmen wir an ihr wollt verstehen wie ein Array sortiert wird, die Funktion ist ein fester Bestandteil der Sprache, kopiert euch den Code und probiert ihn aus, überlegt euch dann eine Möglichkeit wie man es anders machen ann und testet sie. Wenn beide Funktionen laufen dann baut mithilfe von print Anweisungen kleine Zähler ein um zu sehen wieviele Durchläufe sie benötigen, setzt einen Timer der euch anzeigt wie schnell sie jeweils sind.

Wenn ihr euch dann sicher im Umgang mit der Sprache fühlt (wie ihr feststellt können wir bis zu diesem Punkt 100% mit der Konsole arbeiten) könnt ihr euch die Dokumentation für GUI Elemente zu Gemüte führen, euch Drittanbietermodule wie Pygame (zum erstellen von Spielen) oder Kivy (Für Gui Programmierung auf Android) ansehen und versuchen Programme dafür zu entwickeln oder wo auch immer die Reise hingehen soll.

Wichtig ist dass ihr nicht versucht nach einer Woche ein Betriebssystem zu entwickeln oder ähnliches, ihr solltet wissen wo eure Grenzen und Ziele liegen und euch schritt für Schritt durch Übung und Erfahrung voranarbeiten. Wenn ihr in euren Programmen Fehler macht dann ist das nichts schlimmes, versucht sie zu beheben und zu verstehen was schiefgelaufen ist, gelingt euch das nicht dann wendet euch an die Community denn durch Fehler lernt man mehr als man vileicht denkt. Und wenn man es so sieht, einige der wichtigsten Errungenschaften der Wissenschaft sind durch Fehler entstanden.

5. Nachtrag

Wie bereits gesagt ist dies hier ein Tutorial um absoluten Anfängern zu helfen möglichst schnell in die Programmierung einzusteigen. Falls hier jemand der Meinung ist Werbung für die Programmiersprache seiner Wahl zu hinerlassen bitte ich dies zu unterlassen da jede Unnütze Information den Lernprozess nur hindert. Versucht euch vor Augen zu halten wie ihr euch gefühlt habt als ihr das erste mal einen Compiler heruntergeladen habt und wie wild nach Befehlen gesucht habt.

Wer konstruktive Verbesserungsvorschläge für den Text hat kann sich natürlich gern zu Wort melden, vileicht gibt es in Zukunft noch Verbesserungen die den Einstieg noch leichter machen oder womöglich habe ich einen Denkfehler im Text, der ja nun doch etwas länger und ausführlicher wurde (bis auf Rechtschreibfehler, die könnt ihr behalten ).

Lasst diesen Thread bitte nicht zu einer Diskussion über Programmiersprachen oder Tools vermüllen wie die anderen hier im Forum und haltet euch mit Kommentaren zurück wenn ihr nichts nützliches zu sagen habt. Falls euch das Tutorial beim Einstieg geholfen habt dann lasst ein Danke da damit der Thread aktuell bleibt und auch anderen hilft.


6. Nützliche Quellen

Swaroops HP >> Hier findet ihr sehr gute Tutorials für Python und Vim >> [ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ]
Python Forum >> Klasse Community die immer mit Rat und Tat hilft >> [ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ] oder [ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ]
github >> Von Programmierern für Programmierer >> [ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ]

Und natürlich die Bücher, Videos und Tutorials des Forums welche ihr unter der Suche Funktion zu Python findet.

Da ich in den letzten Tagen festgestellt habe dass bei den Anfängern die ich persönlich kenne meist nicht die Sprache das Problem ist sondern das funktionale und Objektorientierte denken habe ich hier noch eine sehr nützliche Hilfe gefunden die jetzt ebenfalls volkommen kostenlos ist. Sie benötigt zwar eine Java 8 Installation ist jedoch auf nahezu jedem System lauffähig (getestet auf meinem Raspberry Pi) und unterstützt in der neuesten Version Python, Ruby, Scratch, Java und andere (die dazugehörenden Bücher sind ebenfalls im PDF Format frei erhältlich und beziehen sich auf Java)

Es handelt sich hierbei um einen Texteditor mit Codehighlighting in den man Programme eingeben kann, diese beginnen mit 4 einfachen Anweisungen und werden von euch Schritt für Schritt durch Funktionen und Klassen erweitert um einen Hamster durch ein Labyrinth zu führen. Ihr könnt euch dabei auf die Entwicklung des Programms konzentrieren und der Simulator zieht im Hintergrund die Strippen.

Was anfangs langweilig und kindisch klingt ist auch für Fortgeschrittene interessant die Probleme beim funktionalen und Objektorientierten denken haben. Ich habe die Bücher über Weihnachten mal durchgearbeitet und fand stellenweise Punkte die selbst mir Kopfzerbrechen bereiteten und ich hatte wirklich Spaß an den Büchern.

[ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ]
__________________
1. Streite niemals mit Idioten, sie ziehen dich auf ihr Niveau und schlagen dich dann mit Erfahrung.

2. Wenn jemand denkt er hat die Oberhand, brich sie ihm.

Geändert von Erik/Schreier (20.01.19 um 10:34 Uhr)
Erik/Schreier ist offline   Mit Zitat antworten
Die folgenden 46 Mitglieder haben sich bei Erik/Schreier bedankt:
AcemiMan (19.10.19), Alizahra (20.01.21), B345T (11.11.18), bec3 (13.11.18), Berlindude (04.03.19), BigbadGun (10.10.19), bioseuche (18.05.19), blackpope (15.01.19), Blauesgelb (04.12.19), Bluebyte1976 (12.05.19), Bluesky1982 (17.07.19), Brill_e1 (01.03.19), Cad (30.12.18), calidro (19.08.23), ChillerDave (18.10.19), delta45 (09.02.23), Deserttry (12.05.22), dsen (04.01.21), felymm (18.07.19), gAm3r_13 (06.08.19), HakenX (22.04.22), haraldfseidl (02.01.20), Helina (17.05.23), ibeeback (13.01.19), ivaniog1 (18.10.19), JippiHero (13.01.19), Klaudia2014 (13.01.23), kp500h (16.02.20), lamsieu (09.12.18), luna101 (12.11.18), MSG1 (17.12.18), myespresso (06.01.19), noonim (18.10.19), ohrloch (08.04.20), qiyam (17.02.22), rabbasol (07.08.19), Rimad Sua Tilps (14.03.19), scropi (09.01.23), ShiiRLoXX (13.11.18), silvester01 (16.01.21), skybeat (22.01.21), tetraploid (20.02.20), thechigger (04.01.21), ThePius (29.11.18), titzan (14.11.19), wilma.cray (10.01.19)
Ungelesen 28.02.19, 19:50   #2
dplane
Anfänger
 
Registriert seit: Dec 2010
Beiträge: 1
Bedankt: 10
dplane ist noch neu hier! | 0 Respekt Punkte
Standard programmierung

HALLO !!
Absolut toll beschrieben.
Sehr verständlich und veradmmt gut konstruiert beschrieben möchte
mich bedanken !!
Alles gute wünscht dplane
dplane ist offline   Mit Zitat antworten
Die folgenden 4 Mitglieder haben sich bei dplane bedankt:
Erik/Schreier (01.03.19), felymm (18.07.19), MSGFKE (06.08.23), polarfuchz (13.08.19)
Ungelesen 13.08.19, 22:41   #3
rorolowa
Anfänger
 
Registriert seit: Apr 2015
Beiträge: 24
Bedankt: 9
rorolowa ist noch neu hier! | 3 Respekt Punkte
Standard Zum nachdenken

Zuerst mal, super Zusammenfassung!

Ich würde hier noch gerne den einzigen Manko an Python anbringen, der glaube ich Anfängern das Leben schwer machen kann:

Die Typsicherheit, die in Python (soweit mir bekannt zumindest) fehlt und meiner Meinung nach einem Anfänger eine Übersicht über seine Variablen gewährt, die ich als recht förderlich sehe.

Als langjähriger c++/c# entwickler bin ich nicht unparteiisch, aber mich würde interessieren, was Ihr so als gute, typsichere Sprache seht für einsteiger. (Eventuell auch mit Empfehlungen, wo einen nicht die IDE erschlägt, also eher MS Code als VS)

Außerdem glaub ich dass eine Grundlegende Unterteilung fehlt, nämlich zwischen Algorithmen und Daten/Programmiermodellen, die ja sprachunabhängig sind und dann dem tatsächlichen Handwerk.

Hab den Thread jetzt diverse Male gelesen und ich glaube, dass der echte Einstieg ins programmieren Grundlagen braucht, die Sprachunabhängig sind. Sobald ich die verstanden habe, wird die Sprache in der programmiert wird zum Werkzeug und erheblich leichter handhabbar.
rorolowa ist offline   Mit Zitat antworten
Ungelesen 13.10.19, 09:44   #4
gaston70
Erfahrener Newbie
 
Registriert seit: Feb 2011
Beiträge: 147
Bedankt: 66
gaston70 erschlägt nachts Börsenmakler | 23195 Respekt Punktegaston70 erschlägt nachts Börsenmakler | 23195 Respekt Punktegaston70 erschlägt nachts Börsenmakler | 23195 Respekt Punktegaston70 erschlägt nachts Börsenmakler | 23195 Respekt Punktegaston70 erschlägt nachts Börsenmakler | 23195 Respekt Punktegaston70 erschlägt nachts Börsenmakler | 23195 Respekt Punktegaston70 erschlägt nachts Börsenmakler | 23195 Respekt Punktegaston70 erschlägt nachts Börsenmakler | 23195 Respekt Punktegaston70 erschlägt nachts Börsenmakler | 23195 Respekt Punktegaston70 erschlägt nachts Börsenmakler | 23195 Respekt Punktegaston70 erschlägt nachts Börsenmakler | 23195 Respekt Punkte
Standard

Ich hatte vor circa 2 Jahren mit Python angefangen. Basic kannte ich noch aus dem damaligen Informatikunterricht. *Aber das ist länger her. Somit waren zumindest Grundlagen vorhanden. Was mich beim Wiedereinstieg eher erstaunt hatte, war die Tatasache, dass man nach wie vor jede Menge Tipparbeit hat. Mir haben am Anfang die Bücher von Al Sweigart geholfen. Zumindest bin ich danach soweit gekommen um ein altes Brettspiel in Python zu programmieren. Aber man muss als Anfänger auch realistisch sein. So ein Projekt kostet Zeit. Ich bin jetzt gerade mal soweit gekommen, dass ich in PyGame die Spielsteine alle darstellen lasse und das Spielfeld abgebildet bekomme. Denn sobald man sich mit Python auseinandersetzt, stößt man mehr oder weniger automatisch auf die ganzen Erwererungern und Bibliotheken. Auch damit muss man sich erst wieder auseinandersetzen. Allein eine Idee, wie man dem Rechner beibringen könnte, halbwegs intelligente Züge zu machen und diese dann auch noch umzusetzen. Von daher kann ich jedem nur Empfehlen mit Python zu beginnen. Aber Einsteigerfreundlichkeit *bedeutet eben nicht, dass einem die Programmiersprache die Arbeit abnimmt.
gaston70 ist offline   Mit Zitat antworten
Ungelesen 06.01.20, 21:57   #5
farnicoco
Anfänger
 
Registriert seit: Jan 2020
Beiträge: 1
Bedankt: 0
farnicoco ist noch neu hier! | 3 Respekt Punkte
Standard

Hola!
Ich habe mich gerade entschieden Python zu lernen, deshalb bin ich hier, durch Google, gelandet.
Früher in den 80ern (C64) habe ich mal an Basic geschnuppert, und heute bastel ich ein wenig Websites, aber richtig Programmieren fehlt mir noch, weshalb ich das jetzt mal lernen möchte.
Dein Text ist wirlich hilfreich, und ich konnte viel davon gebrauchen, jedoch die Idee mit VIM kann ich so gar nicht nachvollziehen.
Ich bin kein Coder, jedoch arbeite ich seit 20 Jahren mit Linux und bastel Websites. Habe also eine gewisse Ahnung (fast DAU-Niveau) vom Thema.
Wovon ich aber richtig viel Ahnung, ist Didaktik. Ich bin nämlich seit über 20 Jahren Tauchlehrer. Und wenn ich den Leuten da nicht wirklich was beibringen kann, saufen die ab.
Du erwartest gerade von Deinen Schülern, dass sie eine völlig neue Sprache lernen sollen (nicht mal eben Englisch!), dazu 10-Finger-Tippen, und einen absolut durchgeknallten Editor, der alles Gelernte was das Bedienen von Programmen hinter sich lässt, und jeden Hauch von Logik über Bord wirft.... Gratulation, das ist eine Hausnummer!
Ich vergleiche das mal eben: Da soll einer Jonglieren lernen, mit 5 Bällen, dazu auf einem Drahtseil tanzen, und alles bitteschön über dem Gran Canyon.
Wenn Du den Typen gefunden hast, stell ihn mir bitte vor: Ich mach uns alle reich!
Bitte alles mit Ironie lesen, und nicht denken, dass ich etwas böse meine oder ins Lächerliche ziehen will.
Du betonst ab und an die Anfänge, dass man die nicht vergessen soll. Aber hast DU wirklich so angefangen? Ich glaube nicht!
Ich habe schon ein paar Mal den VIM ausprobiert, mir die Basics reingezogen, aber immer wieder verlernt. Wenn man damit nicht jeden Tag ackert, ist es völlig sinnlos, den zu erlernen.
Und das ist eigentlich nicht Sinn der Sache. Denn denk mal an Fahrrad fahren oder Englisch. Das verlernt man eigentlich nie. Den VIM hast Du Ratz Fatz aus dem Kopf, wenn Du den nicht ständig oder extrem lange am Stück benutzt.
Des Weiteren wüsste ich nun nicht EINEN EINZIGEN Vorteil von VIM. Ich musste ihn eben installieren, denn bei Linux Mint ist er nicht dabei. Die Farben für Python sind nicht eingestellt, muss man auch erst machen. Die Benutzerfreundlichkeit tendiert zu Null, und das System zu lernen, hat was von Brainfuck.
Du verurteilst Editoren wie Atom. Was ist daran noch nicht ausgereift? Millionen professionelle Entwickler nutzen Editoren wie Atom, Sublime, Brackets & Co. Selbst Swaroop empfiehlt zunächst IDLE und sich später eventuell irgendwann mal in VIM einzuarbeiten.
Das, was Du da verurteilst, liegt doch für 99,9% der Schüler in ferner Zukunft, wenn die überhaupt an solche Probleme geraten, wie Du sie erwähnst.
Auch den Beitrag von "Rowola" finde ich nicht wirklich hilfreich, denn WANN kommen die Schüler an dieses Level, dass sie die Typsicherheit interessieren könnte. Solche "Warnungen" schrecken nur ab.
Man sollte ganz am Anfang alles an solchen Begriffen weglassen, und ruhig zu Notepad, Sublime, und wie sie nicht noch alle heißen, raten, denn die haben auch ihre Daseinsberechtigung. Nebenbei VIM erwähnen, und was die IDEs alles so Böses machen, und auf ein Programm zum Tippen lernen verweisen.
Solch eine Anleitung würde keinen Anfänger abschrecken.
Just my 2 Cents.
Nochmals Danke für die tollen Links!
farnicoco ist offline   Mit Zitat antworten
Ungelesen 09.01.20, 22:36   #6
csesraven
Echter Freak
 
Registriert seit: Apr 2009
Beiträge: 2.135
Bedankt: 2.819
csesraven leckt gerne myGully Deckel in der Kanalisation! | 406510020 Respekt Punktecsesraven leckt gerne myGully Deckel in der Kanalisation! | 406510020 Respekt Punktecsesraven leckt gerne myGully Deckel in der Kanalisation! | 406510020 Respekt Punktecsesraven leckt gerne myGully Deckel in der Kanalisation! | 406510020 Respekt Punktecsesraven leckt gerne myGully Deckel in der Kanalisation! | 406510020 Respekt Punktecsesraven leckt gerne myGully Deckel in der Kanalisation! | 406510020 Respekt Punktecsesraven leckt gerne myGully Deckel in der Kanalisation! | 406510020 Respekt Punktecsesraven leckt gerne myGully Deckel in der Kanalisation! | 406510020 Respekt Punktecsesraven leckt gerne myGully Deckel in der Kanalisation! | 406510020 Respekt Punktecsesraven leckt gerne myGully Deckel in der Kanalisation! | 406510020 Respekt Punktecsesraven leckt gerne myGully Deckel in der Kanalisation! | 406510020 Respekt Punkte
Standard

Nur zum Thema vim, ermacs etc: Der Vorteil von VIM ist, dass man auf entfernten Systemen programmieren kann. Und je nachdem wofür python genutzt werden soll, kann das schonmal ganz hilfreich sein.

Ich hab mit IDEs angefangen, bin dann aber freiwillig zu VIM gewechselt um die Basics können zu müssen. Hat mir insg. sehr dabei geholfen die Grundlagen zu kennen.
csesraven ist offline   Mit Zitat antworten
Ungelesen 06.02.20, 08:10   #7
Yiazmat
Anfänger
 
Registriert seit: Dec 2019
Beiträge: 15
Bedankt: 0
Yiazmat ist noch neu hier! | 3 Respekt Punkte
Standard

kann man mit php einen anständigen job finden?
motivation habe ich, aber bin Vollzeit beschäftigt. wird wahrscheinlich etwas schwer...
Yiazmat ist offline   Mit Zitat antworten
Ungelesen 05.02.21, 13:03   #8
simi17
Banned
 
Registriert seit: Jan 2016
Beiträge: 123
Bedankt: 197
simi17 mag den Abfluss Flavour! | 65238 Respekt Punktesimi17 mag den Abfluss Flavour! | 65238 Respekt Punktesimi17 mag den Abfluss Flavour! | 65238 Respekt Punktesimi17 mag den Abfluss Flavour! | 65238 Respekt Punktesimi17 mag den Abfluss Flavour! | 65238 Respekt Punktesimi17 mag den Abfluss Flavour! | 65238 Respekt Punktesimi17 mag den Abfluss Flavour! | 65238 Respekt Punktesimi17 mag den Abfluss Flavour! | 65238 Respekt Punktesimi17 mag den Abfluss Flavour! | 65238 Respekt Punktesimi17 mag den Abfluss Flavour! | 65238 Respekt Punktesimi17 mag den Abfluss Flavour! | 65238 Respekt Punkte
Standard

Also ich würde mit PHP anfangen, dann SQL lernen, und weil PHP sehr ähnlich wie Javas***** ist, das dann als nächstes lernen, dann Python denn wenn du PHP/JS kannst ist Python echt easy, wenn du das dann alles kannst, kann ich dir noch due Sprache Go (GOlang) empfehlen

Damit kannst du dann Webtechnisch so ziemlich alles machen, sind zwar alles S***** Sprachen, mit denen man vieles machen kann wie mit C#, C++ und konsorten

Wobei Golang glaube ich sogar keine S c r i p Sprache ist

Wenn du das ein bisschen drauf hast, kannst dich bei feelancer anmelden oder auf fiverr
Wenn du nun aber richtig skilleed bist gibts noch hackerone.com wo man recht gute und hohe Bug-Bountys bekommen kann, je nach Art und Critical der Lücke!
simi17 ist offline   Mit Zitat antworten
Ungelesen 06.06.22, 03:25   #9
heer123456
Anfänger
 
Registriert seit: Dec 2018
Beiträge: 2
Bedankt: 0
heer123456 ist noch neu hier! | 3 Respekt Punkte
Standard

Super... Danke
heer123456 ist offline   Mit Zitat antworten
Ungelesen 30.07.22, 19:01   #10
trallala2
Anfänger
 
Registriert seit: Apr 2012
Beiträge: 13
Bedankt: 6
trallala2 ist noch neu hier! | 0 Respekt Punkte
Standard

Interessanter Beitrag, zu dem ich allerdings gerne vielleicht paar Worte sagen wollte. Der Thread-Ersteller scheint seine Lieblingssprache zu haben (Phyton). Etwas sonderbar fand ich die Empfehlung, dass man mit Linux arbeiten sollte. Das verstehe ich nicht. Was hat die Programmiersprache mit dem Betriebssystem zu tun? Entweder ich mag Windows oder Linux oder Android oder sonst ein System. Ich programmiere dann für das Betriebssystem mit dem ich arbeite. Ich entscheide mich nicht für ein Betriebssystem, nur weil ich programmieren will. Ich entscheide mich mit dem Betriebssystem zu arbeiten, für das ich programmieren will.

Hier vielleicht meine zwei Cent zu dem Thema: ich bin der Meinung, dass es zuerst egal ist welche Programmiersprache man zuerst lernt, denn im Grundprinzip unterscheiden sich moderne Programmiersprachen nicht sehr in den Grundlagen. Wer mit Basic anfängt, lernt auch was Variablentypen sind. Vorausgesetzt er ist nicht faul und programmiert von Anfang an nur mit Variant-Typen, was Basic leider toleriert. Macht man es richtig, lernt man die Variablen-Typen, Schleifen, Abfragen, arbeiten mit Blöcken, Funktionen, Prozeduren, usw. Hat man in einer Sprache kapiert wie man programmiert, ist der Umstieg auf eine andere Sprache kein Problem. Das ist wie von einem Auto mit Gangschaltung auf eine Automatik umzusteigen. Muss man sich umgewöhnen, aber geht schnell. Viel wichtiger als die Syntax einer Programmiersprache, die man dann schnell erlernen kann, wenn man bereits programmieren kann, sind die Bibliotheken zu der Programmiersprache, die dazugehören. Erst die machen das Arbeiten mit einer Programmiersprache effektiv. Das Programmieren in einer neuen Sprache zu lernen ist Pille-Pale, wenn man bereits programmieren kann. Das Problem ist, dass man nicht immer das Rad neu erfinden will. Und das braucht man nicht, wenn man die passenden Bibliotheken kennt. Die haben nicht nur das Rad bereits fertig, sondern auch den Motor, das Lenkrad, usw. Das Auto zusammenbauen geht dann ganz schnell. Anders als wenn man alles erst neu programmieren müsste.

Welche ist nun die richtige Programmiersprache? Phyton? Ich finde das ist nicht die Frage, sondern eher - programmiere ich beruflich, professionell oder als Hobby für mich. Ich will Phyton nicht kleinreden, und wenn man sich Jobangebote anguckt, werden immer öfter Phyton-Programmierer gesucht. Aber für was? Zuerst, ich kenne mich kaum in Phyton aus, denke aber sagen zu können, dass man mit Phyton nicht das gleiche programmieren wird wie mit C++. Phyton ist eine interpretierte Sprache, mit C++ erzeugt man richtige, selbstablaufende Programme. C++ ist selbst nicht mit C# zu vergleichen, denn bei C#-Programmen muss man das passende Framework auf dem Rechner installiert haben, oder das Programm läuft nicht. Ein C++ Programm läuft i. d. R. auf jedem Rechner, ohne Voraussetzungen. Phyton benötigt einen Interpreter im Hintergrund. Man kann also nicht etwas programmieren und seinem Kumpel oder der Mama per E-Mail als Programm schicken. Wenn die nicht Phyton auf dem Rechner installiert haben, wird es bei denen nicht laufen. Ein C# Programm läuft auch nicht für sich. Ein Java-Programm auch nicht. All diese Programmiersprachen benötigen etwas auf dem Rechner, was vorher installiert werden muss, dann funktionieren sie auch. Sonst nicht. Ein C++ Programm läuft i. d. R. für sich alleine. Gilt natürlich nicht für mächtige Anwendung, aber für normale kleine Programme schon.

Wozu also Phyton? Nun, man benötigt nicht immer selbstläufige Programme auf dem Rechner, sondern auch Skripte oder Programme auf dem Server, usw. Da stellt sich die Frage ob Phyton auf dem Rechner ist nicht. Ich erwähne es nur um zu zeigen, dass man sich die Programmiersprache nicht einfach nur so aussuchen sollte, weil die schön ist, sondern sich vorher auch fragen sollte für wen ich programmieren will. Wenn man beruflich programmieren will, ist Phyton nicht falsch. Für Hobby kann man etwas flexibler sein. Basic ist immer noch bei VBA zu gebrauchen. Damit kann man Makros für Word, Excel, PowerPoint, aber vor allem Access programmieren. Bei JavaS***** braucht man i. d. R. nur einem Web-Browser um seine S*****e auszuführen. Will man für das Internet Programmieren ist PHP nicht verkehrt. Die meisten Webanwendungen sind in PHP programmiert (nicht alle, aber ich würde sagen die meisten). Java haben auch die meisten auf dem Rechner installiert. Wenn man also Java programmiert, bringt man sein Programm auch an den Mann. Bei C# sollte es auch kein Problem sein. Windows 10, aber auch 7 und 8 haben die Frameworks bereits auf dem System drauf. Sollte inzwischen auch kein Problem sein seine Programme weiter zu geben. Wer es richtigmachen will, evt. systemnah programmieren und richtige Anwendungen schreiben will, sollte C++ lernen.

Also vorher überlegen was ich damit anfangen will, und dann erst die Programmiersprache aussuchen. Nicht zuerst die Programmiersprache, um dann zu merken, dass man eingeschränkt ist. Aber wie ich schon oben geschrieben habe, die erste Programmiersprache ist meiner Meinung nach nicht so wichtig. Da lernt man zuerst wie das Programmieren funktioniert. Hat man das verstanden, hat man inzwischen auch genug Wissen um zu entscheiden was man weiter programmieren will.
trallala2 ist offline   Mit Zitat antworten
Folgendes Mitglied bedankte sich bei trallala2:
Malachin (23.01.23)
Ungelesen 15.01.23, 00:40   #11
DanieltheOne2022
Banned
 
Registriert seit: Mar 2022
Beiträge: 124
Bedankt: 124
DanieltheOne2022 leckt gerne myGully Deckel in der Kanalisation! | 22072865 Respekt PunkteDanieltheOne2022 leckt gerne myGully Deckel in der Kanalisation! | 22072865 Respekt PunkteDanieltheOne2022 leckt gerne myGully Deckel in der Kanalisation! | 22072865 Respekt PunkteDanieltheOne2022 leckt gerne myGully Deckel in der Kanalisation! | 22072865 Respekt PunkteDanieltheOne2022 leckt gerne myGully Deckel in der Kanalisation! | 22072865 Respekt PunkteDanieltheOne2022 leckt gerne myGully Deckel in der Kanalisation! | 22072865 Respekt PunkteDanieltheOne2022 leckt gerne myGully Deckel in der Kanalisation! | 22072865 Respekt PunkteDanieltheOne2022 leckt gerne myGully Deckel in der Kanalisation! | 22072865 Respekt PunkteDanieltheOne2022 leckt gerne myGully Deckel in der Kanalisation! | 22072865 Respekt PunkteDanieltheOne2022 leckt gerne myGully Deckel in der Kanalisation! | 22072865 Respekt PunkteDanieltheOne2022 leckt gerne myGully Deckel in der Kanalisation! | 22072865 Respekt Punkte
Standard

Ich würde prinzipiell mit JS und C# anfangen, weil gerade JS am meisten verzeiht und mit sehr viel Kacke umgehen kann.

Wenn man aber keine Ahnung hat, sollte man nicht mit C++ anfangen, denn die Sprache ist im Hardware manipulieren super, aber ist halt auch aufwendig speicher zuweisen, freiräumen und so weiter. C++ ist halt für Anfänger gefährlich, da kann halt auch mal Hardware zu Bruch gehen.
DanieltheOne2022 ist offline   Mit Zitat antworten
Ungelesen 05.04.23, 23:03   #12
MW75
Erfahrenes Mitglied
 
Registriert seit: Aug 2011
Beiträge: 546
Bedankt: 384
MW75 leckt gerne myGully Deckel in der Kanalisation! | 28698112 Respekt PunkteMW75 leckt gerne myGully Deckel in der Kanalisation! | 28698112 Respekt PunkteMW75 leckt gerne myGully Deckel in der Kanalisation! | 28698112 Respekt PunkteMW75 leckt gerne myGully Deckel in der Kanalisation! | 28698112 Respekt PunkteMW75 leckt gerne myGully Deckel in der Kanalisation! | 28698112 Respekt PunkteMW75 leckt gerne myGully Deckel in der Kanalisation! | 28698112 Respekt PunkteMW75 leckt gerne myGully Deckel in der Kanalisation! | 28698112 Respekt PunkteMW75 leckt gerne myGully Deckel in der Kanalisation! | 28698112 Respekt PunkteMW75 leckt gerne myGully Deckel in der Kanalisation! | 28698112 Respekt PunkteMW75 leckt gerne myGully Deckel in der Kanalisation! | 28698112 Respekt PunkteMW75 leckt gerne myGully Deckel in der Kanalisation! | 28698112 Respekt Punkte
Standard

Ich halte es für wichtig, dass eine Programmiersprache es schafft, den Anfänger immer wieder anstachelt, weiterzulernen. Eine Programmiersprache, bei der man als Anfänger nicht mal das Prinzip hinter dem simpelsten Anfänger-Programm (der "Hello World"-Ausgabe) nachvollziehen kann, dürfte kaum in der Lage sein, ihn zum Weitermachen anzustacheln. Will sagen: Wer einen Anfänger gleich überfordert, muss sich nicht wundern,wenn dieser schnell die Lust verliert. Das Autofahren lernt man schließlich auch nicht, indem man direkt in der ersten Fahrstunde in den Berufsverkehr einer Großstadt gejagt wird, sondern der Schwierigkeitsgrad wird erst nach und nach aufgebaut.

Was ich persönlich beim Lernen einer Programmiersprache nervig finde,ist die Wahl des jeweiligen Lernmaterials. Es gibt Bücher, es gibt Videotutorials, es gibt das Lernen mit Hilfe eines Dozenten usw. Aber eins haben diese Methoden fast immer gemeinsam: Den Umstand,dass sich viele "Lehrer" nicht in die Bedürfnisse des "Schülers" hineinversetzen können. Spätestens wenn es zu den Themen kommt, die dem jeweiligen "Lehrer" gut liegen, bemerkt man als Anfänger plötzlich einen deutlichen Kurswechsel im Unterrichtsstil. Wurde bisher noch zu Beginn gesagt, was man in der Lektion lernen soll, wie man vorgehen wil usw., bevor es an das Schreiben des Codes geht, sind diese Lektionen anders: keine Zusammenfassung, keine Erklärung des Codes, sondern es wird faktisch direkt begonnen, Code in die IDE zu hämmern, ohne gesondert zu erkären, was nun welche Zeile macht. Fast in jedem Buch und in jedem Videokurs kommt es zu genau diesem Punkt, wo der Autor/Creator an diesen "Mir ist es doch ganz logisch,wieso kannst du das Thema dann nicht auch verstehen?"-Punkt. Und das nervt einfach extrem.

Worauf ich hinaus will: Es ist einfach tierisch nervig, wenn man in gefühlt jedem Kurs an einen Punkt kommt, an dem der Autor/Creator einfach nicht mehr in der Lage ist, den Stoff noch verständlich rüberzubringen, weil er das so verinnerlicht hat, dass er überhaupt nicht mehr nachvollziehen kann, dass es einem Anfänger längst nicht so einfach ist. Natürlich kann man versuchen, dann das betreffende Thema aus einer anderen Quelle zu lernen und ggf. später zum ursprünglichen Kurs zurückzukehren, aber das funktioniert nur, wenn die einzelnen Kapitel nicht aufeinander aufbauen.

Geändert von MW75 (07.04.23 um 17:10 Uhr)
MW75 ist offline   Mit Zitat antworten
Antwort

Themen-Optionen
Ansicht

Forumregeln
Du kannst keine neue Themen eröffnen
Du kannst keine Antworten verfassen
Du kannst keine Anhänge posten
Du kannst nicht deine Beiträge editieren

BB code is An
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.

Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:46 Uhr.


Sitemap

().