Programmieren lernen

Niemand

Member
Themenstarter
Registriert
13 Dez. 2011
Beiträge
453
Hi,

ich würde gerne programmieren lernen. Dabei möchte ich gerne Programme schreiben, die Berechnungen ausführen können oder welche, die eine motorsteuerng ansprechen können und/oder Sensoren überwacht. Welche Sprache ist dafür am besten geeignet und hat jemand ne gute Anleitung?

achja, motorsteuerungen selber bauen muss ich mir auch noch beibringen :)
 
ich würde auch den vielseitigen Python als ersten Programmiersprache empfehlen, wenn da nicht die Sache mit der Motorsteuerung wäre, da muss du am besten nachschauen ob du das mit Python auch realisieren kannst
 
Habe 1982 damals mit Basic und Assembler angefangen, auf einem Commodore C64 :love:. Danach noch in den 80zigern und anfangs 90er Jahre C, Pascal, Modula 2, Fortran, Ada, Lisp und noch einige andere, welche ich jedoch nicht unbedingt als Programmiersprachen ansehe, bspw. Matlab, Mathematica, Maple. Die meisten habe ich nach gut Zweijahrzehnten nicht mehr gebraucht und weitgehend vergessen :(.

Was mir persönlich sehr hilfreich für das Verständnis und den Verarbeitungsmechanismus sowie Aufbau und Architektur einer CPU und von weiteren Programmiersprachen war, war Assembler respektive Machinensprache... und natürlich auch Disassemblieren etc.

Wow... hier noch eine Liste aus Wikipedia. Was sich mittlerweile so alles auf dem Markt tummelt :):

Liste von Programmiersprachen
 
Zuletzt bearbeitet:
danke euch für die zahlreichen posts. ich denke, ich werde mit C++ anfangen und später auf phyton umsteigen. evtl hol ich mir auch ein Raspberry Pi und spiele mit dem rum!
 
Ausgezeichnete Wahl :thumbup:!

LG Uwe


Nachtrag: Sie dir unbedingt das nach wie vor seit fast 80 Jahren bestehende Konzept der Turingmaschine an:

Turingmaschine
 
Zuletzt bearbeitet:
@Niemand:

Wenn Du unbedingt C++ nehmen willst, wirf doch mal einen Blick auf ROS
 
Ich kann C++ ebenfalls nur empfehlen, wenn man "richtig" einsteigen will (die Lernkurve dürfte hier natürlich schon steiler sein als bei anderen Programmiersprachen). Dafür versteht man aber auch von Grund auf alle wichtigen Programmierkonzepte, und kommt im Anschluss mit praktisch jeder Programmiersprache klar.

Meine zusätzliche Empfehlung: schau dir wirklich pures C++ an (nicht irgendein Visual C++ oder ähnliches). Das mag zwar zum produktiven Arbeiten später unnötig kompliziert sein, zum lernen ist es aber sicher sehr viel effizienter.
 
Mit HTML kann man gar nix programmieren, nur auszeichnen, vor allem Basislayouts für Webseiten festlegen, die man dann per CSS und/oder JavaScript (DAS ist eine Sprache, wenn auch eine verkorkste :cool: ) feintuned.

Ich habe mit C und Assembler als Jugendlicher angefangen, ist sicherlich der schwierigere Weg, vermittelt aber die entsprechenden Basics.

Ja, mit Java kann man Hardware ansprechen (bzw. mittelbar), es gibt entsprechende Komponenten (auf JNI-Basis), um USB, RS232 & Co. anzusprechen.

C++ ist ein guter Einstieg...
 
Arduino scheint mehr nicht sehr passabel zur Erlernung einer weiterverbreiten Programmiersprache zu sein. Das Beste dürfte da sicherlich C++ sein.
 
@ Niemand:

Ich habe ebenfalls auf einem C64 angefangen und für einen Kompletteinsteiger ist das minimale BASIC des C64 wirklich ideal. Es gibt ja nur knapp 30 Befehle, die hat man im Handumdrehen gelernt. Weitere Vorteile sind, daß man sofort mit Programmieren beginnen kann und auch nicht durch irgendwelche Variablendeklarationen, Compiler, Debugger oder sonstwas immer wieder gestoppt wird. Einfach RUN eingeben und los geht's. Allerdings kann man dann auch leicht so tolle Fehlermeldungen wie ?SYNTAX ERROR IN 120 (und das ist noch die einfachste) bekommen oder es gibt einen Komplettabsturz. Daurch lernt man aber auch, Programmfehler selbst korrigieren zu können anstatt das einem Debugger zu überlassen. Wenn man dann mehr machen will, kann man sich die Systemroutinen und die Speicheradressen zunutze machen. Und das ist beim C64 ebenfalls sehr einfach, da sich die Positionen ja nie ändern, man kann z.B. aus Speicheradresse 186 immer das zuletzt verwendete Diskettenlaufwerk herauslesen. Falls mal Interesse besteht, ich habe für Windows einen komplett vorkonfigurierten VICE-Emulator, reduziert auf C64, C64 mit SuperCPU und C128. Der Floppyspeeder JiffyDOS usw. ist alles dabei. Einfach nur nach C:/ kopieren und fertig.

