View Full Version : [GENERICO] Come nasce un linguaggio di programmazione?
~FullSyst3m~
20-06-2008, 13:47
Me lo sono sempre chiesto. Come si crea un linguaggio di programmazione da 0? E come si è passati dal fare tutto a mano a creare un linguaggio di programmazione (parlo di 30 anni fa quando si entrava dentro i pc per programmarli)
by_to_by
20-06-2008, 13:52
me lo chiedo anche io
variabilepippo
20-06-2008, 14:38
Come si crea un linguaggio di programmazione da 0? E come si è passati dal fare tutto a mano a creare un linguaggio di programmazione (parlo di 30 anni fa quando si entrava dentro i pc per programmarli)
C'è una bella differenza tra "linguaggio di programmazione" e "compilatore" (o altri strumenti necessari per far comprendere il "linguaggio di programmazione" ad un computer). ;)
~FullSyst3m~
20-06-2008, 18:39
C'è una bella differenza tra "linguaggio di programmazione" e "compilatore" (o altri strumenti necessari per far comprendere il "linguaggio di programmazione" ad un computer). ;)
Bè diciamo tutte e due! Il compilatore deve compilare un linguaggio, ma se il linguaggio non c'è...:O
variabilepippo
20-06-2008, 19:00
Bè diciamo tutte e due!
L'argomento mi sembra un po' troppo vasto per essere trattato in un post pubblicato su un forum, anche perché ogni linguaggio ha una genesi, una storia e delle motivazioni diverse, senza considerare che esistono molti aspetti (descritti in testi sacri, tra i quali i Dragon Books (http://en.wikipedia.org/wiki/Dragon_Book)) da prendere in considerazione nell'implementazione di un compilatore. :O
khelidan1980
20-06-2008, 19:32
Bè diciamo tutte e due! Il compilatore deve compilare un linguaggio, ma se il linguaggio non c'è...:O
si ma a livello logico son due cose diverse,se vuoi inventare un tuo linguaggio puoi anche fregartene del compilatore perchè il tuo nuovo linguaggio lo scriverai molto probabilmente in C,come sono java e python ad esempio,correggetemi se sbaglio,o al massimo in assembler,indi per cui creare un compilatore a mio modo di vedere non ha inerenza col fatto di crearsi un nuovo linguaggio
~FullSyst3m~
20-06-2008, 20:02
si ma a livello logico son due cose diverse,se vuoi inventare un tuo linguaggio puoi anche fregartene del compilatore perchè il tuo nuovo linguaggio lo scriverai molto probabilmente in C,come sono java e python ad esempio,correggetemi se sbaglio,o al massimo in assembler,indi per cui creare un compilatore a mio modo di vedere non ha inerenza col fatto di crearsi un nuovo linguaggio
Se voglio creare un compilatore, devo crearlo per un determinato linguaggio. E qui arriviamo alla domanda che ho fatto nel primo post
variabilepippo
20-06-2008, 20:26
Se voglio creare un compilatore, devo crearlo per un determinato linguaggio. E qui arriviamo alla domanda che ho fatto nel primo post
In realtà nel primo post non hai parlato affatto di compilatori:
Me lo sono sempre chiesto. Come si crea un linguaggio di programmazione da 0? E come si è passati dal fare tutto a mano a creare un linguaggio di programmazione (parlo di 30 anni fa quando si entrava dentro i pc per programmarli)
:rolleyes:
Non ho ancora capito se vuoi sapere come si progetta un linguaggio di programmazione, come si scrive un compilatore o altro... Hai letto la risposta:
L'argomento mi sembra un po' troppo vasto per essere trattato in un post pubblicato su un forum, anche perché ogni linguaggio ha una genesi, una storia e delle motivazioni diverse, senza considerare che esistono molti aspetti (descritti in testi sacri, tra i quali i Dragon Books) da prendere in considerazione nell'implementazione di un compilatore.
?
by_to_by
20-06-2008, 21:12
come si crea un nuovo linguaggio=?
~FullSyst3m~
20-06-2008, 21:17
In realtà nel primo post non hai parlato affatto di compilatori:
:rolleyes:
Non ho ancora capito se vuoi sapere come si progetta un linguaggio di programmazione, come si scrive un compilatore o altro... Hai letto la risposta:
?
Infatti, nel post chiedo come si crea un linguaggio di programmazione e dato che il compilatore deve avere un linguaggio da compilare, si torna al mio post, e cioè come si crea un linguaggio di programmazione. Si ho letto la tua risposta comunque, infatti non voglio una spiegazione da 2.000 pagine, ho aperto il post per un momento di confronto e per togliermi questo dubbio
variabilepippo
20-06-2008, 21:26
come si crea un nuovo linguaggio=?
Così come si "crea" una nuova lingua, si definiscono: la sintassi, la semantica, il lessico, ...
Se non è ancora chiaro, NON si possono riassumere in 2 righe tutti gli aspetti legati al design di un linguaggio di programmazione, le possibili scelte progettuali e le relative implicazioni, le questioni politiche/tecniche/di ricerca che entrano in gioco, etc.
Ci sono ottimi libri sull'argomento (che nonostante spesso sfiorino il migliaio di pagine, presuppongono comunque un ampio bagaglio di conoscenze pregresse), sia per quanto riguarda la progettazione di un linguaggio di programmazione, sia per quanto concerne la progettazione di un compilatore.
by_to_by
20-06-2008, 22:17
Così come si "crea" una nuova lingua, si definiscono: la sintassi, la semantica, il lessico, ...
Se non è ancora chiaro, NON si possono riassumere in 2 righe tutti gli aspetti legati al design di un linguaggio di programmazione, le possibili scelte progettuali e le relative implicazioni, le questioni politiche/tecniche/di ricerca che entrano in gioco, etc.
Ci sono ottimi libri sull'argomento (che nonostante spesso sfiorino il migliaio di pagine, presuppongono comunque un ampio bagaglio di conoscenze pregresse), sia per quanto riguarda la progettazione di un linguaggio di programmazione, sia per quanto concerne la progettazione di un compilatore.
praticamente si deve essere dei geni
variabilepippo
20-06-2008, 22:51
praticamente si deve essere dei geni
Non necessariamente, basta avere un bagaglio di conoscenze adeguato (http://web.cs.mun.ca/~ulf/pld/). Comunque se sei alle prime armi non devi preoccuparti di come si progetta un linguaggio di programmazione, altrimenti rischi di perdere buona parte della tua motivazione... Le cose vanno fatte per gradi.
~FullSyst3m~
20-06-2008, 23:01
Non necessariamente, basta avere un bagaglio di conoscenze adeguato (http://web.cs.mun.ca/~ulf/pld/). Comunque se sei alle prime armi non devi preoccuparti di come si progetta un linguaggio di programmazione, altrimenti rischi di perdere buona parte della tua motivazione... Le cose vanno fatte per gradi.
Secondo te che motivazione ha? Magari per lui è questa una motivazione..
variabilepippo
20-06-2008, 23:14
Secondo te che motivazione ha? Magari per lui è questa una motivazione..
Io parlo della motivazione a continuare lo studio della programmazione... Se un programmatore alle prime armi si chiede "come si progetta un linguaggio di programmazione" ed ovviamente si ritrova davanti alla marea di lacune nella propria preparazione mi sembra quasi scontato che si senta sopraffatto dalle nozioni da apprendere.
E' un po' come se un bambino in prima elementare cercasse di leggere la Divina Commedia e non riuscendovi pensasse "Non imparerò mai a leggere". Probabilmente non progetterà mai un linguaggio di programmazione (è una cosa fatta da persone con uno specifico background culturale), quindi mi sembra del tutto inutile preoccuparsi di typing, ortogonalità, sintassi e semantiche formali e di concetti ben più complessi.
~FullSyst3m~
21-06-2008, 00:16
Io parlo della motivazione a continuare lo studio della programmazione... Se un programmatore alle prime armi si chiede "come si progetta un linguaggio di programmazione" ed ovviamente si ritrova davanti alla marea di lacune nella propria preparazione mi sembra quasi scontato che si senta sopraffatto dalle nozioni da apprendere.
E' un po' come se un bambino in prima elementare cercasse di leggere la Divina Commedia e non riuscendovi pensasse "Non imparerò mai a leggere". Probabilmente non progetterà mai un linguaggio di programmazione (è una cosa fatta da persone con uno specifico background culturale), quindi mi sembra del tutto inutile preoccuparsi di typing, ortogonalità, sintassi e semantiche formali e di concetti ben più complessi.
Se la metti cosi sono d'accordo con te, però le persone che hanno uno specifico background culturale se lo sono fatto, può essere che lui se lo fa e pensare a queste cose gli dà lo stimolo di andare avanti perchè vuole imparare, perchè è curioso e ha sete di sapere
variabilepippo
21-06-2008, 00:37
però le persone che hanno uno specifico background culturale se lo sono fatto, può essere che lui se lo fa e pensare a queste cose gli dà lo stimolo di andare avanti perchè vuole imparare, perchè è curioso e ha sete di sapere
Il background culturale per poter progettare un linguaggio di programmazione non "didattico" presuppone almeno un percorso accademico in una disciplina scientifica (ingegneria, informatica, ...) ed uno studio mirato, non limitato "a qualche anno", delle problematiche legate al design di linguaggi/compilatori.
Prendiamo come esempio i linguaggi più diffusi ed i principali progettisti degli stessi:
Python - Guido Van Rossum - "I received a Master's degree in Mathematics and Computer Science from the University of Amsterdam in 1982, and joined CWI as a researcher in the same year. While studying, I worked for 5 years as a systems programmer at Amsterdam's academic computer center, SARA"
C++ - Bjarne Stroustrup - "He went to Aarhus University studying in the department of computer science DAIMI gaining the Danish equivalent to a good Masters degree (a Cand.Scient. degree is rarely taken in significantly less than six years - at least it wasn't then). Aarhus is a wonderful town of about 250,000 people beautifully sited on the East coast of Jutland. Bjarne did his Ph.D. work on design of distributed systems in the Computing Laboratory of Cambridge University, England. "
Java - James Gosling - "received a B.Sc in Computer Science from the University of Calgary. In 1983, he earned a Ph.D in Computer Science from Carnegie Mellon University, and his doctoral thesis was titled "The Algebraic Manipulation of Constraints".
C - Brian Kernighan - "He received his Bachelor's degree in Engineering Physics from the University of Toronto. He received his PhD in electrical engineering from Princeton University, where he has held a professorship in the department of computer science since 2000."
C - Ken Thompson - "He received a Bachelor of Science in 1965 and Master's degree in 1966, both in Electrical Engineering and Computer Science, from the University of California, Berkeley"
C#/Turbo Pascal - Anders Hejlsberg - He studied engineering at the Technical University of Denmark.
...
Prima di poter anche solo pensare di progettare un linguaggio di programmazione non banale c'è tanto, veramente tanto, da studiare, a partire dall'apprendimento della lingua inglese. Ecco perché ho scritto: "Le cose vanno fatte per gradi". :)
by_to_by
21-06-2008, 09:02
Il background culturale per poter progettare un linguaggio di programmazione non "didattico" presuppone almeno un percorso accademico in una disciplina scientifica (ingegneria, informatica, ...) ed uno studio mirato, non limitato "a qualche anno", delle problematiche legate al design di linguaggi/compilatori.
Prendiamo come esempio i linguaggi più diffusi ed i principali progettisti degli stessi:
Python - Guido Van Rossum - "I received a Master's degree in Mathematics and Computer Science from the University of Amsterdam in 1982, and joined CWI as a researcher in the same year. While studying, I worked for 5 years as a systems programmer at Amsterdam's academic computer center, SARA"
C++ - Bjarne Stroustrup - "He went to Aarhus University studying in the department of computer science DAIMI gaining the Danish equivalent to a good Masters degree (a Cand.Scient. degree is rarely taken in significantly less than six years - at least it wasn't then). Aarhus is a wonderful town of about 250,000 people beautifully sited on the East coast of Jutland. Bjarne did his Ph.D. work on design of distributed systems in the Computing Laboratory of Cambridge University, England. "
Java - James Gosling - "received a B.Sc in Computer Science from the University of Calgary. In 1983, he earned a Ph.D in Computer Science from Carnegie Mellon University, and his doctoral thesis was titled "The Algebraic Manipulation of Constraints".
C - Brian Kernighan - "He received his Bachelor's degree in Engineering Physics from the University of Toronto. He received his PhD in electrical engineering from Princeton University, where he has held a professorship in the department of computer science since 2000."
C - Ken Thompson - "He received a Bachelor of Science in 1965 and Master's degree in 1966, both in Electrical Engineering and Computer Science, from the University of California, Berkeley"
C#/Turbo Pascal - Anders Hejlsberg - He studied engineering at the Technical University of Denmark.
...
Prima di poter anche solo pensare di progettare un linguaggio di programmazione non banale c'è tanto, veramente tanto, da studiare, a partire dall'apprendimento della lingua inglese. Ecco perché ho scritto: "Le cose vanno fatte per gradi". :)
mamma mia, sono dei geni questi
cdimauro
21-06-2008, 09:54
Me lo sono sempre chiesto. Come si crea un linguaggio di programmazione da 0? E come si è passati dal fare tutto a mano a creare un linguaggio di programmazione (parlo di 30 anni fa quando si entrava dentro i pc per programmarli)
A parte ciò che ti ha detto variabilepippo, col quale sono d'accordo, ti posso consigliare, dopo aver studiato almeno i rudimenti relativi ai "linguaggi formali", di utilizzare qualche strumento che ti permette di realizzarli in maniera più semplice e veloce.
Di recente in azienda ho scritto un banale linguaggio (di specifica di sintassi) con questo: http://www.antlr.org/ che con questo http://www.antlr.org/works/index.html IDE (FA-VO-LO-SO) che è stato appositamente creato permette di semplificare ulteriormente lo sviluppo del parser del linguaggio.
Qui (http://www.antlr.org/wiki/display/ANTLR3/Quick+Starter+on+Parser+Grammars+-+No+Past+Experience+Required) c'è un tutorial molto semplice per iniziare anche per chi è digiuno sull'argomento.
Infatti dopo questo, penso di scrivere qualche altro linguaggio per semplificarmi la vita in altri progetti e permettere anche ad altra gente "non tecnica" di metter mano ad alcune strutture dati che attualmente mi vedono come l'unico a doverlo fare (non pensare male: non è per scansare lavoro, eh! Ma per rimuovere un punto di fallimento nel nostro sistema ;)).
~FullSyst3m~
21-06-2008, 10:00
A parte ciò che ti ha detto variabilepippo, col quale sono d'accordo, ti posso consigliare, dopo aver studiato almeno i rudimenti relativi ai "linguaggi formali", di utilizzare qualche strumento che ti permette di realizzarli in maniera più semplice e veloce.
Di recente in azienda ho scritto un banale linguaggio (di specifica di sintassi) con questo: http://www.antlr.org/ che con questo http://www.antlr.org/works/index.html IDE (FA-VO-LO-SO) che è stato appositamente creato permette di semplificare ulteriormente lo sviluppo del parser del linguaggio.
Qui (http://www.antlr.org/wiki/display/ANTLR3/Quick+Starter+on+Parser+Grammars+-+No+Past+Experience+Required) c'è un tutorial molto semplice per iniziare anche per chi è digiuno sull'argomento.
Infatti dopo questo, penso di scrivere qualche altro linguaggio per semplificarmi la vita in altri progetti e permettere anche ad altra gente "non tecnica" di metter mano ad alcune strutture dati che attualmente mi vedono come l'unico a doverlo fare (non pensare male: non è per scansare lavoro, eh! Ma per rimuovere un punto di fallimento nel nostro sistema ;)).
A quanto ho capito l'azienda la tieni in piedi tu! Ti crei pure i tuoi linguaggi... :ave:
cdimauro
21-06-2008, 10:38
A quanto ho capito l'azienda la tieni in piedi tu! Ti crei pure i tuoi linguaggi... :ave:
Assolutamente no: siamo un bel gruppetto eterogeno, ognuno con le proprie responsabilità. ;)
by_to_by
21-06-2008, 10:45
Assolutamente no: siamo un bel gruppetto eterogeno, ognuno con le proprie responsabilità. ;)
tu sei un pozzo di sapere senza fondo. ti crei linguaggi, librerie, tool.. sono senza parole io
cdimauro
21-06-2008, 10:53
No, sei soltanto senza esperienza. E hai TANTO tempo per potertela fare. Fidati. :)
by_to_by
21-06-2008, 11:06
No, sei soltanto senza esperienza. E hai TANTO tempo per potertela fare. Fidati. :)
lo spero tanto che hai ragione tu, ormai il programmatore lo possono fare tutti, sembra che solo io non ci posson riuscire
variabilepippo
21-06-2008, 11:34
ormai il programmatore lo possono fare tutti
Non è vero che "ormai il programmatore lo possono fare tutti", per diventare un programmatore (come per tutto il resto: imparare a suonare uno strumento, apprendere una lingua straniera, ...) servono: passione, tempo (molti ANNI, non mesi o settimane), dedizione ed una certa predisposizione naturale. Io sono tra quelli che affermano: "nella vita, prima si inizia a fare una cosa e meglio è"...
Da una parte non devi scoraggiarti se non vedi maturare subito i frutti del tuo impegno, dall'altra però devi essere sempre consapevole che esiste la possibilità che la programmazione non faccia per te (per esempio io, nonostante la laurea in ingegneria elettronica, sono assolutamente *negato* per l'elettronica, per questo non me la prendo se non riesco a progettare neanche un semplice circuitino RLC).
by_to_by
21-06-2008, 12:05
Non è vero che "ormai il programmatore lo possono fare tutti", per diventare un programmatore (come per tutto il resto: imparare a suonare uno strumento, apprendere una lingua straniera, ...) servono: passione, tempo (molti ANNI, non mesi o settimane), dedizione ed una certa predisposizione naturale. Io sono tra quelli che affermano: "nella vita, prima si inizia a fare una cosa e meglio è"...
Da una parte non devi scoraggiarti se non vedi maturare subito i frutti del tuo impegno, dall'altra però devi essere sempre consapevole che esiste la possibilità che la programmazione non faccia per te (per esempio io, nonostante la laurea in ingegneria elettronica, sono assolutamente *negato* per l'elettronica, per questo non me la prendo se non riesco a progettare neanche un semplice circuitino RLC).
nella prefazione del libor che sto leggendo c'è messo che uno studente di uno degli autori in due mesi ha studiato python e ha scritto pure un programma chiamato pyTicket che usa il loro staff. non mi sembrano anni, a meno che non era un genio.
comunque come faccio a sapere se la programmazione fa per me e se sono predisposto?
variabilepippo
21-06-2008, 12:24
non mi sembrano anni, a meno che non era un genio.
Per imparare a programmare ci vogliono anni, non farti fuorviare da chi afferma il contrario, come ti ho già detto: programmare non è poi concettualmente diverso dal suonare uno strumento/comporre musica, apprendere una nuova lingua, etc. Non so quanto abbiano omesso nel descrivere (conoscenze pregresse, livello di istruzione, predisposizione, qualità del codice, ...) il loro studente modello. Ovviamente se vai dall'oste e chiedi come è il suo vino ti risponderà che è buonissimo... ;)
omunque come faccio a sapere se la programmazione fa per me e se sono predisposto?
Continua a studiare ed a applicarti, se tra un annetto non vedi netti miglioramenti (=riuscire a risolvere gli esercizi del tuo libro di testo con una certa facilità) forse dovresti cambiare libro, cambiare metodo di studio o cambiare rotta.
by_to_by
21-06-2008, 12:30
Per imparare a programmare ci vogliono anni, non farti fuorviare da chi afferma il contrario, come ti ho già detto: programmare non è poi concettualmente diverso dal suonare uno strumento/comporre musica, apprendere una nuova lingua, etc. Non so quanto abbiano omesso nel descrivere (conoscenze pregresse, livello di istruzione, predisposizione, qualità del codice, ...) il loro studente modello. Ovviamente se vai dall'oste e chiedi come è il suo vino ti risponderà che è buonissimo... ;)
Continua a studiare ed a applicarti, se tra un annetto non vedi netti miglioramenti (=riuscire a risolvere gli esercizi del tuo libro di testo con una certa facilità) forse dovresti cambiare libro, cambiare metodo di studio o cambiare rotta.
ho un ansia, ho paura che non arriverò mai a certi livelli
ho un ansia, ho paura che non arriverò mai a certi livelli
spero che questo sia il tuo ultimo commento del genere :fagiano:
by_to_by
21-06-2008, 12:46
spero che questo sia il tuo ultimo commento del genere :fagiano:
perchè?
variabilepippo
21-06-2008, 12:53
perchè?
Perché in effetti in un post sì e nell'altro pure non manca mai un commento del genere...
Secondo me dovresti dedicare le tue energie allo studio ed agli esercizi, non ad inutili (se non deleteri) confronti con il prossimo né dovresti pensare a tutte le cose che al momento non conosci. Studia, applicati, divertiti, scrivi codice, ma lascia stare l'ansia da prestazione. :)
by_to_by
21-06-2008, 13:01
Perché in effetti in un post sì e nell'altro pure non manca mai un commento del genere...
Secondo me dovresti dedicare le tue energie allo studio ed agli esercizi, non ad inutili (se non deleteri) confronti con il prossimo né dovresti pensare a tutte le cose che al momento non conosci. Studia, applicati, divertiti, scrivi codice, ma lascia stare l'ansia da prestazione. :)
i confronti con il prossimo non si possono evitare, ma comunque, non dirò più nulla del genere
variabilepippo
21-06-2008, 13:08
i confronti con il prossimo non si possono evitare, ma comunque, non dirò più nulla del genere
Io li ho sempre evitati: non mi importa cosa fa il mio "vicino" o quanto sia bravo il signor X, ciò che conta sono soltanto i risultati che raggiungo IO. Ti garantisco che così si campa benissimo... ;)
10 Poniti un obiettivo alla tua portata e cerca di raggiungerlo
20 Quando lo raggiungerai potrai portene un altro più ambizioso
30 GOTO 10
~FullSyst3m~
21-06-2008, 13:15
Io li ho sempre evitati: non mi importa cosa fa il mio "vicino" o quanto sia bravo il signor X, ciò che conta sono soltanto i risultati che raggiungo IO. Ti garantisco che così si campa benissimo... ;)
10 Poniti un obiettivo alla tua portata e cerca di raggiungerlo
20 Quando lo raggiungerai potrai portene un altro più ambizioso
30 GOTO 10
Ha ragione variabilepippo, inizia a porti obiettivi che puoi raggiungere con gli strumenti e le conoscenze che hai, poi man mano che acquisisci altre conoscenze ti porrai altri obiettivi e cosi via. Con calma e pazienza. Come hanno detto in molti, ci vogliono anni, ma non devi avere fretta guardando gli altri. TUTTI, compreso io, hanno iniziato cosi come te. Non preoccuparti dell'età, chi ha iniziato ad 11 anni non è che è diventato da un giorno all'altro programmatore, o capiva al volo quello che leggeva. No, leggeva, provava, smanettava, cambiava linguaggio e poi crescendo cambia anche la mentalità e si "matura". Anche se hai 20 anni non vuol dire che non puoi arrivare al livello, o superare, chi ha iniziato 10 anni prima di te. Si arriva ad un punto di incontro alla fine, in cui il gap non è più abissale, anzi potrai anche insegnare cose nuove a chi ha iniziato prima (ci sono infiniti campi nell'informatica e nessuno saprà mai tutto). Statti tranquillo eddai!
Se te lo dico io poi... :asd:
nuovoUtente86
21-06-2008, 14:49
si ma a livello logico son due cose diverse,se vuoi inventare un tuo linguaggio puoi anche fregartene del compilatore perchè il tuo nuovo linguaggio lo scriverai molto probabilmente in C,come sono java e python ad esempio,correggetemi se sbaglio,o al massimo in assembler,indi per cui creare un compilatore a mio modo di vedere non ha inerenza col fatto di crearsi un nuovo linguaggio
è un po ambiguo quanto scritto: ad essere scritto in un determinato linguaggio sara il compilatore o l' interprete o una macchina virtuale, ma non il linguaggio (nuovo) in se.
cdimauro
22-06-2008, 09:22
Esatto. Per inciso (e ovviamente :D): i nuovi linguaggi che vado creando li scrivo in Python. :cool:
~FullSyst3m~
22-06-2008, 10:20
Esatto. Per inciso (e ovviamente :D): i nuovi linguaggi che vado creando li scrivo in Python. :cool:
E' affascinante sentire dire " i nuovi linguaggi che vado creando". Ho davanti a me un mito.. devo salvare tutti i topic dove ci sei tu. Cosi un giorno potrò dire:
"Io c'ero! C'ho parlato!" :D
by_to_by
22-06-2008, 10:29
ma per creare un nuovo linguaggio non ci vogliono determinati studi come ha detto variabilepippo? tu li hai allora... e poi creando un linguaggio in python che linguaggio ti esce scusa? se usi python il linguaggio sarrà uguale a python :confused:
@cdimauro
utilizzi qualche cosa di simile a flex e bison ma che si basa su python?
by_to_by
22-06-2008, 10:31
@cdimauro
utilizzi qualche cosa di simile a flex e bison ma che si basa su python?
che sono flex e bison?
che sono flex e bison?
degli strumenti che automatizzano abbastanza il processo di creazione di un compilatore
by_to_by
22-06-2008, 10:40
degli strumenti che automatizzano abbastanza il processo di creazione di un compilatore
ma forse lui sta creando dei linguaggi non un compilatore
mamma mia, sono dei geni questi che palle :asd:
variabilepippo
22-06-2008, 11:02
utilizzi qualche cosa di simile a flex e bison ma che si basa su python?
Credo usi ANTLR Python API (http://www.antlr.org/api/Python/index.html) unito a ANTLRWorks (http://www.antlr.org/works/index.tml).
che sono flex e bison?
Per il momento non porti la questione... ;)
~FullSyst3m~
22-06-2008, 11:59
che palle :asd:
http://www.hwupgrade.it/forum/showpost.php?p=23005122&postcount=720
Notate l'ultima frase del post.. :asd:
cdimauro
22-06-2008, 14:56
E' affascinante sentire dire " i nuovi linguaggi che vado creando". Ho davanti a me un mito.. devo salvare tutti i topic dove ci sei tu. Cosi un giorno potrò dire:
"Io c'ero! C'ho parlato!" :D
:rotfl: Mi fai morireeeeee!!! :p
ma per creare un nuovo linguaggio non ci vogliono determinati studi come ha detto variabilepippo? tu li hai allora...
Sì, ovviamente: sono anni che studio e mi diletto nell'ambito dei linguaggi di programmazione, interpreti, compilatori, virtual machine, JIT, emulatori, ecc. ecc. :D
Comunque con certi tool ti risparmi un sacco di teoria e, che è ancora meglio, di tempo. ;)
e poi creando un linguaggio in python che linguaggio ti esce scusa? se usi python il linguaggio sarrà uguale a python :confused:
Assolutamente no: esce il linguaggio che dico io, e potrebbe essere qualunque.
In Python posso realizzare interpreti & compilatori per Python stesso, ma anche per C, C++, Pascal, BASIC, ecc. ecc. ecc.
@cdimauro
utilizzi qualche cosa di simile a flex e bison ma che si basa su python?
Credo usi ANTLR Python API (http://www.antlr.org/api/Python/index.html) unito a ANTLRWorks (http://www.antlr.org/works/index.tml).
Esattamente. :)
ANTLR permette di generare parser in Java (ovviamente, visto che è basato su Java), ma anche in una miriade di altri linguaggi: C, C++, Delphi, Python, ecc.
Per il momento non porti la questione... ;)
Esattamente. :)
DanieleC88
22-06-2008, 15:57
10 Poniti un obiettivo alla tua portata e cerca di raggiungerlo
20 Quando lo raggiungerai potrai portene un altro più ambizioso
30 GOTO 10
Noooo il GOTO noooo! :eekk:
http://www.antaresblog.altervista.org/antaresblog_files/febbraio07/jean2.jpg
Io direi più:
while (!Soddisfatto)
{
RaggiungiObiettivo(Attuale);
Attuale = NuovoAmbiziosoObiettivo();
}
:D
oppure, per gli amanti della programmazione criptico-funzionale :D
sequence_ $ cycle [ raggiungiObiettivo, scegliNuovoObiettivo ]
variabilepippo
22-06-2008, 16:14
:D
variabilepippo
22-06-2008, 16:19
while ((NonTiPassaLaVoglia) or (NonHaiPiuNullaDaImparare)) do
repeat
Studia;
ScriviCodice;
Debugga;
ObiettivoRaggiunto := not Bestemmia;
until not ObiettivoRaggiunto;
:D
khelidan1980
22-06-2008, 19:14
è un po ambiguo quanto scritto: ad essere scritto in un determinato linguaggio sara il compilatore o l' interprete o una macchina virtuale, ma non il linguaggio (nuovo) in se.
in effetti grazie della precisazione! ;)
by_to_by
22-06-2008, 19:37
while ((NonTiPassaLaVoglia) or (NonHaiPiuNullaDaImparare)) do
repeat
Studia;
ScriviCodice;
Debugga;
ObiettivoRaggiunto := not Bestemmia;
until not ObiettivoRaggiunto;
:D
fino a debugga l'ho capito, poi vuoto totale
by_to_by
22-06-2008, 19:47
Sì, ovviamente: sono anni che studio e mi diletto nell'ambito dei linguaggi di programmazione, interpreti, compilatori, virtual machine, JIT, emulatori, ecc. ecc.
Comunque con certi tool ti risparmi un sacco di teoria e, che è ancora meglio, di tempo.
sono shockato
Assolutamente no: esce il linguaggio che dico io, e potrebbe essere qualunque.
In Python posso realizzare interpreti & compilatori per Python stesso, ma anche per C, C++, Pascal, BASIC, ecc. ecc. ecc.
compilatori e interpreti però. il linguaggio vero e proprio però?se ad esempio dovessi creare la sintassi di un nuovo linguaggio in python come faresti?
DanieleC88
22-06-2008, 19:49
Non puoi "programmare" un linguaggio con un linguaggio di programmazione, al massimo ne progetti i dettagli ed implementi il resto (compilatore/interprete) a seconda di ciò che progetti.
cdimauro
22-06-2008, 20:41
compilatori e interpreti però. il linguaggio vero e proprio però?se ad esempio dovessi creare la sintassi di un nuovo linguaggio in python come faresti?
Prima ne definisco la grammatica tramite un generatore di parse, qual è ANTLR, appunto, e poi scrivo le "azioni" da eseguire in Python.
Quindi Python non lo uso da subito. Anzi, potenzialmente potrei definire TUTTA la grammatica del mio linguaggio, e soltanto DOPO averla testata accuratamente scriverei il codice in Python che mi permette di tirare fuori un interprete oppure un compilatore per il particolare linguaggio.
Tra l'altro ANTLR agevola moltissimo la scrittura di quest'ultima parte, perché ha una gestione degli Abstract Syntax Tree che è veramente eccezionale. Roba che tool com YACC se la possono soltanto sognare.
Comunque anche di questo probabilmente non avrai capito niente, ma va benissino così: si tratta di argomenti MOOOOOLTO avanzati, e tu sei ancora alle basi. Avrai tempo per farti le ossa ed, eventualmente, buttarti anche su questa branca dell'informatica. ;)
sono shockato
shockato di vedere un'informatico che fa l'informatico? non oso immaginare cosa potresti pensare di un meccanico che ripara automobili :asd:
ps. certo non tutti hanno la passione che ha cdimauro per la creazione di linguaggi, ma non mi sembra così sconvolgente per uno che ci lavora nell'informatica
fino a debugga l'ho capito, poi vuoto totale Gesù, sei una pena: ti autocommiseri pure perché non riusciresti a capire le cazzate altrui :asd:
by_to_by
22-06-2008, 22:50
Prima ne definisco la grammatica tramite un generatore di parse, qual è ANTLR, appunto, e poi scrivo le "azioni" da eseguire in Python.
Quindi Python non lo uso da subito. Anzi, potenzialmente potrei definire TUTTA la grammatica del mio linguaggio, e soltanto DOPO averla testata accuratamente scriverei il codice in Python che mi permette di tirare fuori un interprete oppure un compilatore per il particolare linguaggio.
Tra l'altro ANTLR agevola moltissimo la scrittura di quest'ultima parte, perché ha una gestione degli Abstract Syntax Tree che è veramente eccezionale. Roba che tool com YACC se la possono soltanto sognare.
Comunque anche di questo probabilmente non avrai capito niente, ma va benissino così: si tratta di argomenti MOOOOOLTO avanzati, e tu sei ancora alle basi. Avrai tempo per farti le ossa ed, eventualmente, buttarti anche su questa branca dell'informatica. ;)
eventualmente significa se ho voglia o se ho le conoscenze? ma comunque, meglio che rinuncio a domandaree sempre cose che non mi riguardano, però mi piace capire. non ci posso fare niente
DanieleC88
22-06-2008, 22:53
eventualmente significa se ho voglia o se ho le conoscenze?
L'una e le altre, possibilmente. :read:
~FullSyst3m~
22-06-2008, 22:57
Gesù, sei una pena: ti autocommiseri pure perché non riusciresti a capire le cazzate altrui :asd:
La tua parola devi metterla sempre eh?? :asd:
wingman87
23-06-2008, 00:31
Ma perché state cambiando tutti avatar? Non vi riconosco più! Soprattutto ci sono rimasto male per quello di 71104, mi ci ero affezionato :cry:
banryu79
23-06-2008, 08:45
Ma perché state cambiando tutti avatar? Non vi riconosco più! Soprattutto ci sono rimasto male per quello di 71104, mi ci ero affezionato :cry:
Quoto :rolleyes:
DanieleC88
23-06-2008, 10:32
71104 cominciava ad essere confondibile con variabilepippo. E il mio avatar è bellissimo! :D
banryu79
23-06-2008, 10:49
71104 cominciava ad essere confondibile con variabilepippo. E il mio avatar è bellissimo! :D
Super OT:
Colpa di variabilepippo: aveva messo anche lui coding horror come avatar.
Io vedrei bene il suo nick sposarsi con una bella immagine di Super Pippo, ma non so se questa proposta incontra i suoi gusti :D
variabilepippo
23-06-2008, 10:51
Il mio avatar era dedicato ad Euro 2008, ora che siamo fuori dai giochi ho preferito cambiarlo... :ncomment:
Per certi versi Super Pippo è preferibile a Super Pippa... :D
DanieleC88
23-06-2008, 10:52
D'oh, l'ha cambiato pure lui! :doh:
banryu79
23-06-2008, 11:14
Per certi versi Super Pippo è preferibile a Super Pippa... :D
E' anche più appropriato, a meno che tu non sia una "gentil donzella":asd:
variabilepippo
23-06-2008, 11:33
E' anche più appropriato, a meno che tu non sia una "gentil donzella"
Ma la seconda opzione è appropriata anche per i programmatori scarsi o per gli "smanettoni"... :oink: :D :oink:
banryu79
23-06-2008, 11:38
Ma è appropriato anche per i programmatori scarsi o per gli "smanettoni"... :oink: :D :oink:
In quel caso l'accezione va esplicata con la 'p' minuscola, a me l'espressione "Super Pippa".equals("Super pippa") da false, mi sento abbastanza "case sensitive"...
P.S.: sì, oggi non ho molta voglia di lavorare... mo la smetto però :)
~FullSyst3m~
23-06-2008, 12:04
Ma perché state cambiando tutti avatar? Non vi riconosco più! Soprattutto ci sono rimasto male per quello di 71104, mi ci ero affezionato :cry:
Casualmente lo avevo cambiato pure io due giorni fa... le coincidenze della vita! :D
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.