Programieren lernen

Trotzdem ist es nicht völlig verkehrt wenn hier Empfehlungen ausgesprochen werden. Ansonsten fängt der TE mit Basic an und ist frustriert weil er in der Praxis damit gar nichts anfangen kann oder gerät an was völlig abgefahrenes (Esoterische Programmiersprache , ok das ist übertrieben :ugly:)
Stimmt ich dir ja zu, aber ist doch schon etwas arg übertrieben ihn mit so einigen Unterlagen zu füttern, die Konzepte beschreiben die jeden Anfänger gnadenlos überfordern. ;) Es ist sicherlich gut gemeint, aber einfach zuviel für jemanden der noch nie eine Zeile Code geschrieben hat.
 
Also viele scheinen ja vor Assembler ja geradezu Angst zu haben. Es ist verständlich einfacher ein Programm in einer Hochsprache zu entwickeln als in Assembler, weil man bezüglich Assembler irgendwann den Überblick verliert. Aber vom Umfang und den Verwendeten Befehlen ist Assembler einfacher als eine Hochsprache. Die Befehle wie ADD, Move , Jump und Store erklären sich ja schon von selbst. Und damit allein lassen sich schon sehr coole Dinge konstruieren. Und es gibt Assamblersimulatoren, wo man einfache Programme drin schreiben kann und diese sind auch auf einem Niveau mit dem Mathematikunterricht eines 14 Jährigen. Wir haben in der Schule auch kleine Assemblerprogramme geschrieben und das hat richtig viel Spaß gemacht. Das finde ich gar nicht so dumm damit mal anzufangen, wenn man so einen geeigenten Assemblersimulator findet mit einem dazu passenden Tutorial.
 
Also viele scheinen ja vor Assembler ja geradezu Angst zu haben. Es ist verständlich einfacher ein Programm in einer Hochsprache zu entwickeln als in Assembler, weil man bezüglich Assembler irgendwann den Überblick verliert. Aber vom Umfang und den Verwendeten Befehlen ist Assembler einfacher als eine Hochsprache. Die Befehle wie ADD, Move , Jump und Store erklären sich ja schon von selbst. Und damit allein lassen sich schon sehr coole Dinge konstruieren. Und es gibt Assamblersimulatoren, wo man einfache Programme drin schreiben kann und diese sind auch auf einem Niveau mit dem Mathematikunterricht eines 14 Jährigen. Wir haben in der Schule auch kleine Assemblerprogramme geschrieben und das hat richtig viel Spaß gemacht. Das finde ich gar nicht so dumm damit mal anzufangen, wenn man so einen geeigenten Assemblersimulator findet mit einem dazu passenden Tutorial.

Jap z. B. eine Ampel xD - hab das gerade auf meiner FP gefunden^^ scheinen noch reste aus meiner Ausbildungszeit zu sein
Code:
include reg51.inc
 
code at 0
 
light equ p2 
 
main: mov ampel, #31h

input: jnb ampel.5, eingabe
            mov ampel, #32h
            mov ampel, #34h
            setb ampel.6
            
            mov ampel, #2ch
            mov ampel, #34h
            mov ampel, #36h
            
            ljmp main
            
end
 
Ja es gibt Simulatoren, da ist die Notation verständlicher. Dort kommt es dann nur auf die Befehle die dazugehörigen Variablen und vllt noch Sprungmarken an. Das sieht dann schon netter aus;)
 
es gibt Simulaoren für Assembler, die sich nur! auf rund 30 einfache Befehle wie add sUB muL JUMP STORE MOVE usw bechränken. Dann noch jeweils zwei Operanden und Sprungmarken und es geht auch schon los! ;)
 
Ohje man kann nem 14 Jährigen der mit Programmieren anfangen will doch kein Assembler empfehlen ^^.
Klar kann man damit auch einfache Programme schreiben ,aber sobald man bisschen mehr damit machen will als Hello World auszugeben wird es wohl schon echt komplex.

Ich würde ihm auch Java ,oder C# empfehlen ,weil damit kann er auch mal mit relativ wenig aufwand ne GUI programmieren o.ä. .
Nem 14 Jährigen wird es vermutlich nicht soviel Spaß machen erstmal 3 Jahre Konsolen Anwendungen zu schreiben ,bis er ne einigermaßen vernünftige GUI hinbekommt.
 
