Qualche lingua è diventata molto popolare per qualcosa di diverso dal suo scopo previsto?


70

Prendi questo scenario:

  • Un programmatore crea una lingua per risolvere alcuni problemi.

  • Quindi rilascia questo linguaggio per aiutare gli altri a risolvere problemi simili.

  • Un altro programmatore scopre che in realtà è molto meglio per alcune diverse categorie di problemi.

  • In virtù di questa nuova applicazione, il linguaggio diventa quindi popolare principalmente per quell'applicazione.

Ci sono casi in cui ciò si sta verificando?

Detto in altro modo, lo scopo previsto di una lingua influisce sul modo in cui viene effettivamente utilizzato o se diventa popolare? È anche importante che una lingua abbia uno scopo pubblicizzato?


4
Il tuo esempio HTML non sembra adattarsi perfettamente a quello che stai cercando, i documenti tecnici sono così diversi da qualsiasi altro documento? Lo scopo principale di HTML è sempre lo stesso di quello del 1989, per fornire ai documenti semplici strumenti di riferimento reciproco. IMHO HTML è l'esatto contrario di ciò che stai effettivamente cercando.
yannis,

5
Considerando la lunga lista di risposte; forse la domanda opposta è più interessante: quale lingua (popolare) viene utilizzata solo per lo scopo previsto?
Jaap,

@Yannis: buon punto. Non è il miglior esempio e potrebbe davvero essere discusso in entrambi i modi. Modificato per rimuovere.
Jon Purdy,

@Jaap: ho pensato lo stesso!
leonbloy,

2
Potrei sbagliarmi in questo, ma sono abbastanza sicuro che la maggior parte delle lingue non siano utilizzate per ciò che intendevano i loro creatori. Penso che la grande ragione di ciò sia che gli estranei non sanno per cosa dovrebbe essere usato, il che li aiuta a essere più aperti sul potenziale di una lingua.
Kenneth,

Risposte:


118

Lisp . McCarthy originariamente specificava Lisp in un documento per dimostrare che bastano poche semplici notazioni per costruire un linguaggio completo turing. Fu sorpreso di scoprire che Lisp poteva essere implementato nel codice macchina (Steve Russel fece la prima implementazione dell'interprete Lisp). Lisp è ampiamente usato per la programmazione AI.


70
+1, Lisp non doveva essere un linguaggio di programmazione! Non penso che tu possa superare questo.
Kilian Foth,

7
OTOH, si potrebbe sostenere che il LISP è stato progettato per essere utilizzato al confine tra programmazione e matematica, e rimane lì.
MSalters

1
Credo che McCarthy abbia usato Lisp come esempio nelle sue lezioni e intendesse scrivere un compilatore per esso, ma un giorno ho menzionato in classe che la codifica manuale della funzione eval avrebbe implementato un interprete, ma ovviamente "nessuno vorrebbe davvero farlo"
Steven A. Lowe,

I miei amici Lisper mi dicono che non è più usato così tanto nell'intelligenza artificiale, ma ha ancora un'applicazione ovunque .
Greyfade,

111

Java era originariamente destinato alla programmazione di sistemi integrati. Da Wikipedia "Java è stato originariamente progettato per la televisione interattiva" . Ma è diventato estremamente popolare per la programmazione di applicazioni e Web.


4
Huh. Non riesco a credere che non ci abbia pensato. È senza dubbio l'esempio canonico ... anche se questo non vuol dire che non sarò ancora sorpreso.
Jon Purdy,

Sebbene, Java sia mai stato effettivamente rilasciato per il lavoro incorporato (prima di Java incorporato, che è venuto piuttosto dopo la sua promozione per il web)?
Marcin,

L'elemento di design cruciale nel design Java era la capacità di eseguire codice non attendibile.

13
la storia è ancora peggio: A) era destinata ai sistemi embedded. B) ma non ho mai visto la luce fino a quando non poteva essere incorporata nelle pagine web. C) non ha ottenuto alcun rispetto fino a quando non è stato utilizzato per applicazioni web "enterprise" e D) è stato finalmente incorporato in molti sistemi operativi del telefono; ma non come controller hardware, è invece una piattaforma GUI.
Javier,

