Guida Una moda chiamata Python

N3v5

Utente Silver
24 Ottobre 2020
169
19
40
80
Python è un linguaggio simpatico, potente, utile e tutto quello che volete. Ok, fin qui mi trovate perfettamente d'accordo.
Quello che non capisco è il perché ci sia così tanta gente che lo vede come il "linguaggio scorciatoia" per fare chissà quale cosa incredibile che solo lui al mondo sa fare.
Mi spiego meglio, non ce l'ho con Python, anzi; ce l'ho con quelle persone che si definiscono programmatori solo perché sanno fare un ciclo for e poco più (e nemmeno poi così tanto bene a dirla tutta), fenomeno dilagante soprattutto tra i più giovani.

Vorrei fare un po' di chiarezza visto che ormai sembra che Python sia la cosa più bella mai inventata dall'uomo dopo la ruota.

1 - Imparare Python NON è facile
Bene, prendete qualsiasi corso su youtube o dove volete, la prima cosa che vi dicono nel video introduttivo (che di solito si chiama "Perché imparare Python" o cose del genere) è sempre la stessa: imparate Python perché è facile.
Capisco che vogliate attrarre più gente possibile facendo credere che praticamente anche mia nonna possa creare GTA, ma dico, è possibile scegliere un linguaggio perché è facile? Ma che senso ha?
In informatica non esistono scorciatoie, il 90% del tempo lo si passa a commettere errori. E' così, è naturale, ci vuole pazienza, costanza, motivazione. Non sarete mai dei bravi programmatori se non passate prima da innumerevoli fallimenti, c'è poco da fare.
Un gradino alla volta ragazzi, per masterare un linguaggio ci vogliono anni, le cose vanno digerite e praticate. Seminate poco ogni giorno e diffidate da "Impara Python in 20 minuti", "Python corso completo in un'ora".
Anni ragazzi, anni. Punto. Se volete farlo bene.
Prendetevi un buon libro, approfonditelo il più possibile, poi altri libri sempre più avanzati. E poi esercizi, esercizi.
Poi un momento, definiamo "facile". Sì, è più facile di altri linguagi, per carità, è pur sempre il linguaggio di livello più alto, ma questo non vuol dire che in tre giorni lo impari. O meglio, se lo impari in tre giorni lo impari male, malissimo. Ti potrei mettere in difficoltà anche su un ciclo while in pratica.
Poi al massimo impari il vanilla. Quando si inizia a parlare di OOP, concorrenza, compilazione in C, profiling, gestione della RAM e compagnia bella vediamo poi se è facile. Ci puoi passare una vita a migliorare.
Ogni 3 x 2 mi ritrovo gente che sta "programmando" roba difficilissima senza nemmeno sapere i tipi di dati. E' impossibile ragazzi, è come voler costruire un grattacielo con i mattoncini della Lego. Se però per voi è più importante vedere subito qualcosa di concreto fate pure, ma a mio avviso non ha senso.

2 - Con Python ci fai tutto, forse troppo
Sì ci puoi fare praticamnete qualsiasi cosa, ma ciò non significa che ci puoi fare qualsiasi cosa bene. Inoltre con praticamente qualsiasi linguaggio generalizzato procedurale puoi fare qualsiasi cosa, non è che Python abbia qualcosa in più. La realtà è che Python è la prima scelta (diciamo) per alcuni campi come data science o AI, ma per fare molte altre cose sono molto meglio altri linguaggi.

3 - Non dovresti scegliere Python come primo linguaggio

print("Hello World!") ... ok, carino, ma poi? Python, tra i linguaggi di alto livello e quello più in alto. Astrae a livello incredibile. Può essere un bene se devi fare qualcosa e hai poco tempo ma è anche vero che rimani completamente all'oscuro di come ragiona il computer.
Personalmente consiglierei di investire qualche mesetto ad imparare il C, la gestione della memoria è troppo utile da sapere se si vuole diventare dei bravi programmatori. Anche sporcarsi le mani con algoritmica non sarebbe male.

4 - Informatico > programmatore > smanettone
Una cosa deve essere estremamente chiara: programmare != scrivere codice.
Pensi davvero che programmare significhi conoscere la sintassi di un linguaggio? Magari. Magari amico mio fosse così. Scrivere il codice non è che la punta dell'iceberg di quel processo che per il 90% richiede la comprensione del problema, l'individuazione del modo migliore per risolverlo, la progetttazione, la scelta del linguaggio più adatto. E poi, l'ottimizzazione, la messa in sicurezza, la documentazione, ...

