c't Projekte - c't-Bot und c't-Sim -
Mailinglisten
[Voriger (Datum)]
[Nächster (Datum)]
[Voriger (Thread)]
[Nächster (Thread)]
[Nach Datum][Nach Thread]
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