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