On 17/09/13 23:19, Piergiuliano Bossi wrote:
2013/9/17 Lorenzo Sutton <lorenzofsut...@gmail.com
<mailto:lorenzofsut...@gmail.com>>
Domanda, forse naive. A parte la soddisfazione/divertimento di
costruire dei one-liner qual è il vero vantaggio di tale
super-sinteticità? perché non scrivere il codice "per esteso"? Esempio:
>>> number_list = [2, -4, 27, 44, 13, 0]
>>> up_limit = 5
>>> counter = 0
>>> for i in number_list:
... if i > up_limit:
... counter += 1
...
>>> counter
3
Inserito in un contesto più complesso, così non un po' più chiaro?
:D
N risposte, tutte vere dal mio punto di vista, alcune estremamente
soggettive:
1) 1000 anni di lavoro in Java ti portano a idolatrare la sinteticita' e
detestare la verbosita'
2) meno codice scrivo e meno bugs ho
3) meno codice scrivo e piu' devo alzare il livello di astrazione e piu'
alzo anche il livello di riuso
4) non so perche', ma io veramente capisco piu' facilmente e piu'
velocemente il seguente (in Scala) rispetto a quello che hai scritto tu:
a.count(_ > 5)
Tutti punti validi e forse come dici tu soggettivi.
A me piace l'idea di esplicitare l'algoritmo, certo in questo caso è
talmente banale che forse è un esempio poco significativo.
Se dovessi definire l'algoritmo per eseguirlo io con carta e penna (o a
mente) farei così: scorro ogni elemento della lista, se è maggiore di 5
aggiungo 1 a un "contatore" (mentale, una segnetto che faccio su un
foglio, un dito...). Quando ho finito di scorrere tutti i numeri vedo il
valore del contatore.
Tornando al titolo del topic... una delle cose che amo di Python è che
riesco a "esprimere" questi ragionamenti e a tradurli in codice meglio e
più velocemente rispetto ad altri linguaggi che ho usato... Anche qui
questioni soggettive forse.
Ciao.
Lorenzo.
_______________________________________________
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python