[Python] python 3.6 & The Case Against Python 3

Marco Giusti marco.giusti a posteo.de
Gio 24 Nov 2016 15:18:55 CET


On Wed, Nov 23 2016, Marco Santamaria wrote:
>Il giorno 23 novembre 2016 09:47, Pietro <peter.zamb a gmail.com> ha scritto:
>
>> Giusto per darvi un'idea dice:
>>
>> *"I cannot teach Python 3 to total beginners because I don't want them to
>> think they "suck at programming" when really it's Python 3's fault. That's
>> simply not fair to them, so I have to teach Python 2 so they have the best
>> chance at learning to code.*
>> *[...]*
>> *If you learn Python 2, then you can still work with all the legacy Python
>> 2 code in existence until Python dies or you (hopefully) move on. But if
>> you learn Python 3 then your future is very uncertain. You could really be
>> learning a dead language and end up having to learn Python 2 anyway."*
>>
>> Voi come la vedete?
>>
>
>Le argomentazioni portate sinceramente non mi sembrano stare in piedi.
>
>1. Come è stato detto, ormai la maggior parte delle librerie sono state
>portate <http://py3readiness.org/> a Python 3. Quindi il futuro di Python 3
>non è incerto, invece quello di Python 2 lo è <https://pythonclock.org/>.
>
>2. Le stringhe sono più difficili da usare in Python 3 per un beginner?
>Solo perché ci sono sistemi alternativi (e più potenti) per formattarle?
>Piuttosto sono più facili perché non c'è una implicita conversione tra str
>e unicode (con tutte le frustrazioni
><https://fedorahosted.org/releases/k/i/kitchen/docs/unicode-frustrations.html>
>annesse e connesse)
>
>3. Il fatto che "Python 3 Is Not Turing Complete" mi pare più una
>provocazione che una cosa seria.
>
>4. La critica a quelle che lui chiama "statically typed strings" mi pare
>insensata. In sostanza si vede come negativo il fatto di non poter
>concatenare bytes e str. Ma In Python 2 ottengo un TypeError anche se provo
>a fare 1 + 'abc'. Il concetto di dynamic typing non significa che non ci
>debba essere nessun controllo sui tipi a runtime.

Pienamente d'accordo su tutto.

>I tre metodi per la formattazione delle stringhe sono apparentemente una
>violazione dello Zen of Python. Ma in realtà il vecchio % è stato lasciato
>solo per retrocompatibilità con l'intenzione di deprecarlo prima o poi
><https://www.python.org/dev/peps/pep-3101/>. E la PEP 0498 introduce una
>sintassi che è in continuità con quella del format
><https://www.python.org/dev/peps/pep-0498/#rationale>, riducendone un po'
>di boilerplate.

Addirittura, se ho capito bene il funzionamento delle f-string, queste
non sostituiranno mai str.format. Se voglio espandere una stringa in un
secondo momento, non posso farlo con le f-string. Penso per esempio ad
un sistema di logging più decente e che non mi obblighi ad utilizzare la
sintassi di printf. Se quindi deprechiamo la sintassi printf-like, ci
sarà sempre un solo modo evidente per formattare le stringhe.

>Personalmente è ormai da più di un anno che sono passato a Python 3 per
>tutti i progetti nuovi senza problemi.

Da noi utilizziamo solo Python3.

Da un paio di release a questa parte, mi sembra che il futuro di Python3
sia più sicuro che mai. Personalmente sono veramente compiaciuto per
tanti cambiamenti in Python3, piccoli e grandi, che quasi mi dispiace di
non poterli utilizzare direttamente. Tra tutti asyncio.

Marco.


Maggiori informazioni sulla lista Python