Cosa guida l'adozione o meno di nuovi linguaggi di programmazione? [chiuso]


12

Mi piacerebbe davvero concentrarmi sul perché alcuni nuovi linguaggi di programmazione sono adottati nel mainstream e altri rimangono relativamente di nicchia. Mi piacerebbe sapere cose come casi d'uso specifici, compatibilità con le versioni precedenti o alcune nuove funzionalità, difficoltà di implementazione semplice o complessa. Esempi specifici sarebbero apprezzati, ma non lasciamoci prendere dalla definizione esatta di "mainstream" o "nicchia" qui.



2
La possibilità e il sostegno aziendale sono un fattore determinante. steve-yegge.blogspot.com/2007/02/next-big-language.html
Lavoro

3
Non è una domanda adatta a questo forum
Ryan,

Bene, per uno questo non è un forum. E per due, penso che questo soddisfi abbastanza bene le linee guida per una domanda soggettiva.
DeadMG

1
L'adozione di un linguaggio di programmazione è inversamente proporzionale alla quantità di hipster che lo utilizzano.

Risposte:


18

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:

  1. 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?
  2. Si installa facilmente in Windows (XP | Vista | 7,8 ...)?
  3. Le piattaforme Mac / iOS sono coperte?
  4. Può essere installato senza problemi su Unix legacy?
  5. 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.


1
Il fattore determinante nella maggior parte dei criteri è il supporto aziendale . Java potrebbe aver segnato, ad esempio, la facilità di transizione, ma senza qualcuno disposto a soffiare milioni su di esso, anno dopo anno, come parte del loro piano di dominazione mondiale, non è chiaro quale differenza avrebbe fatto. Quindi, hai ragione, i più ricchi conoscono la risposta a questo :-)
jaybee,

4
@jaybee - non sono sicuro che il supporto aziendale da parte dei creatori di lingue abbia necessariamente aiutato. Fortran e C non sono stati particolarmente aiutati da IBM / ATT. Il collegamento Oracle sembra danneggiare attivamente Java. Basic, Perl, Python, Ruby ecc. Non avevano tutti corporations dietro di loro. Il supporto corporeo interno all'utente / cliente è importante ma segue molto tempo dopo che diventa onnipresente.
Martin Beckett,

1
@Martin Beckett: potresti avere un punto. Penso tuttavia che, sebbene sia necessario allineare tutti i tipi di pianeti affinché una lingua possa raggiungere la massa critica, il modo "moderno" di riportare in fila quei pianeti sembra essere quello di bruciare denaro. Ad esempio Mark usa Haskell come esempio: potrebbe avere una base di utenti vocale eccezionale, ma GHC vince molti argomenti per loro. I compilatori come GHC costano denaro.
Jaybee,

@jaybee - c'è molta fortuna. Ma per i nuovi linguaggi web interessanti potrebbe essere l'abilità di marketing del creatore / early adopter che è importante.
Martin Beckett,

11

Le lingue diventano popolari perché hanno un vantaggio rispetto alle lingue esistenti in un'area che è necessaria.

Giava

  • Gestione automatica della memoria (confronta con C ++ e C)
  • Lingua / API integrate nel threading
  • Funziona su una macchina virtuale (ciò significa che gli sviluppatori possono usare Windows su macchine di sviluppo per testare e distribuire l'applicazione senza modifiche su Linux / Unix).
  • La programmazione della rete è molto più semplice rispetto ai linguaggi più popolari prima (C ++ e C) e Java è stato rilasciato quando Internet ha iniziato a essere popolare.

PHP

  • Sviluppo web semplificato
  • Supporto integrato per la connessione a database MySQL
  • Non è necessaria la compilazione ed è stato facile includere gli script direttamente nei file HTML.

JavaScript

  • L' unica lingua per i browser web.
  • I browser Web sono sempre più utilizzati come thin client (applicazioni Web).
  • Codice mobile: facile da implementare e nessuna installazione

Objective-C

  • La lingua per l'ambiente Mac OS X e iPhone. E iPhone è stato un enorme successo.

Rubino

  • Insieme a Ruby on Rails, un framework Web, ha reso molto più semplice lo sviluppo Web su larga scala con MVC.

C #

  • La lingua per gli ambienti Windows negli ultimi dieci anni. Quasi tutte le API di Microsoft sono facili da usare con C # ad esempio Winforms, WPF e WCF.

ActionScript

  • L' unica lingua per Addobe Flash / Flex, che ha avuto un enorme successo per i contenuti multimediali su Internet e cose che JavaScript non poteva gestire.

Erlang

  • Concorrenza e tolleranza agli errori: Erlang disponeva di un modello unico per la realizzazione di sistemi di tolleranza agli errori di concorrenza e framework. Ha iniziato a essere utile per l'industria delle telecomunicazioni, in seguito si è aperto e ha ottenuto l'interesse da grandi aziende Internet che necessitavano anche di tolleranza agli errori.

1
Il modello di concorrenza di Erlang non è unico, è solo diverso da quello usato dai brutti linguaggi imperativi :). Scala ha lo stesso tipo. Allo stesso modo, Clojure e Haskell sono specializzati in STM.
alternativa il

