Newsgroup: it.comp.giochi.avventure.testuali
Titolo: [INFORM] Impressioni d'uso I7 + I7 e INFIT

Ciao a tutti.
Come qualcuno ha letto su RAIF sono riuscito a compilare con I7 e INFIT 
un sorgente minimale che ho scritto. La procedura per farlo è veramente 
poco elegante, ma può essere l'unica soluzione per il momento. Il tutto 
è basato sulla versione per Windows (non so per la versione MacOS X):
1. Scrivete il gioco
2. Lo compilate nell'ambiente di I7
3. Prendete il file "auto.inf" generato da Natural Inform (è così che si 
chiama il *traduttore* da linguaggio naturale a I6)
4. Lo compilate con il compilatore I6 (si trova nella directory 
Compilers) usando la soliita opzione "+language_name=italian"
Per far prima e non modificare il sorgente ho sostituito a Grammar.h, il 
mio ItalianG.h (rinominandolo Grammar.h, appunto) e ho eliminato i 
Replace e l'Include "Replace" dal file di lingua.
Come ho scritto su RAIF, il gioco viene compilato ma la grammatica 
rimane in inglese. Praticamente scrivo i comandi in inglese e le 
risposte del parser sono in italiano.
Se vedete il sorgente "auto.inf" la grammatica è completamente 
sostituita con una nuova.
Sostituire Italian.h a English.h (rinominandolo) e compilare 
direttamente nell'ambiente ha prodotto degli errori. Notare che sono gli 
stessi della compilazione da riga di comando, ma che lo Z5 viene 
comunque generato. Però anche se c'è un file di gioco compilato a 
disposizione il frotz interno a I7 si rifiuta di funzionare (da quello 
che capito funziona solo se la compilazione è *pulita* al 100%).
Considerate che la procedura, per funzionare come l'ho descritta, 
necessita di qualche piccola modifica preliminare al file di lingua e a 
quello della grammatica (sono "#ifdef", per la ma maggior parte).
Le impressioni d'uso del nuovo linguaggio sono positive e i dubbi 
iniziali spariscono dopo averlo usato un po'. Certo è strano scrivere 
frasi in inglese inframezzate da testo in italiano: questo può essere un 
handicap per il sistema, almeno finché non viene completamente tradotto 
(cosa fattibile, si dice su RAIF, ma un po' complicata).
L'interfaccia dell'ambiente di I7 per Windows ha lati positivi e 
negativi, ma l'applicazione è sicuramente migliorabile (dal punto di 
vista delle funzionalità e da quello della stabilità, ci sono diversi 
bug infatti).
Non ho il tempo per farlo, ma se l'avessi mi metterei sotto a fare una 
versione per Linux dell'ambiente di sviluppo. Qualcuno si offre 
volontario? Io preferisco qualcosa con le GTK (che poi si può portare 
anche su Windows e MacOS), non so voi.
HAPPY INFORMING!
Giovanni

Pian piano tutte le questioni riguardanti lo sviluppo di I7 stanno 
venendo fuori. Non sarebbe stato male un documento che descrivesse 
l'ambiente un po' in dettaglio e, nel caso delle librerie, un indice di 
tutte le modifiche apportate.
Comunque, ancora sull'utilizzo di I7 e INFIT.
Le librerie Inform 6 incluse in I7 sembrano essere basate sulla release 
6/10 delle librerie inglesi. Questo è un problema perché le 6/10 non 
erano biplatform (e ottengo diversi errori di compilazione relativi a 
codice Glulx) mentre l'ultima release di INFIT è basata sulle 6/11. Ora, 
come mi dice David Kinder su RAIF:
"At some point the I7 library changes need to be merged with 6/11"
Quando sarebbe questo "some point"?
Il problema è che potrei benissimo prendere una versione vecchia di 
INFIT (ancora basata sulle 6/10) e partire da quella, ma allora mi 
dovrei scordare tutte le evoluzioni fatte in questi anni e soprattutto 
tutti i bug corretti. Non credo che sia una strada percorribile... il 
lavoro sarà più duro di quanto non pensavo in origine.
Per quanto riguarda I7 in generale, ho avuto una bella chiacchierata 
telefonica col Cordella oggi pomeriggio. Beh, lui credo sia il tipico 
esempio del target di scrittori (non programmatori) di cui si è parlato. 
Purtroppo, mi sono reso conto che forse a questo target non è ancora ben 
chiaro come funziona il nuovo ambiente, che cosa significa linguaggio 
naturale e molte altre questioni. Vedo di produrre nelle prossime 
settimane un qualche documento di spiegazione, oltre a fissare un 
possibile piano di sviluppo per INFIT 3.
HAPPY INFORMING!
Giovanni

naturale e molte altre questioni.
Ho giocato un po' con I7, tentando di mettere in piedi qualcosa di concreto. Chi
segue raif è al corrente del fiume di discussioni che sono scaturite, e la mia
personalissima opinione è questa: IMHO, chi viene dal mondo del vecchio Inform e
ha un background come programmatore difficilmente riuscirà a trovare comodo
questo nuovo linguaggio pseudo-naturale, che per l'appunto è naturale in
apparenza, ma di fatto costituisce solo una forma sintattica più verbosa che va
ad "avvolgere" ciò che in realtà è una normale logica di programmazione. Non ci
sono misteriosi algoritmi di intelligenza artificiale, ma semplicemente un nuovo
modo di esprimere la logica di un programma. E' sicuro che le forme sintattiche
da utilizzare sono più facilmente leggibili, più "naturali", e qualche
macchinosità viene magistralmente nascosta da un potente framework sottostante,
ma si tratta sempre di programmare un elaboratore con un linguaggio formale.
Non nego però che questo nuovo linguaggio possa essere stuzzicante e possa
risultare più comprensibile ad un target di scrittori, o comunque di individui
non particolarmente formati nelle tecniche della programmazione.
Però credo fortemente che né io, né molti degli sviluppatori che frequentano
questo newsgroup possano trarre effettivi benefici da I7.
PaoloM

Gia'... piu' o meno quello che mi aspettavo... adesso su raif stanno
discutendo sulla PUNTEGGIATURA corretta :P molti inoltre contestano il
fatto che sia effettivamente piu' leggibile. Io lo trovo dispersivo, ma
d'altra parte provengo da una scuola di informatica formale (con
notazioni O grande e piccolo e tutte quelle altre belle cose che sembra
oggigiorno siano dimenticate da tutti :(
Datemi I7 con la sintassi di I6 (e aggiunti i costrutti per rule e
tutta la nuova Good Stuff) e lo compro ad occhi chiusi :P
Inoltre credo che il compilatore venga ridotto di un 80% circa così
facendo :P
(massima del programmatore-ingegnere: quello che non c'e' non puo' dar
problemi!)