Esiste un progetto per metterlo sui set-top box da oltre 10 anni - cerca OCAP o tru-2way
Bill K

32

Lua è stato progettato principalmente come linguaggio di configurazione e ha finito per trovare una nicchia come il linguaggio di scripting più popolare per i giochi (perché è piccolo, veloce, potente, portatile, facilmente ampliabile e incorporato, con sintassi intuitiva). Il gioco più popolare per usarlo, World of Warcraft, non lo usa nemmeno per la configurazione, usando invece XML.


... e ora con LuaJIT trova sempre più utilizzo nelle applicazioni di elaborazione in tempo reale
Javier,


@lukas: "Non proprio" cosa ? Si noti che i suoi predecessori, SOL e DEL, non avevano nemmeno il flusso di controllo, erano puramente linguaggi di configurazione. Lua era l'estensione di quei linguaggi di configurazione per includere il supporto alla programmazione.
Fango

"Lua è stato progettato principalmente come linguaggio di configurazione", direi come linguaggio di programmazione.
Lukasz Madon,

7
Forse avrei dovuto dire "scopo previsto" piuttosto che "progettato principalmente come". Lo scopo previsto era quello di utilizzare Lua dove venivano utilizzati SOL e DEL. Questi erano i linguaggi di configurazione in cui gli utenti stavano iniziando a richiedere funzionalità di programmazione. Lua è stata creata per soddisfare tale esigenza. Come hanno affermato gli stessi autori , "L'ampia adozione di Lua nei giochi è stata una sorpresa per noi. Non avevamo lo sviluppo del gioco come obiettivo per Lua". È esattamente quello che l'OP stava cercando, no?
Fango

32

L'intenzione originale di Larry Wall per Perl era quella di "un linguaggio di scripting Unix generico per facilitare l'elaborazione dei report " e la pagina man descrive il linguaggio come:

Perl è un linguaggio interpretato ottimizzato per la scansione di file di testo arbitrari, l'estrazione di informazioni da tali file di testo e la stampa di report basati su tali informazioni.

E, naturalmente, la pagina man ci dice anche che Perl sta per Estrazione pratica e linguaggio dei rapporti (il nome attuale è un errore di ortografia del nome originale Pearl , cambiato quando Wall ha scoperto un linguaggio PEARL già esistente ).

Da allora il Perl ha fatto molta strada, poiché è la lingua con cui gli dei hanno forgiato l'universo .

inserisci qui la descrizione dell'immagine


23
Si dovrebbe correggere questo: Patologically Eclectic Rubbish Lister
Richard

3
C'è più di un modo per non abituarti! Very Perly

Qualsiasi acronimo di Perl è in realtà un backronym.
CanSpice,

1
@DarkTemplar Il modo in cui lo interpreto è che il perl si è insinuato quasi ovunque. Dalle sue umili origini il perl è diventato un linguaggio web molto popolare, un linguaggio di scripting estremamente popolare, un linguaggio multiuso piuttosto popolare, la sua sintassi di espressione regolare diventa qualcosa di definitivo, ha dato alla luce un'altra lingua (php) ecc. Inoltre il fumetto fa riferimento anche a lisp, che è la risposta accettata alla domanda, quindi ho pensato che fosse una rappresentazione divertente (anche se inesatta) della relazione tra le due lingue (una è quella sognante, l'altra quella effettivamente utilizzata dalle persone).
yannis,

1
@DarkTemplar Yeap. È tra i primi dieci nell'indice TIOBE . Ovviamente non dovresti prendere molto sul serio l'indice TIOBE, è piuttosto relativo e soggettivo. Ma comunque una buona indicazione della popolarità linguistica.
yannis,

28

Immagino che JavaScript si adatti anche a questa domanda perché non credo che Brendan Eich, ai tempi di Netscape, avesse mai immaginato che le versioni future del suo LiveScript sarebbero state utilizzate per creare le cosiddette "applicazioni" web di oggi.

JavaScript è passato da semplici convalide di moduli e rollover di immagini a un potente strumento in grado di competere con le applicazioni offline, sia in termini di funzionalità che di bellezza.

Sfortunatamente, penso che molti lo vedano ancora come un giocattolo.


31
La cosa interessante è che sta diventando il linguaggio di assemblaggio del web. In altre parole, quali altre lingue sono compilati fino a ed eseguiti in. Non credo Brendan Eich previsto che .

