Scegliendo tra CL e Python per lo sviluppo web


13

Vengo da un background Java e dopo aver letto questo piccolo saggio di Paul Graham ho iniziato a chiedermi come imparare una nuova lingua, Common Lisp, per accelerare il mio lavoro (sono uno sviluppatore web).

Attualmente sto scrivendo progetti per animali domestici ma ho alcuni piani aziendali per il futuro. Paul parla di LISP nel suo saggio come "arma segreta". Non so se questa affermazione sia vera dopo 10 anni, ma ho immerso le dita dei piedi in un bel tutorial CL e sembra che LISP potrebbe essere superiore per lo sviluppo web.

Paul menziona anche Python come una buona scelta con cui ho familiarità. La mia domanda è: quale dovrei scegliere per i miei progetti web futuri?

Cosa stavo pensando:

  • Non svilupperò applicazioni desktop in modo da poter scegliere la lingua che preferisco.
  • Python sembra avere una comunità molto grande, quindi un mutch più librerie / framework rispetto a Lisp
  • Ho scoperto che lisp ha alcune funzionalità (come le macro) che non possono essere trovate da nessun'altra parte
  • Lavoro principalmente da solo o con 1-2 altri programmatori, ma trovare qualcuno con una buona conoscenza può essere difficile

Allora, cosa ne pensate?


Quanto è grande la comunità Python rispetto a PHP? Suppongo che trovare uno sviluppatore Python possa essere difficile, rispetto a trovare uno sviluppatore PHP, quindi tendo a scegliere tra queste opzioni solo se il progetto è sperimentale.
Alex,

PHP non mi piace molto, quindi questa non è un'opzione per me. Dato che sono il mio unico capo, nessuno mi obbliga a usare qualcosa che non mi piace. :)
Adam Arold,

2
La comunità di sviluppo di @Vash Python potrebbe non essere così grande come quella di PHP, ma è ancora molto grande. Inoltre, trovo che la documentazione online di Python sia di gran lunga superiore a quella di PHP.
quanticle

Questo è vero, penso.
Adam Arold,

2
Non credo che nessuno stia menzionando ancora Clojure!
Chirone,

Risposte:


7

Provieni da Java background, quindi perché non controllare il linguaggio di programmazione Clojure?
È un moderno dialetto Lisp che vive sulla JVM, quindi hai accesso a tonnellate di JAR là fuori.

Anche se non troverai quadri web raffinati e pronti per la produzione come Django e Rails nell'universo di Clojure (almeno in questo momento), ma i programmatori usano i web framework Noir e Compojure.
Puoi anche distribuire le tue app web Clojure sulla piattaforma Heroku.

Clojure è molto gratificante ma la curva di apprendimento è molto ripida. Sei pronto per imparare la programmazione funzionale (supponendo che non hai familiarità)? vivere al di fuori del mondo OOP?

Python è il lato sicuro: è maturo, tonnellate di libri, molti framework web, enorme pool di conoscenze e facile da imparare.

Quindi la decisione è davvero tua.


1
Ultimamente ho controllato Clojure e penso che sia quello più adatto alle mie esigenze! Grazie per il consiglio!
Adam Arold,

7

Lisp è la lingua che senti quando ti avvicini e ascolti le voci provenienti dalle torri d'avorio. Altre lingue, come PHP, potrebbero non essere così eleganti o potenti, ma sono come una lingua comune, facile e indulgente.

Mentre Lisp ha influenzato molte lingue, non è mai arrivato al mainstream. Perché? Poiché molti sviluppatori non capivano i concetti del linguaggio, a loro sembrava piuttosto oscuro. Lisp è difficile da capire per le grandi masse di sviluppatori. Hai mai visto una descrizione del lavoro che richiede Lisp come linguaggio di programmazione? Non ho "Perchè lo chiedi? Perché è difficile da mantenere e leggere per molte persone. In Lisp, molto più spesso non puoi dire immediatamente cosa sta facendo un'espressione semplicemente guardandola. Manca un certo tipo di semplicità, ecco perché non è mai diventato una lingua comune.

Tuttavia, Lisp ha avuto un impatto su molte lingue. Consiglio di impararlo a scopi accademici. Allarga i tuoi confini mentali così puoi spesso pensare ai problemi da un diverso punto di vista. Tuttavia, non consiglierei di usarlo per le applicazioni web, a meno che tu non stia conducendo uno studio di fattibilità per un'università. Manca il supporto di strumenti e librerie rispetto alle altre opzioni. Se vuoi acquisire abilità pratiche che alla fine produrranno un po 'di soldi e possono essere presentate sul tuo curriculum, allora scegli Python. Beneficerai anche di Lisp, ma è meno pratico e di natura più accademica, anche se il tuo stile di programmazione generale potrebbe trarne beneficio.

Inoltre, in questi giorni c'è una rinascita dei linguaggi funzionali. Puoi anche cercare F # per .NET o Scala su JVM se vuoi prendere alcuni concetti funzionali.

Quindi fai la tua scelta. Se entrambe fossero lingue reali, quale di queste preferiresti imparare: latino / greco antico o francese / tedesco / italiano / spagnolo / cinese / arabo?


Ho visto un lavoro fare pubblicità nella zona di Chicago - non solo, ti avrebbero assunto senza esperienza e ti avrebbero addestrato. Volevo così tanto quel concerto, ma il pendolarismo mi avrebbe ucciso. Devo ammettere, tuttavia, penso che sia quasi l' unico annuncio che ho visto in molti anni.
Bryan Oakley,

