Sappiamo bene che Python è uno dei lingaggi di programmazione più diffusi, complessivamente più che valido, semplice da apprendere almeno come basi e con ottima documentazione. Fra pochi giorni è previsto il rilascio della versione 3.10.6 (fonte ufficiale: releases), attualmente è in uso la versione 3.10.5.
Vediamo comunque alcuni limiti del linguaggio Python:
- identazione: non è opzionale, se è vero che può aiutare in alcuni casi (programmi semplici, con poche righe di codice e non eccessivamente "strutturati"), è anche vero che, nel caso di condizioni if-else, possa risultare scomodo da comprendere, non essendoci parentesi di chiusura del blocco ad esempio
- versioni multiple: sebbene oggi sia in disuso, è ancora presente Python 2, che in alcuni casi ha sintassi leggermente diversa da Python 3
- errori di runtime: linguaggio interpretato, quindi non avviene compilazione ma eventuali errori emergono in fase di esecuzione
- spazi bianchi: analogamente all'identazione, non abbiamo parentesi graffe, punti e virgola, quindi codice leggero e pulito, ma se complesso e articolato la leggibilità e comprensione dei singoli "blocchi" ne risente
- sviluppo mobile: per lo sviluppo mobile in genere vengono preferiti altri linguaggi, più robusti e "portabili"
- lambda: le "funzioni anomine" di Python, chiamate Lambda, possono avere vantaggi di praticità, comodità, ma sono limitati alle funzioni e non altri costrutti (statements) o variabili
- velocità: linguaggio interpretato, per definizione non è veloce e performante come un linguaggio compilato (C/C++); inoltre di base esegue un task alla volta, il "multithreading" non è semplice da implementare, non si presta bene a questo
- memoria inefficiente: tipico dei linguaggi interpretati, scarsa tipizzazione, quindi ad una variabile che potrebbe occupare poco spazio (es. l'equivalente "char" C/C++, 0-255) viene assegnata comunque molta più memoria del necessario, per renderla potenzialmente in grado di assumere qualunque valore (sistema semplice ma inefficiente)
- scope: la visibilità delle variabili e il loro valore vanno testati (scoping dinamico e non statico), nel caso di programmi complessi che possono modificare il valore delle variabili tramite funzioni che si richiamano a vicenda
In definitiva, nessun linguaggio di programmazione è perfetto, ognuno si presta meglio o peggio ad una determinata nicchia, un determinato tipo di utilizzo. È bene conoscere questi limiti di Python, che per il resto risulta comunque un ottimo linguaggio di programmazione, fra i più usati al mondo.