Zuletzt bearbeitet:
Nicht wegen den 14, aber wenn er noch nie was programmiert hat und sich das ganze erstmal anschauen möchte, muss er sich ja nicht direkt Sachen wie Assembler antun.
Das ist aber kein grund, den Assembler ist ein sehr schöne Sprache und vor allem die Sprach die der PC eigentlich nur versteht.
In was glaubst du sind Treiber geschrieben? bestimmt nicht in C, C++, C# oder Java...Nein sondern in Assembler weil es die Maschinensprache ist die ein Rechner bzw. ein CPU (Microcontroller) versteht.

Was glaubst du was mit einem Programm passiert das du in C, C++ oder C# passiert wenn du es kompilierst? Genau es wir in Assembler umgewandelt ansonsten wüsste die CPU (der Microcontroller) doch gar nicht was er machen soll.

Weil er dann mit ziemlich großer wahrscheinlichkeit nach kurzer Zeit keine Lust mehr daran findet.
Als Anfänger will man auch mal die ein oder andere für sich selbst nützliche Anwendung schreiben ,oder mal eine GUI erstellen.
Viel Spaß dabei sowas mit Assembler zu machen.
Wieso soll er keine Lust mehr haben, kannst du hellsehen?
Außerdem kann er sich doch immer noch umentscheiden wenn im Assembler zu schwer wird.
Und nein als Anfänger will man ganz gewiss nicht nützliches machen sondern eher etwas das funktioniert und in welcher Sprache das nun ist, ist vollkommen egal hauptsache das ergebnis stimmt.

Ich hatte z. B. ein Buch von meinem Ausbilder bekommen das am Anfang alle Beispielprogramme in Assembler drin hatte und dann umgefähr nach 2/3 wurde alles Widerholt aber diesmal in C. Somit hatte ich ansich Assembler und C gleichzeitig gelernt was sogar dann noch einfacher war beides zu verstehen.



PS: Sollte ich was falsches geschrieben haben dann bitte berichtigen aber das ist das was ich damals gelernt habe.
 
An den Threadersteller: Das Folgende ist nicht wirklich an dich gerichtet, und hilft dir wohl nicht!
Shona: Auch deine Assemblerprogramme werden weiterverarbeitet. Was "der PC" versteht ist ein binäres Datum. Das Programm wird Byte für Byte im Speicher abgelegt und keinesfalls in der Form "JUMP" und "MOVE". Nein nein, letztendlich stehen da die Opcodes für deine Befehle mit den jeweiligen Operanden drin.
Also ist auch dein Assembler scheinbar nicht "ganz unten". Aber warum programmierst du Assembler und nicht direkt in Opcodes? Weil du
7EFF038B0103
einfach viel schlechter lesen kannst, als
JUMP LabelA;
ADD ECX EAX;

Und genauso haben sich die Hochsprachen weiterentwickelt: Zur besseren Lesbarkeit. Aber das ist nicht das einzige, was Hochsprachen, wie C++, ausmachen, sondern es werden mehrere Level an Abstraktion hinzugefügt. "Abstraktion", das war dieses tolle Ding, womit man überhaupt sinnvoll mit PCs arbeiten kann:
Wenn man sich anguckt, wie ein PC aufgebaut ist, kann man auf der phsyikalischen Ebene anfangen, dann ist man bei Logik-Bausteinen wie AND und OR, daraus baut man sich kleine Schaltnetze, die diverse Funktionen erfüllen, diese Schaltnetze verkettet und verbindet man auch noch mit Schaltwerken, das alles schließt man an einen Bus an und und und. Alle diese Schritte, sind Schritte von Abstraktion. Wenn man ein Teil für sich fertig hat, betrachtet man nurnoch die Außenansicht und interessiert sich nichtmehr für das innere. Wenn man einen Addierer baut, ist man mindestens schon auf der Ebene der Logikgatter und interessiert sich nichtmehr für das rein physikalische. Und später beim CPU Entwurf arbeitet man meist auf einer sog. Registerebene, wo man schon mit Registern arbeitet.
Niemand könnte diese unheimliche Komplexität des PCs verstehen und nutzen, wenn man nicht extrem abstrahieren würde.

