tajmone / polygen-docs

PolyGen Documentation
GNU General Public License v2.0
1 stars 0 forks source link

PML: Alcune Considerazioni #4

Open tajmone opened 6 years ago

tajmone commented 6 years ago

Alcune considerazioni sulla Polygen Meta Language Spec.

Alla luce degli innumerevoli problemi nella compilazione con OCaml (ulteriori ricerche mi hanno confermato che installare OCaml su Windows 10 è problematico), credo che la ristampa di questi documenti acquisti ulteriore importanza.

Una definizione formale della specifica PML, soprattutto in inglese, faciliterà il compito a chiunque volesse implementare Polygen in altri linguaggi — e credo che questa possibilità sia realistica visto che ho già individuato un simile tentativo in Haskell, ed esisteva anche un port per telefonini in passato.

Fosse anche che qualcuno dovesse implementarlo in qualche linguaggio di scripting (es: Python, Ruby, Javascript) per semplificarsi il lavoro sfruttando l'esistenza di librerie di lexing and parsing, sarebbe comunque ottimo.

Quanto ai binari Windows, credo che questi seguiteranno a funzionare per parecchi anni dato che Windows ha comunque sempre offerto la possibilità di eseguire applicazioni in modalità compatibilità, e per quanto riguarda la DLL di Cygwin, questa verrà sempre aggiornata dato l'elevato numeri di applicazioni che dipendono da essa. E comunque, non è detto che prima poi OCaml per Windows non venga rimesso a nuovo (anzi, direi che Andreas Hauptmann sta lavorando attivamente in quella direzione).

Alla fine dei conti, dato che ad oggi ci ritroviamo con dei binari Polygen funzionanti, vale la pena investire energie più nella direzione della documentazione che non dello sviluppo (o riscrittura) del Polygen stesso (soprattutto visti i molteplici problemi con OCaml).

Credo che se la documentazione inglese non fosse stata incompleta (nonché poco visibile e pubblicizzata) in tutti questi anni (oltre 10!) il Polygen si sarebbe diffuso molto di più nel mondo, e avremmo assistito a svariati tentativi di porting ad altri linguaggi. Il fatto che la documentazione inglese delle grammatiche fosse incompleta deve averne ostacolato l'uso (e quindi anche la diffusione) nel mondo anglofono.

Spero quindi che la ristampa di questi documenti, e la nuova edizione inglesa completa sulla PML possano dare una spinta di rinnovamento al Polygen.

Credo sarebbe utile in tal senso una chiarifica riguardo la licenza GPLv2. Essa, mi par di capire, concerne solo il programma e la documentazione, e non lo standard del metalinguaggio PML, giusto? Ossia, la spec di PML è libera, e chiunque può implementarla in altri linguaggi senza i vincoli della GPLv2?

Varrebbe la pena specificare questo punto in entrambi i documenti.

Altresì, andrebbe considerata l'idea di ufficializzare la spec in qualche modo, chiarendo quale sia il suo riferimento originale, di modo che eventuali varianti da essa possono essere chiaramente percepite come tali. Magari, alla fine del lavoro di ristampa, potresti clonare il progetto sotto il tuo account così da ufficializzarlo e auto-linkarlo nei documenti stessi. GitHub offre anche la possibilità di associare un sito a ciascun progetto, e si potrebbe pensare di pubblicare il documento di specifica inglese come sito pubblico.

alvisespano commented 6 years ago

Ti dico in breve cosa penso degli interessanti spunti che hai proposto:

1) la PMP spec dovrebbe essere solo in inglese. Anche all'epoca lo pensavo, ed oggi lo penso ancora di più. Il motivo per cui avevo scritto la guida in italiano era solamente perché il polygen era rivolto ad un pubblico italiano che tipicamente non sa l'inglese; non aveva presa all'estero perché le grammatiche facevano ridere solamente persone italiane, quindi la community italiana era l'unica da coltivare. E così è stato. Gli anglosassoni non si sono mai avvicinati perché non c'erano grammatiche buone in inglese, non perché macava il manuale. Il manuale inglese c'è sempre stato ed il fatto che non fosse allineato con le ultimissime feature è del tutto irrilevante, secondo me: il grosso di ciò che serviva c'era e c'è sempre stato. Il sito stesso aveva la modalità inglese, con tutte le parti tradotte - l'abbiamo tolto nel 2007, tipo, perché non avevamo visite. La community internazionale va conquistata con cose diverse dalla community italiana a cui basta farsi due risate. Oppure vedila così: se fossimo stati in grado di replicare in inglese lo stesso humour delle grammatiche italiane, e con la stessa qualità e quantità, allora avremmo avuto una chance.