3
hai qualcosa da aggiungere: non è solo un linguaggio di scripting lato client. Molti progetti come node.js o rhino usano javascript come linguaggio lato server
gion_13

Solo curioso, ma che cos'è un "linguaggio di scripting lato client" vs. "linguaggio lato server" .......?
Templare oscuro,

@DarkTemplar. Un linguaggio di scripting lato server viene eseguito sul server e il suo output viene inviato al browser. Un linguaggio di scripting lato client viene inviato così com'è al browser ed eseguito lì. (Ovviamente, la lingua lato server può essere utilizzata per generare la lingua lato client, se lo si desidera.) L'unica lingua che viene eseguita nella maggior parte dei browser è javascript.
TRiG

19

Erlang. È stato inventato molto tempo fa nei laboratori Ericsson per sviluppare applicazioni di telefonia, probabilmente per le loro linee di dispositivi di commutazione e accesso. Ora si è evoluto in un promettente linguaggio dinamico per tutti gli usi con un interessante concetto di concorrenza.

Sarebbe interessante se in futuro ci fossero più lingue dal mondo delle telecomunicazioni che attraversassero le loro linee verso il mondo IT e si evolvessero da lì, specialmente le lingue inizialmente progettate per la modellizzazione e la verifica dei protocolli.


E non è stata una delle ispirazioni per node.js?
dodgy_coder

Non pensare che questo si qualifichi. Il motivo per cui Erlang è stato inventato per la telefonia è che avevano bisogno di un linguaggio di concorrenza dinamica generale. Lo è ancora.
Alan Baljeu,


14

PHP originariamente significa Home page personale , ma oggi viene utilizzato anche per alcune applicazioni Web leggermente più grandi.


18
ovviamente, il più grande utente di PHP, Facebook, è per molti versi ancora nel mercato della home page personale.
Jaap,

3
"PHP / FI è stato creato da Rasmus Lerdorf nel 1995, inizialmente come un semplice set di script Perl per tracciare gli accessi al suo curriculum online." Ha fatto molta strada, piccola.
nickf

Sebbene PHP sia ancora molto un linguaggio Web, ha subito un rovesciamento di ruolo: PHP doveva essere incorporato come piccoli frammenti all'interno di HTML, mentre molti progetti ora generano stringhe HTML all'interno di PHP. Hanno comunque bisogno di un <?phptag all'inizio del file!
Warbo,

14

Sono abbastanza sicuro che VBScript non fosse pensato per scrivere malware, anche se è un uso estremamente comune.


1
È un po 'duro, non credi. Java e C hanno avuto la loro giusta dose di malware.
Jeremy,

@JChild: Sono passati diversi anni dal tuo commento. Anche allora, tuttavia, difendere VB è stata una cosa molto strana da fare.
Magus,

@Magus Non è nemmeno VB. È VBScript. Sai, i file con estensione .vbs. Quelli che assumi automaticamente sono virus quando li vedi.
user16764

13

Inizialmente progettato come metodo per rendere il codice più generico, Template Meta Programming in C ++ è stato scoperto essere completo, e fino ad oggi viene utilizzato per migliorare notevolmente il linguaggio C ++ attraverso librerie come boost.


8
... e per far piangere i programmatori C ++ con tempi di costruzione eccessivamente lunghi ;-)
quant_dev

8
e messaggi di errore orribili.
DeadMG,

11

BASIC è un altro caso famoso. Il suo nome ( Codice di istruzioni simbolico multiuso per principianti ) suggerisce la sua origine come lingua per gli studenti, ma da allora è cresciuto un po '.


24
heh - microsoft ha sostituito "il principiante" con "business" e ha succhiato milioni
Steven A. Lowe,

11

VHDL e Verilog (alias VerilogHDL) erano originariamente destinati a descrivere circuiti e componenti digitali. Sono stati utilizzati come forma di documentazione e per simulare il comportamento dei componenti. Successivamente, Synopsys e altri hanno sviluppato una tecnologia che potrebbe tradurre (un sottoinsieme di) queste descrizioni in un elenco netto di porte, che a loro volta possono essere utilizzate per produrre hardware reale.