Bei mir ist es inzwischen so, daß ich auf modernen Rechnern gar kein Interesse mehr am Programmieren habe. Es gibt fast alle Arten von Software, die man nur brauchen kann, auch als Freeware. Ich habe mal mit RealBasic experimentiert, daß muß man sich erst sein GUI zusammenbauen, dann Variablen und Menüs deklarieren, dann darf man vielleicht mal anfangen zu programmieren (wobei einem der Editor dann auch wieder alles einrückt) und vor dem Test kommt dann erst der Debugger und motzt dann wieder rum, daß da was nicht stimmt. Das nervt echt. Ich würde gern mal mit 8502-Assembler auf dem C128 anfangen, aber alleine habe ich nie die rechte Lust dazu. Assembler auf dem C64 kann eine echte Faszination ausüben, wenn man verstehen kann, wie das alles abläuft. Der Rechner hat ja gerade mal 0.985 MHz, etwa 40K nutzbaren Speicher, 8K Grafikspeicher und 1000 Bytes Farbspeicher. Der Prozessor hat noch nicht mal Multiplikations- oder Divisionsbefehle. Gerade im Bereich der Demoszene gibt es so optimierte Programme, und sie sind zu 100% menschgemacht, es gibt keine Hilfen vom Computer. Und daß da solche Sachen möglich sind, ist schon genial. Beim Demo Cubase64 wird übrigens ein MP3 decodiert, auf einem Soundchip abgespielt, der eigentlich keine Samples kann und dazu noch in Echtzeit verfremed. Mit weniger als 1 MHz! Durch entsprechende Programmierung des Videochips sind auch mehr Farben und höhere Auflösungen möglich. Nach 16 Farben bei 320x200 Pixeln sehen die Bilder in Den Demos nicht aus. Die Grafikdemo wird übrigens von einer SD-Karte mit einer 16 MB-REU (Speicherwerweiterung mit DMA-Controller) abgespielt.
 
Zuletzt bearbeitet:
Weiss noch beim C64, wie ich mittels IRQs den Bildschirm teilen konnte... bspw. oben die normale Standardeingabe und unten dann den Grafikmodus. Das waren noch Zeiten...:).
 
Hardwarenahe Programmierung und weit verbreitet, da bieten sich eigentlich nur C und C++ an. Ich würde dir empfehlen, zunächst C zu lernen. C++ kann man dann wie eine "Erweiterung" von C++ noch "dazulernen". Deine PC-Programme wirst du vermutlich auch dann hauptsächlich in C++ schreiben. Wenn du deine Motorsteuerung noch selbst bauen willst, landest du aber vermutlich bei Mikrocontrollern und die in C++ programmieren ist absoluter overkill. Frisst nur unnötig Speicher und Rechenleistung, auf Mikrocontrollern kann manchmal unsauberer Code ("Spaghetticode") um Welten besser sein als irgendwelche polymorphen Objekte einer Objektorientierten Programmiersprache.
Du kannst dir natürlich auch die neuen "moderneren" Programmiersprachen anschauen, insbesondere die .NET-Geschichte. C# ist da wohl am verbreitetsten, alternativ gibt es noch viele mehr (VB.NET, J#, F#, ...). Eine tolle Programmiersprache mit wahnsinnig vielen Möglichkeiten. Aber nicht ganz so hardwarenah, daher evtl. etwas langsamer in der Ausführung. Und Mikrocontroller wirst du damit nicht programmieren können. Außerdem ist sie doch deutlich anders als C, du musst also quasi zwei Programmiersprachen lernen, wenn du Mikrocontroller-Programmierung und PC-Programmierung machen willst. Auch finde ich, dass eine reine objektorientierte Programmiersprache eher nichts für absolute Programmierneulinge ist, das haut einen aus den Socken und man versteht nur noch Bahnhof.
 
