Perché tale popolarità con Python? [chiuso]


54

A parte il fatto di essere infastidito dagli spazi bianchi come sintassi, non sono un odio, ma non ho il fascino di Python.

Apprezzo la poesia di Perl e ho programmato bellissimi servizi web in bash & korn e shebang gnuplot. Scrivo documenti troffe non mi dispiace REXX. Non ho trovato tcl più utile anni fa, ma qual è la grande puzza di Python ? Vedo annunci di lavoro e molti candidati con questo come premio e trofeo sui loro curriculum.


Immagino in realtà, sto cercando di vendermi personalmente su questo, non riesco proprio a trovare un motivo.


81
Non capisco mai perché le persone si arrabbino per il rientro richiesto da Python. Mi auguro che si stavano per rientrare il codice comunque, giusto?
Greg Hewgill,

10
@GregH, certo, ma la mia sintassi deve essere obbligatoria per essa? Un po 'come Makefile?
Jé Queue,

5
@Xepoch: Ma i Makefile non richiedono solo il rientro, ma richiedono un tipo specifico di rientro che di solito non è distinguibile dall'altro tipo. Se i Makefile necessitassero di un rientro degli spazi bianchi anziché 0x09nello specifico , probabilmente non obietteresti e probabilmente useresti un rientro coerente nella larghezza del rientro preferita. Questa è la stessa cosa che Python consente.
Greg Hewgill,

31
Poesia del Perl? Sul serio? Se hai avuto l'onore di mantenere il codice Perl di altre persone, capiresti perché Perl è diminuito in termini di popolarità.
grokus,

6
@Greg, sono d'accordo con te. L'ho detto prima e lo dirò di nuovo, a chiunque si lamenti della regola di rientro di Python dovrebbe essere chiesto di mantenere un codice scarsamente rientrato.
Dico

Risposte:


61

Python è un linguaggio ben progettato con una sintassi ragionevolmente chiara, una libreria standard completa, eccellente documentazione inclusa e di terze parti, distribuzione diffusa e immediatezza di un linguaggio di stile "scripting" (cioè nessuna fase di compilazione esplicita).


36
Ben progettato? Hai mai notato che hai una funzione globale chiamata len?
alternativa il

65
cosa c'è che non va in len? Ho l'impressione che tu abbia letto di Python solo per 5 minuti
Kugel,

5
Personalmente, la struttura linguistica era così semplice da capire che mi ha dato una migliore comprensione di come le lingue in generale funzionano internamente. Sono le piccole cose. Le funzioni di prima classe, la capacità di importare solo le parti rilevanti di un modulo esterno nell'attuale, la comprensione delle liste, le tuple, l'inclusione di sé come parametro del metodo mi hanno aiutato a capire la differenza tra funzioni e metodi (altre lingue si nascondono dietro lo zucchero). Mi fa male usare linguaggi come C # ora perché so intuitivamente che il codice non mi sta insegnando come funziona internamente.
Evan Plaice,

1
Come può python essere un linguaggio ben progettato? Usa strani __double_underscore_names__, si mescola alllowercasefunctionamescon mixed_underscoree mixedCamelCasenomi. Richiede :a alla fine di defo loop. Esso utilizza un sacco di sigla strana str, dict, islice. Sembra che non ci sia stata alcuna convenzione. È un puro caos. Peps, pips, zens ... è più simile a una religione pitone che a una lingua. Potrebbe avere alcune funzioni interessanti ma non spiega perché così tante persone ne siano così entusiaste. Non c'è niente di speciale in Pyhon. Solo un altro prodotto mal progettato.
t3chb0t,

1
E cos'è l'hack def? Perché definisco una funzione con a defe non a func? Non esiste altra lingua così intuitiva come il pitone.
t3chb0t,

76

Ho trovato Python come il linguaggio di programmazione più naturale in cui abbia mai scritto il codice. Ho codificato in molti linguaggi prima e dopo Python e, in misura maggiore o minore, devi combattere il linguaggio per farlo fare quello che vuoi. Python riduce questa lotta in modo massiccio. Eric S Raymond l'ha detto molto meglio di me in Why Python?

