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

Rispondere a