Robotica & Python: vantaggi e svantaggi

Quando si parla di robotica si sente sempre più spesso parlare del Python come linguaggio specifico. In realtà Python non nasce in questo contesto ma ne è diventato un forte elemento. Vediamo perché.

Innanzi tutto, cerchiamo di capire perché Python si sta diffondendo con molta velocità tra sviluppatori esperti e non:

Vantaggi:

  • nasce come linguaggio imperativo: un po’ come negli algoritmi che disegniamo si specificano istruzioni con un ordine logico di esecuzione
  • pronto per la programmazione ad oggetti e quella più classica strutturata con le classiche funzioni, moduli, e vari altri paradigmi di minor interesse per noi (funzionale, aspect-oriented)
  • ha gli stessi operatori per la gestione e controllo del flusso dei linguaggi storici (condizioni, cicli ed in particolare iterazione su strutture dati particolari, eccezioni)
  • ha vari tipi di dato base: numerici, stringhe ed alcune complesse molto interessanti quali liste, tuple, map (dizionari chiave->valore) e set
  • è interpretato ma col CPython si possono raggiungere prestazioni eccellenti
  • obbliga gli sviluppatori ad indentare il codice ed ad aumentare la leggibilità ed organizzazione dello stesso
  • è semplice ed intuitivo che incoraggia soprattutto i meno informatici, premiati dal raggiungimento di piccoli traguardi con poche istruzioni
  • si può utilizzare per realizzare prototipi da scrivere poi con linguaggi più specifici

Svantaggi:

  • in python il typing è dinamico con controllo a tempo di esecuzione. Imparare in un secondo tempo la “tipizzazione” potrebbe essere un problema
  • come in java ed altri, la gestione automatica della memoria semplifica parecchio la vita, specie agli inizi. La gestione delle risorse che siano file handle, lock, semafori o altro ancora ci sono e prima o poi si devono comunque affrontare
  • non ha modo di spiegare bene il concetto di riferimento, i vari operatori &, * tanto temuti da tutti gli studenti ma molto formativi e performanti
  • ha una valanga di librerie che fanno tanto lavoro per noi ma di cosa accade sotto non è facile capirlo
  • ha bisogno di un interprete che può occupare/consumare memoria o richiedere un sistema più complesso soprattutto su dispositivi embedded come Arduino o Esp32 o Micro:bit
  • bello, facile, agile ma non può sostituire le performance del C/C++

Perché si sta diffondendo:

  1. E’ uno dei linguaggi più utilizzati nel Data Science, la gestione dei dati e delle informazioni invisibili in essi contenuti
  2. È uno dei linguaggi usati nel Machine Learning, tecnologie necessarie nel mondo della robotica e non solo
  3. È uno dei linguaggi supportati da ROS (Robot Operating System). ROS è un framework, un insieme di programmi, sottoprogrammi vari già disponibili, diventato lo standard per lo sviluppo di applicazioni robotiche nel mondo accademico e dell’industria (anche nei veicoli Lego!)
  4. E’ molto educativo sin dalle medie/elementari con kit di robottini che avvicinano i bimbi al coding

 

Ultima modifica 17 Gennaio 2022