VHDL e Verilog sono chiamati Hardware Description Language (HDL) per motivi storici. Oggi sono effettivamente utilizzati come linguaggi di progettazione hardware (stesso acronimo).


Sviluppo guidato da modelli piacevoli e reali
Jaap,

@Mark Sì, VHDL è un circuito integrato ad altissima velocità, linguaggio di descrizione hardware. Verilog è una lingua completamente diversa. Verilog è talvolta chiamato anche Verilog HDL. en.wikipedia.org/wiki/Verilog
Philippe

2
QHDL è molto simile al VHDL e viene utilizzato per descrivere circuiti per computer quantistici. Non riesco a immaginare una lingua che si discosti abbastanza dalle sue origini.
Mark Booth,

@ Mark Wow, questo è interessante "QHDL"! Google mostra molto rumore. Hai un riferimento?
Philippe,

1
L'ho scoperto all'eccellente sessione "Quantum Computing for Programmers" di Paul Blacks alla conferenza ACCU 2011. Le sue diapositive sono su accu.org/content/conf2011/…
Mark Booth

10

ML ha iniziato come linguaggio per lo sviluppo e lo scripting di un teorema prover. Era il "meta linguaggio" del teorema del proverbo.


Tutto a posto. Vale la pena notare che la ragione per cui questa è una risposta valida è che la sua applicazione principale è ora compilatori e altri strumenti linguistici di questo tipo (almeno per quanto ne so).
Jon Purdy,

6
+1, ma dire che ML è diventato "molto popolare" è un po 'allungato
nikie

Forse, ma oltre ai suoi utenti diretti oggi, ha influenzato quasi ogni singolo linguaggio tipizzato che lo ha seguito.
Ryan Culpepper,

7

C
Originariamente era stato originariamente sviluppato per l'uso con il sistema operativo Unix. Ma la lingua divenne così popolare che anche Dennis Ritchie fu sorpreso.
Nel suo famoso libro Il linguaggio di programmazione C . Ritchie afferma che "si è diffuso ben oltre le sue origini come lingua del sistema operativo UNIX". e quanto è stato sorpreso quando è diventato un linguaggio popolare per lo sviluppo di applicazioni.


11
Bene, è stato originariamente progettato per sviluppare sistemi e applicazioni di basso livello in modo multipiattaforma. Rimane consonante con i suoi obiettivi originali nonostante la sua popolarità, quindi non si adatta.
Jon Purdy,

3
@Jon Beh, in qualche modo si adatta, poiché ha superato il suo scopo diventando il modo più semplice per spararti al piede.
yannis,

1
@Yannis: Haha, vero. Ma sto chiedendo delle lingue il cui scopo principale è cambiato completamente, non quelle che sono semplicemente cresciute per comprendere più scopi.
Jon Purdy,

Vorrei aggiungere che C è diventato popolare come una delle lingue principali per i contest di codice offuscato.
Peter G.

Non è stato progettato per implementare il sistema operativo?
Nikko

3

Il C ++ è stato originariamente progettato come "C con classi" per facilitare la programmazione orientata agli oggetti in C ++.

I modelli sono stati quindi forniti in una versione successiva per consentire l'implementazione di classi di container fortemente tipizzate. È stato notato solo in seguito che questi modelli in realtà costituiscono un linguaggio di programmazione in fase di compilazione completo di Turing.

Di conseguenza, molte applicazioni ora usano il C ++ non come un linguaggio di programmazione orientato agli oggetti ma piuttosto come un linguaggio di programmazione guidato da algoritmi che si basa fortemente sul polimorfismo in fase di compilazione e sulla metaprogrammazione.


7
Ma il C ++ è progettato per essere uno scopo generale ed è usato come linguaggio per scopi generali.
BenjaminB,

@ Ubiquité Non credo che il C ++ sia stato progettato come un linguaggio generico. O meglio, è stato progettato per essere utilizzato per scopi diversi (ma in particolare per la programmazione di sistemi). Ma non è stato progettato per funzionare con più paradigmi .
Konrad Rudolph,

In realtà, la natura multi-paradigma è inerente al suo design, semplicemente in virtù del bullonaggio di funzionalità OO su C, pur mantenendo la capacità di utilizzare le sue funzionalità più procedurali ove appropriato.
Jon Purdy,

