Scegliere tra CL e Python per lo sviluppo web

13

Vengo da uno sfondo Java e dopo aver letto questo piccolo saggio di Paul Graham ho iniziato a chiedermi come scegliere un nuovo linguaggio e cioè Common Lisp per velocizzare il mio lavoro (sono uno sviluppatore web).

Attualmente sto scrivendo progetti per animali domestici ma ho alcuni piani aziendali per il futuro. Paolo parla di LISP nel suo saggio come "arma segreta". Non so se questa affermazione è 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 che conosco davvero. La mia domanda è: quale scegliere per i miei futuri progetti web?

A cosa stavo pensando:

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

Quindi cosa ne pensi?

    
posta Adam Arold 11.08.2011 - 15:47
fonte

8 risposte

7

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

Sebbene non sia possibile trovare framework web lucidi e pronti per la produzione come Django e Rails nell'universo Clojure (almeno in questo momento), ma i programmatori utilizzano i framework Web Noir e Compojure.
Puoi anche distribuire le tue app Web Clojure sulla piattaforma Heroku.

Clojure è altamente gratificante, ma la curva di apprendimento è davvero ripida. Sei pronto per imparare la programmazione funzionale (supponendo che non ti sia familiare)? vivere fuori dal mondo OOP?

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

Quindi la decisione è tua.

    
risposta data 11.08.2011 - 17:28
fonte
7

Il Lisp è la lingua che si sente stando vicini e ascoltando le voci provenienti dalle torri d'avorio. Altre lingue, come PHP, potrebbero non essere eleganti o potenti, ma sono come una lingua comune, facile e indulgente.

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

Tuttavia, Lisp ha avuto un impatto su molte lingue. Raccomando di impararlo per 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 effettuando uno studio di fattibilità per un'università. Manca il supporto in strumenti e librerie rispetto alle altre opzioni. Se vuoi acquisire abilità pratiche che alla fine daranno un po 'di denaro e potranno essere presentate nel tuo curriculum, allora scegli Python. Beneficerai anche di Lisp, ma è meno pratico e più accademico in natura, sebbene il tuo stile di programmazione generale possa trarne vantaggio.

Inoltre, c'è una rinascita di lingue funzionali in questi giorni. Puoi anche cercare F # per .NET o Scala sulla JVM se vuoi cogliere alcuni concetti funzionali.

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

    
risposta data 11.08.2011 - 16:10
fonte
3

Data una scelta tra lisp comune e python, il miglior consiglio pragmatico che posso dare è learn python . Mentre il tecnologo in me pensa che tutti i programmi dovrebbero imparare la chiarezza, non credo che impararlo ti aiuterà a "accelerare [il tuo] lavoro".

Se impari la lisc, credo che alla lunga ti renderà un programmatore migliore. Tuttavia, l'apprendimento della chiarezza per le ragioni che hai dichiarato non ti avvicinerà ai tuoi obiettivi immediati. IMO. Se vuoi una soluzione pratica e pragmatica, impara Python. Semplicemente non ci sono abbastanza strumenti o opportunità per utilizzare la tecnologia Lisp per aiutarti nelle tue attività quotidiane, a meno che tu non comporti la personalizzazione di emacs.

D'altra parte, se hai tempo per studiare e imparare, e sei disposto a sopportare le conseguenze della tua scelta (una manciata di strumenti, più difficile trovare collaboratori che prendi lisp, ecc.), vai con la chiarezza. È davvero un linguaggio formidabile.

    
risposta data 11.08.2011 - 16:21
fonte
3

Consiglierei l'uso del Lisp se sei una persona auto-motivata che è suscettibile di elaborare le tue librerie di codice per lunghi periodi di tempo, ama spingersi oltre i limiti della tua lingua e non preoccuparti dell'occasionale intoppo configurazione. Se sei un lavoratore autonomo, è probabile che si tratti di un aumento della produttività a lungo termine a causa delle sue caratteristiche macro.

Python non è flessibile, veloce o potente. È quasi banale da imparare rispetto a molte altre lingue. È molto blubby, infatti. Ha un ampio supporto, è la lingua fad du jour 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 era bravo in un Lisp rispetto a qualcuno che era bravo in Python, avrei immediatamente immaginato che la persona Lisp fosse un programmatore e un amplificatore migliore; scienziato informatico che la persona di Python (a parità di tutte le altre condizioni).

Sono un pessimo pregiudizio, ne sono sicuro.

    
risposta data 12.08.2011 - 18:45
fonte
2

Se vuoi mettere in risalto ciò di cui parlava Paul Graham, sosterrei a favore di Lisp. La differenza nell'approccio e nella mentalità abbracciata dalla famiglia di linguaggi Lisp ha molte più possibilità di avere un impatto su di te come programmatore nel complesso, a causa dell'incoraggiamento a pensare in modo diverso. E anche se non l'ho fatto io stesso, sembra che lo sviluppo web in Lisp sia supportato abbastanza bene: Vedi questa domanda su SO.

Python è un ottimo linguaggio e non ho intenzione di batterlo. Ci sono un sacco di 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'attuale ambiente, la scelta di Lisp sembra sempre venire alla domanda "Vuoi usare quello che vuoi, o vuoi usare quello che il settore già utilizza?" Qual è la tua risposta a questa domanda?

    
risposta data 11.08.2011 - 16:12
fonte
2

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

Mentre ci sei, dai un'occhiata a Fattore o a un altro lingua concatenativa . Le lingue concatenative sono incredibili per insegnarti come pensare in combinatori . L'apprendimento di una lingua concatenativa cambierà il tuo modo di vedere tutte le altre lingue.

Infine, esercita il tuo cervello destro. Il formalismo dei linguaggi di programmazione ci costringe a usare eccessivamente il nostro cervello sinistro per risolvere i problemi. Attiva il tuo cervello destro per accedere a un altro cambio di paradigma rivoluzionario.

    
risposta data 12.08.2011 - 07:31
fonte
0

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

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

    
risposta data 11.08.2011 - 16:21
fonte
0

Non conosco un sacco di Lisp oltre alle sue origini. Quello che so su Python è questo:

5 minuti dopo che il primo disco volante atterra, la comunità Python avrà messo insieme qualcosa per interfacciarsi con i suoi sistemi I / O.

Inoltre, provenendo principalmente da JavaScript, ho trovato Python un adattamento naturale. Forse il contrario potrebbe essere vero.

Inoltre, Django è praticamente la struttura da imitare oggigiorno.

    
risposta data 12.08.2011 - 08:47
fonte

Leggi altre domande sui tag