Creare un proprio linguaggio di programmazioneper il web e applicazioni desktop.Gabriele Guizzardi        guizzardi@braina...
La domandaHa senso realizzare un altro linguaggio di  programmazione vista la grande disponibilità di  linguaggi e dialett...
Il progettoScopo: realizzare un linguaggio di programmazioneTarget: risolvere specifici problemi con specifici comandiTipo...
Gli scopiCreare un linguaggio formaleUtilizzo di istruzioni classiche di un linguaggioProtocolli di comunicazione (seriale...
Caratteristiche (pregi)Dimensioni ridottePochi cicli macchina per istruzioneSintassi semplificataGrammatica elementarePort...
Caratteristiche (difetti)Istruzioni di baseAssenza di annidamento istruzioniAssenza di annidamento file sorgentiSintassi e...
La tecnologia web                               Nome speaker    7         Mail speaker – company or community
Linguaggio formaleinsieme delle stringhe derivate da una grammaticainsieme delle stringhe fornite da una espressioneinsiem...
Gli step realizzativisintassi del linguaggio in generale (formalismo)sintassi di ogni singola istruzione  <istruzione> ::=...
Le basi del linguaggio (analisi lessicale)leggere il programma sorgente in elementi del lessico.separare i relativi elemen...
Le basi del linguaggio (analisi sintattica)processo dei token del linguaggio“IF a = 0” è formato da 4 token, cioè IF, a, =...
Linterpretelettura del file sorgente scartando ogni commentoogni riga del file viene bufferizzata ed eseguitacontrollo del...
Linterprete<variabile> | <variabile d’ambiente> | <costante> ::= $<lettera>WRITE | <testo> | <testo> <var.> | <var.> | <va...
Esempio di codice/programma di esempiowritewrite "Demo Funzioni Matematiche"line 20write                          mul c $a...
Risultato dellesempio di codice                                       Nome speaker    15                 Mail speaker – co...
Esempio di codice per il web#!c:/SKIMPY/skimpy.exewebheaderwrite "<b><i>Demo Funzioni Matematiche<br></i></b>"line 20write...
Risultato dellesempio di codice                                       Nome speaker    17                 Mail speaker – co...
Utilizzo su web hostGET          SKIMPY                                Prog.                                       Nome sp...
Utilizzo su web host                                 Nome speaker    19           Mail speaker – company or community
Utilizzo su web host                                 Nome speaker    20           Mail speaker – company or community
Il codice relativo#!c:/SKIMPY/skimpy.exewebheaderwrite "<FORM METHOD=GET ACTION=demoweb.smy>"write "valore 1: <INPUT NAME=...
Integrazione con altri linguaggiwrite "<script type=text/javascript>alert(Password Corretta!)</script>"write "<p style=wid...
ConclusioniQuante ore uomo abbiamo impiegato?Quanto tempo per scrivere la base del linguaggio?Quanto tempo per scrivere nu...
Upcoming SlideShare
Loading in …5
×

Creare un proprio linguaggio di programmazione per il web e applicazioni desktop, by Gabriele Guizzardi

3,382 views

Published on

Nonostante siano disponibili maree di linguaggi per programmare ha senso realizzare un proprio linguaggio per risolvere specifici problemi o per utilizzarlo con determinati ambienti e tecnologie?
Partendo dall'analisi della realizzazione di un vero e proprio linguaggio interpretato con sintassi in dialetto C/PHP si cercherà di illustrare se le metodologie, gli scopi e il prodotto finale hanno un senso pratico e migliorativo oppure la realizzazione di tali ambienti non sia più necessari.

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,382
On SlideShare
0
From Embeds
0
Number of Embeds
510
Actions
Shares
0
Downloads
21
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Creare un proprio linguaggio di programmazione per il web e applicazioni desktop, by Gabriele Guizzardi

  1. 1. Creare un proprio linguaggio di programmazioneper il web e applicazioni desktop.Gabriele Guizzardi guizzardi@brainandbytes.com – Brain & Bytes guizzardi@gmail.com - Guizzardi.net
  2. 2. La domandaHa senso realizzare un altro linguaggio di programmazione vista la grande disponibilità di linguaggi e dialetti di cui si dispone?E ancora possibile spendere decine di ore di lavoro per creare un linguaggio nuovo e su misura per se stessi? Nome speaker 2 Mail speaker – company or community
  3. 3. Il progettoScopo: realizzare un linguaggio di programmazioneTarget: risolvere specifici problemi con specifici comandiTipo: linguaggio interpretato funzionaleStruttura: scanner, lexer, parser, tokenLinguaggio utilizzato: CUtilizzo: scriptingNome: SKIMPY :-) Nome speaker 3 Mail speaker – company or community
  4. 4. Gli scopiCreare un linguaggio formaleUtilizzo di istruzioni classiche di un linguaggioProtocolli di comunicazione (seriale, parallelo, TCP, ecc.)Utilizzo di tecnologie hardware quali modem GSM, lettori di token o badgeGestione file di testo o strutturati (XML, CSV, ecc.)Utilizzo batch (client/server) e web Nome speaker 4 Mail speaker – company or community
  5. 5. Caratteristiche (pregi)Dimensioni ridottePochi cicli macchina per istruzioneSintassi semplificataGrammatica elementarePortabilità Nome speaker 5 Mail speaker – company or community
  6. 6. Caratteristiche (difetti)Istruzioni di baseAssenza di annidamento istruzioniAssenza di annidamento file sorgentiSintassi essenziale Nome speaker 6 Mail speaker – company or community
  7. 7. La tecnologia web Nome speaker 7 Mail speaker – company or community
  8. 8. Linguaggio formaleinsieme delle stringhe derivate da una grammaticainsieme delle stringhe fornite da una espressioneinsieme delle stringhe accettate da un automacontrolli binari (true/false)condizioni di controllo Nome speaker 8 Mail speaker – company or community
  9. 9. Gli step realizzativisintassi del linguaggio in generale (formalismo)sintassi di ogni singola istruzione <istruzione> ::= <comando> <parametro/i> | <variabile> <valore> <numero> ::= <cifra> | <numero> <cifra> <cifra> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9consiglio: diagrammi di flusso Nome speaker 9 Mail speaker – company or community
  10. 10. Le basi del linguaggio (analisi lessicale)leggere il programma sorgente in elementi del lessico.separare i relativi elementi del lessico (token).eliminare sequenze inutili di caratteri come i commenti.collezionare informazioni in array o tabelle (p.e. per le variabili). Nome speaker 10 Mail speaker – company or community
  11. 11. Le basi del linguaggio (analisi sintattica)processo dei token del linguaggio“IF a = 0” è formato da 4 token, cioè IF, a, = e 0Data una grammatica non contestuale G e una stringa x di caratteri terminali, analizzare sintatticamente x significa determinare se x appartiene a L(G) e, in tale caso, costruire l’albero sintattico di x. Nome speaker 11 Mail speaker – company or community
  12. 12. Linterpretelettura del file sorgente scartando ogni commentoogni riga del file viene bufferizzata ed eseguitacontrollo della sintassi del comando in modo che non sia eseguito un comando erratocontrollo della sintassi del comando in modo che non sia eseguito un comando con un numero di parametri erratidiscriminazione di un carattere da una variabile ($) Nome speaker 12 Mail speaker – company or community
  13. 13. Linterprete<variabile> | <variabile d’ambiente> | <costante> ::= $<lettera>WRITE | <testo> | <testo> <var.> | <var.> | <var. d’ambiente> WRITE “Ciao Mondo!” LOAD <variabile> <valore> LOAD a 100 Nome speaker 13 Mail speaker – company or community
  14. 14. Esempio di codice/programma di esempiowritewrite "Demo Funzioni Matematiche"line 20write mul c $a $b write $a " ^ " $b " = " $cload a 4 or c $a $bload b 6 div c $a $b write $a " OR " $b " = " $c write $a " / " $b " = " $cadd c $a $b xor c $a $bwrite $a " + " $b " = " $c mod c $a $b write $a " XOR " $b " = " $c write $a " / " $b " resta " $csub c $a $b md5 x f test.txtwrite $a " - " $b " = " $c and c $a $b write "MD5 di prova.txt = " $x write $a " AND " $b " = " $c md5 x s password write "MD5 di password = " $x Nome speaker 14 Mail speaker – company or community
  15. 15. Risultato dellesempio di codice Nome speaker 15 Mail speaker – company or community
  16. 16. Esempio di codice per il web#!c:/SKIMPY/skimpy.exewebheaderwrite "<b><i>Demo Funzioni Matematiche<br></i></b>"line 20write "<br>" mod c $a $bload a 4 write "Il resto di " $a " / " $b " è " $c "<br>"load b 6 and c $a $b add c $a $b write $a " AND " $b " = " $c "<br>" write $a " + " $b " = " $c "<br>" or c $a $b sub c $a $b write $a " OR " $b " = " $c "<br>" write $a " - " $b " = " $c "<br>" xor c $a $b mul c $a $b write $a " XOR " $b " = " $c "<br>" write $a " ^ " $b " = " $c "<br>"div c $a $b write "MD5 di prova.txt = " write "MD5 di password = "write $a " / " $b " = " $c "<br>" md5 x f test.txt md5 x s password write $x "<br>" write $x "<br>" Nome speaker 16 Mail speaker – company or community
  17. 17. Risultato dellesempio di codice Nome speaker 17 Mail speaker – company or community
  18. 18. Utilizzo su web hostGET SKIMPY Prog. Nome speaker 18 Mail speaker – company or community
  19. 19. Utilizzo su web host Nome speaker 19 Mail speaker – company or community
  20. 20. Utilizzo su web host Nome speaker 20 Mail speaker – company or community
  21. 21. Il codice relativo#!c:/SKIMPY/skimpy.exewebheaderwrite "<FORM METHOD=GET ACTION=demoweb.smy>"write "valore 1: <INPUT NAME=valore1><BR>"write "valore 2: <INPUT NAME=valore2><BR>"write "<INPUT TYPE=SUBMIT></FORM>" goto esciwrite $webgetenv "<br>" :accediwrite $webgetvalue1 "<br>" write "<p style=width:40%; color:#660099;write $webgetvalue2 "<br>" text-align:left; background-color:#ffcc00;write "<br>" >Password Corretta!<br>"md5 x s $webgetvalue2 extreturnwrite "MD5 di " $webgetvalue2 " = " $x :esci write "<br>Password Sbagliata!<br>"if $x == "5f4dcc3b5aa765d61d8327deb882cf99" extreturn goto accedi Nome speaker 21 Mail speaker – company or community
  22. 22. Integrazione con altri linguaggiwrite "<script type=text/javascript>alert(Password Corretta!)</script>"write "<p style=width:40%; color:#660099; text-align:left; background-color:#ffcc00; >Password Corretta!<br>" Nome speaker 22 Mail speaker – company or community
  23. 23. ConclusioniQuante ore uomo abbiamo impiegato?Quanto tempo per scrivere la base del linguaggio?Quanto tempo per scrivere nuove istruzioni?Siamo “portabili” e “compatibili”?Il ciclo di vita può essere compromesso a breve?I costi sostenuti sono proporzionati al risultato? Nome speaker 23 Mail speaker – company or community

×