JUG Sardegna supports Devoxx 2012
Vuoi ricevere uno zainetto? Clicca qui

Java User Groups
Java.net Partner
Get Firefox!

Intervista Armano

In occasione del SeminarioPython, siamo lieti di proporvi un'intervista che il Professor Giuliano Armano, professore associato nel settore disciplinare "Sistemi di Elaborazione delle Informazioni" presso il Dipartimento di Ingegneria Elettrica ed Elettronica (DIEE) dell'Università di Cagliari, ci ha gentilmente rilasciato.

La presente vuole essere la prima di una serie di interviste alle persone più autorevoli e rappresentative del panorama informatico sardo, che speriamo di potervi presentare nei prossimi mesi.


Prof. G.Armano
Prof. G.Armano

JUG: Prof. Armano, qual'è l'obiettivo del presente seminario?
Armano: LÂ’obiettivo è quello di favorire la diffusione delle conoscenze sulla tecnologia orientata agli oggetti, con particolare riferimento ai linguaggi che presentano caratteristiche di versatilità e usabilità elevate. Tra questi Python è probabilmente uno dei più indicati, per la sua naturale predisposizione ad essere usato per la prototipizzazione veloce e lo scripting, senza però precludere la possibilità di utilizzarlo per la programmazione “in grande”.

Quali sono i requisiti di skill per iniziare a programmare in Python?
Per iniziare a programmare in Python è opportuno essere almeno a conoscenza dei concetti fondamentali che caratterizzano la programmazione object oriented.

Si tratta di un linguaggio dalla sintassi "leggera" come PHP e VB, oppure "strong" come Java e C++ ?
La sintassi di Python è relativamente semplice e naturale. Per quanto riguarda i controlli di tipo, occorre dire che in Python le variabili sono completamente polimorfe; per intenderci come in Smalltalk e CLOS. Di fatto, quindi, i controlli di tipo sono necessari soltanto per l'individuazione del metodo da applicare in presenza di una gerarchia di classi.

Può dirci brevemente quali sono le caratteristiche OOP di Python ?
Python non è un linguaggio facilmente inquadrabile, anche dal punto di vista OOP. Le caratteristiche di base sono l'eredità multipla e il supporto al polimorfismo per inclusione. Per quanto riguarda le tecniche avanzate, vorrei sottolineare la possibilità di agire sulla rappresentazione delle classi e degli oggetti tramite l'introspezione e la meta-programmazione. In questo ambito Python rivela forti somiglianze con Smalltalk e CLOS.

Quali sono le differenze sostanziali tra Python e Java ?
Innanzitutto occorre dire che Python è effettivamente un linguaggio interpretato, mentre in Java l'esecuzione di un programma è comunque basata sull'esistenza della corrispondente JVM. Inoltre Python è un linguaggio multiparadigma, cioé offre la possibilità di utilizzare differenti stili di programmazione (procedurale, ad oggetti, e funzionale). Un'altra differenza importante consiste nel fatto che Python non è “strongly typed” come Java, e questo si riflette positivamente sulla complessità strutturale (e la lunghezza) dei programmi. Le classi e gli oggetti sono inoltre soggetti a cambiamenti in tempo di esecuzione (ad esempio l'aggiunta di uno slot o la sostituzione di un metodo). Python può essere usato con successo anche come “glue” in un progetto in cui vengono utilizzati linguaggi diversi, per la sua capacità di invocare in modo semplice oggetti e servizi eterogenei, ad esempio sviluppati in Java o C++.

Ritiene che Python sia un linguaggio che garantisca livelli di scalabilità, affidabilità, sicurezza e soprattutto supporto paragonabili a Java ?
Python garantisce indubbiamente un buon livello di scalabità e affidabilità, avendo ormai raggiunto un buon livelo di maturità. Non si può dire altrettanto in termini di sicurezza e di supporto, aspetti in cui Java è sicuramente in netto vantaggio.
 
"Python garantisce indubbiamente un buon livello di scalabità e affidabilità [...]"

"Il livello di maturità di Python per le applicazioni web service è ormai elevato"
 

Quali ritiene siano i settori in cui Python si rivela più efficace (web/standalone/client-server/embedded)? E' indicato per applicazioni realtime ?
Python è molto efficace in ambito client-server, in cui si possono apprezzare la ricchezza e la semplicità dÂ’utilizzo delle librerie standard di networking, ma è anche molto indicato per la creazione di applicazioni standalone che richedano tempi rapidi di sviluppo. Non è generalmente indicato per applicazione di real-time stretto, in quanto la sua semplicità e versatilità si pagano in termini di efficienza.

E' possibile integrare applicazioni Python in Java o viceversa? Lo consiglierebbe ?
Sì, è possibile; in particolare utilizzando il compilatore Jython (http://www.jython.org/), scritto interamente in Java. L'opportunità di ricorrere ad applicazioni scritte in linguaggi diversi va comunque valutata in fase di modellazione del sistema.

Come si propone Python riguardo alla tecnologia web services ?
Il livello di maturità di Python per le applicazioni web service è ormai elevato. A puro titolo di esempio ricordo che Zope (http://www.zope.org) è stato scritto interamente in Python. Anche molti servizi di Google sono stati scritti in Python.

A differenza di altri linguaggi "sponsorizzati" dalle grosse aziende (Java, VB, Delphi, C#), oppure storici come il C/C++, ritiene che Python potrebbe soffrire dello stesso male di Smalltalk, ovvero la mancanza di un grosso nome alle sue spalle?
In effetti Python, a differenza di Java, ha sofferto della mancanza di un grosso nome. Tuttavia Python ha dalla sua parte tutti i vantaggi derivanti dal tipo di licenza open source; non ultimo il supporto da parte di una comunità di esperti e sviluppatori del progetto che è in costante crescita.

Successivamente al presente seminario, è a conoscenza di futuri programmi dell'Università di Cagliari che riguardino Python?
Al momento non sono a conoscenza di programmi futuri riguardanti Python, e spero vivamente che l'iniziativa in corso contribuisca ad aumentare l'interesse per questo linguaggio. A questo proposito ricordo con piacere la mia decisione di introdurre UML nel corso di Ingegneria del Software –di cui ero supplente nel “lontano” anno accademico 1996-97. Anche in quel caso si è trattato di una scommessa (come Università di Cagliari siamo stati tra i primi ad introdurre UML in un corso universitario, seguiti poi da tutti gli altri negli anni successivi). Mi auguro che la stessa cosa si possa ripetere con Python, anche se –al momento– non ci sono ancora segnali forti in questa direzione.


Si ringraziano il Prof.Armano ed EloisaVargiu per la disponibilità e la collaborazione.

IntervistaArmano is mentioned on: SeminarioPython


VeryQuickWiki Version 2.7.8 | Admin
Copyright © 2003-20011 Java User Group Sardegna Onlus. - Java, the Java Coffee Cup Logo and the Duke Logo are trademarks or registered trademarks of Oracle corporation in the U.S. and other countries.