Ricerca nel sito web

Immergiti in profondità nel dibattito su Python e Perl: cosa dovrei imparare Python o Perl?


Spesso quando viene introdotto un nuovo linguaggio di programmazione, tra alcune delle menti geniali del settore inizia un dibattito in cui il linguaggio viene confrontato con quello che sta già diffondendo le sue radici. Una sorta di ronzio si diffonde spesso nel settore IT e il nuovo viene spesso confrontato su ogni aspetto, siano esse le funzionalità, la sintassi o gli aspetti della CPU e della memoria di base, incluso il tempo GC e tutto il resto, con quello esistente nel suo genere.

Molti esempi di questi casi possono essere ripresi e analizzati dal passato, incluso il dibattito tra Java e C#, C++, ecc. Uno di questi casi che ha attirato molta attenzione è stato il dibattito tra due linguaggi che sono emersi uno dopo l'altro in un breve lasso di tempo, ovvero Python e Perl.

Mentre Python è stato inventato inizialmente come successore del linguaggio ABC semplicemente come progetto di programmazione "hobby" (che avrebbe attirato gli hacker Unix/C) per l'autore che gli ha dato il nome serie della sua più grande star Monty Python.

Lettura consigliata: Introduzione alla programmazione e allo scripting Python in Linux

Perl era nato circa 2 anni prima come linguaggio di scripting Unix destinato a facilitare l'elaborazione dei report. Era un misto di una combinazione di molti linguaggi tra cui C, awk, sed e script di shell.

La cosa che vale la pena notare è che questi linguaggi che si sono evoluti con intenzioni diverse vengono costantemente confrontati, il che mi ha fatto studiare e capire le ragioni, di cui alcune importanti sono elencate di seguito:

  1. Entrambi hanno preso di mira il sistema operativo Unix, uno per gli hacker e altri per l'elaborazione dei rapporti.
  2. Entrambi sono orientati agli oggetti (Python è soprattutto) e interpretati, uno dei quali è fortemente tipizzato e chiaro quando si tratta di codificare, ad esempio Python, e l'altro consente una brutta digitazione con parentesi graffe per rappresentare un blocco, ad esempio Perl.
  3. Entrambi sono opposti in linea di principio quando diciamo che Perl ha molti modi di eseguire una singola attività mentre Python si concentra su uno e un solo modo di fare le cose.

Python vs Perl: funzionalità a confronto

Immergiamoci in profondità in questo dibattito e proviamo a capire gli aspetti generali in cui queste due lingue si differenziano l'una dall'altra. Inoltre, proviamo a scoprire la fonte della verità per molti cliché che si possono sentire nel settore dicendo "Python è Perl con le rotelle" o "Python è simile a Perl ma diverso ” in modo da poter provare a concludere con una soluzione accurata a questo dibattito senza fine.

1. Sintassi pulita di Python e complessa di Perl

Python ha un enorme vantaggio rispetto a Perl quando si tratta di leggibilità del codice. Il codice di Python è molto più chiaro da comprendere rispetto a quello di Perl anche quando si legge il codice dopo anni.

Con il rientro che rappresenta il blocco di codice e una struttura corretta, il codice di Python è molto più pulito. D'altra parte, Perl prende in prestito la sua sintassi da vari linguaggi di programmazione come  C, script di shell e persino filtri awk e sed quando si tratta di espressioni regolari.

Lettura consigliata: 15 comandi 'sed' utili per le attività quotidiane di amministrazione del sistema Linux

A parte questo, con '{' e '}' che rappresentano un blocco di codice e l'aggiunta non necessaria di ';' alla fine di ogni riga, il codice in Perl potrebbe diventare un problema da capire se lo leggi dopo mesi o anni a causa della sua tolleranza di brutti script.

2. Supporto integrato di Perl rispetto a Regex di terze parti e operazioni del sistema operativo di Python

Il linguaggio Perl prende in prestito la sua sintassi da C e altri comandi UNIX come sed, awk, ecc. grazie al quale ha un supporto regex molto potente e integrato senza importare moduli di terze parti.

Inoltre, Perl può gestire le operazioni del sistema operativo utilizzando le funzioni integrate. D'altra parte, Python dispone di librerie di terze parti per entrambe le operazioni, ad esempio re per regex e os, sys per operazioni os che necessitano di assicurarsi prima di effettuare tali operazioni.

Le operazioni regex di Perl hanno una sintassi simile a 'sed' che semplifica non solo le operazioni di ricerca ma anche la sostituzione, la sostituzione e altre operazioni su una stringa possono essere eseguite facilmente e rapidamente rispetto a Python dove una persona ha bisogno di sapere e ricordare le funzioni che soddisfano l'esigenza.

Esempio: Consideriamo un programma per cercare una cifra nella stringa in Perl e Python.

Import re
str = ‘hello0909there’
result = re.findall(‘\d+’,str)
print result
$string =  ‘hello0909there’;
$string =~ m/(\d+)/;
print “$& \n”

Come vedi, la sintassi per Perl è molto semplice e ispirata al comando sed che sfrutta la sintassi di Python che importa il modulo di terze parti 're'.

3. Programmazione OO avanzata di Python vs One-Liner di Perl

Una caratteristica in cui Python mette in ombra Perl è la sua programmazione OO avanzata. Python ha un ampio supporto di programmazione orientato agli oggetti con una sintassi pulita e coerente mentre l'oggetto OOP in Perl è obsoleto dove il pacchetto viene utilizzato come sostituto per le lezioni.

