Perl

3.4172862453612 (1076)
Inviato da nono 18/04/2009 @ 07:21

Tags : perl, programmazione, computer, high tech

ultime notizie
Disegnare grafici in Perl - Programmazione.it
Se lo script è stato scritto in Perl, abbiamo uno strumento per fare tutto in un sol colpo, ovvero Chart, uno dei tanti moduli di CPAN: scarichiamo l'occorrente con cpan Chart::Base e aiutiamoci con un articolo di Peyton McCullough per capire i...
Usa/ "Declassamento rating economia non ci preoccupa" - Affaritaliani.it
''No, non siamo preoccupati perl'eventuale cambiamento dei nostri rating'', ha detto ilportavoce della Casa Bianca, Robert Gibbs. S&P ha messo il rating della Gran Bretagna, attualmente allivello ''AAA'' sotto osservazione, rivedendo al...
Usare PHP nell'automazione, teoria e applicazioni - HostingTalk
La principale caratteristica di questo linguaggio che prende spunto dallo stile C e da quello di Perl, è che nativamente è pensato per l'integrazione all'interno di script html. Php è il linguaggio più utilizzato sulla rete nel caso in cui ci si...
BOLLETTINO UFFICIALE REGIONE VALLE D'AOSTA: SOMMARIO (2) - ANSA Valle d'Aosta
4 del 09.02.2009, trasmessa alla Regione per l'approvazione in data 11.02.2009. Deliberazione 10 aprile 2009, n. 923. Prelievo di somma dal fondo di riserva per le spese impreviste per l'anno 2009 e conseguente modifica al bilancio di gestione....
- DYSOTEK.EU: Sviluppo di applicazioni con ... - Comunicati-Stampa.net (Comunicati Stampa)
Presentazione del nuovo sito web, della software house Dysotek, dedicato allo sviluppo di siti ed applicazioni in ambiente LAMP: Linux, Apache, MySQL e PHP/Python/Perl. Le soluzioni che possiamo sviluppare per i nostri clienti vanno dai siti web per la...
L'UDC INCONTRA I CITTADINI - Agenfax
18/5) - Oggi lunedì 18 maggio, il candidato alla Presidenza alla Provincia perl' Udc, Giovanni Barosini, insieme ai candidati alle elezioni provinciali nei collegi di Alessandria, Roberto Barni, Marco Travaino, Alessandro De Faveri, Giuseppe Bianchini,...
Dentro Mac OS X 10.5.7 - ilMac.net
Sono 17.000 i file coinvolti dall'aggiornamento messo a punto dagli ingegneri Apple, e tra le tante novità sono state aggiornate le libreria Python, Perl, Ruby, mentre PHP passa alla versione 5.2.8 e Apache alla 2.2.11. Se questo vi sembra arabo,...
GP Monaco, Prove Libere 3: Alonso il piu' veloce - F1grandprix.it
Ottavo e decimo tempo perl e Red Bull di Vettel e Webber, divisi dalla Williams di Rosberg. Le Toyota di Trulli e Glock si sono portate in testa inizialmente ma dopo i primi 15 minuti hanno ceduto il passo ad Hamilton, rimasto in testa a lungo,...
Opel/ Governo tedesco, nessuna preferenza sulle offerte - Affaritaliani.it
Queste dichiarazioni arrivanosuccessivamente a quelle del premier del lender tedescodell'Assia di stamane, che segnalavano una preferenza perl'offerta presentata da Magna rispetto a quella della Fiat.Secondo Roland Koch, appunto, c'e' ''una chiara...

Perl

Perl è un linguaggio di programmazione ad alto livello, dinamico, procedurale e interpretato, creato nel 1987 da Larry Wall. Perl ha un singolare insieme di funzionalità ereditate da C, scripting shell Unix (sh), awk, sed e in diversa misura da molti altri linguaggi di programmazione, compresi alcuni linguaggi funzionali.

Benché sia molto noto come linguaggio per lo sviluppo di CGI, Perl è stato creato inizialmente come ausilio ai sistemisti, come linguaggio di manipolazione di testo e file. Infatti è anche detto Practical Extraction and Report Language, ma questo è un acronimo assegnato dopo la creazione del nome o, in inglese, un "backronym". Pertanto secondo la documentazione stessa di Perl, non vi si dovrebbe mai riferire come "PERL", ma come "Perl" o "perl" a seconda che si intenda il linguaggio in quanto tale o una specifica implementazione rispettivamente. È anzi questa un'informazione utilizzata negli ambienti perlistici per distinguere "chi è del giro" da chi non lo è.