2) Sto pensando di fare il colpaccio e portare Polygen in F#, che è il linguaggio più vicino ad OCaml avente un buon IDE (VS). Portarlo in F# è un lavoro che durerebbe poco, ed aprirebbe la strada ad un comfort senza precedenti per quanto riguarda lo sviluppo: visual studio è uno dei migliori IDE del mondo ed il supporto ad F# è grandioso. Inoltre io lavoro moltissimo con F# e VS in generale, qunidi ho una familiarità totale. Quali sono gli svantaggi però? Che F# compila solo per .NET e bisognerebbe usare mono ed altre cagate del genere per farlo funzionare dappertutto. Insomma, Tristano, siamo nel 2018 e ancora non esiste una soluzione al 100% al problema: o i linguaggi sono cross-platform ma sono linguaggi penosi, oppure i linguaggi belli hanno strumenti ed accessori al contorno penosi. E' incredibile ma non c'è un linguaggio eccellente che sia anche portabile ovunque e con un buon ambiente di sviluppo pulito e chiaro.

3) spiegami meglio l'impatto delle questioni delle licenze, perché non ho capito bene.

Il giorno 20 gennaio 2018 11:30, Tristano Ajmone notifications@github.com ha scritto:

Alcune considerazioni sulla Polygen Meta Language Spec.

Alla luce degli innumerevoli problemi nella compilazione con OCaml (ulteriori ricerche mi hanno confermato che installare OCaml su Windows 10 è problematico), credo che la ristampa di questi documenti acquisti ulteriore importanza.

Una definizione formale della specifica PML, soprattutto in inglese, faciliterà il compito a chiunque volesse implementare Polygen in altri linguaggi — e credo che questa possibilità sia realistica visto che ho già individuato un simile tentativo in Haskell, ed esisteva anche un port per telefonini in passato.

Fosse anche che qualcuno dovesse implementarlo in qualche linguaggio di scripting (es: Python, Ruby, Javascript) per semplificarsi il lavoro sfruttando l'esistenza di librerie di lexing and parsing, sarebbe comunque ottimo.

Quanto ai binari Windows, credo che questi seguiteranno a funzionare per parecchi anni dato che Windows ha comunque sempre offerto la possibilità di eseguire applicazioni in modalità compatibilità, e per quanto riguarda la DLL di Cygwin, questa verrà sempre aggiornata dato l'elevato numeri di applicazioni che dipendono da essa. E comunque, non è detto che prima poi OCaml per Windows non venga rimesso a nuovo (anzi, direi che Andreas Hauptmann https://fdopen.github.io/opam-repository-mingw/installation/ sta lavorando attivamente in quella direzione).

Alla fine dei conti, dato che ad oggi ci ritroviamo con dei binari Polygen funzionanti, vale la pena investire energie più nella direzione della documentazione che non dello sviluppo (o riscrittura) del Polygen stesso (soprattutto visti i molteplici problemi con OCaml).

Credo che se la documentazione inglese non fosse stata incompleta (nonché poco visibile e pubblicizzata) in tutti questi anni (oltre 10!) il Polygen si sarebbe diffuso molto di più nel mondo, e avremmo assistito a svariati tentativi di porting ad altri linguaggi. Il fatto che la documentazione inglese delle grammatiche fosse incompleta deve averne ostacolato l'uso (e quindi anche la diffusione) nel mondo anglofono.

Spero quindi che la ristampa di questi documenti, e la nuova edizione inglesa completa sulla PML possano dare una spinta di rinnovamento al Polygen.

Credo sarebbe utile in tal senso una chiarifica riguardo la licenza GPLv2. Essa, mi par di capire, concerne solo il programma e la documentazione, e non lo standard del metalinguaggio PML, giusto? Ossia, la spec di PML è libera, e chiunque può implementarla in altri linguaggi senza i vincoli della GPLv2?

Varrebbe la pena specificare questo punto in entrambi i documenti.

Altresì, andrebbe considerata l'idea di ufficializzare la spec in qualche modo, chiarendo quale sia il suo riferimento originale, di modo che eventuali varianti da essa possono essere chiaramente percepite come tali. Magari, alla fine del lavoro di ristampa, potresti clonare il progetto sotto il tuo account così da ufficializzarlo e auto-linkarlo nei documenti stessi. GitHub offre anche la possibilità di associare un sito a ciascun progetto, e si potrebbe pensare di pubblicare il documento di specifica inglese come sito pubblico.

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/tajmone/polygen-docs/issues/4, or mute the thread https://github.com/notifications/unsubscribe-auth/ACcZxjfwVYzGwKAcUjE1bbgxIHEsK9QMks5tMcA4gaJpZM4RlY4R .

tajmone commented 6 years ago

1) la PMP spec dovrebbe essere solo in inglese.

Mi trovi daccordissimo.

Punto 2

Quali sono gli svantaggi però? Che F# compila solo per .NET

Mhhhh, sul Mac non sarebbe un problema il .NET, ma su altre piattaforme sì.

