domenica 18 aprile 2010

Introduzione a Python

Questo è un esperimento, non sono Knulp ma un suo ospite: juhan. Ringrazio Knulp della fiducia, tiro un profondo respiro, urlo internamente "Geronimo!" per farmi coraggio e vado. (In realtà sarebbe "Stella Rossa vince!" ma insomma...).

Allora Python. Perché Python è molto semplice come linguaggio e c'è un sacco di roba sul Web. Quindi potrei solo dire perché lo uso io e la cosa si risolve in due righe: è un linguaggio di scripting versatile e potente. Nel mondo Unix/Linux ne esistono tantissimi, da sempre, anche se spesso un tantino quirkosi, come awk e perl.
Python è più recente, più affine ai linguaggi di programmazione tradizionali e si presta ottimamente per le piccole utility di cui ognuno sente la necessità.

Un po' come il Basic di una volta. Le alternative potrebbero essere Ruby o Lua (o altri, non è che vado a caccia di questo genere di cose). In ogni caso sono script interpretati, cosa che ha i suoi vantaggi nella facile modificabilità e svantaggi come la lentezza di esecuzione. Ma negli ultimi tempi la tendenza è che siccome le macchine sono veloci...
Altro vantaggio, più che altro teorico nel mio caso, è che sono disponibili per i principali sistemi informativi: Linux, MacOS, Windows e altri mai visti (i vari Unix Sun, Hp, IBM). Questo è vero al 99.9% ma prima o poi capita che usate "/" al posto di "os.sep" o "C:" in un path o ipotizzate che "FOO" e "foo" siano diversi (o intercambiabili).

Sempre nel mio caso ho cominciato a usarlo quando sono passato a Linux e non avevo più a disposizione Delphi. (All'inizio, lo confesso, usavo Wine (che peraltro è ottimo)). Rispetto a Delphi manca un GUI/IDE che consente di costruire al volo le finestre e gli oggetti grafici trascinando e disegnando. Ci sono packages che permettono di fare quasi tutto (io uso wx, creato inizialmente per il C++) ma niente mouse, bisogna scrivere -- o copiare e adattare il template che si trova in rete.

Per farla breve in pochissimo tempo ho visto che era OK per le mie necessità, mi ha consentito di abbandonare (quasi completamente) Java; il C++ lo riservo per le cose grosse (in realtà non lo uso più).
Poi ci sono alternative più geek: Scheme, o newLISP ad es., ma aehm, come dire, ... (vedi Bill the Lizard o Programming Praxis per farti un'idea). Ho conosciuto un baldo giovanotto che faceva tutto con Scheme e una selva di parentesi, credo di avere ancora qualcosa di suo da qualche parte degli hard disks.


Ma da K&R in poi è d'obbligo introdurre il linguaggio in modo canonico:
allora ecco il solito "Hello world!"

(faccio riferimento a Linux, in particolare io uso Ubuntu, ma vale anche per gli altri SO.)

Il modo più semplice è di invocare l'interprete in modo interattivo:

$ python

Python 2.6.4 (r264:75706, Dec  7 2009, 18:45:15)
[GCC 4.4.1] on linux2
Type "help", "copyright", "credits" or "license"
for more information.
>>> print "Hello world!\n"
Hello world!

>>> exit()
$

(in neretto le parti da digitare.)

Ma il modo interattivo è comodo per cose estremamente veloci, tipo print 2**1001 ma diventa scomodo appena l'ammontare dei comandi cresce. Ed ecco allora giunto il momento di introdurre lo script.

Con il nostro editor preferito creiamo un file di testo (che chiamiamo hello.py) con il seguente contenuto:

#!/usr/bin/env python
# -*- coding: ISO-8859-1 -*-
print "Hello world!\n"
lo testiamo con:

$ python hello.py
Hello world!

$
con il terminale nella directory dove si trova il file, c'è bisogno di dirlo?
Se siamo in Unix/Linux possiamo rendere il file eseguibile con chmod +x hello.py in modo da poterlo eseguire con ./hello.py.

Semplice vero? (spero ci sia ancora qualcuno.)

Per finire un paio di link:

Python si trova all'URL http://www.python.org , dove c'è davvero tutto.
Io uso di solito i widgets di wx: http://docs.wxwidgets.org/ e http://wiki.wxpython.org/FrontPage.

Esistono infiniti esempi, come in http://www.daniweb.com/forums/forum114.html e il mio preferito
http://aciresnippets.wordpress.com/
di Jono Bacon.

À suivre, maybe.

4 commenti:

  1. Vedo che juhan è passato dall'altra parte della barricata. La cosa mi piace.
    Ho un caro amico che da anni mi spinge nelle braccia di Python. Io resisto, sono pigro. Per gli interessati, parlerà qui: http://www.pycon.it/conference/talks/undici-anni-di-lavoro-con-python

    RispondiElimina
  2. Peppe il mio è solo un esperimento, ho pasticciato (e si vede, atz!). E il tuo link intriga. Ma hai fatto Hello World!?
    Ammetto che esiste anche un modo più semplice: echo "Hello world!" ;-)

    RispondiElimina
  3. Ecco dov'eri, Juhan! Ma alla fine ti ho cuccato lo stesso. Hello world!

    RispondiElimina
  4. Ottimo post juhan :D

    Come diresti tu: "Juhan rock!!"

    Naturalmente il post è diretto a delle persone che si sono già sporcate un po le mani con linguaggi di programmazione (come il C o il java).

    Il sottoscritto che si è semplicemente infarinato le mani con il javascript a capito l'essenziale ma non gli sono sfuggite le graziose sfumaturedi ilarità presenti in questo e nell'altro post :D

    Detto questo mi metto nei bookmarks questo link e lo conservo per il futuro ;)

    RispondiElimina

Attenzione: I commenti a vecchi post potrebbero essere moderati