5 - Anche Python, come tutti i linguaggi, ha degli svantaggi
- E' lento, è un linguaggio interpretato, è lento di brutto fidati. Va bene per robetta da nulla ma per roba grossa è un problema. Sì è vero, ci sono metodi di ottimizzazione ma... E' LENTO.
- Richiede molto testing e ci possono essere errori insidiosi.
- Non riesce a distinguere tra dichiarazione e utilizzo di una variabile.
- Non permette di maneggiare facilmente la memoria.
- L'OOP a mio avviso pecca un po' rispetto ad altri linguaggi.

Bene ragazzi, questa è la mia visione. Voi invece cosa ne pensate?​
 
Vorrei sollevare un un altro paio di punti e aprire uno spunto di discussione su alcune delle tue osservazioni.

Perché Python è così popolare?
Al contrario di quel che possa sembrare, Python è un linguaggio vecchio: è nato nel 1991. Per dare un minimo di contesto storico, vi ricordo che il C è stato standardizzato appena 2 anni prima, il Java è nato 4 anni dopo, il C# quasi 10 anni dopo e i linguaggi considerati moderni sono nati non più di 10 anni fa (e.g., Swift nel 2014). È rimasto in ombra per almeno 13-15 anni. Ha iniziato ad essere un linguaggio di successo attorno al 2004 - 2005, quando Google ha iniziato ad usarlo pesantemente. Il tizio che ha creato Python era stato assunto da Google. Il botto l'ha fatto negli ultimi 5 anni, quando il machine learning è diventato un topic caldo e dato che le principali librerie implementano algoritmi di questo tipo (e.g., TensorFlow by Google) sono scritte proprio per quel linguaggio.

È veramente lento?
Sì, ma no. Python in sé è molto lento, ma le sue librerie principali sono molto veloci. Se fate machine learning con TensorFlow state scrivendo codice Python, ma state utilizzando compilato e altamente ottimizzato. In questo caso, passare da Python (molto lento) ad assembly (molto veloce) vi porterà a scrivere codice tanto più lungo e complesso quanto più lento.

Dovrei sceglierlo come primo linguaggio da imparare?
Non sono in disaccordo con la tua opinione, però: informatico > programmatore > smanettone. Siamo sicuri che è indispensabile capire come funziona un computer per diventare un buon informatico?

Tra i punti a sfavore, aggiungo che in generale Python è un linguaggio poco adatto a scrivere tante linee di codice. Finché si parla di poche centinaia di righe di codice va tutto liscio, ma quando inizi a scrivere programmi un po' più grandi la storia cambia. Con un linguaggio come Java, ad esempio, è molto più semplice mantenere una codebase molto più corposa.
 
  • Mi piace
Reazioni: 0xbro e N3v5
Vorrei sollevare un un altro paio di punti e aprire uno spunto di discussione su alcune delle tue osservazioni.

Perché Python è così popolare?
Al contrario di quel che possa sembrare, Python è un linguaggio vecchio: è nato nel 1991. Per dare un minimo di contesto storico, vi ricordo che il C è stato standardizzato appena 2 anni prima, il Java è nato 4 anni dopo, il C# quasi 10 anni dopo e i linguaggi considerati moderni sono nati non più di 10 anni fa (e.g., Swift nel 2014). È rimasto in ombra per almeno 13-15 anni. Ha iniziato ad essere un linguaggio di successo attorno al 2004 - 2005, quando Google ha iniziato ad usarlo pesantemente. Il tizio che ha creato Python era stato assunto da Google. Il botto l'ha fatto negli ultimi 5 anni, quando il machine learning è diventato un topic caldo e dato che le principali librerie implementano algoritmi di questo tipo (e.g., TensorFlow by Google) sono scritte proprio per quel linguaggio.

È veramente lento?
Sì, ma no. Python in sé è molto lento, ma le sue librerie principali sono molto veloci. Se fate machine learning con TensorFlow state scrivendo codice Python, ma state utilizzando compilato e altamente ottimizzato. In questo caso, passare da Python (molto lento) ad assembly (molto veloce) vi porterà a scrivere codice tanto più lungo e complesso quanto più lento.

Dovrei sceglierlo come primo linguaggio da imparare?
Non sono in disaccordo con la tua opinione, però: informatico > programmatore > smanettone. Siamo sicuri che è indispensabile capire come funziona un computer per diventare un buon informatico?

Tra i punti a sfavore, aggiungo che in generale Python è un linguaggio poco adatto a scrivere tante linee di codice. Finché si parla di poche centinaia di righe di codice va tutto liscio, ma quando inizi a scrivere programmi un po' più grandi la storia cambia. Con un linguaggio come Java, ad esempio, è molto più semplice mantenere una codebase molto più corposa.
Giuste osservazioni, mi trovi d'accordo