Newsgroup: it.comp.lang.c
Titolo: Architettura a sussunzione

Forse sono un po' OT.
Devo scrivere, a scopo didattico, un programma in C relativo ad 
un'architettura a sussunzione (SUBSUMPTION ARCHITECTURE).
if vedi un ostacolo then cambia direzione
If trasporti campioni and sei alla base then posa i campioni
If trasporti campioni and not sei alla base then viaggia sotto gradiente
If trovi un campione then prendi il campione
If true then muoviti intorno
Ora... non ho difficoltà a scrivere il programma in modo imperativo.
Però mi servirebbe utile vedere come viene implementato in C un qualsiasi 
agente reattivo basato su tale architettura.
Sto girando come un matto con google senza cavare un ragno dal web.
Grazie a chiunque può darmi una dritta.
..
? 

 Sto girando come un matto con google senza cavare un ragno dal web.
C'è pieno di informazioni - in Inglese - su quale punto sei incartato?
-- 
  FSC - 
http://userscripts.org/scripts/show/59948
 
http://fscode.altervista.org
 - 
http://sardinias.com

 paradigma imperativo.
Sì... ma io non devo semplicemente scrivere un programma che faccia quello.
Ma quanto scrivere un programma che agisca secondo i dettami della 
architettura a sussunzione.
- ogni comportamento è dovuto alla percezione e alla corrispondente azione
- diversi comportamenti possono essere innescati contemporaneamente
- i moduli devono essere posizionati gerarchicamente
Ed in particola vedere come vengono implementate in C le funzioni See e 
Action.
Se vedo come questi passi vengono implementati in C per un qualsiasi agente 
reattivo allora poi posso con tranquillità mutuare la tecnica per risolvere 
il mio problema.
Che è per l'appunto un compito per casa.
.. 

 Che è per l'appunto un compito per casa.
Se quanto ho detto sopra non è sufficiente a farti andare avanti con le 
tue forze presenta quanti più dettagli possibile e poi si vede come 
continuare.


 continuare.
Mi occorre solo un esempio in C di un agente reattivo in un'architettura a 
sussunzione per avere uno spunto da cui partire.
.. 

 sussunzione per avere uno spunto da cui partire.
E proprio con questo qua sopra che non mi tornano i conti. Da come lo 
chiedi sembra che il problema non sia il C, ma l'implementazione logica 
e algoritmica dell'architettura.
Posta il programma in pseudo-codice, in BASIC, in Lisp, in BrainF*ck o 
in qualsiasi altro linguaggio e io ti do una mano a tradurlo.
Se invece il problema è proprio il fatto di raccapezzarti 
nell'architettura, dillo chiaro e tondo così capiamo subito se sei 
davvero on-topic oppure se dobbiamo portare la discussione da un'altra 
parte - il fatto è che non ci faremmo molto in questo gruppo, dato che 
il fatto di usare il C sarebbe solo un dettaglio implementativo di 
secondo interesse.
Tra parentesi, hai dato un'occhiata ai link che ti ho mostrato? Tutto 
chiaro nella pagina in Inglese? Ci sono delle cose molto importanti 
scritte là, spero tu le abbia tenute in considerazione per questo caso 
specifico.


 nell'architettura,
Il problema č raccapezzarmi nell'architettura usando il C.
Cmq... scrivo qualche linea di codice cosě vediamo se sono sulla strada 
giusta.
Il codice dovrebbe commentarsi da solo.
void main()
{
    const int ostacolo=1
    const int campione=2
    const int trovato=3
    start_process(cambia_direzione());
    start_process(posa_campione());
    start_process(prendi_campione());
    start_process(girovaga());
    start_process(torna_alla_base());
    start_preocess(leggi_sensori));
    start_process(controllo());
}
void controllo()
{
    if sensori(ostacolo)==1 cambia_direzione();
    if sensori(campione)==1 &&sensori(base)==1 posa_campione();
    if sensori(campione)==1 &&!sensori(base)==0 torna_alla_base();
    if sensori(trovato)==1 prendi_campione();
    girovaga()
}
Se questa č l'impostazione giusta per rappresentare un'architettura a 
sussunzione in C posso procedere con la dichiarazione delle variabili e il 
resto delle funzioni.
Altrimenti mi occorre vedere un esempio.
.. 

 Altrimenti mi occorre vedere un esempio.