4
@mathepic: vero, ma tutte quelle lingue sono più recenti di Erlang. Quindi all'inizio era unico per Erlang - come con quasi tutte le funzionalità di laguage che ho elencato. Vale la pena rubare buone idee.
Jonas,

1
C # è il linguaggio .net. Pensavo che Windows fosse effettivamente scritto in c ++. Sbaglio su questo. Direi che C # è diventato popolare sfruttando un linguaggio che la gente già conosceva (C) con un nuovo framework che rendeva più semplice lo sviluppo di applicazioni potenti con uno strumento di editor potente, facile da usare e che teneva conto delle esigenze degli sviluppatori e dell'uso effettivo.
SoylentGray,

1
@Chad C # non ha nulla a che fare con C
alternativa l'

1
@mathepic - Ho lavorato sulla programmazione C, C ++ e C #. Posso dire che C # mantiene ancora le sue radici per quanto riguarda la nomeclatura. È vero che è andato oltre la C, ciò non significa che non sfrutti il ​​linguaggio.
SoylentGray

5

Sarò un cinico: soldi e venire con quello, marketing.

Non è un caso che C # sia supportato da Microsoft, Java da Oracle e Objective C da Apple. Finora solo Google Go non si è ancora alzato.

Ovviamente il denaro non è l'unico motivo, ma avere delle tasche profonde sicuramente aiuta a collocare la tua lingua sul mercato.


Devo essere d'accordo ed estendere: parole d'ordine, appello manageriale, grandi nomi, caratteristiche dal suono eccitante. Se non sei d'accordo, ti darò solo un nome: COBOL.
SF.

1
C # e Obj-C non sono tanto supportati quanto "obbligati" da. È difficile programmare le app di Windows in c ++ con solo API fornite da MSFT e AFAIK è consentito solo obj-C su almeno piattaforme mobili Apple. D'altra parte, il ricorso di Oracle ai produttori di Android potrebbe danneggiare Java
Martin Beckett, l'

1
@Martin - Sei in gran parte corretto WRT Obj-C. Tecnicamente, puoi usare cose come Appcelerator Ttanium per usare altre lingue per scrivere le app, ma viene comunque convertito in Obj-C per la distribuzione (ed è stata una lotta per loro ottenere anche quello). Apple vieterà qualsiasi altra cosa (anche PhoneGap ha seguito una linea sottile).
Shauna,

3

Da un lato si tratta di marketing, più precisamente presentazioni, blog, ecc. È importante disporre di funzionalità a cui i programmatori tradizionali possono fare riferimento e vedere vantaggi rispetto a ciò che sanno (Java vs C ++ - Garbage Collector vs. Memory Management). Ultimo, ma non meno importante, avere una barriera a bassa entrata: esempi, buone documentazioni, installazione perfetta, buona comunità e supporto, sviluppo vivace.


1

Quasi tutte le lingue avevano programmi non banali di risoluzione dei problemi del mondo reale scritti che li usavano molto presto nella loro vita.

Unix è stato scritto in C, così come gli strumenti di Unix, quando C era molto giovane e in evoluzione.

Anaconda (il programma di installazione di RedHat) è stato scritto in Python quando Python era giovane e non aveva la popolarità di oggi.

Questi sono ciò che posso ricordare a mani nude. Questo elenco potrebbe toccare ciascuna delle lingue sopravvissute ai suoi anni formativi.

Quindi, l'adozione su larga scala nelle università può aiutare la longevità di una lingua. Java è molto popolare nelle università come lingua di insegnamento. In una certa misura, anche Lisp e i dialetti di Lisp godono di questo status.

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.