Perché i linguaggi di programmazione comprendono così tanto? [chiuso]

5

I linguaggi di programmazione non sono solo linguaggio. Ognuno tende ad avere:

  • I suoi IDE,
  • I suoi gestori di pacchetti,
  • Il proprio set di librerie,
  • I suoi strumenti di compilazione,
  • I suoi formati di dati.

Se stai scrivendo la sintassi Java, utilizzerai i pacchetti Maven; se stai scrivendo la sintassi di Haskell, utilizzerai i pacchetti Cabal. Qual è la connessione? Perché ogni linguaggio di programmazione crea il proprio mondo?

    
posta Owen 14.12.2013 - 06:45
fonte

3 risposte

9

Principalmente perché deve. Non esiste davvero un unico metodo utilizzabile di interoperabilità tra tutte le lingue. E dubito che ci sarà mai. Le differenze semantiche tra le lingue variano troppo.

La maggior parte delle differenze derivano da questo

  • Le librerie sono scritte negli idiomi della loro lingua, che portano male a molti altri.

  • Gli strumenti di compilazione completi potrebbero includere una nozione di gestione dei pacchetti = > librerie = > per lingua

  • Gli IDE devono parlare della sintassi, dei tipi e della semantica della loro lingua. Non puoi ottenere un linguaggio più specifico di quello.

    Sebbene su questo punto, ci sono alcuni strumenti che si concentrano sull'essere "piattaforme". Alcuni che vengono in mente: Emacs, IntelliJ, Eclipse ...

L'unico in questa lista che ritengo ragionevole condividere sarebbe i gestori di pacchetti. Sarebbe più vicino a apt-get di qualsiasi altra cosa. Il motivo principale per cui questo non è successo è solo uno sforzo eccessivo.

Cercare di rimuovere vecchi sistemi di gestione dei pacchetti è un gioco difficile da giocare, e nessuno lo ha ancora fatto abbastanza bene. Inoltre è una lotta in salita dal momento che le comunità per lingua sono molto più strettamente legate rispetto a "tutti i programmatori", ma ancora una volta non è tecnico.

    
risposta data 14.12.2013 - 06:58
fonte
7

Why does each programming language create its own world?

Non lo fanno. Stai confondendo la direzione della correlazione e raggruppando due aspetti diversi.

  • Gli strumenti di sviluppo (IDE, gestori di pacchetti e strumenti di costruzione) sono meglio classificati dalle persone che li hanno creati e per i quali sono stati creati. Eclipse e Visual Studio fanno parte di stack tecnologici molto diversi, ma le differenze possono essere chiaramente identificate da chi fa cosa. Questi tendono a raggrupparsi insieme alla selezione della lingua, poiché anche le stesse persone hanno la loro scelta di lingue.

  • Common Code (librerie, codice di esempio e idiomi) vengono creati all'interno di un determinato linguaggio e sono utili solo se puoi includerli nello stesso compilatore / runtime come il codice di la tua lingua generale. Pertanto, sarebbero separati e per lingua, a prescindere da cosa.

Puoi sicuramente sfruttare gli strumenti di sviluppo e il codice comune da uno stack tecnico in un altro, ma farlo spesso è una scelta poco efficiente.

  • Se sfrutti la completezza della svolta di una lingua, puoi sicuramente scrivere un interprete al suo interno per qualsiasi altra lingua esistente. Ma farlo potrebbe introdurre un sacco di complessità al tuo programma finale o limitarti alle idiosincrasie di entrambi.

  • Tutti i sistemi operativi consentono una qualche forma di comunicazione tra i programmi in esecuzione, sia tramite XHR in JavaScript o COM nel vecchio mondo di Windows o direttamente in pipeline "da riga di comando" nel mondo Linux. In questo modo, tuttavia, vengono sempre introdotte complessità di sovraccarico e runtime e il costo è pari a RAM o velocità di esecuzione.

risposta data 14.12.2013 - 08:15
fonte
4

Eclipse, IntelliJ, Visual Studio ed Emacs possono essere tutti utilizzati almeno per C ++, Java e JavaScript. Maven e Ivy possono essere utilizzati con qualsiasi lingua.

.NET framework è un set di librerie che possono essere utilizzate con più lingue, e oltre a Java esistono molte lingue che possono essere eseguite su una JVM e quindi utilizzare le librerie principali Java.

GYP, Ant e Make possono essere utilizzati praticamente in qualsiasi lingua. GCC è strutturato in modo tale da poter compilare qualsiasi linguaggio su qualsiasi piattaforma se si installano i bit corretti. JSON, XML, INI sono tutti formati di dati ampiamente utilizzati da molte lingue.

Fondamentalmente, la premessa della tua domanda è imperfetta. Un linguaggio di programmazione è solo un linguaggio, e tutte le cose che hai elencato sono separate, anche se alcune sono usate più spesso insieme di altre.

    
risposta data 14.12.2013 - 16:05
fonte

Leggi altre domande sui tag