Si è evoluto nel tempo, anche grazie ad un potente sistema di moduli, in un linguaggio a carattere più generale, comprendente l'elaborazione di immagini, l'interrogazione di banche dati, i processi di comunicazione via rete, ed utilizzabile in tutti quegli ambiti in cui non siano strettamente necessarie le performance di un linguaggio compilato più a basso livello, offrendo al contempo tempi di sviluppo molto più rapidi. È quindi anche utilizzato per la prototipizzazione di programmi da implementarsi in altri linguaggi.

Il linguaggio è stato pensato per essere pratico (facile da usare, efficiente, completo) oltre che bello e "magico" (è questo un concetto tipicamente perlistico); esso non è mai stato pensato per essere compatto, elegante o minimale, infatti il suo motto più distintivo è riassunto nell'acronimo TMTOWTDI (There is More Than One Way To Do It), che in inglese molto indicativamente significa "c'è più di un modo per farlo". Tuttavia uno dei suoi maggior pregi è che grazie a tale ricchezza consente di risolvere con grande semplicità ed eleganza problemi che con altri linguaggi richiederebbero notevoli sforzi. Infatti Larry Wall ama ripetere che uno dei suoi obiettivi è "rendere le cose facili, facili e quelle difficili, possibili".

Perl supporta sia il paradigma procedurale che quello ad oggetti, ha potenti funzioni per l'elaborazione dei testi ed è dotato di una della maggiori collezioni di moduli prodotte dalla sua vasta comunità di utenti.

Se a prima vista il Perl appare largamente derivato dal C, in verità ha ricevuto questa somiglianza mediata dai linguaggi di scripting delle shell. Perl è un linguaggio procedurale non tipizzato con variabili, espressioni, assegnamenti, blocchi delimitati da graffe, strutture di controllo e subroutine. Queste ultime possono essere intese come funzioni e il Perl ha numerose doti mediate dai linguaggi funzionali.

Le variabili hanno un prefisso ($ per variabili scalari, @ per array, % per hash) detto sigillo e se questo in parte ha determinato la ricchezza sintattica del Perl, permette l'interpolazione delle variabili nelle stringhe. Come le shell Unix, Perl è dotato di molte funzioni di serie per i compiti più comuni come ordinamento ed accesso al sistema operativo. (In verità solo 279 nel nucleo principale del perl, contro le oltre 3000 del PHP).

Perl ha preso i vettori associativi (conosciuti come 'hash') da awk e le espressioni regolari da sed. Queste semplificano e facilitano molto il parsing ed i compiti di trattamento del testo e dei dati.

Inoltre c'è la possibilità di integrare codice scritto in C in un programma Perl così come viceversa (aggiungere o riscrivere parti in C/C++ in applicazioni o package Perl, o inserire un embedded Perl in programmi C). In verità con i moduli Inline:: sono diversi i linguaggi in cui possono essere definite le funzioni di un sorgente Perl.

Perl è comunemente ritenuto un linguaggio interpretato, ossia che per essere eseguito viene interpretato al momento dell'esecuzione. In realtà, la prima cosa che fa l'interprete è di trasformare il codice sorgente in bytecode, un po' come Java; sul bytecode crea un grafo intermedio sul quale applica ottimizzazioni, ed è questo grafo ad essere interpretato. Questo approccio permette di limitare la lentezza tipica dei linguaggi interpretati. La versione del Perl 6, in via di sviluppo da alcuni anni, divide l'esecutore del bytecode (o virtual machine) dal linguaggio in modo tale da permetterne l'utilizzo anche da compilatori di altri linguaggi, tra cui Tcl, Python, Java, etc.