Ok cosa farò: imparerò anche LISP e Python, ma userò Python, perché le ragioni che tu e altri avete menzionato sopra. Grazie per il chiarimento.
Adam Arold,

3

Data la scelta tra lisp e python comuni, il miglior consiglio pragmatico che posso dare è imparare Python . Mentre il tecnico in me pensa che tutti coloro che programmano dovrebbero imparare lisp, non penso che l'apprendimento ti aiuterà a "velocizzare il tuo lavoro".

Se impari lisp, credo che ti renderà un programmatore migliore a lungo termine. Tuttavia, l'apprendimento del lisp per i motivi che dichiari non ti avvicinerà ulteriormente ai tuoi obiettivi immediati IMO. Se vuoi una soluzione pratica e pragmatica, impara Python. Semplicemente non ci sono abbastanza strumenti o opportunità per usare lisp per aiutarti nelle attività quotidiane a meno che le attività quotidiane non comportino la personalizzazione di emacs.

D'altra parte, se hai tempo per studiare e apprendere e sei disposto a sopportare le ramificazioni che preferisci (una carenza di strumenti, più difficile trovare collaboratori che ottengono lisp, ecc.), Vai con lisp. È davvero un linguaggio eccezionale.


3

Consiglierei di usare Lisp se sei una persona automotivata che è in grado di elaborare le tue librerie di codice per lunghi periodi di tempo, si diverte a spingere i limiti della tua lingua e non ti preoccupare degli occasionali intoppi nella configurazione. Se sei un lavoratore autonomo, è probabile che a lungo termine sarà un potenziatore della produttività grazie alle sue caratteristiche macro.

Python non è così flessibile, veloce o potente. È quasi banale imparare rispetto a molte altre lingue. È molto Blubby, in effetti. Ha un ampio supporto, è il linguaggio di moda del giorno e ha un sacco di librerie. Probabilmente è un po 'meglio se devi lavorare con persone che si lamentano dell'apprendimento di nuove lingue.

Se stavo recensendo per assumere qualcuno che fosse bravo in un Lisp rispetto a qualcuno che fosse bravo in Python, avrei immediatamente presunto che la persona Lisp fosse un programmatore e un informatico migliore della persona Python (tutte le altre cose sono uguali).

Sono atrocemente di parte, ne sono sicuro.


1
Di parte o non vedo il tuo punto!
Adam Arold,

2

Se vuoi enfatizzare ciò di cui parlava Paul Graham, mi piacerebbe sostenere Lisp. La differenza di approccio e mentalità adottata dalla famiglia di lingue Lisp ha molte più potenzialità per avere un impatto su di te come programmatore nel suo insieme, a causa dell'incoraggiamento a pensare diversamente. E anche se non l'ho fatto da solo, sembra che lo sviluppo web in Lisp sia abbastanza ben supportato: vedi questa domanda su SO.

Python è un ottimo linguaggio e non ho intenzione di batterlo. Esistono molti buoni framework e strumenti Web per Python e sarà più facile trovare persone che hanno già familiarità con esso, quando è necessario.

In definitiva, a causa dell'ambiente attuale, la scelta di Lisp sembra dipendere sempre dalla domanda "Vuoi usare quello che vuoi o vuoi usare quello che l'industria già usa?" Qual è la tua risposta a questa domanda?


2

Se non hai la pressione del tempo, usa Lisp. L'apprendimento di Lisp cambierà il modo in cui visualizzi Python (e ogni altra lingua che conosci), ma l'apprendimento di Python non cambierà il modo in cui visualizzi Lisp (se lo sapevi). Lisp è più di un nuovo strumento nella casella degli strumenti. È un nuovo modo di pensare.

Mentre ci sei, dai un'occhiata a Factor o ad un altro linguaggio concatenativo . Le lingue concatenative sono straordinarie per insegnarti come pensare in combinazione . L'apprendimento di una lingua concatenativa cambierà il modo in cui visualizzi tutte le altre lingue.

Infine, esercita il tuo cervello destro. Il formalismo dei linguaggi di programmazione ci costringe a un uso eccessivo del nostro cervello sinistro per la risoluzione dei problemi. Attiva il tuo cervello destro per accedere a un altro cambio di paradigma che cambia il gioco.


0

Lisp è solo uno strumento, proprio come ogni altra lingua. Ha funzionalità utili, certo. Allo stesso tempo, è possibile avere lo stesso output con qualsiasi altra lingua, potrebbe richiedere più tempo e codice. Il problema principale con Lisp è che DEVI ottenere, almeno, l'hosting VPS, in quanto non esiste un host condiviso (che io conosca) che supporti qualsiasi varietà di Lisp sulla loro piattaforma.

Una cosa che suggerirei è che, dato che sei un programmatore Java, dai un'occhiata a Groovy (o anche alla Scala). Ti permetteranno di utilizzare le tue librerie e API Java e forniranno un aumento della produttività.


VPS non è un problema perché le mie idee non funzioneranno neanche con l'hosting condiviso.
Adam Arold,

0

Non so molto di Lisp oltre alle sue origini. Quello che so di Python è questo:

5 minuti dopo l'atterraggio del primo disco volante, la comunità Python avrà messo insieme qualcosa per l'interfacciarsi con i suoi sistemi I / O.

Inoltre, proveniente principalmente da JavaScript, ho trovato Python molto naturale. Forse il contrario potrebbe essere vero.

Inoltre, Django è praticamente il framework da imitare al giorno d'oggi.

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.