Absender: Michail Brzitwa
Datum: Mi, 26.04.2006 11:04:17
In-reply-to:
<006901c668cf$6bf19030$2201a8c0@user08>
References:
<006901c668cf$6bf19030$2201a8c0@user08>
Am 26.04.2006 03:19, schrieb Timo Sandmann:
Sorry, aber ich verstehe nicht so ganz, was noch so gegliederte Bibliotheken am Behaviour-System ändern sollten. Soweit ich verstanden habe, was uns so
Nichts, das habe ich auch nirgends geschrieben.
beigebracht wird, sollten weder Compiler- noch Linkeroptionen die Logik der Algorithmen beeinflussen. Ob der Linker nun frisch übersetzten Quellcode oder alte libs verwendet, sollte IMHO Einsteigern doch eigentlich ziemlich egal sein.
Eben nicht. das eine Mal fängt man mit einem Haufen Quellcode an, in dem man main() erstmal suchen muß, das andere Mal gibt es ein paar Bibliotheken und Header, das erste Projekt kann aber leer sein. Ein "int main(){ led(GREEN,ON); }" ließe sich dann flashen, und würde einen wirklich einfachen Einstieg garantieren.
Soweit ich weiß, wurde dieses einfache Grundgerüst vor allem durch den Einsatz von Rekursion möglich. Das mag für einen abstrakten Lernprozess sehr
Nein, das ist ein (Lisp-)Nebenprodukt. Hauptmerkmal war eine simple, verständliche Objektorientierung, eine graphische Nähe und eben ein direktes Augenmerk auf das Lernen von Arten der Programmierung.
Ich verstehe nicht, wieso das existierende Framework eine (neue) Bibliothek benutzen sollte, wo es doch selber höchst modular aufgebaut ist und die von einer derartigen Bibliothek (bzw. deren Funktionen) gelieferten Schnittstellen selbst schon mitbringt.
Zum einen finde ich das Framework nicht sehr modular (so sind z.B. Maschinenkonstanten über etliche Headerfiles verstreut), zum anderen soll eine Modularisierung dem Anfänger helfen und den Fortgeschrittenen nicht hindern. Das momentane Framework bietet nur letzteres.
Auch frage ich mich, woher der Anfänger dann weiß, welche Funktionen der Bibliothek er benutzen kann / soll? Durch die Bibliothek kann er das nicht im Quellcode nachschlagen, es bleibt dem viel zitierten Anfänger also nur
Sowas steht in den Headerfiles, weiterhin wollte wohl niemand doxygen abschalten.
int main() { led(LEFT_BLUE,ON); while (1) { if (sensor(DISTANCE,LEFT) < 30) motor(BACKWARD,10,30); // rechts etwas, links stärker zurück else if (sensor(DISTANCE,RIGHT) < 30) motor(BACKWARD,30,10); // rechts stärker, links etwas zurück else motor(FORWARD,30,30); // gleichmässig nach vorn pause(10); // zehn ms Pause } }schreiben. Im obigen Falle gäbe es keine Verarbeitung von RC-Kommandos, keine echte Kollisions/Kantenvermeidung usw. Perfekt um zu lernen, und einfach dazu. Zehn Zeilen, und der Bot rennt los.Nun ist nur die Frage, wer dabei was lernt. Um Programmieren zu lernen, brauche ich keinen Bot programmieren. Und wenn ich lernen will einen Bot zu steuern, dann erscheint mir ein Ansatz, der eben all das abdeckt, was der Bot auch kann, sinnvoller. Wie implementiere ich nach obigem Schema denn RC-Kommandos, echte Kollisions-/Kantenvermeidung usw.? Was habe ich übersehen, dass der vorgeschlagene Ansatz nicht in eine Sackgasse führt?
Gute Güte, obiges nennt man "Beispiel". Muß ich wirklich sowas wie if (remotecontrol() == 1001) led(RED,OFF); (das wäre ebenso ein Beispiel) dazuschreiben? Der erfahrenen Benutzer hat dann das Framework, welches keine hartkodierten Werte benutzt, sondern Konstanten/Funktionen bietet, der Anfänger kann direkt sein 1001 benutzen, um erstmal mit der FB rumzuspielen. Beide benutzen dann aber doch eine Funktion "uint16 remotecontrol(void)" einer Basis- Bibliothek. Nochmal: das sind nur Ideen, ob die Routine wirklich so heissen soll, ob sie keinerlei Parameter kennt, ob es eine Routine für die RC5-Nutzdaten und eine für die RC5-Adresse geben soll, das alles ist mir nicht wichtig, nur eben die Idee, Einsteigern einen simplen Einstieg zu ermöglichen.
Ich bitte die (zu?) deutlichen Worte zu entschuldigen, aber wenn man der
Bitte das nächste Mal weniger aggressiv; es wäre schade, wenn ich jetzt schon Filter auf diese Liste setzen müsste. Gruß, -- Michail Brzitwa <michail@xxxxxxxxxx> +49-511-343215