Se qualcuno lo sapesse davvero, sarebbero persone molto ricche.
Detto questo, ecco la mia ipotesi:
Disponibilità
BASIC è un linguaggio terribile che è venuto 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 domestico super economico) sono entrambi dotati di BASIC.
Se avevi una macchina UNIX (sistema AT&T V o Berkeley) avevi C. Se volevi programmare la macchina, questo è 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 la mantengono aggiornata? Le librerie di terze parti sono disponibili allo stesso modo 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, è facile accedere alle librerie di terze parti e può essere aggiornato facilmente?
Facilità di transizione
Java è un buon esempio qui. Se conoscevi la programmazione in C, Java non era un grande passo avanti, e tuttavia forniva molte delle funzionalità che mancavano a C e che C ++ non riusciva a fornire in modo pulito.
Il C ++ per ovvie ragioni è stato un semplice passo avanti rispetto al C ed era facile venderlo alla direzione poiché un C. "++" migliorato aveva il vantaggio aggiuntivo di essere retrocompatibile con gran parte della base di codice C esistente.
Perl era una fusione di C, awk, sed e altre utility Unix in un unico pacchetto. Prima del suo aspetto, la maggior parte dell'amministrazione del sistema veniva eseguita tramite script di shell incollando tutto insieme in modo insoddisfacente. Portare tutto sotto un unico processo con le strutture dati e il controllo di un linguaggio simile al C era una manna dal cielo.
Soddisfa un'esigenza
C è decollato perché ti ha permesso di produrre efficienze vicine all'assemblaggio senza impantanarti nel mondo dell'assemblaggio specifico della macchina, difficile da mantenere.
FORTRAN decollò perché consentiva una facile traduzione in codice di idee matematiche senza 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ò altro.)
PHP era essenzialmente il BASIC per il Web: era installato di default su molti server Web ed era facile hackerare insieme qualcosa di utile rapidamente.
Advocacy, base utenti, codice contributivo
Ammettiamolo, Haskell non sarebbe tanto popolare quanto lo è per un linguaggio non in produzione se non fosse per l'instancabile difesa dei suoi sviluppatori e della sua base di utenti.
Molte lingue hanno un culto della personalità dietro i creatori della lingua e sappiamo tutti chi sono.
FORTRAN ha enormi serie di codici matematici consolidati e verificati; lo stesso per Java e il web / integrazione di sistemi / sistemi MVC; lo stesso per Perl e CPAN; lo stesso per T E X e la gestione dei documenti; eccetera.
L' E Factor
Per qualche ragione alcune lingue sembrano avere la giusta quantità di nuovo , con un cenno del vecchio , con un modo che lo fa sembrare facile o necessario. Cioè, fa il suo caso. E chissà come succede?
Comunque, questa è la mia ipotesi migliore per cui alcuni lo fanno. Per quanto riguarda il motivo per cui alcuni non ... beh, se non soddisfano i criteri di cui sopra, probabilmente è per questo che hanno fallito.