@Jon OK, lo ammetto. Tuttavia, la programmazione generica e la metaprogrammazione dei modelli non erano tra queste caratteristiche. E al giorno d'oggi C ++ è uno dei pochi (e probabilmente il principale) linguaggio che supporta queste funzionalità.
Konrad Rudolph,

Verissimo. Inferno, supporto per la programmazione generica e constsono i due motivi più importanti che uso C ++.
Jon Purdy,

2

ADA - originariamente progettato in base al contratto DoD per l'avionica. Sebbene sia ancora utilizzato in quell'applicazione, è anche popolare, ad esempio, per i middleware aziendali in tempo reale.


5
È stato costruito come un linguaggio di uso generale. Il Dipartimento della Difesa voleva una lingua utilizzabile per tutto, per ridurre la quantità di lingua utilizzata.
BenjaminB,

È abbastanza divertente. Ada era una lingua esplicitamente creata con l'obiettivo di ridurre il numero di lingue diverse là fuori. Con questa metrica ("progettata con uno scopo, usata per un altro") Ada dovrebbe essere votata in cima alla lista con Lisp, un altro linguaggio anti-lingua.
Jared Updike,

2

"lo scopo previsto di una lingua influisce sul modo in cui viene effettivamente utilizzato o se diventa popolare?"

Non penso che lo scopo previsto di una lingua abbia molto a che fare con il suo reale utilizzo e popolarità: ci sono alcuni grandi linguaggi che sono stati progettati dall'inizio per essere innovativi, flessibili e versitili, ma non sono mai diventati così ampiamente usati o popolari tranne in mercati verticali molto specializzati, ad esempio Eiffel. OTOH, Basic, Pascal, C etc etc hanno dominato il paesaggio per anni, sebbene fossero stati progettati originariamente per scopi limitati e specifici.

Le considerazioni di marketing / finanziarie e di supporto dell'IMO hanno sempre avuto un ruolo importante nella diffusione e l'estensione di alcune lingue. Ad esempio: Borland presenta TurboPascal e pacchetti, lo commercializza e lo supporta. MS fornisce C # e pacchetti, li commercializza e li supporta. Di conseguenza, questi linguaggi sono diventati popolari, sono nate industrie di utensili di terze parti e sempre più sviluppatori e imprese saltano sul carro.

Ma negli ultimi anni, le lingue e gli strumenti openSource stanno cambiando la dinamica e le lingue ora diventano popolari in base più al "merito" che al marketing - ad esempio Ruby, Python e Perl. Ma ciò non è dovuto all '"intento" degli inventori, quanto al fatto che il linguaggio ha un potenziale di estensione e utilizzo conveniente.


2

Non penso che esista un linguaggio popolare che non sia stato riproposto dal suo intento originale. Anche C è stato originariamente scritto per creare un sistema operativo portatile (unix).

Qualsiasi tentativo di scrivere un linguaggio di programmazione veramente generico senza un obiettivo specifico in mente probabilmente fallirebbe miseramente a causa della mancanza di moderazione e concentrazione.


postscript - è onnipresente (in quasi tutti i computer e tutte le stampanti), ma viene utilizzato solo per la stampa di grafica. Tuttavia, si potrebbe sostenere che è stato riproposto quando utilizzato all'interno di pdf.
13

1

Ho sentito che Ruby è stato progettato come una lingua in cui scrivere poesie, ho scoperto che puoi anche scrivere un bel codice!

Sarò dritto con te. Voglio che tu pianga. Piangere Sibilare dolcemente. Questo libro è una guida toccante a Ruby. Ciò significa che il codice è così bello che le lacrime vengono versate. Ciò significa racconti galanti e verità cupe che ti fanno svegliare la mattina dopo tra le braccia di questo libro.


2
Sembra interessante. Qualche fonte?
Anto

Il link Ruby ti porta a un libro che è stato scritto per insegnare Ruby in modo artistico. La mia risposta è una battuta in riferimento a quel libro che afferma che scrivere Ruby è come una poesia. In realtà si potrebbe dire che Ruby è stato progettato per essere un linguaggio di programmazione generico ma ha ispirato (alcune) persone a considerare il codice Ruby come una poesia.
Tinco,
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.