2009-09-01 6 views
34

Dato che è impossibile vedere nel futuro, quali fattori legati a Clojure, Scala o Haskell sono suscettibili di determinare se uno di loro prende piede?Quali fattori potrebbero determinare se Clojure, Scala o Haskell guadagneranno trazione?

Ci sono problemi culturali o economici che potrebbero dare a una di queste lingue un vantaggio rispetto alle altre?

Oppure nessuno di questi linguaggi è in grado di guadagnare trazione a causa della loro complessità concettuale?

+0

La tua domanda sembra suggerire che essere il prossimo di Ruby/Python sarebbe l'ideale, anche se questi sono due lingue nettamente minoritarie, e non sono "grandi lingue" . – skaffman

+0

Sto avendo difficoltà a immaginare che qualcuno di questi si diffonda nella comunità degli sviluppatori per iniziare a chiamarli mainstream. –

+5

Mentre le domande soggettive sono valide, le domande che sono poco più di un sondaggio di opinioni dovrebbero essere fatte nel wiki della comunità. Questa domanda risponde a questi criteri, quindi, per favore, trasformala in una wiki della comunità. –

risposta

20

Sulla parte superiore della mia testa:

  • buon supporto IDE (con refactoring)
  • specifiche abbastanza stabile
  • politica chiara su backward compatibility (in termini di fonti, i binari e il comportamento)
  • strutture e strumenti intorno alla lingua (come l'analisi statica del codice, la copertura del codice, ...)

Scala, ad esempio, è ancora in evoluzione e si muove "troppo velocemente" per essere "largamente" utilizzato anche se alcuni grandi progetti l'hanno già adottato.


Edit: Novembre 2009

Vedere Refactoring to Scala DSLs and LiftOff 2009 Recap presentazione, Slide 10 e 11:

Martin definitivamente "lo ottiene" circa l'importanza di avere alta qualità strumento di supporto alla Scala

+6

La possibilità di interoperare facilmente con altri linguaggi (C FFI in generale e COM e .NET di interoperabilità su Windows) è anche piuttosto importante per l'adozione. –

+0

@Pavel Quindi qualsiasi lingua che non ha .NET interoperabilità è un errore? Hai qualche base per questa logica? – Rayne

+1

Anche se ovviamente non posso parlare per lui, penso che Pavel non stia dicendo che l'uso interdisciplinare è un requisito. È "piuttosto importante", come dice, non "richiesto". Sono propenso a concordare con lui: il successo di Python (che tu lo consideri grande o piccolo) è in parte attribuito alla sua amicizia con C, ad esempio. – agorenst

17

Dal mondo Haskell, vedo le cose principali per continuare a spingere come:

Oltre a questo, è difficile da dire. Alcuni pensieri casuali: Haskell è in giro da 20 anni, ha una base di utenti molto ampia e molto supporto commerciale. Clojure è piccolo in confronto. Scala e Clojure ottengono "punti liberi" eseguendo su .NET o JVM. È importante? Quanto conta il tempo di esecuzione? GHC ha un runtime parallelo personalizzato molto veloce, perché non è la JVM, ma alle persone piace usare la JVM. Lo stesso per .NET. La maturità/stabilità è importante?

E oltre a tutto questo, chi sta facendo il miglior servizio?

Oh, e abbiamo The Industrial Haskell Group.

+0

Anche Clojure è nuovo. Un'altra cosa che Clojure e Scala hanno intenzione di fare, è il fatto che le persone possono impararle senza far esplodere il cervello. Haskell ha un sacco di "OMG ITZ SO HARD" dietro di esso, e credo che abbia sempre, e sempre ostacolerà la sua popolarità. – Rayne

+3

http://learnyouahaskell.com/ può davvero aiutare i principianti ad imparare Haskell. Qualche altra buona referenza Haskell per i principianti? –

+1

L'esecuzione su JVM e .NET è interessante perché consente una facile e profonda integrazione con le codebase esistenti in quei runtime. – nohat

2

OK, farò un'ipotesi. Penso che il fattore necessario per il successo sia "può fare il lavoro di Java?".

La vera cosa che fa Java è la tipizzazione statica. Mentre questo è fastidioso per i piccoli programmi, consente la costruzione di grandi sistemi stabili. Permette di refactoring con fiducia.

Pensateci: ogni lingua ha un tipo di programma di dimensioni massime che supporta. Per superare tali dimensioni è necessario un design e un'implementazione sempre più sopra la media.

Come considerazione secondaria, Java è abbastanza veloce e ha una libreria piuttosto completa.

Quindi, sto indovinando quelli sono i criteri, e così Scala ha una possibilità.

L'unico lato negativo è la difficoltà di eseguire host Web server condivisi economici con JVM.

10

penso che per entrare nel grande campionato (ad esempio C, C#, C++, Java) hanno bisogno diffusa accettazione da poche grandi imprese che fanno lo sviluppo in-house, ma non sono essi stessi software house . Penso a grandi banche, compagnie di assicurazione, società di servizi, consulenze di gestione, ecc.

Tuttavia, c'è un'enorme barriera a questa accettazione in questi giorni; ovvero supporto, market e stabilità. Senza una grande azienda come Sun, IBM o Microsoft che fornisce supporto sarà molto difficile persuadere le aziende come queste che qualsiasi nuova lingua è una scommessa sicura .

Senza persuadere queste aziende, il mercato per gli sviluppatori che hanno familiarità con le lingue sarà piccolo. Finché c'è una piccola base di utenti, la lingua può permettersi di apportare modifiche non compatibili alla retrocessione richieste dalla comunità. Da qui un circolo vizioso di adozione non mainstream.

+1

Sono curioso di sapere perché pensi che la tua prima affermazione debba essere vera. Quando penso a grandi istituzioni finanziarie o grandi aziende mediche, o qualsiasi altra cosa, penso a tutti i tipi di software che sono la "norma" in quegli ambienti ma che la maggior parte della gente non sa nulla. Un primo esempio di questo è ANSI M (MUMPS). È ampiamente usato sia in finanza che in medicina, ma praticamente mai sentito da nessun'altra parte. Secondo il tuo ragionamento, penseresti che chiunque lo avrebbe adottato ... o sto fraintendendo il tuo punto? – Shaun

+4

Penso che tu stia sbagliando * "X è una condizione necessaria per Y" * con * "X implica Y" *. In effetti è equivalente a * "non X implica non Y" *. Anche MUMPS non è affatto vicino alla ripresa di C/C++/Java nella mia esperienza: ho lavorato per 12 anni nelle banche di investimento e nel settore finanziario e la prima volta che ne ho sentito parlare è stato su TheDailyWTF :-) –

3

Alcune di queste lingue possono facilmente essere accettate prima in ambiente non commerciale e open source. Più o meno quello che è successo a Perl, Python, Ruby (e alcune altre lingue).

Facilità di implementazione del software (pensare apt-get) e la libertà del programmatore promuove la diversità linguistica nel mondo open source. Una volta che parte del software diventa sufficientemente importante, il linguaggio diventa immortale in termini di supporto. Una volta immortale, è una scommessa sicura per tutti. I piccoli sviluppatori saranno i primi e, se ottengono alcuni vantaggi dall'uso della lingua, seguiranno le grandi aziende.

Quindi, è una questione di quale comunità è più amichevole per l'open source (insegnamento, documentazione, infrastruttura) e quale lingua consente a un programmatore di essere più produttivo.

2

Supporto di una grande società di sviluppo software. Guarda cosa ha impiegato Java e C# per arrivare dove sono. Questo è ciò che ci vorrà perché anche gli altri arrivino.

2

Un fattore culturale è quanto sia simile una lingua alle lingue popolari esistenti. Ad esempio, l'evoluzione di C -> C++ -> Java -> C#.

Haskell ha il divario più grande dal mainstream, con una sintassi non familiare, stack di runtime, paradigma di programmazione e una comunità orientata molto più al mondo accademico che all'industria.

0

A mio modesto parere, il fattore principale riguarda l'esito della ricerca che mira a fornire un parallelismo implicito in linguaggi puramente funzionali. Se/quando funzionerà, allora Haskell diventerà probabilmente il mainstream.

Per quanto riguarda Scala e Clojure ... Scala ha la sintassi storicamente più accettabile. Questo è un eccesso. Alcuni possono sostenere che Clojure ha un sistema macro, ma i macro sono espressamente equivalenti ai clojures, quindi questo non è un vantaggio reale.

In ogni caso, credo che le lingue con caratteri statici non siano appropriate per tutte le aree, vale a dire lo sviluppo Web. E curiosamente oggigiorno c'è la tendenza a rendere tutto basato sul web. Non penso che Ruby fosse un hype: sta maturando molto velocemente.

+2

"Alcuni possono sostenere che Clojugre ha un sistema macro "? No, * sicuramente * ha un sistema macro. E i macro non sono equivalenti alle funzioni, quindi non equivalenti alle chiusure. – user359996

+0

_expressively_ equivalente –

+2

In che modo? Chiusure e macro sono quasi del tutto estranei. Il primo riguarda l'ambito variabile e il legame, mentre il secondo riguarda la manipolazione ortogonale delle strutture sintattiche per la loro valutazione. – user359996

-5

Haskell o Ruby spazzeranno tutti nel mondo. Le probabilità sono maggiori per Ruby di avere successo dal momento che Haskell è complesso e difficile da imparare.

Ruby 2.x diventerà padre di 'Scala e Clojure'. Avrà una nuova versione ad alta velocità, GIL rimossa e moduli integrati per l'elaborazione parallela, la programmazione funzionale, i macro.

Pensando ulteriormente, più rubriche devono essere costruite in rubino per varie attività. Questo sarà fatto una volta che la versione 2.X arriverà con tutti i feechurs sopra menzionati.

Credo che Matz e Antonio !!!!!

C++, Java, .NET, Python, Scala saranno visti nei musei. XXXXX
C, Perl e PHP continueranno a vivere per piccole app/attività.
MySQL, Oracle, SQLServer verranno visualizzati anche nella sezione 'db' del museo. XXXXX
SQlite, PostgreSQL sarà ancora vivo al di fuori.

Cheers,
Ur uomo

+1

ovviamente sì ... e tu hai tolto le parole dalla mia bocca ... ma hai portato un singolo argomento di valore qui? è un peccato ... oh, certo, non li passi per riferimento! –