Domanda

Sono uno studente inizio in CS, e le mie classi sono per lo più in Java. Sono attualmente in corso attraverso "Piccola Schemer" come uno studio di sé, e nel processo di trovare il modo di fare che ho trovato numerosi riferimenti alle "implementazioni" di Scheme. La mia domanda è, quali sono le implementazioni?

Sono sotto-dialetti di Scheme, o è che qualcosa di diverso (DrScheme sembrano per consentire diversi "sapori" della lingua)? E 'solo il nome dato a un dato ecosistema che incorpora un IDE, interprete, strumento interattivo e simili?

Fare tutte le altre lingue (ad esempio, Java) hanno anche una varietà di "implementazioni", o è qualcosa di riservato alle lingue "aperti"?

Grazie,

Joss Delage

È stato utile?

Soluzione

Un'implementazione di un linguaggio di programmazione è un compilatore o interprete per tale lingua. Ulteriori componenti del sistema di eco, come IDE, possono essere parte di un'implementazione, ma non sono necessari. Per Scheme ci sono molti, per esempio DrScheme, Guile, Gambit.

Molti linguaggi di programmazione hanno diverse implementazioni, ma tutte le implementazioni di una certa lingua dovrebbero attuare (vale a dire, di compilazione) esattamente lo stesso dialetto. Questo è più facile se v'è una specifica chiara e ufficiale della lingua, come è il caso per Scheme. Naturalmente, la maggior parte delle specifiche del linguaggio passare attraverso molte versioni, così diverse implementazioni possono supportare diverse versioni del linguaggio.

Per Java, ci sono implementazioni di Sun, Oracle, IBM, e credo che un altro.

Altri suggerimenti

Un applicazione di un mezzo di linguaggio qualsiasi programma che viene eseguito o compila quella lingua specifica.

Nello schema in particolare, è una buona domanda, perché ci sono stati più importanti revisioni della specifica del linguaggio. Oltre a ciò, ci sono un sacco di lingue (tra cui l'originale schema!) Che vengono chiamati Scheme che non seguono le specifiche tecniche del tutto. Le lingue per principianti per HTDP sono di piccole dimensioni, al fine di essere un po 'restrittivo su come i problemi sono risolti (e probabilmente per altri motivi). GIMP fino a poco tempo ha utilizzato un interprete non standard schema chiamato SIOD (Schema In One Defun o il sistema One Day). Ci sono molti altri esempi; si veda ad esempio dialetti di Scheme per take PLT del Programma sul sostegno linguaggio standard.

Un'implementazione è di un determinato fornitore versione / prodotto che implementa (conforme ai, prevede, etc.) un certo standard (interfaccia di classe, API, specifica del linguaggio, ecc.).

Per rendere questo semplice da capire per analogia, sia la Coca-Cola e Pepsi possono essere considerati implementazioni di soda (o, se si è così inclinato, del Pop). Soda / Pop è un concetto generale, e Coca-Cola e Pepsi sono prodotti particolari che si conformano a tale concetto.

Allo stesso modo, Mac OS X e Linux sono entrambe le implementazioni della Single UNIX Specification. Il compilatore GNU C ++ e Intel C ++ Compiler sono implementazioni del C ++ linguaggio di programmazione. Il Sun Java JDK 6, l'OpenJDK, e la GNU Compiler per Java (GCJ) sono tutte le implementazioni di Java.

In Java, come scoprirete presto, la parola "attrezzi" viene utilizzato come parola chiave quando una classe fornisce una definizione concreta di una funzione dichiarata in un'interfaccia, in quanto, fornendo la definizione concreta, che implementa classe i requisiti del concetto generale incarnata dall'interfaccia.

Spero che aiuta a migliorare la comprensione del significato di "implementazione".

Un implementazione è un compilatore o interprete per un linguaggio di programmazione; è un modo di tradurre le istruzioni del linguaggio in un comportamento. La lingua più comune con più implementazioni di oggi è probabilmente JavaScript.

Quando la gente parla di implementazioni, è spesso nel contesto di avere a che fare con i problemi che nascono dall'avere quelle multiple. Ci sono benefici - il vostro preferito farà le cose nel modo che ti piace - ma i problemi possono essere frustrante. Perché Chrome e Firefox e IE e Safari tutti si comportano in modo leggermente diverso con lo stesso codice JavaScript, gli sviluppatori web devono spendere una grande quantità di tempo a provare il loro codice sui vari browser, rilevando che quello che si sta utilizzando, e adattando il codice per la leggermente diverse serie di biblioteche, insetti, ecc.

Alcune lingue sono definiti da un'implementazione standard (rubino, Perl, Python), piuttosto che da un documento, che è il motivo per cui non si sente di più implementazioni di quelli. Anche in tali lingue avete il relativo problema delle varie versioni che hanno un comportamento diverso.

Le implementazioni non sono un fenomeno nuovo:. Indietro nei suoi giorni di scuola superiore, Bill Gates ha ottenuto il suo inizio scrittura una delle molte implementazioni BASIC, ad esempio

Ciò che rende i problemi peggio con Schema che con altri linguaggi è che la specifica è intenzionalmente piccoli - cerca di specificare molto poco. Il vantaggio è che le persone che linguaggi di programmazione di progettazione possono creare una nuova implementazione schema sperimentale con ordinate nuove proprietà in tempi relativamente brevi. Una volta che hanno fatto questo, possono sostengono che anche la piccola lingua che hanno scritto è "utile", perché altri hanno mostrato come estendere il piccolo linguaggio ad uno utile. Tuttavia, v'è una grande quantità di lavoro in quella "semplice questione di programmazione", e ogni implementazione deve fare un gran numero di decisioni da soli, in modo che le differenze tra le implementazioni sono molte e grandi. Così i problemi connessi con molteplici implementazioni sono molte e grandi nello Schema rispetto ai linguaggi più pienamente specificate.

Lo schema comunità riconosce il problema, insieme con il beneficio di una piccola specificazione, e sta lavorando attivamente modi per rendere la transizione dal linguaggio sperimentale al linguaggio utile più chiaro con le nuove versioni dello standard.    http://scheme-reports.org/

Per il momento (2010), io personalmente raccomando che i nuovi utenti iniziano a lavorare in PLT Scheme, e sono contento che hai iniziato lì. Non lasciate che il problema molte implementazioni ti spaventa: c'è una grande quantità di beneficio per lavorare nella lingua che i progettisti linguaggio di programmazione progettato per se stessi. PLT ha una grande comunità e una buona serie di librerie che vi aiuterà a superare le difficoltà di cui sopra.

Best, Grem

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top