Kostenlos programmieren lernen?

...komplette Frage anzeigen

8 Antworten

Ich empfehle dir dringend, mit Büchern zu lernen. Die vom Rheinwerk-Verlag sind ganz gut. So habe ich auch gelernt und sogar kostenlos! Denn diese Bücher gibt es in vielen Bibliotheken, also vielleicht auch bei dir.

Die primäre Lernquelle wird allerdings immer die Erfahrung sein. Über die Bücher lernst du nur die Theorie. Du musst aber auch lernen, dieses Wissen richtig einzusetzen. Dies geht nur über Erfahrung.

Von dem, was du tun willst, würde ich mit dem Webdesign beginnen. D.h. HTML, CSS, JavaScript und PHP inkl. MySQL/MariaDB.

PHP und JavaScript sind aber nur Scriptsprachen. Zur Roboterprogrammierung brauchst du eine richtige Programmiersprache. Also kann ich dir empfehlen, den Weg über Java zu gehen. Mit Java lernst du erstmal richtig programmieren und dann kannst du mit C weitermachen, welches du für Roboter benötigst.

Ich würde erstmal ein paar Projekte mit Mikrocontrollern und Arduinos durchführen, um überhaupt erst eine Basis für die Robotik zu schaffen, welche letztendlich auch nur darauf aufbauen.

Du benötigst dabei nicht nur das softwaretechnische Wissen, sondern musst dich auch mit der Hardware beschäftigen, weil du hier sehr hardwarenah programmierst. Du sprichst direkt die einzelnen Komponenten wie Sensoren, Motoren, Lampen etc. an, ohne dass irgendein Betriebssystem dazwischen ist.

Das bedeutet aber auch, dass du i.d.R. zumindest über grundlegendes Wissen in der Elektronik verfügen solltest. Nicht nur Löten können, sondern auch auch in der Lage sein, Schaltpläne zu verstehen und selber aufzustellen, gehört dazu.

Sicherlich gibt es auch Fertigroboter, welche schon einen beachtlichen Softwarevorbau besitzen. Diese können anfangs zwar interessant sein, später werden eigene Modifizierungen immer komplizierter, wenn du nicht über das nötige hardwareseitige Wissen verfügst.

Den Weg über das Webdesign, hin zur Mikrocontroller-Programmierung finde ich übrigens sehr schlau und empfehlenswert. Dadurch lernst du nicht nur gutes Design, was vielen Programmierern fehlt, sondern deckst auch gleich eine breite Facette an Wissen ab. Das einzige, was in deiner Reihe noch fehlt, ist C++, aber wenn du C kannst, kannst du dich ja auch daran versuchen.

Assembler wäre in dem Kontext sicherlich auch interessant.

Im Internet findet man viele gute Projekte zum Lernen. Z.B. Linienfolger, Labyrinth etc. Je mehr du selbst machst anstatt abzuschreiben oder zu spicken, desto besser wirst. Es macht durchaus manchmal Sinn, mehrere Tage nur darüber nachzudenken, wie man eine Aufgabe lösen kann. Das ist besser als aufzugeben und nachzusehen.

Zusammenfassend: Der primäre Lernfaktor ist Erfahrung in Verbindung mit Spaß, der sekundäre ein Buch vom Rheinwerk-Verlag. Als Nachschlagewerk für zwischendurch dient das Internet, v.a. die offiziellen Dokumentationen.

Beim Webdesign also die Seiten vom W3C, Mozilla Developers, die PHP-Dokumentation und zahlreiche hilfreiche Tutorials. Für die Mikrocontroller-Programmierung ist es eher dünner. Ganz gut eignen sich hauptsächlich ehef unterschiedliche Seiten, die du gut über Google finden wirst. Du wirst schon selbst sehen, welche Seiten für dich immer wieder hilfreich sein werden.

Die Kosten sind das wenigste, inzwischen gibt es zu allen gängigen Programmiersprachen viele ergiebige Foren und Webstites, die den Büchern weitgehend das Wasser reichen können. Findet man leicht mit googeln.

Das meiste was du investieren musst ist Zeit, viel Zeit. Das Programmieren wird dir niemand anders beibringen können als du selbst. Und du musst dich für EINE Sprache entscheiden, später können andere dazukommen, wenn du schon mal etwas Erfahrung hast.

Welche Sprache? Javascript und C++ sind zwei völlig verschiedene Welten. Ersteres eine einfache Scriptsprache, zweites ein mächtiges und komplexes Programmierwerkzeug.

Eine gute Wahl zum einsteigen (und später auch zum weitermachen) wäre Visual Studio Express von MS, ist kostenlos uns bietet gleich mehrere Sprachen. Ausserdem sehr ausführliche und gute Informationsseiten mit Beispielen und Supportforen.

Was du willst musst du entscheiden, Roboter zu programmieren ist etwas ziemlich anderes als Websites zu realisieren oder zu optimieren.

ceevee 23.07.2017, 10:58

"JavaScript ist eine einfache Scriptsprache".

Die Aussage ist süß, aber ich glaub, du hast noch nie so richtig JavaScript programmiert. Bei solchen Sachen wie Hoisting, klassenlose Objektorientierung, funktionale Aspekte, Closures, dem Unterschied zwischen null und undefined sowie zig Frameworks / Libraries (von denen einige inzwischen auch ziemlich bedeutend sind) kann man eher weniger von einer "einfachen Scriptsprache" sprechen, JS ist ebenfalls sehr mächtig.

1
Nube4618 23.07.2017, 11:10
@ceevee

