Se qualcuno lo sapesse davvero, sarebbero persone molto ricche.
Detto questo, ecco la mia ipotesi:
Disponibilità
BASIC è un linguaggio piccolo e terribile fornito con (tutti?) i PC quando sono usciti per la prima volta. L'Apple II (il computer predefinito per molte scuole superiori) e l'ATARI 400/800 (il primo computer di casa super economico) sono entrambi forniti con BASIC.
Se avessi una macchina UNIX (sistema AT & T V o Berkeley) avevi C. Se volevi programmare la macchina, è quello che dovevi usare.
EDIT : con l'avvento e l'ubiquità della rete, questo requisito si trasforma in:
- Quante distribuzioni Linux impacchettano una copia recente e quanto bene la mantengono aggiornata? Le librerie di terze parti sono disponibili per l'installazione?
- Si installa facilmente in Windows (XP | Vista | 7,8 ...)?
- Le piattaforme Mac / iOS sono coperte?
- Può essere installato senza problemi su Unix legacy?
- E una volta installato, quanto è facile accedere alle librerie di terze parti e può essere aggiornato facilmente?
Facilità di transizione
Java è un buon esempio qui. Se conoscessi la programmazione in C, Java non era un salto molto avanti, eppure forniva molte delle funzionalità di cui C mancava e C ++ non era in grado di fornire in modo pulito.
C ++ per ovvi motivi è stato un facile passo avanti da C, ed è stato facile vendere alla gestione come un "migliorato" C. Il C ++ ha avuto il vantaggio di essere compatibile con la maggior parte del codice C legacy esistente.
Perl era una fusione di C, awk, sed e altre utilità Unix in un unico pacchetto. Prima della sua apparizione, la maggior parte dell'amministrazione del sistema veniva eseguita tramite script di shell che incollavano tutto insieme in modo insoddisfacente. Portare tutto sotto un unico processo con le strutture dati e il controllo di un linguaggio simile a C è stata una manna dal cielo.
Riempie un bisogno
C è decollato perché ti ha permesso di produrre efficienze da vicino al montaggio senza impantanarti nel mondo di assemblaggio specifico per le macchine, difficile da gestire.
FORTRAN è decollato perché ha consentito di tradurre facilmente le idee matematiche in codice senza dover perdersi nei dettagli della macchina.
Allo stesso modo per LISP e manipolazione simbolica.
Python nasce dall'esigenza di un Perl "migliore". (Sono di parte qui, quindi non dirò di più.)
PHP era essenzialmente il BASIC per il web - era installato di default su molti server web, ed era facile hackerare insieme qualcosa di utile velocemente.
Advocacy, base utente, codice contribuito
Ammettiamolo, Haskell non sarebbe popolare tanto quanto lo è per un linguaggio non in produzione se non fosse per l'instancabile difesa dei suoi sviluppatori e della base di utenti.
Molte lingue hanno un culto della personalità dietro il creatore / i della lingua, e tutti noi sappiamo chi sono.
FORTRAN ha serie enormi di codice matematico stabilito e controllato; lo stesso per Java e per i sistemi web / system-integration / MVC; lo stesso per Perl e CPAN; uguale per T E X e gestione dei documenti; ecc.
Il Fattore
Per qualche motivo alcune lingue sembrano avere la giusta quantità di nuove , con un cenno sufficiente al vecchio , con un modo che sembra facile o necessario. Cioè, fa il suo caso. E chi sa come succede?
Ad ogni modo, questa è la mia ipotesi migliore per capire perché alcuni lo fanno. Per quanto riguarda il motivo per cui alcuni non ... beh, se non soddisfano i criteri di cui sopra, questo è probabilmente il motivo per cui hanno fallito.