No, ti serve di riprendere in mano tutto quello che avresti dovuto 
studiare finora, dall'inizio, e studiare tutto (per davvero, questa volta).
Se devi presentare una simulazione di architettura sussuntiva in C e non 
hai la più pallida idea di come si struttura un programma o di come si 
scriva una riga di C vuol dire che ti sei lasciate alle spalle un bel 
po' di lacune. Riempile.


      const int ostacolo=1
Mi limito a postare questo per far capire che non si puo' improvvisare
alcun codice in alcun linguaggio. E...non è bello prendersi gioco di
persone pronte ad aiutarne altre. Un po' di onestà avrebbe fatto
risparmiare tempo a chi ha tentato di aiutarti (per altro di sua
spontanea volontà).
-- 
Vincenzo Mercuri



Eeheheheh, sai che ho pensato di rispondere "Vai alla grande, procedi 
con la dichiarazione delle altre variabili e delle funzioni che sono 
curioso di vedere come continui" ;-)
Poi però ho deciso di fare il serio.
Arkannen, te pòssino! Vattene a nanna e domani mettiti a studiare!


 Arkannen, te pòssino! Vattene a nanna e domani mettiti a studiare!
Ahahah...e ma infatti...però sei stato bravo :-)
dai Arky, bisogna studiare, dopo aver studiato chiunque sarà ben disposto
ad aiutarti, non credere ai miracoli (almeno quando si tratta di studio)
-- 
Vincenzo Mercuri



Dopo aver postato il messaggio ho seguito il mio consiglio e me ne sono 
andato a nanna io stesso ;-)
Come inizio non c'è male! Ho creduto che fosse interessante iniziare la 
mia partecipazione a questo gruppo in un thread con un argomento 
familiare... peccato per l'esito, ma niente di grave - alla fine dei 
conti, le cose che ho cercato per segnalarle all'OP mi sono tornate 
utili - non avevo idea che l'implementazione del mio nido di formiche 
utilizzasse una architettura sussuntiva, che non avevo mai sentito 
nominare ;-)
Beh, ragazzi, prima o poi mi vedrete postare qualche domanda da vero 
principiante - col C++ me la cavo ma ci sono un bel po' di cose che 
ancora non mi tornano col C, quindi approfitterò della vostra esperienza.


 da capire.
Eppure il programma l'ho abbozzato prendendo spunto proprio da qua.
http://dprg.org/articles/2007-03a/
Che è uno dei link esterni alla pagina di wikipedia che hai ostinatamente 
postato.
Ho l'impressione che tu sia persona isterica che si diverte solo a far 
perdere tempo.
Io ho chiesto un esempio in C dell'implementazione di un architettura a 
sussunzione.
Se sai indirizzarmi bene... se no fatti una camomilla tripla e la notte 
dormi che ti fa bene.
.. 

 ancora non mi tornano col C, quindi approfitterò della vostra esperienza.
Non credere che io sappia cosa sia un'architettura sussuntiva! ;-)
Da quanto ho capito si tratta di AI, ma i miei interessi non l'hanno
mai sfiorata. Stesso dicasi per me col C++, ho appena acquistato il
famoso C++ Primer su consiglio di Francis Glassborow e ti capiterà
di vedermi specularmente in (it.)comp.lang.c++ con domande da novizio.
Comunque ti ho visto postare del codice in C e direi che non sei un
principiante. Ti dò dei link che forse possono tornarti utili, li
avevo postati in un altro thread:
www.research.att.com/~bs/sibling_rivalry.pdf
http://www.parashift.com/c++-faq-lite/mixing-c-and-cpp.html
http://david.tribble.com/text/cdiffs.htm
http://www.drdobbs.com/184401555;jsessionid=VVN0SKG5CKQNXQE1GHRSKHWATMY32JVN?pgno=2
 
Ciao
-- 
Vincenzo Mercuri

 dormi che ti fa bene.
