Perché Lisp

iphonefuguRoba che ormai è passata più di una settimana, roba del mese scorso, roba che volevo mettere nella rassegna settimanale di cose viste nel –indovina, sì– Web ma poi mi son detto mi serve anche per fare il punto della situazione.
Insomma sto parlando di I Miss Lisp di Philip Chu, cui devo anche l’immagine.

Ah! ci sono arrivato per via di un tweet, questo: It’s a VB world out there. A proposito, ora che ci penso followo Jeff, a guy somewhere near Baltimore (mai nessuno ‘randa Piubes, sigh!).

Il post di Philip dovete –se volete– leggerlo perché non lo riassumo, cito solo quello che mi piace di più.
Ottimo inizio, la semplicità, le parentesi (ma dai, provate un editor sensato e le parentesi non sono un problema; poi se usate DrRacket (oops! questo non devo dirlo ancora)

Questa è über: Think how many hours have been lost to Java and C/C++ operator precedence bugs, forgetting to add brackets when expanding a single-line if clause (and Eclipse will nag me about unnecessary brackets if I try to play it safe) and the endless debates among programmers about their favorite bracket usage and placement conventions.

Eleganza. Questa è soggettiva, ma: A related complaint is that Lisp is too strange and hard to understand. […] Simplicity lends itself to elegance. You know you’re using an elegant language if you’re not distracted by discussions of proper style. I don’t recall wasting time on coding style debates when working in Lisp. Smetto prima di parlare della notazione ungherese che sul Prime c’era ben prima che si chiamasse così. A sproposito, io mi ero convinto che fosse per via della lingua ungherese (come del resto capita in altre, p.es. swahili) finché ho tutorato una tesista con mamma di Buda (Budapest è come la trinità: Buda, Pest e Opest, se ricordo bene).

Flessibilità. Le macro. Che sono tutta un’altra cosa da quelle di C/C++ o Excel. Non ne voglio nemmeno parlare. Ma come dice il vecchio detto piemontese Lisp is a programmable programming language.

Cultura. Lisp had a cool culture. […] [P]opularization of Lisp — Paul Graham, Peter Norvig, Guy Steele, Marvin Minsky, Rod Brooks, Richard Stallman, James Gosling… Uh! ne ho incontrati (sul Web) parecchi. Piuttosto c’è una via lispica che è molto diversa da quella corrente, come salta fuori al prossimo punto.

Why Didn’t Lisp Become Java? beh, questo leggetelo là. Ci sono dentro considerazioni sull’oppotunità, il freeware, il target, la standardizzazione.
E poi: It’s easy to write “Hello, World” in Lisp. It just takes a while to load.
Per contro [t]he unique features of Common Lisp are largely unappreciated, even by Lisp devotees. I’ve seen macros used a lot, but mostly to inline code — few Lisp programmers think abstractly enough to define their own language within a language.
Mi ha stupito molto come gli oggetti entrano naturalmente nel Lisp, nato in un’era precedente.
In a sense, Lisp was too easy. A programmer who couldn’t deal with C pointers could still hack together code in Lisp. I’ve seen plenty of prototypes that demoed well enough to get funding and turn into serious projects, then stall because the software was held together with string and bailing wire. And Lisp was too cool — it attracted a lot of groupies who weren’t that great at coding but liked the culture and cachet (particularly in AI surroundings). So it’s no surprise that Lispers come off as wine snobs to the beer-drinking masses out there.

It’s a VB world out there. Most programmers don’t really want to program — they want an IDE that will do as much work as possible for them, like graphically connect components and generate skeleton code.

Insomma, va a finire che questo è un post di Philip Chu, quello di Fogu Games.
Per renderlo almeno un po’ anche mio vorrei aggiungere un paio di considerazioni. Seguendo Peter Seibel mi sono reso conto del perché di discussioni lunghe e senza senso di tanto tempo fa, quando si usava il Fortran. Per esempio ci sono delle funzioni (o equivalenti, subroutines p.es. ma non solo) che ci sono, servono ma non devi usarle ogni volta direttamente. Nella prima stesura delle bozze mi veniva di citare tutto quello che tornava in mente, poi rileggendo censuravo. Qualcuna forse è rimasta, temo. Mica sono così niubbo da citare l’importanza della progettazione su carta, dai 😉
Non so se sono troppo ingenuo a confidare che –secondo me, nèh!– i linguaggi di tipo Algol (quasi tutti) mi inducono a vedere il compito in un certo modo. Con il Lisp è diverso. Con Haskell è diversamente diverso. E quando ho cominciato era diverso ancora, tutto un jumpare su e giù. Ma per via che i vecchi avevano probabilmente cominciato in assembler (assembly si dovrebbe dire, lo so).

Insomma anche se i post sul Lisp sono visti da pochissimi dei non numerosi frequentatori del blog credo che continuerò. Con qualche variante più attuale, anche se non mainstream. L’alternativa sarebbe l’accoppiata Java e Scala. Ma è meno sexy, secondo me. :mrgreen:

Posta un commento o usa questo indirizzo per il trackback.

Commenti

  • Marco  Il 15 giugno 2015 alle 17:17

    Ho letto, anzi, divorato tutti i vostri articoli sul LISP. Grazie mille! Per favore, datecene molti di più!

    • juhan  Il 15 giugno 2015 alle 17:20

      Avrai visto che sono alle prese con Racket una versione moderna del Lisp. E la prendo dalle basi (roba che capisco anch’io).
      Naturalmente benvenute osservazioni, commenti, critiche 😀

Trackback

  • Il Lisp è diverso | Ok, panico su 4 luglio 2015 alle 07:02

    […] Questo –vi avviso subito– è uno di quei post senza troppo senso in cui tento di giutificarmi di quello che faccio. Una roba che capita ogni tanto l’ultima volta credo sia stata questa: Perché Lisp. […]

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo di WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione /  Modifica )

Google photo

Stai commentando usando il tuo account Google. Chiudi sessione /  Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione /  Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione /  Modifica )

Connessione a %s...

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.

%d blogger hanno fatto clic su Mi Piace per questo: