C'è qualche buona ragione per qualcuno che conosce Python per imparare Perl? [chiuso]

6

Lettura delle risposte a Python vs. Perl tra dieci anni qui su SE, molte persone sembrano dire di andare con Python. Sono d'accordo (mi dispiace per i fan di Perl ;-)). Conosco già Python, e penso che sia un ottimo linguaggio, certo, come ogni linguaggio di programmazione che fa viene fornito con i suoi difetti, ma quando ho provato Perl non mi è piaciuto così tanto come mi piaceva Python.

Io "conosco" C, Python, Java e Scheme e ho giocato con molte altre lingue. Ora, c'è qualche buona ragione per imparare l'inglese Perl? Che cos'è Perl "migliore" di Python?

Faccio sviluppo di applicazioni (hobby) e sto imparando anche lo sviluppo di alcuni sistemi (principalmente la programmazione per il kernel Linux).

Sono abbastanza sicuro che Perl non sia fondamentalmente abbastanza diverso da quello che conosco fino ad ora per allargare troppo la mia mente (probabilmente farei meglio concentrandomi su Haskell, Scala, Forth o qualcosa del genere a tale scopo).

    
posta Anto 04.04.2011 - 22:47
fonte

9 risposte

22

Dieci anni lungo la corsia ci sarà una domanda simile 'C'è qualche buona ragione per qualcuno che conosce il linguaggio X per imparare Python' o 'Cosa è Python' migliore 'della lingua X'? In altre parole all'interno del ciclo di hype sembra che una particolare tecnologia possa rimanere in giro per molto tempo. Mi fermerò a questo.

Dato che hai specificamente chiesto a Perl meglio di Python, ti darò il seguente elenco.

  1. Elaborazione del testo.
  2. Elaborazione avanzata del testo di vario genere. Grammatiche ecc.
  3. Più costrutti costrutti sintattici completi. Corrispondenza intelligente data-quando loop, Devel :: Dichiara, TIMTOWDI, filtri ecc.
  4. Un sistema di oggetti molto potente come Moose (Moosex-Declare with sugar).
  5. CPAN.
  6. Comunità e risorse come PerlMonks.
  7. Libertà, potenza e flessibilità.
  8. Rapido ritmo di sviluppo. Niente diventa più veloce di Perl se lo conosci correttamente.
  9. Configurazione su convenzione.
  10. Potenti funzionalità di programmazione funzionale.
  11. Script e prototipazione rapidi e sporchi.
  12. Lavori di sollevamento pesante.
  13. Perl ottiene lo scope migliore di Python.
  14. Non interrompe la compatibilità con le versioni precedenti.
  15. Nice framework per bambini fantastici.
  16. Terseness.
  17. È più veloce.
  18. Con le best practice è molto meglio di Python a causa delle caratteristiche di cui sopra.
  19. Psicologia Perl.
  20. Riferimenti.
  21. Progressi recenti come le parole chiave sintassi collegabili e le parole chiave "statiche".

etc ... ecc. la lista andrà avanti e avanti ...

Python ti costringe completamente a pensare in un modo, Perl ti dà la libertà di essere ciò che sei. Pensando in molti modi, alla fine inizi a pensare a modi migliori per risolvere il problema. Questo aiuta a sviluppare un buon senso di programmazione.

Sono entrambi programmatore Python e Perl. Non ho ancora trovato come Python sia migliore di Perl. Sembra pulito non significa che è pulito

Come ha detto Leo Tostoy.

È incredibile quanto sia completa l'illusione che la bellezza sia bontà.

link

    
risposta data 05.04.2011 - 05:12
fonte
9

Come qualcosa di un fan del Perl, imparalo se hai effettivamente bisogno di fare qualcosa in Perl (il tuo lavoro sta lavorando con Perl o devi lavorare su un sistema con Perl e non puoi installare Python per qualche motivo ).

Oltre a questo, sì, impara Haskell, Scala, Forth o qualcos'altro. Non c'è abbastanza nuovo in Perl per renderlo degno di essere studiato.

    
risposta data 04.04.2011 - 22:59
fonte
6

Conosco Perl, ma non avevo più avuto bisogno di usare le mie conoscenze in Perl per quasi un decennio. Per molto tempo la nicchia di Perl era un linguaggio di scripting per sistemi / strumenti di uso generale. Ma puoi vedere chiaramente, che lentamente, ma costantemente, viene sostituito da Python in quel ruolo.

Se fossi in te, preferirei andare su Scala, Ruby, Lua ...