siamo nel 2018 e ancora non esiste una soluzione al 100% al problema: o i linguaggi sono cross-platform ma sono linguaggi penosi, oppure i linguaggi belli hanno strumenti ed accessori al contorno penosi. E' incredibile ma non c'è un linguaggio eccellente che sia anche portabile ovunque e con un buon ambiente di sviluppo pulito e chiaro.

Mi verrebbe da dire che, tuttosommato, il buon vecchio Ansi C potrebbe essere una buona soluzione per crare una libreria di Polygen, con API, e poi lasciare che l'interfaccia CLI la si implementi in vari linguaggi. Questo garantirebbe una portabilità praticamente universale del cuore di Polygen (non solo Win, Mac e Linux, ma anche i vari processori ARM, e quindi telefonia, etc).

Io in questo periodo mi sto avvicinando al linguaggio Nim (attrazione dovuta a curiosità, quello che ho letto mi ha colpito, ma non è che lo conosca). Nim non ha ancora raggiunto la 1.0, quindi anche se è operativo non è ancora ufficialmente pronto all'uso — però l'ho installato più volte su Win (procedura semplice e non invasiva), e funziona:

https://nim-lang.org/

È un linguaggio versatile che supporta diversi compilatori (GCC, MSVS, e CLANG), si integra bene con librerie C e Cpp. Per molti versi è ispirato a Python, ma in versione compilabile. Nim compila i propri sorgenti da Nim a C, e poi compila il C con i vari compilatori (ma supporta anche la compilazione da Nim a Javascript, anche se è sperimentale per ora).

Di base è un procedurale, ma il suo paradigma è elastico e abbraccia anche quello funzionale e la programmazione ad oggetti (cerca di prendere da tutto un po'). Essendo fortemente orientato alla metaprogrammazione, è possibile adattare il linguaggio alle proprie esigenze (mi pare di capire, ma poi non ho ancora trovato il tempo di dedicarmici seriamente).

Iniziano a spuntare parecchie librerie per Nim, e per il resto basta scrivere un wrapper per libererie in C/C++. Per esampio, c'è già una libreria PEG parser in Nim, pronta all'uso.

Quanto alle IDE, funziona benissimo con VSCode (ma anche con Atom e Sublime Text).

Il fatto è che i nuovi linguaggi spuntano come funghi. Sulla carta promettono tutti bene, ma poi sarà solo il tempo (e le mode) a determinare se si evolveranno bene e se sopravviveranno.

Punto 3

Per la licenza volevo dire questo: la PML quali sintessi è uno standard aperto? Nel senso che uno volesse creare un programma tipo Polygen ma scrivendolo da zero (quindi non derivato dal codice GPL), facendo però in modo che rispetti al 100% la notazione PML, non sarebbe vincolato dalla GPL, giusto?

PML quale notazione è libera? allo stesso modo in cui HTML e CSS lo sono? Chiunque può creare software che la implementi? (a differenza di standard proprietari, come MP3 Pro, ad esempio, che è un marchio registrato e ci vuole la licenza)

tajmone commented 4 years ago

Polygen-PHP

Ai fini della continuità storica di questo thread, ritengo opportuno segnalare (sebbene in mostruoso ritardo) l'implementazione in PHP del Polygen (Polygen-PHP) realizzata da @RBastianini (Riccardo Bastianini, utente già presente e attivo sul gruppo FB) nel maggio del 2020 (ossia, in seguito a questa conversazione).

https://github.com/RBastianini/polygen-php

Ho provveduto ad aggiornare i due wiki del Polygen su GitHub (inglese ed italiano) aggiungendo il link a Polygen-PHP, con una succinta descrizione.

Sebbene non abbia ancora avuto modo di testarlo, mi pare di capire che questa nuova implementazione sia 100% compatibile con le grammatiche del Polygen originale. Si tratta quindi di un grosso passo avanti per quanto concerne l'integrazione del Polygen nei siti web, grazie alla facilità di integrazione del PHP con qualsiasi sito web.

Questo port del Polygen è un'ottima notizia perché conferma quanto l'interesse per il Polygen sia ancora vivo — e, ovviamente, porta una boccata d'aria fresca per i suoi utilizzatori storici, i quali finalmente potranno sciupare il proprio tempo libero implementando grammitiche per la generazione di testi casuali e privi di senso per adornare i loro siti web, dando così libero sfogo al lato oscuro dell'animo umano che è troppo spesso sublimato o represso.

La saga del Polygen è tutt'altro che finita, e la sua eredità è un fardello di cui non ci sbarazzeremo così facilmente. Simile al Golem di Praga, il Polygen è ormai un mostro animato da vita prorpia, totalmente fuori controllo e per il quale non vi è alcuna parola magica che possa essere incisa sulla sua fronte e provi un fine (a meno che @alvisespano non abbia inserito una backdoor per l'autodistruzione, in previsione di un simile scenario apocalittico).

Grazie Riccardo!