Autore Topic: dead  (Letto 13497 volte)

Offline cdimauro

  • Human Debugger
  • *****
  • Post: 4291
  • Karma: +7/-95
    • Mostra profilo
Re:lisp
« Risposta #15 il: 19 ſettembre 2013, 21:09:42 »
Ho portato Little in C, ho rifatto la eval expr in RPN, ho cambiato approccio, ora ho una fase di prescal con la costruzione dun lex-tree, le expression sono un super token, array di lex.

Sto anche pensando che un po' di modifiche l'interprete si presta ad accomodare una machine layer, quindi a sfornare codice assembly per un arch. L'idea potrebbe essere sfruttare poi GnuAS aka gas, p.e. per 68000, o 6809, di questo ultimo ho un as-6809 che lavora nettamente meglio della versione GNU.

Boh, vedremo, intanto ho separato anche il lexer.
Ma se ti devi riscrivere il GCC, tanto vale che usi vbcc come base. O LLVM. In ambito Pascal è interessante FreePascal, che è disponibile persino per il GBA e alcuni microcontrollori.

Non capisco dove vuoi arrivare con questo progetto... :-/

Offline cdimauro

  • Human Debugger
  • *****
  • Post: 4291
  • Karma: +7/-95
    • Mostra profilo
Re:lisp
« Risposta #16 il: 20 ſettembre 2013, 06:51:03 »
Fai bene. Visto che sintassi carina? Anche se ci sono cose che non mi piacciono, tutto sommato non è male.

Potresti fargli generare codice 68HC11 e 68000. ;)

Offline fulvio

  • Tech
  • *****
  • Post: 68
  • Karma: +0/-0
    • Mostra profilo
Re:lisp
« Risposta #17 il: 20 ſettembre 2013, 12:09:45 »
Tutto questo parlare di lisp mi ha fatto ricordare questo video di Kevlin Henney. È una passerella di esempi di codice, tutti che in qualche modo insegnano qualcosa, secondo me assolutamente da vedere:

Un'ora di video non riesco proprio sorbirmelo... -_- C'è una sintesi da qualche parte?

No ma lo puoi vedere tranquillamente a tratti, l'autore presenta dei pezzi di codice che hanno fatto la storia (la prima versione di wiki, il codice che controllava i razzi ariane, un gioco di scacchi completo in assembly mi pare 68k che sta in una pagina, etc.). C'è anche la funzione eval di lisp scritta in lisp :D (questo mi ha fatto scattare il ricordo).

Offline cdimauro

  • Human Debugger
  • *****
  • Post: 4291
  • Karma: +7/-95
    • Mostra profilo
Re:lisp
« Risposta #18 il: 21 ſettembre 2013, 11:19:54 »
Tutto questo parlare di lisp mi ha fatto ricordare questo video di Kevlin Henney. È una passerella di esempi di codice, tutti che in qualche modo insegnano qualcosa, secondo me assolutamente da vedere:

Un'ora di video non riesco proprio sorbirmelo... -_- C'è una sintesi da qualche parte?

No ma lo puoi vedere tranquillamente a tratti, l'autore presenta dei pezzi di codice che hanno fatto la storia (la prima versione di wiki, il codice che controllava i razzi ariane, un gioco di scacchi completo in assembly mi pare 68k che sta in una pagina, etc.). C'è anche la funzione eval di lisp scritta in lisp :D (questo mi ha fatto scattare il ricordo).
A me ricorda il mio prof. di Linguaggi di programmazione che in una delle ultime lezioni fece la stessa cosa, con Scheme. :P

Comunque lo guarderò a tratti, come dici tu, ma appena avrò tempo. Aspetto quelli di Ikea per i mobili che mi devono portare, e poi devo montarli (con un collega che s'è offerto di aiutarmi).

Offline cdimauro

  • Human Debugger
  • *****
  • Post: 4291
  • Karma: +7/-95
    • Mostra profilo
Re:lisp
« Risposta #19 il: 21 ſettembre 2013, 14:55:02 »
A me lo dici? ;D

Comunque al momento si appoggia al C, esattamente come il C++ all'inizio. D'altra parte è un linguaggio nuovo, per cui avrà poche risorse (= sviluppatori) che ci lavorano...

Offline clros

  • ASM Lover
  • *****
  • Post: 457
  • Karma: +3/-1
    • Mostra profilo
Re:lisp
« Risposta #20 il: 24 ſettembre 2013, 17:40:55 »
Per strani motivi (ma quali?? :D) intendevo smanettare un pò con il Lisp.
Che interprete/compilatore consigliate su Windows?
Claudio CP La Rosa

Offline clros

  • ASM Lover
  • *****
  • Post: 457
  • Karma: +3/-1
    • Mostra profilo
Re:lisp
« Risposta #21 il: 24 ſettembre 2013, 20:21:51 »
boh, Windows mi manca, probabilmente qualcosa che possa girare sotto il support unix for windows, e quindi ripiegherei su dev-scheme/tinyscheme, un dialetto Lisp un pelo + friendly


ma forse c'e' qualcosa di meglio


p.s.
ma il fine e' + interessante dello strumento, sarei curioso di chiederti lisp, a che pro ?

Nessuno...
Claudio CP La Rosa

Offline cdimauro

  • Human Debugger
  • *****
  • Post: 4291
  • Karma: +7/-95
    • Mostra profilo
Re:lisp
« Risposta #22 il: 25 ſettembre 2013, 07:42:40 »
E allora studiati Python, che almeno è mediamente più utile. ;)

