PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Die Sprache



Mr.H
05.11.2009, 11:59
Hii Leute,
Also das ist jetzt mein erster Beitrag hier im Forum von roboternetz.de

Also ich interessiere mich schon länger für Pc und programmieren und so was und jetzt hab ich die Robotik für mich entdeckt.
Bis jetzt hab ich eher im Web programmiert JavaScript und PHP aber jetzt kommt was neues dran.
Robotik.
Also jetzt endlich zu meiner eigentlichen Frage.
Welche Sprache soll ich lernen um möglichst viele Roboter programmieren zu können.
Also einfach die Sprache die für Roboter programmierung am besten geeignet ist.
Jetzt schon mal sorry wenn das die falsche Rubrik sein sollte.

Jetzt schon mal Danke und einen schönen Tag euch.
MfG
Michael

Mr.H
05.11.2009, 12:17
Ok Leute,
also hab mich jetzt nochmal umgeschaut und lerne jetzt einfach mal die Assemblersprache hatte ich vorher auch schon im hinterkopf aber jetzt mach ich das.

squelver
05.11.2009, 12:27
Das hast du in 18min entschieden? In der Regel braucht es nen halben Tag, bis jemand diesen Thread sieht und drauf antworten kann, wenn derjenige nicht sowieso die ganze Zeit den Finger auf der F5-Taste hat :mrgreen:
Ich denke, dass Assembler für den Hobbybereich einfach ne Nummer zu groß ist, Basic ist dagegen die einfachste und beliebteste Sprache um schnell Ergebnisse zu bekommen. C hingegen, nutze ich auch, ist da schon aufwändiger, Funktionen müssen ausführlicher beschrieben werden.

Gruss copi

Mr.H
05.11.2009, 12:34
ja das hab ich auch schon gemerkt das man da ziemlich lang warten muss bis jemand antwortet.
das nervt finde ich.
aber naja egal es ist trotzdem das beste Roboter-Forum das ich kenne.
(Es ist das einzige das ich kenne :-D)
naja ich denke ich hab schon ein bisschen erfahrung mit programmieren und so aber wenn dann möchte ich es auch richtig machen.
also dneke ich das ich bei Assembler bleiben sollte.
wenn ich nicht packe kann ich ja imemr noch wechseln.
Danke dir auf jeden Fall.

Yossarian
05.11.2009, 12:49
Hallo


das nervt finde ich.
Quengelige Kinder nerven.

Wenn Du es richtig machen willst, mußt Du erst einmal die Anwendung im Kopf haben.
Für alle "normalen" Sachen ist eine Hochsprache die bessere Wahl.
Z.B C, C++ usw.
Nur für besonders schnelle oder speichersparende Applikationen wird Assembler nötig sein.
Wer will denn größere Programme für den PC in Assembler schreiben?? brrrr

Mit freundlichen Grüßen
Benno

Mr.H
05.11.2009, 13:10
Wer will denn größere Programme für den PC in Assembler schreiben?? brrrr


Ohne das ich dich jetzt angreifen möchte oder so, aber z.B. alle großen Spiele MÜSSEN zumindest zu einem gewissen Teil in Assembler bzw. Maschinensprache geschrieben werden da sie sonst auf so gut wie keinem PC flüßig laufen würden.

Wollte ich nur mal gesagt haben.
Danke

PicNick
05.11.2009, 15:18
..MÜSSEN zumindest zu einem gewissen Teil in Assembler ...
Würd' ich nicht sagen. Nachdem C mit und ohne plusplus ja imho nur eine Schreibhilfe für Assemblerprogrammierer ist, müsstest du ganz schöne Tricks draufhaben, um gegen einen abgebrühten Compiler & Optimizer ernsthaft anzutreten.

Aber Bit-Schaufeln macht Spass, deswegen würd' ich dir auch nie abraten, dich auf Assembler zu stürzen.

Mr.H
05.11.2009, 15:21
Mhh ja möglich.
Ich habe aber gelesen das selbst wenn nur 1 Prozent des gesamten Codes sei er in C oder in einer anderen Hochsprache in Assemblersprache umprogrammiert wird läuft das Program zw. 10 und 100 mal schneller.
Also so habe ich das gelesen.

Könnte man sich drüber streiten :)
Ich finde jetzt nur gerade den Link nicht mehr.

PicNick
05.11.2009, 15:28
Grad' das behauptete Wahnsinnsverhältnis 1 % Code und dann 10-100 mal schneller sollte dich misstrauisch machen.
Es wird viel gequasselt und im Zeitalter des Internet leider auch publiziert.

