## c't-Projekte - Mailinglisten

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

### Re: [ct-bot] main vereinfacht

Absender: Timo Sandmann
Datum: Do, 12.05.2011 20:44:34
In-reply-to: <1305219757.10999.44.camel@wbam-laptop>
References: <1305219757.10999.44.camel@wbam-laptop>

    Hi,

    Am 12.05.2011 um 19:02 schrieb Simon Siemens:
    > Hallo Timo,
    >
    > ich schlage in den folgenden drei Emails jeweils drei Patches vor (sogar
    > mit Changelog-Eintrag :-)). Alle drei hängen irgendwo zusammen, können
    > aber auch getrennt betrachtet werden. Die zwei Ersten sind die
    > Änderungen, die wir schon seit Langem verwenden. Wir dachten uns nun,
    > sie wären vielleicht auch von allgemeinem Interesse.
    >
    > Der Patch in dieser Email vereinfacht das Schreiben einer main-Funktion
    > auf das typische generische Grundgerüst
    >
    > int main(int argc, char * argv[]) {
    >        ctbot_init(argc, argv);
    >
    >        for (;;) {
    >                pre_behaviour();
    >
    >                // Hier kommt der Verhaltenscode
    >
    >                post_behaviour();
    >        }
    > }

    >
    > Dieses Grundgerüst passt zu Robotersoftware ebenso wie zu GUI-Software.
    > Es hat drei wesentliche Vorteile
    >
    >      * Updates an der ct-Bot-Infrastruktur haben keine Auswirkungen auf
    >        die main-Funktion. Wenn also jemand sein eigenes Verhalten mit
    >        seiner eigene main-Funktion geschrieben hat (also komplett
    >        eigene ct-Bot.c), dann funktioniert das mit Release 20 ebenso
    >        wie mit Release 30 des ct-Bot-Codes – solange beide Releases die
    >        drei Funktionen ctbot_init, pre_behaviour und post_behaviour
    >        verwenden. Einfach ein neuer make-Aufruf und fertig.
    >      * Es ist sehr einfach, selbst eine main-Funktion / ct-Bot.c zu
    >        schreiben. Fehler können einem dabei kaum unterlaufen.
    >      * Auch Anfänger verstehen diesen Aufbau und damit das Konzept
    >        (nicht die Details) hinter dem ct-Bot-Code.
    >      * Ein vierter Vorteil erschließt sich, wenn man meinen Vorschlag
    >        einer Bibliothek der Hardware-Abstraktionsschicht denkt. (Wir
    >        liefern eine solche Bibliothek an unsere Studenten aus.)
    >        Bibliotheken enthalten üblicherweise keine main-Funktion,
    >        sollten es dem Nutzer aber einfach machen, eine zu schreiben.
    >        Das klappt mit diesem Patch ganz gut.
    >
    > Was hältst du davon?

    das ist sehr gut! :-) Aus einer ähnlichen Motivation heraus ist ja inzwischen auch das ganzen Init-Zeug aus ct-Bot.c in init.c usw. ausgelagert.
    Kann aber ein wenig dauern, bis ich mir den Patch (und die beiden weiteren) genauer anschaue - nicht weil es keine gute oder wichtige Sache ist, sondern aus Zeitmangel.

    > PS: Die main in ct-Bot.c ist übrigens etwas komplizierter, weil dort ja
    > bereits ein Verhalten (das Testprogramm) implementiert ist.

    Ja leider... Das sollte vielleicht auch mal überarbeitet werden.

    Grüße,
    Timo

- Referenzen:
  - [ct-bot] main vereinfacht
    - From: Simon Siemens

- Voriger (Datum): Re: [ct-bot] Code-Konfiguration [war: timer.h für ct-Bot.c], Timo Sandmann
- Nächster (Datum): Re: [ct-bot] Eclipse-Build-Konfiguration für Bibliothek, Timo Sandmann
- Voriger (Thread): [ct-bot] main vereinfacht, Simon Siemens
- Nächster (Thread): [ct-bot] make-Target für Bibliothek, Simon Siemens
- Indizes:
  - Datum
  - Thread