Offline cdimauro

  • Human Debugger
  • *****
  • Post: 4291
  • Karma: +7/-95
    • Mostra profilo
Re:lisp
« Risposta #23 il: 25 ſettembre 2013, 19:17:30 »
Dovresti provare Python. 8)

Offline clros

  • ASM Lover
  • *****
  • Post: 457
  • Karma: +3/-1
    • Mostra profilo
Re:lisp
« Risposta #24 il: 26 ſettembre 2013, 19:24:26 »
Dovresti provare Python. 8)

Perchè Python consente di risolvere gli stessi problemi senza usare la programmazione funzionale (con funzioni ad hoc per questo tipo di problemi) oppure perchè anche con python si può usare il paradigma funzionale?
Claudio CP La Rosa

Offline cdimauro

  • Human Debugger
  • *****
  • Post: 4291
  • Karma: +7/-95
    • Mostra profilo
Re:lisp
« Risposta #25 il: 26 ſettembre 2013, 23:02:38 »
Entrambe le cose. Anche se, ovviamente, la programmazione funzionale non è ai livelli di un linguaggio funzionale. Python integra alcune cose interessanti, che sono quelle mediamente più utili per un programmatore.

Offline fulvio

  • Tech
  • *****
  • Post: 68
  • Karma: +0/-0
    • Mostra profilo
Re:lisp
« Risposta #26 il: 27 ſettembre 2013, 11:58:40 »
Entrambe le cose. Anche se, ovviamente, la programmazione funzionale non è ai livelli di un linguaggio funzionale. Python integra alcune cose interessanti, che sono quelle mediamente più utili per un programmatore.

Confermo, vorrei solo avere più tempo per studiarlo a fondo, solo che tra il lavoro e qualche altro progetto personale non c'è mai l'occasione! :(

Offline clros

  • ASM Lover
  • *****
  • Post: 457
  • Karma: +3/-1
    • Mostra profilo
Re:lisp
« Risposta #27 il: 27 ſettembre 2013, 12:22:45 »
chissa' se e' meglio risolvere labirinti in python, in erlang o in lisp

quasi quasi mi prendo un paio di orette per toccare con mano come/quanto aiuta python
lisp aiuta, ma fa venire emicrania da aspirina C !!!
(erlang anche peggio)

Chissà se le lambda function di C++ aiutano! (sicuramente a far aumentare il mal di testa!  :D )
Claudio CP La Rosa

Offline fulvio

  • Tech
  • *****
  • Post: 68
  • Karma: +0/-0
    • Mostra profilo
Re:lisp
« Risposta #28 il: 27 ſettembre 2013, 13:37:52 »
chissa' se e' meglio risolvere labirinti in python, in erlang o in lisp

quasi quasi mi prendo un paio di orette per toccare con mano come/quanto aiuta python
lisp aiuta, ma fa venire emicrania da aspirina C !!!
(erlang anche peggio)

Chissà se le lambda function di C++ aiutano! (sicuramente a far aumentare il mal di testa!  :D )

Le lambda function in C++ non sono state introdotte per supportare il paradigma funzionale, ma semplificare l'utilizzo di algoritmi come ci sono nella stdlib. Esempio:

Codice: [Seleziona]
// in C++14
using namespace std;
vector< int > v { 1, 2, 3, 4, 5 };
auto forth_element = find_if( begin( v ), end( v ), []( const auto& i ) { return i == 4; });

prima il predicato doveva essere una funzione o un functor separato. Tant'è che secondo lo standard la lambda function è equivalente ad un functor anonimo. E di solito è implementata proprio così. Si tratta di zucchero sintattico, non di supporto alla programmazione funzionale. Poi di nuovo vige sempre il detto che tutte le cose possono essere buone o cattive, dipende da come si usano. C++ costringe a pensare ad ogni linea di codice che scrivi per bene, perchè gli strumenti sono tanti e le interazioni complesse. Ma ti permette di scrivere tipi ed astrazioni che sembrano built in con il linguaggio e sono anche efficienti. Ovviamente da una grande potere derivano grandi responsabilità, e tutto il controllo che si ha non è facile da gestire.
Però è anche vero che per tirare fuori performance comparabili in un linguaggio funzionale ce ne vuole. La cosa che fa rabbia è che spesso ti presentano una implementazione di un quicksort e ti fanno vedere l'eleganza perchè, ehi, descrivi qual è il risultato invece di come arrivarci. Sarebbe figo se non fosse che quella classica implementazione non è un quicksort (lascio l'esercizio ai lettori per capire perchè) :D
Poi c'è Python, che è probabilmente il compromesso migliore! Anche se io preferisco C++ per motivi di interessi (ultimamente studio programmazione parallela e controllare il layout delle cose in memoria può essere un plus non indifferente, senza contare che si può arrivare al livello più basso della macchina senza dover utilizzare altri linguaggi). Cioè sono più il tipo che scriverebbe una virtual machine nel tempo libero :D

Offline clros

  • ASM Lover
  • *****
  • Post: 457
  • Karma: +3/-1
    • Mostra profilo
Re:lisp
« Risposta #29 il: 27 ſettembre 2013, 14:02:56 »

prima il predicato doveva essere una funzione o un functor separato. Tant'è che secondo lo standard la lambda function è equivalente ad un functor anonimo. E di solito è implementata proprio così. Si tratta di zucchero sintattico, non di supporto alla programmazione funzionale.

Chiarissimo! ;)

OT che compilatore C++14 usi?
Claudio CP La Rosa

Tags: