[Python] Parere su Go di un professore di informatica (delle superiori) nonche' uno dei fondatori di ERLUG

enrico franchi enrico.franchi a gmail.com
Dom 12 Lug 2015 18:58:33 CEST


2015-07-10 20:16 GMT+01:00 Carlos Catucci <carlos.catucci a gmail.com>:

>
> Tutti quelli che considerano Python facile da leggere non devono solo
>> considerare il problema "riesco a rileggere il codice che ho scritto"
>> (problema non banale, certi linguaggi falliscono malamente anche questo).
>> Ma devono considerare anche il problema: riesco a leggere facilmente il
>> codice che un altra persona (che potrebbe essere il Franchi in vena di
>> metaprogramming) scrive? La mia esperienza e' *no*. Tanto e' vero che, per
>> dire, sul lavoro mi contengo.
>>
>
> Una persona normale, intendo dire un vdeveloper, fa fatica anche a capire
> la meta' delle cose che dice il Franchi, ovvio che se si mette a
> programmare ad alto livello, seguendo fili logici che un comune mortale (o
> una comune mortadella come me) neppure riesce a immaginare nei suoi viaggi
> dopo avere "tagliato una punta di acido", non capisca una cippa del codice.
> Pero' codice del Franchi a parte io sono sempre riuscito a leggere e capire
> piu' o meno al volo codice Python scritto da altri. Non conosco Go (ma
> voglio studiarlo se solo ho un poco di respiro) per cui non posso dire se
> sarei capace di leggerlo altrettanto semplicemente. Con Python, nella
> stessa situazione pero', non ho avuto problemi a leggere il rpimo listato
> (e non era un fibonacci o simili ma una applicazione complessa).
>

Si, in realta' buona parte del mio codice *non* usa (o fa un uso molto
limitato) di suddette features, e non faccio passare codice che ne abusa.
Il discorso non e' quanto avanzato e' il mio python rispetto a quello del
"programmatore medio".

Il problema e' che "Python e' leggibile" se e solo se non si usano (o
abusano) determinate features. Altrimenti e' leggibile per un sottoinsieme
ristretto di persone e *soprattutto* non e' il codice che vuoi guardare
alle 3 di mattina quando sei stato svegliato perche' l'applicazione e'
rotta. Non vuoi farlo se il codice e' tuo, non vuoi farlo se il codice e'
di qualcun altro.

Ma se cominci a dire che "il linguaggio e' leggibile se non usi feature x e
y" comincia ad indebolirsi molto il fatto che il linguaggio sia leggibile.
Perche' restringendo arbitrariamente il sottoinsieme di linguaggio
leggibile, tutto sommato parecchi linguaggi non patologicamente illeggibili
diventano "leggibili". E anche alcuni linguaggi patologici.

Io posso dire che Python sufficientemente vecchio era molto leggibile.
Leggibile perche' aveva meno features e soprattutto meno features
"complesse". Piano piano le hanno aggiunte, e' tutta roba molto potente e
interessante, ma alla fine dei conti e' anche tutta roba che rende il
codice relativamente troppo complicato da capire per essere considerato
leggibile.

Il motivo per cui tutto sommato la maggior parte del codice Python la fuori
e' sempre considerato leggibile e' che la maggior parte dei programmatori
non abusano troppo di queste features (per scelta o per ignoranza). Ma di
per se, il problema e' presente.


> Poi abbi pazienza, lui e' un prof delle superiori, ha come target ragazzi
> di 14/18 anni che si avvicinano alla programmazione, non un tale che lavora
> per una non meglio specificata $bigcompany.
>

Si, ma niente da dire su di *lui*. Quello che io sto dicendo e' che *a mio
avviso* Go e' piu' leggibile di Python. Almeno per ora. Poi certo, se e
quando cominceranno a farcirlo di features fichissime (ma complicate) anche
lui sara' molto meno leggibile.

Insomma, per fare un altro paragone... Haskell e' un linguaggio
*estremamente* leggibile. Ha regole piuttosto rigorose sulla formattazione,
etc etc etc. Pero'... diciamo che se uno non mastica alcuni concetti
relativamente poco intuitivi non si va troppo lontano. Non ho vergogna ad
ammettere che spesso e volentieri quando leggo codice scritto da gente che
fa Haskell duro non capisco davvero un accidente, ma e' un modo diverso di
non capire che cavolo fa rispetto a quando mi danno il classico blobbone da
2000 righe di Perl da riscrivere in qualcos'altro.


-- 
.
..: -enrico-
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20150712/81c6ad24/attachment-0001.html>


Maggiori informazioni sulla lista Python