Hardwarenahe Programmierung und weit verbreitet, da bieten sich eigentlich nur C und C++ an. Ich würde dir empfehlen, zunächst C zu lernen. C++ kann man dann wie eine "Erweiterung" von C++ noch "dazulernen". Deine PC-Programme wirst du vermutlich auch dann hauptsächlich in C++ schreiben. Wenn du deine Motorsteuerung noch selbst bauen willst, landest du aber vermutlich bei Mikrocontrollern und die in C++ programmieren ist absoluter overkill. Frisst nur unnötig Speicher und Rechenleistung, auf Mikrocontrollern kann manchmal unsauberer Code ("Spaghetticode") um Welten besser sein als irgendwelche polymorphen Objekte einer Objektorientierten Programmiersprache.
Du kannst dir natürlich auch die neuen "moderneren" Programmiersprachen anschauen, insbesondere die .NET-Geschichte. C# ist da wohl am verbreitetsten, alternativ gibt es noch viele mehr (VB.NET, J#, F#, ...). Eine tolle Programmiersprache mit wahnsinnig vielen Möglichkeiten. Aber nicht ganz so hardwarenah, daher evtl. etwas langsamer in der Ausführung. Und Mikrocontroller wirst du damit nicht programmieren können. Außerdem ist sie doch deutlich anders als C, du musst also quasi zwei Programmiersprachen lernen, wenn du Mikrocontroller-Programmierung und PC-Programmierung machen willst. Auch finde ich, dass eine reine objektorientierte Programmiersprache eher nichts für absolute Programmierneulinge ist, das haut einen aus den Socken und man versteht nur noch Bahnhof.
Ich finde nicht, dass C ein guter Einstieg für C++ ist. Man gewöhnt sich Sachen an, die man sich hinterher wieder abgewöhnen muss, um gutes C++ zu schreiben. Eigene Erfahrung, gehöre zu der Generation, die Mitte der 80er (nach Basic und Assembler) C gelernt hat und Anfang der 90er auf C++ umgeschwenkt ist.
Lern lieber gleich C++, wenn C++ das Ziel sein soll, auch wenn das ganze Arduino-Gedöns auf dem Level, wo das normalerweise stattfindet auch locker rein prozedural abgewickelt werden kann.

Übrigens gibt's auch eine mit .net programmierbare Arduino-Variante: http://en.wikipedia.org/wiki/Netduino
 
Zuletzt bearbeitet:
Die meisten Code habe ich in C geschrieben. Im Gegensatz zu caputo habe ich den Sprung nach C++ aber nie geschafft.
 
Also C++ zum Einstieg ist, meiner Meinung nach, besser als mit C auf C++ umzusteigen, da man doch einige Unarten und die Denkweise, die in C absolut korrekt sind, nach C++ portiert. Ich würde trotzdem eine Objektorientierte Sprache empfehlen (C++, Java oder C#) , eine prozedurale und eine funktionale Sprache, dort bietet sich auf jeden Fall JavaScript an, welches sehr, sehr mächtig und Ausdruckstarkt ist. Aber das wird gerne übersehen, weil viele damit nur Spielereien in HTML machen ^^ Viel Spaß beim Anfang und durchhalten!
 
Wenn du reine Berechnungen machen willst, dann mach dich doch mal mit Matlab vertraut. Da kommst du sehr schnell auf gute Ergebnisse, wenn es wirklich nur um wissenschaftliches Rechnen geht...
Auch wenn das hier von einigen, vielleicht auch zu Recht nicht als Programmiersprache gesehen wird.

Und auch einige Grundkenntnisse in Sachen Assembler und Architektur 8086 wären vielleicht von Vorteil, dort sieht man eigentlich ziemlich gut wie das Teil überhaupt rechnet, wo Probleme liegen und was sehr Rechenleistungsintensiv ist.
Soll jetzt nicht heißen, dass du Assembler lernen sollst, aber wenigstens mal angucken kann von Vorteil sein.
 
Und auch einige Grundkenntnisse in Sachen Assembler und Architektur 8086 wären vielleicht von Vorteil, dort sieht man eigentlich ziemlich gut wie das Teil überhaupt rechnet, wo Probleme liegen und was sehr Rechenleistungsintensiv ist.
Soll jetzt nicht heißen, dass du Assembler lernen sollst, aber wenigstens mal angucken kann von Vorteil sein.

Na ja, Assembler zeigt bei "modernen" x86-Prozessoren oft herzlich wenig über die interne Arbeitsweise - der Prozessor zerlegt die komplexen CISC-Befehle in micro-ops, die er dann ausführt.
 
Also wenn Robotik das Ziel sein soll, dann empfehle ich AVR-Mikrocontroller programmiert mit Assembler, Bascom oder C. Als erste Plattform möglichst nicht Arduino verwenden, lieber selbst am Steckbrett aufbauen. Ich nutze selber Bascom gemischt mit Assembler, die Hardware entwickle ich selbst.
 
Zur Zeit habe ich hier einen Mikrocontroller und ein Board dazu hier für eine Abschlussarbeit (ATmega128 und STK600 Board, beides von ATMEL, von denen es auch eine Entwicklungsumgebung zum Programmieren Atmel Studio dafür gibt) , für die Programmierung verwende ich C. Assembler ginge auch, aber das unterscheidet sich doch schon ziemlich zu sonstigen Sprachen mag aber für das grundlegende Verständnis, wie die Verarbeitung im MC stattfindet von Nutzen sein. http://www.mikrocontroller.net/ ist dazu recht informativ, dort gibts auch Tutorials zum Mikrocontrollerprogrammieren mit Assembler und C

Zum Einstieg sonst (wenns nicht um Hardware-Programmierung geht) würde ich aber eine andere "modernere" Sprache favorisieren, z.B. Java oder (mir persönlich noch sympathischer) Python. Zu C++ kann ich nichts sagen.
 
  • ok1.de
  • thinkstore24.de
  • ok2.de - Notebook Computer Server
  • Preiswerte-IT - Gebrauchte Lenovo Notebooks kaufen

Werbung

Zurück
Oben