Lettura consigliata: Introduzione a Python Django Web Framework

Inoltre, scrivere codice OO in Perl aggiungerà molta più complessità al codice, il che renderebbe il codice difficile da capire, anche le subroutine in Perl sono molto difficili da programmare e alla fine difficili da capire in seguito.

D'altra parte, Perl è migliore per le sue battute che possono essere utilizzate sulla riga di comando per eseguire le varie attività. Inoltre, il codice Perl può eventualmente eseguire varie attività in meno righe di codice rispetto a Python.

Un esempio di shortcode di entrambi i linguaggi che evidenzia la capacità di Perl di fare di più con meno LOC:

try:
with open(“data.csv”) as f:
for line in f:
print line,
except Exception as e:
print "Can't open file - %s"%e
open(FILE,”%lt;inp.txt”) or die “Can’t open file”;
while(<FILE>) {
print “$_”; } 

Pro e contro: Python contro Perl

In questa sezione discuteremo i pro e i contro di Python e Perl.

PRO di Python:

  1. Ha una sintassi pulita ed elegante che rende questo linguaggio un'ottima scelta come primo linguaggio di programmazione per i principianti che vogliono toccare con mano qualsiasi linguaggio di programmazione.
  2. Ha una programmazione OO molto avanzata e intrinseca, inoltre la programmazione dei thread in Python è molto migliore di Perl.
  3. Esistono molte aree di applicazione in cui Python è preferito e addirittura surclassa Perl. Mi piace: Perl è preferito per lo scripting CGI, ma oggigiorno i linguaggi di scripting web simili a Django e web2py di Python stanno diventando sempre più popolari e hanno una grande attrazione da parte del settore.
  4. Ha diversi wrapper SWIG per diversi linguaggi di programmazione come CPython, IronPython e Jython e lo sviluppo di questi ha preceduto lo sviluppo di wrapper SWIG per Perl.
  5. Il codice Python è sempre ben rientrato e facile da leggere e comprendere anche se stai leggendo il codice di qualcun altro o anche il tuo codice dopo anni.
  6. Python è utile per varie applicazioni come Big Data, Infra Automation, Machine Learning, NLP, ecc., ha enorme supporto delle comunità attive perché Open Source.

CONTRO di Python:

  1. Ci sono alcune aree in cui l'esecuzione in Python è solitamente più lenta di quella in Perl, comprese le operazioni regex e basate su stringhe.
  2. A volte è difficile ottenere il tipo di variabile in Python poiché, nei casi di codice molto grande, bisogna arrivare fino alla fine per ottenere un tipo di variabile che diventa frenetico e complesso.

PRO Perl:

  1. Perl ha potenti one-liner e garantisce persino una sintassi simile a quella di UNIX che può essere utilizzata sulla riga di comando per eseguire varie attività, inoltre è influenzato da Unix e dalla sua programmazione da riga di comando, quindi integra molti comandi influenzati da UNIX nella sua codifica.
  2. Perl è noto per le sue potenti operazioni regex e di confronto di stringhe poiché è influenzato da sed e awk come potenti strumenti UNIX. Nel caso di operazioni regex e su stringhe come sostituzione, corrispondenza, sostituzione, Perl supera Python che richiederebbe alcune righe di codice per ottenere l'effetto Stesso. Inoltre, per molte operazioni di I/O sui file, la gestione delle eccezioni viene eseguita più velocemente su Perl.
  3. Quando si tratta di un linguaggio per la generazione di report, Perl è sempre stato famoso sin dalla sua introduzione come uno dei motivi principali per cui l'autore ha sviluppato un linguaggio come Perl lo era per la generazione di report.
  4. Molte aree applicative in cui Perl trova il suo utilizzo sono Programmazione di rete, Amministrazione di sistema, Scripting CGI (qui Python sta superando Perl con Django e web2py), eccetera.
  5. È facile identificare il tipo di variabile con i simboli che Perl utilizza prima di essi, come: '@' identifica gli array e '%' identifica gli hash.

CONTRO Perl:

  1. Perl ha un codice molto complesso che lo rende difficile da comprendere per un principiante. Le subroutine e anche altri simboli come: '$`', '$&' ecc. sono difficili da comprendere e programmare per un programmatore meno esperto. Inoltre, il codice Perl letto sarebbe difficile e complesso da comprendere a meno che tu non abbia un'esperienza di qualità.
  2. La programmazione OO in Perl è un po' obsoleta in quanto non è mai stata conosciuta per la programmazione OO e molte operazioni come il threading sono anche meno pronunciate su Perl.

Conclusione

Come visto sopra, dove entrambi i linguaggi sono buoni per quanto riguarda le applicazioni a cui si rivolgono, Python prende un po' di vantaggio rispetto a Perl come prima scelta per un principiante grazie alla sua codice pulito e di facile comprensione, mentre d'altra parte Perl supera Python quando si tratta di operazioni di manipolazione di stringhe e alcune battute avanzate per UNIX come il sistema operativo e varie altre operazioni per cui è noto.

Quindi, alla fine, dipende tutto dall’area specifica a cui ti rivolgi. Tutti i tuoi commenti su questo articolo sono benvenuti e ti chiederei di esprimere la tua opinione sull'argomento se secondo te vince Python o Perl.