Scheme implementation - what does it mean?

I start a student in CS, and my classes are mostly in Java. I am now experiencing Little Schemer as an independent study, and in the process of figuring out how to do this, I found numerous references to the "implementation" of the Scheme. My question is: what are the implementations?

Are they sub-dialects of the Scheme, or something else (DrScheme seems to allow different “flavors” of this language)? Is it just a name given to any particular ecosystem, including an IDE, an interpreter, an interactive tool, etc.?

Do all other languages ​​(like Java) also have many “implementations” or is something reserved for “open” languages?

Thanks,

Joss delage

+6
scheme the-little-schemer
source share
4 answers

An implementation of a programming language is a compiler or interpreter for that language. Additional components of the environmental system, such as the IDE, may be part of the implementation, but are not needed. There are many for the scheme, for example, DrScheme, Guile, Gambit.

Many programming languages ​​have different implementations, but all implementations of a particular language must implement (i.e. compile) the same dialect. This is easiest if there is a clear and official language specification, as is the case for the Scheme. Of course, most language specifications go through many versions, so different implementations may support different versions of the language.

For Java, there are implementations from Sun, Oracle, IBM, and I think one more.

+7
source share

Implementation language means any program that runs or compiles this particular language.

In the diagram, in particular, this is a good question because there have been several major changes to the language specification. In addition, there are many languages ​​(including the original Scheme!) That are called Scheme, which do not fully comply with any of the specifications. The initial languages ​​for HTDP are small, to be a bit restrictive in terms of how problems are solved (and possibly for other reasons). GIMP, until recently, used a non-standard Scheme interpreter called SIOD (single-mode scheme or one-day scheme). There are many other examples; see for example Schema dialects for a PLT scheme take standard language support.

+6
source share

An implementation is a specific version / product of a supplier that implements (complies, provides, etc.) a specific standard (class interface, API, language specification, etc.).

To make this easy to understand by analogy, both Coca-Cola and Pepsi can be seen as implementations of Soda (or, if you're so addicted, pop music). Soda / Pop is a common concept, and Coca-Cola and Pepsi are special products that fit this concept.

Similarly, Mac OS X and Linux are implementations of a single UNIX specification. The GNU C ++ compiler and Intel C ++ compiler are implementations of the C ++ programming language. Sun Java 6 JDK, OpenJDK, and GNU Compiler for Java (GCJ) are all Java implementations.

In Java, as you will soon discover, the word "implements" is used as a keyword when a class provides a specific definition of a function declared in an interface because, by providing a concrete definition, this class implements the requirements of a general concept embodied by an interface.

I hope this helps to improve understanding of the concept of "implementation."

+1
source share

An implementation is a compiler or interpreter for a programming language; This is a way to translate language instructions into behavior. The most common language with several implementations today is probably JavaScript.

When people talk about implementation, it is often in the context of the need to solve problems arising from the presence of several. There are advantages - your loved one will do what you like, but problems can be disappointing. Since Chrome and Firefox, as well as IE and Safari behave differently with the same JavaScript code, web developers have to spend a lot of time testing their code in different browsers, determining which one you are using, and adapting the code to several different sets of libraries, errors, etc.

Some languages ​​are defined by the standard implementation (ruby, perl, python), and not by the document, so you do not hear about several implementations of these. Even in these languages, you have a related problem with different versions having different behavior.

Implementations are not a new phenomenon: in his school days, Bill Gates began writing one of many BASIC implementations, for example.

What makes problems worse with the Schema than with other languages ​​is that the specification is intentionally small - trying to specify very little. The advantage is that people who develop programming languages ​​can create a new experimental implementation of the circuit with neat new properties relatively quickly. Once they do, they can argue that even the small language they write is “useful,” because others have shown how to expand the small language into useful. However, there is a lot of work in this "simple programming question", and each implementation must make the most different decisions on its own, so the differences between the implementations are many and significant. Thus, the problems associated with several implementations are numerous in the Scheme compared to more specific languages.

The Scheme community recognizes this problem along with a small specification and is actively working on how to make the transition from an experimental language to a useful language more understandable with new versions of the standard. http://scheme-reports.org/

At the moment (2010), I personally recommend that new users start working in the PLT Scheme, and I am glad that you started there. Do not let many implementation problems scare you: there is great benefit for working in a language that the developers of the programming language have developed for themselves. PLT has a large community and a good set of libraries to help you overcome the difficulties described above.

Best, Grem

+1
source share

All Articles