Apprendimento del linguaggio di programmazione appositamente progettato per quella società [chiuso]


10

Perché qualcuno dovrebbe sviluppare la propria lingua per usarla solo all'interno dell'azienda quando si hanno XY altre lingue che possono aiutarti con le loro librerie, logica ecc.? Non è molto più semplice seguire il flusso con qualcos'altro piuttosto che sviluppare la tua lingua?


6
Un sacco di "nuove" lingue che abbiamo in libertà possono usare librerie progettate per linguaggi "più vecchi": ad esempio: C ++ può usare le librerie C, Scala Kotlin e altre possono usare qualsiasi lib in esecuzione su JVM, Typescript può usare le librerie JS. Quindi avere una nuova lingua non implica perdere il supporto lib ...
Timothy Truckle,

3
Perché costruiresti un dragster per andare a gare di drag piuttosto che accontentarti di un'auto di serie?
candied_orange

3
O davvero, indagare le ragioni e la logica alla base della creazione di qualsiasi linguaggio di programmazione. Alcune persone credono che tu non sia un vero informatico fino a quando non avrai creato la tua lingua. Questo è simile a non essere un vero ingegnere chimico fino a quando non hai creato la polvere da sparo (e fatto saltare in aria una piccola parte della tua casa).
candied_orange

4
Anche Erlang è nata in questo modo: se non sbaglio è stata inizialmente sviluppata da Ericsson per uso interno.
Giorgio,

3
Un linguaggio appositamente progettato per un'azienda è stupido, d'altra parte, un linguaggio appositamente progettato per un dominio problematico in cui si trova l'azienda, a volte può essere abbastanza utile. Sai di avere il secondo, piuttosto che il primo, quando il design e l'architettura del linguaggio sono limitati a ciò che rende il dominio del problema molto più facile da risolvere / esprimere, a volte a scapito di essere utile per la programmazione generale.
Lie Ryan,

Risposte:


25

È molto più facile da capire quando ti rendi conto che spesso è il prodotto di un lungo processo e non qualcuno che dice semplicemente "vogliamo creare un nuovo linguaggio".

Di solito inizia con l'idea che alcuni problemi possano essere risolti utilizzando un semplice linguaggio specifico del dominio. L'intenzione è spesso quella di fare in modo che i non esperti utilizzino questo linguaggio, quindi è semplice e spesso manca di funzionalità come la digitazione forte e i moduli.

Fin qui tutto bene. Ma poi, le persone iniziano a colpire problemi che non possono essere risolti dalla lingua. Quindi nuove "funzionalità" vengono aggiunte lentamente per risolvere questi problemi. E poiché il processo è lento e le funzionalità sono poco frequenti, non vi è alcuna motivazione a progettare correttamente queste nuove funzionalità, purché i problemi siano risolti.

Nel tempo, la nuova lingua acquisisce funzionalità che la trasformano da una semplice lingua specifica del dominio a una complessa lingua "generale", spesso con semantica contrastante e confusa e regole di sintassi difficili da seguire.

E quando le persone si rendono conto di aver creato una tale bestia enorme, è già troppo tardi per ucciderla e sostituirla con un linguaggio ben progettato.

Ci sono alcune lingue che si sono evolute in questo modo che non sono legate a società specifiche tosse JavaScript tosse PHP tosse .


10
Ottima risposta, e mentre JavaScript ha i suoi problemi, non credo sia giusto inserirlo nella stessa frase di PHP. È come dire "Dobbiamo cacciare Bill e Ted dal nostro quartiere, sono criminali!" Ma Bill (JavaScript) è un jaywalker e Ted (PHP) è un serial killer.
TheCatWhisperer,

12
@TheCatWhisperer Non sono d'accordo. JavaScript è cattivo o anche peggio di PHP. Perché DEVI usare (o traspilare in) JavaScript, mentre PHP può essere tranquillamente ignorato.
Euforico

2
questo è un punto per lo più valido.
TheCatWhisperer,

1
@Euforico Aspettiamo il WASM , forse la scena cambierà allora ...
Kroltan,

@Kroltan +1 per WASM!
CraigR8806,

15

Non è molto più semplice seguire il flusso con qualcos'altro piuttosto che sviluppare la tua lingua?