A prima vista sulla pagina che hai linkato ci sono diverse incongruenze,
ma poche e anche strane, che mi lasciano più pensare a omissioni volute.
Il problema invece è quello che hai postato tu, che non ha proprio nulla
a che vedere con un programma in C. Sembra un qualche linguaggio funzio-
nale di nuova generazione, e per carità ammiro la tua creatività,
ma _non_ è C. E comunque, se avevi trovato uno spunto, perchè non l'hai
studiato bene prima di postarlo? Com'è possibile che tu debba consegnare
un progetto in C se non conosci il C? Tu hai trovato una persona disposta
ad aiutarti, ma hai detto di conoscere un linguaggio e invece non lo
conosci, hai detto di conoscere l'architettura degli algoritmi che devi
implementare e non li conosci. Insomma, potevi dirlo prima che avevi
sia lacune di tipo teorico che pratico. A volte conoscere l'interlocutore
aiuta chi vuole aiutarti, senza perder tempo.
E nonostante qualcuno si sia preso la briga di ascoltarti tu lo offendi.
Benissimo, sappi che è un aiuto gratuito e se ne và con la stessa
facilità con cui ti è stato dato.
Fai un caffè triplo e studia fino a tardi. Buona fortuna!
-- 
Vincenzo Mercuri

 dormi che ti fa bene.
Io di indicazioni te ne ho date, e nemmeno poche. Se non sei stato in 
grado di sfruttarle e di costruirci qualcosa sopra allora la colpa è 
tutta tua.
Beh, per quanto può valere, anche io ti auguro buona fortuna, spero che 
saprai imparare qualcosa da questa esperienza, almeno su come si chiede 
aiuto senza cercare di far fesso il prossimo. Le parole chiave sono 
onestà e sincerità.


 
http://www.drdobbs.com/184401555;jsessionid=VVN0SKG5CKQNXQE1GHRSKHWATMY32JVN?pgno=2
Grazie per i link, alcuni li avevo già visti anni fa ma avevo 
abbandonato per concentrarmi su roba meno "affilata", adesso mi sento 
pronto per avvicinarmi un po' di più al metallo senza farmi male ;-)


 conferma che stavi scopiazzando senza avere idea di cosa stessi facendo
Ah ecco... era una indicazione a trabocchetto la tua che tu mi avevi fornito 
perché volevi fare il mio bene.
Peccato che io non abbia chiesto nulla di tutto ciò.
Non ho chiesto né di essere valutato, ne di essere supervisionato e nemmeno 
che qualcuno si prendesse cura del mio benessere e meno che meno di fare una 
gara a chi piscia più lontano.
Io ho solo chiesto:
1) Premesso che il programma me lo scrivo io
2) Qualcuno sa indicarmi un esempio dell'implementazione in C di 
un'architettura a sussunzione per un qualsiasi agente reattivo?
Poi, che io conosca l'inglese, il tedesco, il francese, il C il C++ le 
architetture a sussunzione e compagnia bella è del tutto irrilevante.
Io ho posto una legittima domanda a cui tu potevi (se potevi) dare una 
cortese risposta.
Evidentemente non potevi dare quella risposta e non era neanche il tuo scopo 
darlo.
Il tuo scopo era solo quello di fare sfoggio di saccenza, anzi di una 
presunta saccenza che sicuramente nemmeno possiedi, visto che poi a parte 
una pagina di wikipedia e delle slide di una università altro non hai 
mostrato.
Ed in ogni caso non mi frega sapere minimamente che tu sappia cosa siano o 
che tu mi faccia vedere che sai cosa siano o che tu finga di sapere che tu 
sappia cosa siano.
Ce l'hai un indicazione sull'implementazione in C di un agente reattivo in 
una architettura a sussunzione?
Se ce l'hai e vuoi farmi la cortesia di indicarla ti ringrazio pure, se no 
vatti a fare un bagno, un giro, quel che ti pare.
Al mio benessere ci penso da me.
.. 

 facilità con cui ti è stato dato.
Ancora non mi ha dato alcuno aiuto, visto che alla mia richiesta non ha dato 
alcuna risposta.
Ed in ogni caso io non lo ho insultato.
.. 

 pronto per avvicinarmi un po' di più al metallo senza farmi male ;-)
Eheh, ma si, penso che ti basti il libro di Harbison & Steel e qualche 
risorsa
web. Per il resto, lo sforzo che hai fatto col C++ (lo considero in 
assoluto il
linguaggio più complesso da imparare) ti tornerà a tuo vantaggio anche 
col C. Tempo di affilare i coltelli allora ;-)
-- 
Vincenzo Mercuri

 Ed in ogni caso io non lo ho insultato.
"persona isterica" non è certo l'inizio di una lunga amicizia.

 Qui ti sbagli. Influisce, aiuta a capire se meriti di essere aiutato.
