## c't-Projekte - Mailinglisten

[Voriger (Datum)] [Nächster (Datum)] [Voriger (Thread)] [Nächster (Thread)]
[Nach Datum][Nach Thread]

### Re: Fwd: Re[2]: [ct-bot] ct-Bot-Wettkämpfe

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

- Antworten:
  - Re: Fwd: Re[2]: [ct-bot] ct-Bot-Wettkämpfe
    - From: Fabian Recktenwald
  - Re: Fwd: Re[2]: [ct-bot] ct-Bot-Wettkämpfe
    - From: Benjamin Benz

- Referenzen:
  - RE: Fwd: Re[2]: [ct-bot] ct-Bot-Wettkämpfe
    - From: Timo Sandmann

- Voriger (Datum): Re[2]: Fwd: Re[2]: [ct-bot] ct-Bot-Wettkämpfe, Thorsten Thiele
- Nächster (Datum): Re: Fwd: Re[2]: [ct-bot] ct-Bot-Wettkämpfe, Benjamin Benz
- Voriger (Thread): AW: Fwd: Re[2]: [ct-bot] ct-Bot-Wettkämpfe, Erich Kohlberger
- Nächster (Thread): Re: Fwd: Re[2]: [ct-bot] ct-Bot-Wettkämpfe, Fabian Recktenwald
- Indizes:
  - Datum
  - Thread