Mr.H
05.11.2009, 15:37
Sorry aber ich finds jetzt echt nicht.
hab jetzt 15 min. in meiner Chronik gesucht leider ohne Erfolg.
aber so weit ich mich errinern kann stand es irgendwo auf Wikibooks oder auf dem Wiki hier in roboternetz.
ja es klingt wirklich ein "bisschen" unwarscheinlich. :)

Mr.H
05.11.2009, 15:45
Hab den Link jetzt doch noch gefunden.
Wikibooks_assembler (http://de.wikibooks.org/wiki/Assembler_%2880x86_Prozessor%29-Programmierung:_Einleitung)

Hier der Auszug.
Anspruchsvolle Programme (z. B. Spiele) werden meist erst in einer Hochsprache geschrieben - und laufen unzumutbar langsam. Ersetzt man später einige kritische (am häufigsten durchlaufene) Programmteile durch Maschinensprache, wird das gesamte Programm wesentlich schneller. Ersetzt man nur ein Prozent des Programms an den richtigen Stellen durch Assemblercode, läuft das Programm 10- bis 100-mal schneller!

Findest du im unteren Teil.

PICture
05.11.2009, 16:17
Hallo Mr.H!

Ich bin selber ein Umsteiger auf Mikrocontroller und habe bisher immer eigene Hardware mit verschiedenen CPU´s in Assembler (ASM) programmiert.

Maschinensprache ist die einzige Programmiersprache die entsprechende CPU direkt versteht und in der ein Bit in Software einem Spannungspegel in Hardware entspricht. Sie benötigt leider viel Zeit, grösste Disziplin bei Erstellung eines Programms und genaue Kenntnisse über innere Struktur des Controllers, aber die Ausführungsgeswindigkeit ist für andere Sprachen unerreichbar.

Schon vor zig Jahren habe ich noch beim "Commodore 64" (6502) mit BASIC-Interpreter gemessen, dass das gleiche um 1000 mal schneller durch ASM erledigt wurde.

MfG

PicNick
05.11.2009, 16:27
Naja, hab's gelesen, was solls.
Klar kann und muss man ganz spezielles Gefummel mit Assembler machen, meistens dort, wo man die durch die Sprache vorgegebenen Strukturen verlassen muss.
Je höher die Sprache, desto eher kann das passieren.

Aber die Zahlen, die da stehen, sind wie eine After-Shave-Werbung, bei der mir versprochen wird, dass ich ab sofort von lustvoll stöhnenden Sexbomben verfolgt werde.

However, stürz' dich so oder so in die Materie, dann wird du ja selbst sehen, was geht und was nicht.

radbruch
05.11.2009, 17:07
Hallo

Vermutlich kommt die größte Geschwindigkeitssteigerung bei Verwendung von Assembler daher, dass sich die Programmierer bei reiner Maschinensprache mehr Gedanken über die eigentlichen Ziele ihres Codes machen. Bei vernünftigem Programmaufbau erzeugen die modernen C-, Basic- oder Javakompiler ebenfalls sehr schnellen und kompakten Maschinencode. Und den können dann bestenfalls noch echte Assemblerkönner weiter optimieren.

Als Einsteiger, vor allem wenn man überhaupt keine Gedult kennt, wird man sich mit Assembler sehr quälen. Nicht nur das Programmieren selbst ist zäh, auch das Debugen erfordert mitunter viel mehr Zeit und Kenntnisse als bei Hochsprachen.

Letztlich ist aber immer diejenige Programmiersprache die Beste, mit der man die gestellte Aufgabe lösen kann.

Gruß

mic

[Edit]
Ach, das habe ich erst jetzt angeschaut: Der Link oben zeigt auf einen Beitrag über Assembler bei einem 80x86, das ist mit dem Assembler und den Kompilern für RISC-Prozessoren (AVR,PIC..) nur bedingt gültig!

yaro
05.11.2009, 18:06
Um Assembler zu programmieren muss man sehr viel Ahnung von der Struktur eines Mikrocontrollers haben und benötigt auch sonst sehr viel Hintergrundwissen.
Normalerweise reicht C vollkommen aus. Trotzdem gibt es ab und zu Fälle, wo man Funktionen in Assembler programmieren muss, weil sie der C-Compiler nicht so gut übersetzen kann, wie es eigentlich sein müsste. Auch hilft es Assembler zu verstehen, wenn man in einem Programm plötzlich Fehler hat, die eigentlich garnicht sein dürfen, dann lohnt sich der Blick auf den übersetzten Code.
Diese Fälle sind aber eher die Ausnahme und entstehen erst, wenn man Fortgeschrittene Projekte programmiert.

Deswegen rate ich zu C.

Gruß, Yaro

PICture
05.11.2009, 18:47
Um verschiedene Mikrocontroller zu programmieren, ist von Hochsprachen C die optimalste.

Wenn man dazu noch ASM ziemlich gut beherscht und in die Hochsprache als Funktionen an nötigen wegen Geschwindigkeit Stellen implementieren kann, sollte man in viel kürzerer Zeit genauso schnelle Programme, wie rein ASM, erstellen können.

MfG

Besserwessi
05.11.2009, 22:41
Früher als die Compiler noch nicht so gut waren, hatte man mit ASM gegen einen einfachen Compiler vielleicht einen Geschwindigkeitsvorteil um den Faktor 10. Mit optimierenden Compilern wie z.B. GCC hat man oft nur einen geringen Geschwindigkeitsvorteil (oft weniger als Faktor 2). Nur bei einigen Ausnahmen (z.B. Ergebnis eines Vergleichs aus dem Carry-flag in eine Variable schieben) kreigt man da noch einen Faktor 10.

Der Faktor 100-1000 den ASM Schneller sein soll, gilt mehr für Interpreter.

Ich würde auch zur Programmiereung in C raten, ASM braucht man nur selten, und meistens nur für kleine Teile des Programms, meistens reicht die Geschwindigkeit von C aus. Für fast alle aktuellen µCs gibt es auch C Compiler.

Mr.H
06.11.2009, 09:35
Erstmal Danke Leute für eure Tipps.

Ja ich hab mir gestern die Assemblersprache ein wenig angesehen und das mit den ganzen Registern und so mhh klingt als benötige man viel Geduld.

Ich habe jetzt erstmal beschlossen, dass ich mir das RN-Control Controllerboard und das Buch "Mikrocomputertechnik mit Controllern der Atmel AVR-RISC-Familie. Programmierung in Assembler und C"

Da werden beide Sprachen ausführlich beschrieben C und AVR Assembler und dann kann ich ja immer noch abwegen und schauen welche SPrache mir besser gefällt.

Vielen vielen Dank an euch.
MfG
Michael

Richard
06.11.2009, 19:51
Das hast du in 18min entschieden? In der Regel braucht es nen halben Tag, bis jemand diesen Thread sieht und drauf antworten kann, wenn derjenige nicht sowieso die ganze Zeit den Finger auf der F5-Taste hat :mrgreen:
Ich denke, dass Assembler für den Hobbybereich einfach ne Nummer zu groß ist,i

Assemler ist letzendlich das beste und schnellste ABER!

Man muß für jeden µc neu lehrnen, keiner ist gleich, also sehr
Unflexzibel, da solltze man sich dann auf einen Chip festlegen.
Kann den dann aber suboptimal Proggen.

So genannte "Hochsprachen" sind einfacher zu lehnen und zudem
Flexibel für jeden Typ von µc einstellbar.

Einfach ist der Anfang mittels Basic, Aber das ist sehr "Maschinen"
entferhnt, Mensch hat keinen wirklichen Zugang zur Hartware. :-(

C ist Weltweit Standart, etwas Hartwahre näher als Basic aber
( anfangs) etwas schwiriger zu Proggen.

Gruß Ricard

yaro
06.11.2009, 21:15
Ich habe das Buch, was du lesen willst auch gelesen (allerdings schon als Fortgeschrittener) und würde es für den Einstieg eher nicht emfehlen. Das, was dort erklärt wird, ist anfangs sehr verwirrend und nur schwer zu verstehen. Die Sprache C wird dort auch nur angerissen und nicht richtig beigebracht.
Da eignet sich, wie ich finde, ein Buch in dem man nur C lernt besser.
Das, was dort erklärt wird, ist anfangs sehr verwirrend und nur schwer zu verstehen.

Gruß, Yaro

Mr.H
07.11.2009, 09:19
Mhh ja ok.
Ich bin ja auch kein blutiger Anfänger mehr.
Hab C schon mal angerissen und Java und Blitz Basic kan ich ja schon (ok sowie man halt Java lernen kann als Schüler) asuerdem ja noch JavaScript und PHP.
Aber was mich eher zum nachdenken bewegt ist, das C auch nur angerissen wird.
Denn werde ich mur wohl oder übel zwei Bücher kaufen müssen.
Eins für AVR Assembler und eins für C.
Wenn jemand zwei gute Bücher über diese Themen wissen sollte wäre es nett wenn er sie hier posten könnte.
Jetzt schon mal Danke

MfG
Michael

Jakobius
30.01.2010, 17:21
Ich würde auch auf alle fälle zu C oder C++ raten!
ist ienfacher zu lernen, flexibler, ...
erst wenn ein projekt sich auf einem mikrocontroller schon nur mehr durch die gegend wältzt würde ich assembler nehmen.

PS: bei google findet man viele nützliche toturitals zur C programmierung für einen avr

LG Jakob