Lascia che ti spieghi una cosa su usenet.
E' lecito chiedere, è cortesia rispondere.
Le valutazioni sul merito non sono contemplate.
Ed in ogni caso tu non hai i titoli per valutare alcunché.
.. 

 Ed in ogni caso tu non hai i titoli per valutare alcunché.
Tu non hai il diritto di spiegarmi niente,
chiami C quello che non è C, per me questo basta.
Continua a prendere in giro la gente, ti troverai
sempre bene. E se ti dò così fastidio, ignorami.
Se non m'ignori, allora mi dai tu i titoli per valutare.
E per favore, non dirmi tu cos'è la cortesia.
Forza, studia, l'abbiamo fatto tutti.
-- 
Vincenzo Mercuri

 sempre bene. E se ti dň cosě fastidio, ignorami.
Do si scrive senza accento.
Studia tu che č meglio.
.. 

 Studia tu che è meglio.
No, sono un musicista e 'do' lo confonderei con la nota. Non sono
d'accordo con l'Accademia della Crusca a riguardo. Sono più d'accordo
con Wikipedia:
http://it.wikipedia.org/wiki/Accento_distintivo_sui_monosillabi#d.C3.B2
uso deprecato, sconsigliato, ma ammesso.
Voglio dire 'fà' invece di 'fa' e 'mì' invece di 'mi', ecc...
Non sai più a che appigliarti eh?
Ma vedi, io non ho detto di essere un grammatico, tu hai detto "non ho
problemi a scrivere quel programma in qualsivoglia linguaggio", questa
è la differenza. Ora, vedo che sei nella crisi più profonda, ti
suggerisco di usare il tuo tempo prezioso per la tua famosa 'consegna'.
Io mi godo gli ultimi giorni di vacanza.
Mi rispondi, allora mi adori. Grazie.
-- 
Vincenzo Mercuri



Lungi da me l'idea di mostrarti o dimostrarti alcunché a questo punto, 
per quanto mi riguarda puoi anche considerarmi un ignorante fanfarone, 
chi ne capisce qualcosa di Usenet o di programmazione saprà bene come 
valutare la mia competenza in materia.
Buon divertimento alla consegna del tuo compito!


 uso deprecato, sconsigliato, ma ammesso.
Anche void main() è deprecato ma ammesso prima della standardizzazione.
Chiedi all'Accademia della Crusca se sanno qualcosa.
.. 

 Chiedi all'Accademia della Crusca se sanno qualcosa.
Non ho mai detto che void main() fosse l'errore.
-- 
Vincenzo Mercuri

 ha scritto nel messaggio 
news:Mjwho.236878$813.1...@tornado.fastwebnet.it...

Ahhh... allora è perché mi sono scordato il punto e virgola.
Stasera vado a letto senza cena.
.. 

 in qualsiasi altro linguaggio e io ti do una mano a tradurlo.
Beh, in brainfuck la mano gliela dai *tu*... io non collaboro. ;)
-- 
-riko
http://www.enrico-franchi.org/
http://rik0-techtemple.blogspot.com/

 Beh, in brainfuck la mano gliela dai *tu*... io non collaboro. ;)
A parte che ci sono dei traduttori BrainF*ck -> C che renderebbero il 
compito abbastanza triviale, ho espressamente detto che ci avrei pensato 
io a dargli una mano, quindi tranquillo, non verrò a chiedere aiuto a te 
né a nessun altro :-)


 ?
Per l'esame di sistemi operativi usai un insieme di librerie real time per il
DOS che si chiamava Hartik. 
Il modo di scrivere i programmi era molto simile a quello descritto
nell'articolo:
 
http://dprg.org/articles/2007-03a/
(la parte difficile era configurare lo scheduling rt e fare attenzione alla
gestione delle risorse condivise)
Ho scoperto che Hartik è stato sostituito da Shark:
 
http://shark.sssup.it/
Nella iso fornita c'è una cartella 'demos' con il codice di vari progettini.
-- 
Riccardo Lemmi

 gestione delle risorse condivise)
Io non ho questo problema, il mio sw ha solo valenza didattica.
Grazie, mi sei stato veramente utile.
.. 

 [...] il mio sw ha solo valenza didattica.
Ah, ma nel senso che lo devi imparare o insegnare?
Comincio ad aver paura.
-- 
Vincenzo Mercuri

 Si, a ogni parentesi graffa aperta ne corrisponde una chiusa?
Che noia...
..