Python: l'ecosistema a supporto del business!
Le imprese italiane, spinte anche dalla pandemia da Covid-19, stanno prendendo sempre più coscienza dell’importanza di introdurre al loro interno le tecnologie digitali.
Grazie alle opportunità offerte dalle tecnologie digitali possono aumentare le proprie prestazioni, continuare ad essere competitive sul mercato e salvaguardare la propria marginalità.
Ma quando in azienda si adotta una nuova tecnologia digitale si è vincolati sia al numero di funzionalità che il produttore ha reso disponibili sia alla sua capacità di integrarsi con altri sistemi informativi e tecnologie attualmente presenti. Se le funzionalità fornite non sono sufficienti oppure vanno adattate alle necessità dell’azienda bisogna chiedere al produttore una costosa personalizzazione o attendere una nuova versione. Ciò comporta l’insoddisfazione degli utenti, l’allungamento dei tempi di progetto e la compromissione dei benefici per il business dell’azienda.
L’ideale sarebbe quindi poter ridurre la dipendenza da tecnologie proprietarie.
A quale tecnologia digitale affidarsi dunque?
Da diversi anni Python è una tecnologia che si è dimostrata efficace e pervasiva nella ricerca scientifica ma anche nelle aziende ormai annovera molti casi di successo: dalle infrastrutture dei social network all’e-commerce; dalle applicazioni gestionali all’intelligenza artificiale.
Attorno a questo linguaggio si è venuto a creare nel tempo un intero ecosistema che può essere liberamente e a costi decisamente contenuti utilizzato per supportare l’azienda nel raggiungimento dei suoi obiettivi strategici.
Prima di trattare come è fatto questo ecosistema vado brevemente ad indicare quali sono in generale le caratteristiche ed i vantaggi di Python.
Python: caratteristiche e vantaggi
Python è un linguaggio di programmazione versatile multi-piattaforma e utilizzabile per molti tipi di sviluppo software che si distingue per il suo codice leggibile e pulito. Uno dei motivi del suo successo è che ha una licenza open source che ne consente l’utilizzo in qualsiasi scenario.
Offre un forte supporto all'integrazione con altri linguaggi e programmi, è fornito di una estesa libreria standard e può essere imparato in pochi giorni. Molti programmatori Python possono confermare un sostanziale aumento di produttività e ritengono che il linguaggio incoraggi allo sviluppo di codice di qualità e manutenibilità superiori.
I principali vantaggi di Python sono i seguenti:
- Semplicità e velocità: semplifica notevolmente la programmazione ed è un ottimo linguaggio per lo script.
- Flessibilità: offre molte possibilità al programmatore grazie alla sua facile leggibilità e interpretabilità.
- Programmazione produttiva: è molto facile iniziare a programmare e promuove la produttività.
- Ordine e pulizia: è molto leggibile e i suoi moduli sono ben organizzati.
- Portabilità: essendo un linguaggio interpretato lo si può utilizzare praticamente con qualsiasi sistema come Unix, Linux, Windows, DOS, Macintosh, Sistemi Real Time, OS/2, cellulari Android e iOS.
- Community ampia ed attiva: ha un gran numero di utenti e tale comunità partecipa attivamente allo sviluppo del linguaggio.
Oltre a ciò, programmare in Python viene insegnato nelle scuole e nelle università di tutto il mondo e le più grandi aziende ne fanno un uso intensivo.
Tutti questi motivi combinati rendono l’utilizzo di Python una valida opzione per la realizzazione di idee o prodotti.
L’ecosistema basato su Python
Ora che abbiamo chiaro in mente quali sono le caratteristiche di Python ed i suoi vantaggi principali risulterà più facile apprezzare l’ecosistema che si è venuto a creare intorno ad esso.
La dotazione standard e le librerie di terze parti completano Python con funzionalità che lo rendono uno strumento duttile in svariati ambiti.
L'ecosistema di Python fornisce un ricco set di framework, strumenti e librerie che consentono di scrivere quasi ogni tipo di applicazione. Si può utilizzare Python per diversi scopi, dallo sviluppo web alla scienza dei dati, all'apprendimento automatico e alla robotica. I casi d'uso reali di Python sono illimitati. È possibile persino usare Python per creare videogiochi.
Per apprezzare appieno il valore dell’ecosistema di Python andrò ad indicare per vari ambiti di utilizzo alcuni degli strumenti messi a disposizione.
Sviluppo applicazioni desktop con GUI
Supponiamo di voler realizzare delle applicazioni per ambienti desktop dotate di interfaccia utente grafica (GUI).
Per questo tipo di applicazioni Python offre una vasta gamma di librerie GUI, framework e toolkit tra cui scegliere. Tra queste una delle più utilizzate è PyQT.
Si tratta di una libreria che consente agli sviluppatori di creare interfacce utente grafiche (GUI) altamente personalizzabili in Python.
Gli elementi grafici (widget) PyQt possono essere creati in vari modi a seconda del livello di personalizzazione richiesto. Qt Designer è uno strumento utilizzato per progettare e creare GUI utilizzando un editor WYSIWYG ("quello che vedi è ciò che ottieni"). La creazione di widget utilizzando questo strumento intuitivo consente allo sviluppatore di iterare rapidamente sui progetti visualizzando un feedback immediato.
Sviluppo applicazioni web
Nel caso in cui volessimo realizzare applicazioni web è possibile trovare diversi framework, librerie e strumenti Python utili a questo scopo. Uno dei framework più popolari in questo ambito è Django.
Si tratta di un framework web di alto livello che incoraggia uno sviluppo rapido e un design pulito e pragmatico. Django è stato progettato per aiutare gli sviluppatori a portare le applicazioni web dall'ideazione al completamento il più rapidamente possibile.
Django include dozzine di extra che puoi utilizzare per gestire le comuni attività di sviluppo web: si occupa dell'autenticazione degli utenti, dell'amministrazione dei contenuti, delle mappe dei siti, dei feed RSS e di molte altre attività, immediatamente.
Anche gli aspetti di sicurezza sono presi in seria considerazione infatti Django aiuta gli sviluppatori a evitare molti errori di sicurezza comuni, come SQL injection, cross-site scripting, falsificazione di richieste cross-site e clickjacking. Il suo sistema di autenticazione utente fornisce un modo sicuro per gestire account utente e password.
Grazie alla sua incredibile versatilità aziende, organizzazioni e governi lo utilizzano per costruire ogni sorta di cose, dai sistemi di gestione dei contenuti ai social network alle piattaforme di calcolo scientifico.
Sviluppo applicazioni mobili multi-touch
Anche per lo sviluppo di applicazioni mobili l’ecosistema di Python fornisce diversi framework, librerie e strumenti.
Kivy è un framework multi-piattaforma open source per lo sviluppo di applicazioni che utilizzano interfacce utente innovative e multi-touch. L'obiettivo è consentire un design dell'interazione rapido e semplice ed una prototipazione rapida, rendendo il codice riutilizzabile e distribuibile.
Consigliati da LinkedIn
Kivy è basato su OpenGL ES 2, supporta vari dispositivi di input e ha una vasta libreria di widget. Con la stessa base di codice, è possibile scegliere come sistema target Windows, macOS, Linux, Raspberry Pi, Android e iOS.
Deep learning e Intelligenza Artificiale
L'apprendimento automatico può essere il primo passo per chi è interessato all'intelligenza artificiale. L'apprendimento automatico studia algoritmi che apprendono attraverso l'esperienza. Questi algoritmi creano modelli basati su campioni di dati di addestramento per fare previsioni e prendere decisioni.
Se ci si vuole cimentare in questo affascinante campo di applicazione allora si apprezzerà PyTorch.
Si tratta di un framework di machine learning open source che accelera il percorso dalla prototipazione della ricerca alla distribuzione in produzione.
PyTorch consente sia una sperimentazione rapida e flessibile sia una produzione efficiente attraverso un front-end intuitivo, formazione distribuita e un ecosistema di strumenti e librerie.
Analisi e visualizzazione di dati
L'analisi dei dati è un processo di raccolta, ispezione, pulizia, trasformazione e modellazione dei dati per scoprire informazioni utili, fare previsioni, arrivare a conclusioni, supportare i processi decisionali e altro ancora. L'analisi dei dati è strettamente correlata alla visualizzazione dei dati, che si occupa della rappresentazione grafica dei dati.
Tra le varie librerie messe a disposizione da Python una delle più utilizzate è Pandas.
È uno strumento open source potente e flessibile per l'analisi e la manipolazione dei dati. Fornisce strutture dati veloci, flessibili ed espressive per lavorare con dati relazionali o etichettati. In particolare, offre strutture dati e operazioni per manipolare tabelle numeriche e serie temporali.
Il nome deriva dal termine "panel data", termine econometrico per set di dati che include osservazioni su più periodi di tempo per gli stessi individui.
Basi di dati
La maggior parte delle applicazioni che si creano interagirà in qualche modo con i dati. Questa interazione avviene comunemente attraverso un sistema di gestione del database (DBMS) che consente di definire, creare, mantenere e controllare l'accesso al database o ai database.
Per connettere e manipolare i database con Python, esistono diverse opzioni che includono sia pacchetti di librerie standard che pacchetti e librerie di terze parti.
Per interagire con database SQL è possibile usare SQLAlchemy: un toolkit SQL Python e un mappatore relazionale a oggetti per database SQL che offre agli sviluppatori di applicazioni tutta la potenza e la flessibilità di SQL.
Fornisce una suite completa di modelli di persistenza a livello aziendale ben noti, progettati per un accesso al database efficiente e ad alte prestazioni, adattati in un linguaggio di dominio semplice.
L'approccio generale di SQLAlchemy è completamente diverso da quello della maggior parte degli altri strumenti SQL/ORM, radicato in un cosiddetto approccio orientato alla complementarità; invece di nascondere i dettagli SQL e relazionali degli oggetti dietro un muro di automazione, tutti i processi sono completamente esposti all'interno di una serie di strumenti componibili e trasparenti. La libreria si occupa di automatizzare le attività ridondanti mentre lo sviluppatore mantiene il controllo su come è organizzato il database e su come è costruito SQL.
Anche nel caso in cui la base di dati con cui si dovrà interagire sia di tipo NoSQL esistono diversi pacchetti e librerie che è possibile utilizzare.
Ad esempio per interagire con MongoDB, uno dei più noti database NoSQL, si può utilizzare PyMongo.
Si tratta di una distribuzione Python contenente strumenti per lavorare con i database MongoDB. Fornisce un driver Python nativo per questo tipo di sistema di database.
Informatica scientifica
Un altro campo in cui Python gioca un ruolo significativo è l'informatica scientifica. Gli scienziati utilizzano capacità di calcolo avanzate disponibili tramite supercomputer, cluster di computer e persino computer desktop e laptop per comprendere e risolvere problemi complessi.
Tra le tante librerie e strumenti disponibili per il calcolo scientifico si può utilizzare NumPy.
È un pacchetto fondamentale per il calcolo scientifico con Python. Offre funzioni matematiche complete, generatori di numeri casuali, routine di algebra lineare, trasformate di Fourier e altro ancora. Fornisce una sintassi di alto livello che lo rende accessibile e produttivo.
NumPy è uno dei moduli Python più diffusi, usati e apprezzati, al punto da essere praticamente immancabile in ogni progetto che abbia a che fare con il calcolo scientifico.
Robotica e sistemi embedded
Scrivere le proprie applicazioni per il Web o il desktop è interessante, ma scrivere codice che controlla il funzionamento dei sistemi hardware e dei robot può essere ancora più interessante! Campi come Internet of Things, domotica, auto a guida autonoma e robotica sono diventati sempre più popolari con i progressi della scienza e della tecnologia.
Python è gradualmente entrato nel mondo dei sensori, dei motori elettrici, dei circuiti, dei microcontrollori e dei robot. Oggi è possibile trovare diversi progetti Python che si muovono in quella direzione.
PythonRobotics è una raccolta di vari algoritmi di robotica con visualizzazioni. È focalizzato sulla navigazione autonoma. Il suo obiettivo è consentire di comprendere le idee di base dietro ogni algoritmo robotico che fornisce.
La programmazione di un robot è un passaggio importante durante la costruzione e il test dei robot. Con il linguaggio di programmazione Python e l'API dei componenti visivi, viene fornita una buona piattaforma per l'insegnamento, l'automazione e la post-elaborazione dei programmi robot. Invece di insegnare manualmente ogni istruzione a un robot, si può scrivere uno script che calcola, registra e simula un intero programma robot. Ciò consentirebbe di testare e visualizzare rapidamente la propria soluzione in simulazione, nonché di perfezionare il programma e la sua logica.
Conclusioni
Come si può vedere intorno al linguaggio Python si è venuto a creare un vasto e valido ecosistema di pacchetti, librerie e strumenti che possono essere utilizzati per aiutare le aziende nel tradurre in realtà idee o prodotti in tempi rapidi e a costi contenuti.
Il tutto senza doversi necessariamente legare ad una specifica tecnologia proprietaria che a volte comporta l’allungamento dei tempi di progetto e la compromissione dei benefici per il business dell’azienda.
Consulente tecnologico: aiuto le PMI a #risparmiareinnovando grazie all'Open Source - Innovation Manager - Formatore - Project Manager
2 anniTi ringrazio Dorian Lazzari di aver consigliato questo mio articolo!
R&D - aiuto a trasformare le idee in prodotti | Ingegnere Elettronico HW-FW | Controlli Automatici |Model Based Degin | Real Time HIL | innovation manager
3 anniInteressante punto di vista pensare Python come un ecosistema di soluzioni piuttosto che "semplicemente" un linguaggio di programmazione.
Consulente tecnologico: aiuto le PMI a #risparmiareinnovando grazie all'Open Source - Innovation Manager - Formatore - Project Manager
3 anniGrazie mille Luca Pelorosso per aver consigliato questo mio articolo!
Consulente tecnologico: aiuto le PMI a #risparmiareinnovando grazie all'Open Source - Innovation Manager - Formatore - Project Manager
3 anniTi ringrazio MAURO ZOIA di aver consigliato questo mio articolo!
Full remote freelance developer | Java backend | Spring framework | YouTube Creator |
3 anniCade proprio a fagiolo, dopo la discussione sulla calcolatrice.