Und das ist halt ein Prinzip der Hochsprachen. Dort hat man dann Klassen, die Methoden haben und direkte einen riesigen Haufen von Assemblerbefehlen ausführen. Wenn ich bestimmte Teile meines Programms fertig habe, kann ich sie nutzen und zwar wieder auf einer höheren Abstraktionsstufe, sodass ich von dort aus schneller vorran kommen kann. Genau deswegen wird das meiste in Hochsprachen programmiert.
Im übrigen möchte ich nochmal betonen, dass ich nicht nur meine, dass Hochsprachen einfacher sind und daher besser. Das stimmt nicht, weil ich mich gerne über viel zu einfache Sprachen aufrege.

Das wollte ich nurmal erwähnt habe. Klar kann ich deine Argumentation verstehen, aber es ist 1. für Anfänger viel schwieriger zu verstehen und 2. Nicht wirklich anwendungsnah, da er später wohl eher nicht im Mikrocontrollerbereich arbeiten wird.

Schönen Abend noch!
 
@Shona:
Natürlich wird das in Assembler übersetzt. Aber wo ist jetzt dabei das Argument es gleich selbst in Assembler zu machen?
Irgendwann ist es nur noch Binärcode. Soll ich jetzt anfangen alles direkt binär hinzuschreiben?

Ja, in Assembler hardwarenah zu programmieren ist effizienter, aber er versucht ja nicht irgendwas großes auf einem uralten Microcontroller wie z.B. nem 8051 zum laufen zu bringen.


EDIT: Man, hab ich jetzt lang getrödelt.
 
Das ist aber kein grund, den Assembler ist ein sehr schöne Sprache und vor allem die Sprach die der PC eigentlich nur versteht.In was glaubst du sind Treiber geschrieben? bestimmt nicht in C, C++, C# oder Java...Nein sondern in Assembler weil es die Maschinensprache ist die ein Rechner bzw. ein CPU (Microcontroller) versteht.
Neben dem was Crysis nerd schon angesprochen hat, befürchte ich ehrlich gesagt das es heute so einfach nicht mehr gemacht wird. Ich kann mir nicht vorstellen das man Treiber noch in Asm entwickelt. Es mag Ausnahmen gegen, diese sind dann aber sicherlich sehr selten. Zu meiner Studienzeit (auch schon 10 Jahre her) haben wir auch alles in C/C++ entwickelt und dann nur die Stellen die wirklich notwendig waren selbst optimiert. Warum sollte das heute anders sein?

Das Argument, dass Asm die einzige Sprache ist, die der PC versteht zieht an dieser Stelle auch nicht. Soweit ich weiß sind alle relevanten Operations Systeme in C und nicht etwa in Asm entwickelt. Der Grund dafür ist ganz einfach, es einfach leichter beherrschbar ist. Diese Systeme werden übersetzt und sind dann genauso lauffähig, wie Asm oder Oppcode.

Bei heutigen Compilern würde ich sogar behaupten das jeder halbwegs gute Compiler einen besseren Maschinen Code erzeugt, als die meisten Gelegenheits-Asm-Entwickler. Will hier keinen zu nahe treten, aber das sind einfach Sachen die eine Maschine besser kann als ein Mensch.

Was glaubst du was mit einem Programm passiert das du in C, C++ oder C# passiert wenn du es kompilierst? Genau es wir in Assembler umgewandelt ansonsten wüsste die CPU (der Microcontroller) doch gar nicht was er machen soll.
Formale Ergänzung. C# verfolgt den gleichen Ansatz wie Java, der Code der generiert wird, ist als nicht direkt ausführbar.

Wieso soll er keine Lust mehr haben, kannst du hellsehen?
Außerdem kann er sich doch immer noch umentscheiden wenn im Assembler zu schwer wird.
Und nein als Anfänger will man ganz gewiss nicht nützliches machen sondern eher etwas das funktioniert und in welcher Sprache das nun ist, ist vollkommen egal hauptsache das ergebnis stimmt.
Hellsehen kann bestimmt keiner, aber vielleicht hat er da etwas Erfahrung. ;)

Ich kann mich an meine Anfangszeit noch erinnern. Wir waren zu dritt als wir gesagt haben, wir fangen an. Wollten damals programmieren lerne um ein Spiel nach unseren Wünschen zu programmieren. War ne tolle Idee ... Nach nicht mal 3 Monaten war ich allein. ;) Es stellte sich heraus, dass unsere Ziele etwas zu hoch waren und es so den anderen beiden die Lust genommen hat. Sicherlich lag es bestimmt nicht nur an den Zielen, aber ich denke wenn wir anders angefangen hätten, dann wäre es besser verlaufen. Ach so, nur zur Info, weil ja einige denke ich hielte 14 für zu früh. Ich war die jüngste Person damals in der Gruppe ... mit 11 Jahren.
 