Certo, ma per seguirlo in modo assurdo, scriveremmo tutti in assemblea se nessuno sviluppasse nuove lingue.

A volte non c'è flusso. Le nuove lingue nascono perché qualcuno ha un prurito da grattare, che si tratti di un appassionato di lingue che vuole solo inventare qualcosa di nuovo o un'azienda con un bisogno insoddisfatto di ciò che già esiste.

Questo è esattamente quello che è successo quando John Backus ha proposto l'IBM Mathematical Formula Translating System nel 1953. Voleva un modo più semplice per gli utenti scientifici di specificare le formule matematiche piuttosto che scriverle insieme. Quel prodotto proprietario divenne il primo linguaggio di programmazione che non era assembly, e tu lo conosci come Fortran.

Laddove Fortran è stato il primo a percorrere questa strada, Erlang è praticamente il bambino che lo ha poster. Ericsson ha voluto migliorare il modo in cui è stato sviluppato il software per i suoi interruttori telefonici e ha inventato un linguaggio per la prototipazione con funzionalità specifiche per ciò di cui avevano bisogno. Quando l'ho esplorato per la prima volta, il mio takeaway è stato che è stato sviluppato da persone con un problema reale da risolvere che non sarebbe stato ben servito da nessuna delle altre lingue disponibili nel 1986. Erlang è rimasto un prodotto proprietario interno come il tuo collega incontrato fino a quando non è stato open-source più di un decennio dopo, e ora è un linguaggio tradizionale.

Sia Go che Scala sono lingue relativamente giovani nel grande schema delle cose, ed è del tutto possibile che la lingua in uso presso la compagnia del tuo collega sia precedente a entrambe. Quello che deve fare è chiedere della sua storia, perché è venuta a esistere e perché continua ad essere utilizzata.

Ho trascorso il decennio tra il 2003 e il 2013 lavorando per un'azienda che ha fatto ampio uso di un ambiente specifico del settore che includeva il suo linguaggio che affonda le sue radici alla fine degli anni '70. Mentre alcune lingue più recenti avrebbero potuto essere sostituzioni più adatte (e gli hook per loro sono stati innestati nel tempo), quell'industria ha avuto un investimento abbastanza grande in esso e un enorme corpus di codice ben collaudato che semplicemente non esisteva un buon caso commerciale per passare a qualcos'altro.


-1

L'ho già visto prima. Non funziona mai bene. Alcune persone hanno un complesso "non inventato qui". Di solito fa correre una società reinventando la ruota.

Pensaci. Questa nuova lingua probabilmente si rompe continuamente. Tra un parser, un compilatore, una VM, un linker, qualunque cosa ... Adesso ci sono migliaia di bug con cui le persone sprecheranno ore nel debug di problemi casuali. Tutto per quello che pensano di aver bisogno che altre lingue non hanno.

C / C ++ è usato per scrivere sistemi operativi come, sai, tutti. Eppure qualcuno pensava di aver bisogno di qualcosa di diverso.


7
Apparentemente non hai mai visto Kotlin. O Javascript o C #, del resto. Fog Creek Software ha usato il proprio linguaggio di programmazione chiamato Wasabi (basato su VB) per anni (anche se è vero che il debito tecnico alla fine li ha raggiunti ). Quindi ci sono certamente casi in cui funziona.
Robert Harvey,

1
Per quanto posso ricordare, C # è nato dopo che Microsoft aveva tentato di creare un'implementazione Java non conforme, è stato citato in giudizio da Sun e ha perso. cnet.com/news/sun-microsoft-settle-java-suit Dato che non potevano più chiamarlo Java, hanno sviluppato il loro linguaggio che, inizialmente, era molto simile a Java.
Giorgio,

1
"Questa nuova lingua probabilmente si interrompe continuamente" - se il tuo design della lingua ti consente di evitare un'intera classe di bug dell'applicazione, questo può essere un compromesso accettabile
Eric

16
Hai mai sentito parlare di C? Secondo quanto riferito, è stato sviluppato internamente solo per un singolo sistema operativo su un singolo computer. Perché K&R non ha semplicemente usato qualcosa che è stato usato per scrivere sistemi operativi, come PL / 1, BCPL o Algol 68?
idrougge,
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.