La virtual machine che ne deriva sarà una nuova base per lo sviluppo di linguaggi liberi e consentirà livelli di ottimizzazioni molto elevati e indipendenza dallo sviluppo dei linguaggi sovrastanti. Nonostante il Perl 6 non sia ancora rilasciato, alcune idee sono percolate nella versione stabile del Perl 5.8 e molte altre avranno un riscontro in Perl 5.10. Un prototipo del Perl 6, chiamato Pugs, è stato sviluppato in Haskell e si sta verificando una interessante fertilizzazione reciproca tra le due comunità (Perl ed Haskell).

Ancora una volta è stato messo in evidenza come il Perl sia un linguaggio "socievole", che tende quindi a interagire con gli altri linguaggi e ambienti di sviluppo, siano essi: dialetti shell, altri linguaggi interpretati, linguaggi specializzati (come l'SQL), o i più comuni linguaggi compilati. Questa è la ragione che determina il successo di Perl nell'integrazione di sistemi diversi.

Perl è nato in ambiente Unix e distribuito contemporaneamente con due licenze liberali, la GPL e la Licenza Artistica, è disponibile anche per i sistemi operativi Microsoft Windows e MacOS precedente alla versione MacOS X (che appartiene alla famiglia Unix). L'implementazione per Windows più diffusa viene distribuita da una società, la ActiveState, che da un lato offre con una licenza open source moduli specifici per il sistema operativo Windows, dall'altro vende degli ambienti di sviluppo integrati, sia per Perl che per altri linguaggi open source quali ad esempio Python e Tcl.

Wall - che per formazione è un linguista - ritiene questa libertà semantica un pregio, in quanto più simile al linguaggio umano. Un ulteriore aspetto positivo che attrae i programmatori è l'ampia disponibilità di moduli rilasciati con licenze open source, quasi sempre le stesse di Perl. Moduli solitamente documentati bene, in quanto il linguaggio stesso offre il Pod, un modo di includere la documentazione all'interno del codice, garantendo cosí che assieme al modulo ci sia pure la documentazione. La comunità ha creato un sito particolare, chiamato CPAN, il quale organizza per argomenti i moduli ritenuti particolarmente validi. I moduli stessi non sono archiviati in quel sito, ma rimangono sui siti scelti dai loro autori. Infine, in quanto linguaggio interpretato e dunque sempre distribuito con il codice sorgente visibile, favorisce la pratica liberale.

Alcune caratteristiche del Perl, tra cui la sintassi, permettono una sintesi raramente possibile con altri linguaggi ed impossibile con linguaggi tipo Java e i sorgenti possono dunque essere molto densi di significato, tanto da risultare criptici a chi non ne conosca i rudimenti. In compenso su Internet c'è così tanta documentazione sul Perl che è possibile avvicinarsi rapidamente al linguaggio e con opportuni testi di riferimento iniziarne la strada dell'apprendimento.

Il linguaggio e l'interprete vengono sviluppati da un gruppo di circa cento sviluppatori, guidati da Wall, il quale prende le decisioni finali su cosa includere nel codice. Gli sviluppatori hanno creato il Perl Institute per facilitare lo sviluppo di Perl e migliorarne la visibilità e organizzano conferenze. Wall stesso lavora per la O'Reilly, una casa editrice che sostiene attivamente il movimento Open Source.

Perl fa parte degli strumenti standard dei sistemi operativi Unix. Il suo aggiornamento può essere fatto sia da Internet che tramite le distribuzioni dei sistemi operativi liberi, quali GNU/Linux, BSD, ecc. Le versioni per Windows possono anch'esse essere scaricate da Internet. Ad alcuni manuali di Perl viene allegato un CD-Rom comprendente le versioni per diversi sistemi operativi e tutti i moduli compresi nel CPAN.

La comunità Perl è sovente attaccata per l'assenza di un IDE come quelli presenti per Java che rendano semplice l'avvicinamento al linguaggio da parte dei neofiti. In realtà la ricchezza espressiva del Perl rendono complicata la realizzazione di un IDE che evidenzi errori di costruzione degli statement, e dati i numerosi valori di default delle funzioni base risulterebbe oltremodo difficile comprendere in automatico cosa vuole ottenere il programmatore, dove c'è un errore o forse no. Tuttavia recentemente ad esempio Eclipse contiene una estensione per il Perl e forse altri seguiranno.

Gli sviluppatori Perl esperti in verità non sentono l'esigenza di strumenti diversi da vi o Emacs, e quest'ultimo in particolare permette di effettuare il debugging di ogni programma Perl, con narrowing, colorazione della sintassi, macro, breakpoint, single step etc.

Il seguente esempio stampa il testo "Hello world".

Da notare che la prima riga non è una direttiva per il linguaggio Perl, bensì un commento (il carattere "#" indica un commento). Questa riga, chiamata in gergo "shebang", viene interpretata da alcuni sistemi operativi e serve ad invocare il programma eseguibile del linguaggio Perl che eseguirà le righe successive.

In questo secondo caso notiamo come sia possibile scrivere lo stesso programma in un altro modo. Ovviamente esistono molti altre scritture di questo stesso breve programma.

Nota: la dichiarazione my non è strettamente necessaria a meno che non si utilizzi il modulo pragmatico strict, ma quest'ultimo è raccomandato dalla stragrande maggioranza di programmatori perl, insieme a warnings, poiché restringe la libertà del programmatore in modi che prevengono di compiere errori di programmazione banali ma molto comuni, obbligando a pratiche di programmazione più disciplinate che in altri linguaggi sono imposte di default.

Per la parte superiore



Martin Lewis Perl

Martin Perl - tau.jpg

Martin Perl (New York, 24 giugno 1927) è un fisico statunitense.

I suoi genitori erano di origine ebrea, e provenivano dall'area polacca della Russia. Intorno al 1900 fuggirono negli Stati Uniti, per scappare dalla povertà e dall'antisemitismo.

Perl si laureò nel 1948 al Politecnico di Brooklyn, e nel 1955 ottenne il dottorato di fisica dalla Columbia University. Lavorò per un po' di tempo all' University of Michigan, e poi allo SLAC (Stanford Linear Accelerator Center).

Nel 1995 gli venne assegnato il premio Nobel con Frederick Reines, per: «i loro contributi sperimentali pionieristici alla fisica dei leptoni». In particolare a Perl venne assegnato per la scoperta del leptone tau.

Per la parte superiore



Arnold Perl

Arnold Perl (14 aprile 1914 – 11 dicembre 1971) è stato un regista, sceneggiatore e produttore cinematografico statunitense.

Nel 1973 ricevette una nomination all'Oscar, per il documentario Malcolm X, narrante la vita del leader afroamericano. Nel 1970 scrisse la sceneggiatura di Pupe calde e mafia nera, diretto da Ossie Davis, considerato il capostipite della blaxploitation. Poco prima di morire scrisse la sceneggiatura di Malcolm X, film biografico diretto da Spike Lee nel 1992.

Per la parte superiore



Perl (Saarland)

Perl (Saarland) - Stemma

Perl è un comune tedesco di 6.666 abitanti, situato nel land del Saarland.

Per la parte superiore



Python

Immagine:python-logo.gif

Python è un linguaggio di programmazione ad alto livello interpretato creato da Guido van Rossum. Prende il nome dalla serie televisiva Monty Python's Flying Circus.

Python è un linguaggio multi-paradigma. Infatti permette in modo agevole di scrivere programmi seguendo il paradigma object oriented, oppure la programmazione strutturata, oppure la programmazione funzionale. Il controllo dei tipi è forte (strong typing) e viene eseguito runtime (dynamic typing). In altre parole una variabile può assumere nella sua storia valori di tipo diverso, tuttavia in ogni istante appartiene ad un tipo ben definito. Usa un garbage collector per la gestione automatica della memoria.

Python ha qualche similarità con Perl, ma i suoi progettisti hanno scelto la via di una sintassi più essenziale e uniforme, con l'obiettivo di aumentare la leggibilità del codice. Come il Perl spesso è classificato linguaggio di scripting, ma pur essendo utile per scrivere script di sistema (in alternativa ad esempio a bash), la grande quantità di librerie disponibili e la facilità con cui questo linguaggio permette di scrivere software modulare favoriscono anche lo sviluppo di applicazioni molto complesse.

Python ha un gran numero di tipi base. Oltre ai tipi interi e floating point classici, supporta in modo trasparente numeri interi arbitrariamente grandi e numeri complessi. Dalla versione 2.4 sono disponibili anche i numeri decimali (decimal), ovvero numeri con la virgola a precisione illimitata, come quelli disponibili in Rexx o in Cobol, che non soffrono di problemi di arrotondamento e stabilità tipici dei numeri floating point classici.

Supporta tutte le operazioni classiche sulle stringhe con una sola eccezione: le stringhe in Python sono oggetti immutabili, cosicché qualsiasi operazione che in qualche modo potrebbe alterare una stringa (come ad esempio la sostituzione di un carattere) restituirà invece una nuova stringa (come avviene in Java tramite la classe StringBuffer).

Essendo il Python a tipizzazione dinamica, tutte le variabili sono in realtà semplici puntatori ad oggetto (reference), sono gli oggetti invece ad essere dotati di tipo. Ad esempio ad una variabile cui era assegnato un intero, un istante dopo può essere assegnata una stringa o un array.

In Python c'è un moderato controllo dei tipi a runtime. Si ha conversione implicita per i tipi numerici, per cui si può ad esempio moltiplicare un numero complesso per un intero, ma non c'è ad esempio conversione implicita tra numeri e stringhe, per cui un numero è un argomento non valido per le operazioni su stringa (come avviene ad esempio in PHP).

Python ha una serie di tipi contenitori come ad esempio liste, tuple e dizionari. Essi sono sequenze e condividono la maggior parte dei metodi. Le liste sono array estendibili, invece le tuple sono array immutabili di lunghezza prefissata.

Altri contenitori di grande utilità sono i dizionari, conosciuti in altri contesti con il nome di hash table oppure array associativi. Gli elementi dei dizionari sono composti da una coppia di dati separati da due punti ':'. Il primo elemento della coppia rappresenta l' indice (detto 'chiave') mentre il secondo è il suo valore corrispondente. Ogni elemento è detto coppia chiave-valore.

Dopo questa istruzione il valore corrispondente a "wikipedia" è diventato 450000.

Il sistema dei tipi Python è ben integrato con il sistema delle classi. Anche se i tipi base non sono precisamente classi, una classe può ereditare da essi. In questo modo è possibile estendere stringhe, dizionari, ... o perfino gli interi. L'ereditarietà multipla è supportata.

Vengono supportate anche funzionalità estensive di introspezione sui tipi e sulle classi. I tipi e le classi sono a loro volta oggetti che possono essere esplorati e confrontati. Gli attributi sono gestiti in un dizionario.

Python è stato progettato in modo da essere altamente leggibile. Visivamente si presenta in modo molto semplice e ha pochi costrutti sintattici rispetto a molti altri linguaggi strutturati come C, Perl o Pascal.

Per esempio, Python ha solo due forme di ciclo: for che cicla sugli elementi di una lista o su di un iteratore (come il foreach del Perl) e while che cicla fin tanto che l'espressione booleana indicata risulterà vera. In sostanza manca dei cicli in stile C for, do...while, oppure di un until in stile Perl, ma tutti questi naturalmente possono essere espressi con dei semplici equivalenti. Allo stesso modo ha solamente il costrutto if...elif...else per le scelte condizionate, ma niente switch oppure goto.

Un aspetto inusuale del Python è il metodo che usa per delimitare i blocchi di programma, che lo rende unico fra i linguaggi più diffusi.

Nei linguaggi derivati dall'Algol -- come ad esempio Pascal, C e Perl -- i blocchi di codice sono indicati con le parentesi oppure con parole chiave (il C ed il Perl usano { }; il Pascal usa begin ed end). In questi linguaggi è solo una convenzione degli sviluppatori il fatto di indentare il codice interno ad un blocco, per metterlo in evidenza rispetto al codice circostante.

Python, invece, deriva il suo sistema di indentazione dal meno noto linguaggio di programmazione Occam: invece di usare parentesi o parole chiave, usa l'indentazione stessa per indicare i blocchi nidificati (si può usare sia una tabulazione, sia n spazi bianchi, ma lo standard Python è 4 spazi bianchi). L'esempio che segue chiarisce questo aspetto. Sono mostrate la versione C e Python di funzioni che fanno la stessa cosa: il calcolo del fattoriale di un intero.

All'inizio questo modo di indicare i blocchi può confondere le idee a chi viene da altri linguaggi, ma poi si rivela molto vantaggioso, perché risulta molto conciso e obbliga a scrivere sorgenti indentati correttamente, aumentando alquanto la leggibilità del codice. Lo svantaggio è che la gestione degli spazi e dei caratteri di tabulazione può essere diversa da un editor all'altro, il che costringe a fare attenzione nell'indentare il codice, oppure ad affidarsi alle funzioni di indentazione automatica ormai presenti nella maggior parte degli editor di programmi.

Dal momento che Python permette di avere funzioni come argomenti, è anche possibile avere costrutti funzionali più sottili, come ad esempio la continuation.

Python supporta e usa estensivamente la gestione delle eccezioni come un mezzo per controllare la presenza di eventuali condizioni di errore. Addirittura è possibile intercettare l'eccezione generata da un errore di sintassi (syntax error)!

Le eccezioni permettono un controllo degli errori più conciso ed affidabile rispetto a molti altri modi possibili usati in genere per segnalare errori o situazioni anomale. Le eccezioni sono thread-safe; non sovraccaricano il codice sorgente come fanno invece i controlli sui valori di errore ritornati, e inoltre possono facilmente propagarsi verso l'alto nello stack delle chiamate a funzione quando un errore deve venire segnalato ad un livello più alto del programma.

Spesso, invece che fare controlli preventivi, si esegue direttamente l'azione desiderata e si catturano le eventuali eccezioni che si possono verificare.

Python ha una vasta libreria standard, il che lo rende adatto a molti impieghi. Oltre ai moduli della libreria standard se ne possono aggiungere altri scritti in C oppure Python per soddisfare le proprie esigenze particolari. Tra i moduli già disponibili ce ne sono per scrivere applicazioni web (sono supportati MIME, HTTP e tutti gli altri standard internet). Sono disponibili anche moduli per creare applicazioni con interfaccia grafica, per connettersi a database relazionali, per usare le espressioni regolari e per fare molte altre cose.

La libreria standard è uno dei punti forti di Python. Essa infatti è compatibile con tutte le piattaforme, ad eccezione di poche funzioni, segnalate chiaramente nella documentazione come specifiche di una piattaforma particolare. Grazie a questo generalmente anche programmi Python molto grossi possono funzionare su Linux, Mac, Microsoft Windows e altre piattaforme senza dover essere modificati.

Come il Lisp e a differenza del Perl, l'interprete Python supporta anche un modo d'uso interattivo attraverso il quale è possibile inserire codice direttamente da un terminale, vedendo immediatamente il risultato. Questo è un bel vantaggio per chi sta imparando il linguaggio, ma anche per gli sviluppatori esperti: brevi tratti di codice possono essere provati in modo interattivo prima di essere integrati nel programma principale.

L'interprete è inoltre contenuto nella libreria standard, e come in molti altri linguaggi interpretati è possibile fargli valutare stringhe arbitrarie nel contesto corrente. È però possibile passare all'interprete anche un contesto completamente diverso, sotto forma di liste che contengono l'elenco dei simboli definiti.

Python dispone anche di un framework per lo unit testing che permette di creare serie esaustive di test.

Se paragonato ai linguaggi compilati statically typed, come ad esempio il C, la velocità di esecuzione non è uno dei punti di forza di Python, specie nel calcolo matematico. Esiste un'estensione, Psyco, che è una sorta di compilatore JIT e permette di velocizzare in modo notevole alcuni tipi di codice, specialmente l'implementazione di algoritmi, pur pagando un prezzo in termini di memoria utilizzata. Comunque, anche in questo modo un qualunque compito che preveda numerosi calcoli puri non è adatto ad un programma Python.

Le performance di Python sono invece allineate o addirittura superiori ad altri linguaggi interpretati, quali PHP e Ruby, e in certe condizioni può rivaleggiare anche con Java. Non va inoltre dimenticato che Python permette di aggirare in modo facile l'ostacolo delle performance pure: è infatti relativamente semplice scrivere un'estensione in C o C++ e poi utilizzarla all'interno di Python, sfruttando così l'elevata velocità di un linguaggio compilato solo nelle parti in cui effettivamente serve, e sfruttando invece la potenza e versatilità di Python per tutto il resto del software.

Il seguente esempio di programma Python (versione 3.0) stampa il testo "Hello, world!".

Per la parte superiore



Source : Wikipedia