Modifica: poiché la mia opinione su Perl perdere la sua quota è controversa per alcuni di voi, sto includendo dati reali. So che TIOBE potrebbe non essere la migliore fonte di valori assoluti, ma sicuramente mostra le tendenze giuste. Devi anche capire che non è la misura della quantità di software esistente, ma piuttosto misurare l'interesse in una data lingua.

link link

    
risposta data 04.04.2011 - 23:08
fonte
3

Espressioni regolari!

Tutto il resto è solo zucchero sintattico.

    
risposta data 04.04.2011 - 23:00
fonte
3

What is Perl "better" at than Python?

"Migliore" è un termine molto soggettivo. Mettendo da parte l'intero dialogo su "meglio" forse sarebbe più utile dettagliare alcune differenze.

Alcune cose Perl ha il Python no:

  • local parola chiave può rendere variabili dinamicamente l'ambito
  • subroutine anonime (la lambda di Python è una cosa distrutta, misera, limitata alle espressioni)
  • hash slicing (forse non così avvincente, a meno che non sei abituato a usarlo)

Questi non necessariamente rendono Perl "migliore". Sono solo alcuni strumenti aggiuntivi che Python non ha che ho notato. In alcuni casi sono a malapena sfuggiti, in altri casi devi fare un po 'di lavoro sulle gambe per aggirare la caratteristica mancante. Va sottolineato che ci sono cose che Python ha che Perl non ha. Di nuovo, è per lo più solo diverso, non migliore (anche se il Perl dereferenziamento è un'atrocità sintattica e non a caso, assomiglia ad un'espirazione) .

Al di fuori della lingua la comunità Perl è molto attiva. Ci sono ancora molti lavori là fuori per i programmatori Perl, ed è ancora pesantemente utilizzato nello spazio bioinformatico. Ha tonnellate di librerie. Tuttavia, non sono sicuro che alcuni di questi sono motivi validi se hai già provato e trovato non di vostro gradimento.

Divulgazione: sono un fan di Perl e Python.

    
risposta data 05.04.2011 - 02:53
fonte
2

Penso che Perl sia probabilmente un po 'più veloce a scrivere script veloci e semplici di Python, solo perché ci sono meno impostazioni generali e più utili, ad esempio, legge automaticamente da stdin o dai file sulla riga di comando, e tu può usare regex molto più facilmente. Personalmente, non trovo questo motivo sufficiente per usare entrambi: tendo a confondere la sintassi delle due lingue, quindi ho dovuto sceglierne una e scartare l'altra. Per qualcuno che non ha questo problema, la facilità di scripting veloce potrebbe renderla utile da imparare. O potrebbe non.

Modifica: Oh, e ovviamente potresti dover mantenere qualche codice legacy prima o poi. Un sacco di codice Perl là fuori.

    
risposta data 04.04.2011 - 23:10
fonte
2

Per rispondere al titolo della domanda principale: sì, se conosci Python ci sono dei motivi per imparare Perl .

Dimentica ciò che Perl può fare meglio, la ragione principale è imparare un'altra lingua, un altro modo di vedere le cose.

  • Al di fuori di Perl, quale altro ambiente hai usato che ha provato davvero a far girare il tuo programma, non importa quanto hai rovinato la sintassi?
  • Dove puoi avere cose come variabili automatiche? ($ _)
  • Dove puoi trovare una variabile che a seconda del chiamante potrebbe essere completamente diversa in un programma? (Mio / locale / globale)
  • Dove puoi utilizzare una lingua il cui analisi è equivalente a risolvere il problema di interruzione ?

L'ecosistema Perl ha una prospettiva diversa sul codice e lo scrive. È molto importante farlo funzionare il più rapidamente possibile.

Direi: impara il Perl per le capacità di scripting e per imparare tutte le cose che fa Perl, che non dovresti mai fare in altre lingue.

    
risposta data 05.04.2011 - 06:10
fonte
1

Come script Perl di lunga data che passa a Python, trovo che Perl sia ancora molto più utile per l'uso da linea di comando (per lavori un po 'troppo complicati per la shell ma non vale la pena scrivere uno script Python o Perl completo per ).

Ad esempio, ecco una bash + perl one-liner per i nomi maiuscoli in una directory:

for file in *; do mv $file $(echo $file | perl -pe 'tr/a-z/A-Z/;'); done

O munge un po 'di XML dalla riga di comando (usando le regex di Perl, che sono sicuramente uno dei punti di forza del linguaggio), invece di scrivere uno script:

perl -pi -e 's/^(<\/?testsuite)\b/$$1s/' testing/data/actual/report.xml
    
risposta data 04.04.2011 - 23:51
fonte
-2

Direi come -

perl is multipurpose language while python is a OO language

    
risposta data 28.11.2012 - 06:12
fonte

Leggi altre domande sui tag