Come punto correlato, Python mantiene la sua pulizia anche mentre si evolve rapidamente. Nella maggior parte delle lingue con cui ho lavorato, l'introduzione di nuove funzionalità linguistiche introduce molte rughe. Ma con Python, anche le principali funzionalità linguistiche (vengono in mente i decoratori) vengono aggiunte continuamente, senza sentirsi brutti hack.


8
Sono venuto qui per dire sostanzialmente questo. La sintassi sembra così naturale, è quasi come se stessi scrivendo pseudocodici.
James Davies,

2
Python è compatto: puoi tenere tutto il set di funzionalità (e almeno un indice concettuale delle sue librerie) nella tua testa.
systempuntoout

2
@ Zoomzoom83 I miei pseudocodici hanno inizio e fine - non funziona in Python :-(
mbq

1
@mbq E i miei pseudocodici hanno delle parentesi graffe, ma questa è un'altra storia;)
Chris dice Reinstate Monica,

26

Spero che questo non sembri troppo cinico, ma IMO Python è così popolare per la stessa identica ragione per cui sono Java, C # e Objective-C. Non perché ci sia qualcosa di spettacolare nelle stesse lingue, ma perché hanno ciascuno uno sponsor magacorporato in grado di produrre molta pubblicità, molta pubblicità, molte biblioteche e supporto per la loro lingua preferita.


6
C # è speciale, ha linq
Daniel Little

39
Python ha una grande azienda alle spalle? (domanda autentica)
Jé Queue,

11
Sì, questo è ciò che intendevo. Python era molto meno "cool" prima che Google iniziasse a interessarsene.
Mason Wheeler,

10
@ Mason - ma sicuramente ci deve essere qualche ragione per cui un grande corp come Google lo renderebbe "cool"?
Jas,

7
Perché la gente pensa che ci siano sponsor aziendali di Python? Qualcuno ha notato la dimensione del pycon rispetto alle enormi convenzioni Java / j2ee? Questa è una storia di David e Goliath sul finanziamento aziendale.
rox0r

11

La mia esperienza è che le persone che trovano la vera gioia nella programmazione spesso cercano un linguaggio che si adatti meglio di quello che hanno imparato a scuola o all'università. Fondamentalmente questo significa che passeranno dal PHP predefinito / Visual Basic / C ++ / Java / C # a qualcosa di più esotico (affari / carriera) come Python, Ruby, Haskell e persino perl (a causa del suo enorme valore di hacking e oscurità).

Non fraintendetemi, ci sono programmatori C # / VB.net molto esperti che sono molto orgogliosi del loro lavoro e del loro codice (i ragazzi StackOverflow sono un ottimo esempio), ma non diventate programmatori di Python solo perché è quello che ti hanno insegnato a scuola; deve essere una tua decisione.

Penso che Jeff Atwoord abbia pubblicato un post sul blog, ma non riesco a trovarlo. Se lo trovo aggiornerò questo commento.


1
Python fu la prima lingua insegnata nella mia scuola per il 101.
Morgan Herlocker l'

Quasi ogni lingua ha un motivo per esistere ed è brava almeno in qualcosa. Secondo me questo dice semplicemente "Mi piace perché altri lo fanno".
NtFreX,

9

Rispetto a Ruby, che è davvero fantastico e produce incredibili vantaggi di Code Golf, Python ha questa filosofia di base secondo cui "Dovrebbe esserci un modo - e preferibilmente solo uno - ovvio per fare [cose]", che significa il modo idiomatico di Python. Ho trovato che questo è un enorme vantaggio rispetto a Ruby.


4
..o paragonato a Perl con un numero apparentemente infinito di modi?
Jé Queue,

@Xepoch - in realtà, molto spesso c'è molto meno dell'infinito di modi buoni / corretti di fare le cose in Perl, e la maggior parte delle persone con un indizio sarà in grado di dirti senza troppi disaccordi quale sia il primo (o al massimo 2) siamo. se non mi credi, guarda le domande Perl su SO. Sì, alcune domande hanno 10 soluzioni distinte. Ma la maggior parte ha una soluzione chiaramente concordata "più corretta per circostanze".
DVK,

@DVK, lo so, ma guardandolo da un obiettivo di progettazione.
Jé Queue,

8

Ho iniziato ad amare Python per lo stesso motivo che descrive Eric S. Raymond: l'atto di scrivere programmi in Python è concettualmente molto simile a pensare l'atto di progettare il codice nella mia testa.

Imparare a essere un buon programmatore Python mi ha reso un programmatore C # molto migliore. Ha reso la comprensione di LINQ molto più semplice, per uno. Forse non avrei mai abbracciato un tipo simile Dictionary<string, Func<T>>o yield returnmi sarei sentito a mio agio se non avessi usato classi e generatori in Python. AOP è molto più facile da capire ora che ho usato i decoratori Python. L'elenco continua.


6

In primo luogo, stranezze linguistiche come il rientro forzato in Python contano poco se il linguaggio stesso è fortemente espressivo e utile. All'inizio sono stato anche allontanato a causa di ciò, ma presto ho imparato a guardarlo oltre e ora non lo sento nemmeno come un ostacolo, perché il linguaggio è molto più facile per me lavorare. È come un sigillo nelle variabili in Perl , è una stranezza linguistica innocua e chiunque sia a proprio agio nella lingua non se ne preoccupa.

Per capire i motivi per cui così tante persone pensano che Python sia eccezionale, prova ad imparare la lingua. Le ragioni sono principalmente le stesse di Perl. Trovo che mi piaccia la sintassi in Python (ad es. Comprensione delle liste, sintassi OOP, ecc.), Ma è davvero soggettiva e la tua opinione potrebbe essere diversa. Preferisco Python per progetti più grandi, mentre uso ancora Perl per script più piccoli.

E questa è la risposta alla tua domanda. Si confronta Python con Perl, bash e tcl. Il fatto è che non è un confronto equo. Lingue come bash è stata progettata per scrivere piccoli script per automatizzare attività comuni. Alcune persone pensano che Perl diventi ingombrante anche se il codice diventa sufficientemente grande (Perl ben scritto non lo è, ma è difficile trovare codice ben scritto in un grande progetto). IMHO Python differisce dagli altri linguaggi di "scripting" in quanto si adatta molto bene a progetti di grandi dimensioni e anche a piccoli script una tantum. Penso che anche Ruby abbia la stessa qualità.


6

La filosofia secondo cui il Benevolent Dictator dovrebbe far valere la sua idea di buon stile [1], la sua idea di buona programmazione, la sua idea di come programmare mi frustra regolarmente. Non penso come Van Rossum. Tuttavia, il suo linguaggio resiste ai tentativi di esprimere pensieri non van Rossum. Il suo pensiero funziona davvero bene per molti (la maggior parte?) Programmatori. Ma sembra che non rientri nel suo modello di come programmare.

Ecco perché credo che il Perl sia un linguaggio superiore.

[1] Vedi il suo blog sulla rimozione reduce.


puoi per favore spiegare il tuo ragionamento con il processo di pensiero, vorrei saperne di più.
Jé Queue,

3
@Xepoch: un linguaggio di programmazione funge da mezzo di espressione. Modi di dire e stili di pensiero possono essere espressi in un continuum di pensiero dagli "adattamenti" ai "molto difficili da adattare". Ad esempio, non penso in termini di comprensione dell'elenco. Sono estranei a come penso alle soluzioni ai problemi. Ma la riduzione del Common Lisp è qualcosa che scorre senza difficoltà significative fuori dalla mia mente. Tuttavia, van Rossum è evidentemente il contrario. Java richiede che tutto sia negli oggetti. Quindi diventa molto difficile creare soluzioni non orientate agli oggetti in Java. E così via -
Paul Nathan,

5

Penso che Python sia in qualche modo l'unico linguaggio di programmazione di cui avrai mai bisogno, a meno che tu non voglia scrivere un kernel OS. È adatto per l'uso interattivo, hack casuali, amministrazione di sistema, applicazioni scientifiche, strumenti del sistema operativo, applicazioni web, applicazioni GUI, incorporamento, ecc. Ecc., È portatile, gratuito e ampiamente utilizzato. Nessun altro linguaggio di programmazione copre realmente tutti quei campi in pratica. È un ottimo investimento strategico per una persona e un'azienda.


4
Non dubito di Python qui, ma penso che Perl si adatti abbastanza bene alla tua descrizione sopra se non meglio.
Jé Queue,

Anche Ruby lo fa molto bene.
ocodo,

1
A partire dal 2015, Python è di fatto il linguaggio per scopi generici dell'informatica scientifica. Tutto il resto è o roba classica di basso livello (C, C ++, FORTRAN), competitiva in poche nicchie (MATLAB, Mathematica, R, Julia, Lua), usata solo per biblioteche e infrastrutture (Java), strumenti casuali di scripting (bash , Perl) o .... beh ... nessuna delle precedenti.
Paul,

5

Dal 2004 utilizzo Python per sviluppare:

  • GUI
  • Scripting di scene traccianti ray con collegamenti da Python a C ++
  • Sistemi di build automatizzati multipiattaforma
  • Script di test
  • Strumenti di uso generale per risolvere i problemi di tutti i giorni
  • Siti Web e app Web

Nel 2004, Python era la lingua preferita perché gli script Python sono portatili su Windows, Linux e Mac con pochissime modifiche.


4
Per citare un commento da una risposta diversa: "Non dubitare di Python qui, ma penso che Perl si adatti abbastanza bene alla tua descrizione se non meglio".
DVK,

4

Per me Python è stato un caro amico. È un linguaggio di scripting e prototipazione decente. Le cose chiave che posso pensare sono:

  • Sintassi pulita, molto semplicistica e di facile comprensione
  • Multi-paradigma, usalo come linguaggio imperativo? Sicuro. OOP? Nessun problema. Ha anche alcune caratteristiche linguistiche funzionali leggere, ad esempio lambda, comprensione delle liste, ecc.
  • Per esigenze informatiche di base, ha il supporto nativo per le strutture di dati essenziali, array, tuple, dizionario (array associativo), set, ecc.
  • Altre caratteristiche possono rendere un programmatore molto produttivo, ad esempio digitando anatra, riflessione, meta-programmazione, decoratori, generatori, ecc.
  • Supporto per la libreria ricca

lambda è rotto in pitone.
Paul Nathan,

@Paul Non sarebbe male dare un link per sostenere la tua opinione.
Piotr Dobrogost,

@Piotr: docs.python.org/reference/expressions.html#lambda Impossibile contenere istruzioni. Ciò viola l'idea matematica di una funzione anonima.
Paul Nathan,

Questo non significa che Lambda è ininterrotto?
rox0r

4

È elegante e davvero facile da imparare, e una volta che hai familiarità con i suoi tipi di base (in particolare gli elenchi) la tua produttività non ha limiti. È perfetto per gli algoritmi di prototipazione o per scriverli in un linguaggio simile allo pseudocodice che alla fine può essere messo direttamente su una macchina ed è davvero buono come linguaggio di scripting per fare lavori ripetitivi o eseguire fastidiose operazioni sui file. Lo uso come un linguaggio di colla per far comunicare tra loro i sottoprocessi: non potente come bash per alcuni compiti facili, ma MODO più semplice se devi fare più di una sola riga di codice.

E poi non fa distinzione tra funzioni e subroutine, capisci cosa intendo.


3

Molti appassionati di Python che vedo appena passati da un ambiente C e sono rimasti impressionati con roba come "Hello "+ "World"è "Hello World". Quindi direi che questo è il primo linguaggio di scripting che non raccoglie tag esoterici / specifici e quindi si diffonde tra i martiri come il fuoco in una foresta secca. E così la moda creata ora vive da sola.


2

Riavviando la domanda ora che sono un po 'meno stanco:

Python è un linguaggio che ho trovato particolarmente adatto per compiti di programmazione scientifica, che è uno dei luoghi in cui la sua popolarità sta crescendo piuttosto fortemente. Alcuni motivi per cui:

  • Un supporto della comunità abbastanza forte significa che ci sono alcune librerie forti in atto e Python funziona come un sostituto decente per MATLAB e alcune delle altre lingue popolari in quel campo.
  • Si gioca bene con C quando si esegue la velocità bisogno, ma spesso la velocità non è poi così necessario, così la natura interpretata di Python non è poi così grande di un affare.
  • Ho scoperto che è un linguaggio abbastanza accessibile senza un numero enorme di ciò che, per gli estranei, sembrano regole di sintassi stranamente arbitrarie. È abbastanza rapido tradurre tra pseudo-codice e Python.
  • "Prendilo o lascialo OOP". Molti progetti di programmazione scientifica non traggono molto beneficio dall'ampio OOP. Alcuni lo fanno. È bello avere una lingua che possa saltare facilmente tra i due.
  • Forte supporto multipiattaforma. Soprattutto perché ciò con cui lavoro raramente coinvolge le GUI, posso praticamente fare affidamento sul fatto di poter inviare un programma Python a qualcun altro senza preoccuparmi del sistema operativo in esecuzione.

Non è il fine, tutti i linguaggi di programmazione, ma è un discreto linguaggio "Sì, probabilmente ho uno strumento per risolvere qualsiasi problema si presenti", motivo per cui probabilmente sta godendo di popolarità in questo momento.


Oltre a tutti gli altri elementi che hai elencato, penso che uno degli elementi più importanti sia stato "Posso fare affidamento sul fatto di poter inviare un programma Python a qualcun altro senza preoccuparmi del sistema operativo in esecuzione". Questo è anche molto favorevole quando non vuoi rimanere bloccato con il tipo di sistema operativo.
Tarik,

1

Python è un linguaggio molto 'webby' sia nei framework disponibili (Django, Zope ecc.) Sia nelle librerie facilmente imponibili, che coprono ancora molte funzioni web.

Per gli sviluppatori web che passano da un solo skillset HTML, CSS + JS (aneddoticamente una grande fonte di nuovi programmatori negli ultimi anni), penso che questo lo renda una proposta molto interessante (idem Ruby).

Inoltre, Google non è Microsoft ....


Java non è MS, quindi se il tuo ragionamento è corretto, si sposteranno su Java e non su Python. Ci deve essere un motivo diverso.
rox0r

0

Penso che uno dei motivi principali sia che il 90% di Google sia realizzato con Python.

Tuttavia, Python è anche un linguaggio di programmazione potente e facile da imparare. Ha strutture dati efficienti di alto livello e un approccio semplice ma efficace alla programmazione orientata agli oggetti. L'elegante sintassi e la digitazione dinamica di Python, insieme alla sua natura interpretata, lo rendono un linguaggio ideale per lo scripting e lo sviluppo rapido di applicazioni in molte aree della maggior parte delle piattaforme.

L'interprete Python e la vasta libreria standard sono disponibili gratuitamente in formato sorgente o binario per tutte le principali piattaforme dal sito Web Python, http://www.python.org/ , e possono essere distribuiti liberamente. Lo stesso sito contiene anche distribuzioni e puntatori a molti moduli, programmi e strumenti Python di terze parti gratuiti e documentazione aggiuntiva.

L'interprete Python può essere facilmente esteso con nuove funzioni e tipi di dati implementati in C o C ++ (o altri linguaggi richiamabili da C). Python è adatto anche come linguaggio di estensione per applicazioni personalizzabili.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.