ich fang jetzt auch an, habe mir ein arduino starter paket geholt und wurde in der firma von anderen arduino nutzern ein bisschen eingewiesen
jetzt im urlaub gehts dann los
vielleicht wäre so ein microcontroller auch was für dich, CR7fan ?
da hat man dann gleich noch hardwaregebastel :)
da kann man parallel die arduino homepage aufhaben, wo die befehle beispielhaft erklärt werden
ne riesen community gibts auch, massig foren, posts von projekten etc
basiert glaub auf C mit zusätzlich arduinotypischen spezialbefehlen

erinnere mich an c64 basic
von grundstruktur scheints ähnlich
 
Ich bin auch am überlegen ob ich nen Arduino kaufen soll. Soll einfach zu programmieren sein und man hat schnell Ergebnisse.
 
Neben dem was Crysis nerd schon angesprochen hat, befürchte ich ehrlich gesagt das es heute so einfach nicht mehr gemacht wird. Ich kann mir nicht vorstellen das man Treiber noch in Asm entwickelt. Es mag Ausnahmen gegen, diese sind dann aber sicherlich sehr selten. Zu meiner Studienzeit (auch schon 10 Jahre her) haben wir auch alles in C/C++ entwickelt und dann nur die Stellen die wirklich notwendig waren selbst optimiert. Warum sollte das heute anders sein?

Das Argument, dass Asm die einzige Sprache ist, die der PC versteht zieht an dieser Stelle auch nicht. Soweit ich weiß sind alle relevanten Operations Systeme in C und nicht etwa in Asm entwickelt. Der Grund dafür ist ganz einfach, es einfach leichter beherrschbar ist. Diese Systeme werden übersetzt und sind dann genauso lauffähig, wie Asm oder Oppcode.

Bei heutigen Compilern würde ich sogar behaupten das jeder halbwegs gute Compiler einen besseren Maschinen Code erzeugt, als die meisten Gelegenheits-Asm-Entwickler. Will hier keinen zu nahe treten, aber das sind einfach Sachen die eine Maschine besser kann als ein Mensch.


Formale Ergänzung. C# verfolgt den gleichen Ansatz wie Java, der Code der generiert wird, ist als nicht direkt ausführbar.

Ich weiß es zwar nicht sicher ,aber ich denke schon das bei wirklich Hardware naher programmierung wie Treibern ,dem Kernel o.ä. weiterhin überwiegend mit Assembly gecodet wird.


@Shona Wir haben hier jemanden der mit dem Programmieren anfangen will und erstmal reinschnuppern will.
Man will dann selbst etwas erschaffen was einem nützlich sein könnte.
Außerdem sind GUIs sehr interessant für nen Anfänger wem macht es schon Spaß Jahrelang Konsolenanwendungen zu schreiben?
Der Thread Ersteller hat mit Sicherheit nicht vor irgendwelche Treiber o.ä. zu coden .
Ich finde JAVA,C#,C,C++ sind gut geeignet für einen Anfänger .
Wenn er z.B. C oder C++ lernt kann er später ja immernoch Assembler lernen ,wenn er sich das antun will :),
Das kann er dann auch in seinen Code einbinden und kann so die Vorteile beider Sprachen kombinieren.
Ich finde man sollte sich aber erstmal auf eine Sprache konzentrieren und sie vernünftig lernen ,alles durcheinander verwirrt nur unnötig.
 
Zuletzt bearbeitet:
Ich bin auch am überlegen ob ich nen Arduino kaufen soll. Soll einfach zu programmieren sein und man hat schnell Ergebnisse.

der nackte arduino kost auch nicht viel, für ca. nen 20er gibts schon was
Arduino Uno R3 - embedded projects Online-Shop
die software gibts umsonst als download auf der arduino seite

ich hab jetzt mal son starter paket gekauft, da ist halt noch ein haufen gedöns dabei zum basteln: sensoren, 2 zeiliges display, LEDs, widerstände und ein buch für 15 vorgegebene "projekte" zum üben
wenn man das selbst zusammenstellt isses bestimmt billiger, meine eltern schenken mir das dann zu weihnachten
Arduino Starter kit - embedded projects Online-Shop

ich hab allerdings bei reichelt bestellt, aber da isses ausverkauft
 
Zurück