Da hast du recht, intensiv habe ich mich mit js nicht auseinandergesetzt. Doch das ändert nichts daran, dass es eine Scriptsprache ist, die fortschrittliche Programmierkonzepte wie Polymorphie, Vererbung und halt alles was mit dem objektorientierten Konzept zu tun hat nicht oder nur auf Umwegen bewerkstelligen lässt. Also "einach" ist js schon nicht, wenn man sich wirklich tiefer damit beschäftigen will, auch da gebe ich dir recht.

2
Tuxgamer2 23.07.2017, 11:26
@ceevee

dem Unterschied zwischen null und undefined

Also damit würde ich mal nicht angeben.

null ist im Nachhinein eine der blödsten Ideen der Programmiegeschichte - und du hast mittlerweile bereits Sprachen, die kein null mehr haben. Selbst Sprachen mit null, führen "Option" als bessere Alternative ein.

Dass Javascript da gleich 2 unterschiedliche "nulls" hat ist einfach grußelig...

Hoisting

Zähle ich mal auch zu den "sinnlosen" Eigenschaften von Javascript. Oder kannst du mir erklären, wo der Sinn dahinter ist?

Ja, JS hat ein (im Vergleich zu z.B. C++) extrem vereinfachtes Scope-System.

klassenlose Objektorientierung

Meinst du damit, dass Javascript halt kein Keyword "class" hat und du "function" nutzen musst?

Deshalb sind das aber trotzdem Klassen...

funktionale Aspekte, Closures

Jaaaa...  Irgendwo hat da Javascript schon ein paar brauchbare Sachen und First-class functions.

Aber mir fällt da nichts ein, was es nicht auch in C++ gibt.

Und wenn du schon mal mit einer "richtigen" funktionalen Programmiersprache gearbeitet hast und verstanden hast, was "funktional" so wirklich heißt...

Javascript hat ja noch nicht mal Pattern matching. Und man hat da so viele Seiteneffekte...

=> Javascript ist sehr einfache Skriptsprache ;).

2
Tschoo 23.07.2017, 12:21
@Tuxgamer2

Die Seiteneffekte liegen wohl eher in dem Objekt, was mit JS bearbeitet wird (Web-Seiten)

0

Lerne die Basics zu html, css und Javascript auf w3schools.com.

Das Wichtigste beim Lernen ist jedoch learning by doing. Überlege dir nach den Basics ein kleines Projekt und versuche es umzusetzen. Dabei wirst du immer auf Probleme und Fragen stoßen wie "wie setzte ich dieses um oder "wie setze ich jenes um". Google diese Hindernisse einfach (in englisch). Bsp. "js get DOM content" und schon bekommst du unzählige Antworten zur Frage, wie man mit Javascript Inhalte aus html Dateien bekommt.

Mit html, css und Javascript bist du erst einmal genug beschäftigt, aber falls du in ein oder zwei Jahren nochmal meine Antwort lesen solltest, setze dich anschließend mit sass, pug, EcmaScript2016, NodeJs und MongoDB auseinander.
Wenn du dich mit NodeJs auseinander setzt, setze dich nach den Basics mit Webpack, VueJs, eslint und keystoneJs auseinander.

Grundsätzliches: 

Mein Ratschlag: Beginne mit Java und lerne später auch C/C++ (denn das sind die beiden heute mit Abstand wichtigsten Programmiersprachen). Parallel dazu musst du auch den Umgang mit CSS und HTML5 erlernen, denn die braucht man, um Webseiten zu gestalten.


grtgrt 23.07.2017, 11:38

Wer einigermaßen mit HTML und Java (sowie extrem wenig CSS) umgehen kann, ist schon sehr weit gekommen.

C/C++ und JavaScript zu erlernen wird dann immer noch schwierig genug sein - damit anfangen würde ich nicht.

0
grtgrt 23.07.2017, 12:06

Jeder Programmierer sollte mit C (und etwas C++) umgehen können.

Problem ist nur: Wer C als erste Programmiersprache lernt, wird feststellen, dass er damit auf Jahre hin nur Programme wird schreiben können, die kaum was Interessantes tun. 

Grund hierfür: Die Standardbibliotheken zu Java und C# sind umfassend, wohingegen die zu C - für heutige Bedürfnisse - um Welten zu dünn ist.

0
Simoris 23.07.2017, 14:28
@grtgrt

Man kann auch mit C einigermaßen schnell interessante Dinge tun, entweder indem man ne externe Bibliothek nutzt (z.B. SDL für Grafik & co.) oder indem man sich mit Mikrocontrollern beschäftigt.

Im zweiten Fall benötigt man aber entsprechend auch noch die Fähigkeiten außerhalb des Mikrocontrolers etwas sinnvolles zu bauen.

0

"zum Beispiel Webseiten oder Roboter" als aller erstesmust du dich für eines entscheiden (gibt auch anderes ausser die beiden) dann für eine Sprache entscheiden mit der du das machen willst.

Dann kannst du diese Sprache lernen und wenn du dann noch andere Sprachen lernen willst kannst du das machen, aber erstmal eine.

Für's Web-Development ist das MDN sehr zu empfehlen: https://developer.mozilla.org

Es beinhaltet Tutorials, die mMn. beste Dokumentation und einige Beispiele zu den jeweiligen Features.

Hallo,

wenn Du intuitiv Programme erlernen kannst, könntest Du anfangen in Robotstudio ein wenig mit Simulationen zu arbeiten. Später gehören allerdings viele weitere Wissensgebiete dazu, SPS Programmierung ist nur ein Teil davon. Es ist gewiss interessant. http://new.abb.com/products/robotics/de/robotstudio/downloads

Was möchtest Du wissen?