12 November 2011

Languages versus Implementations

In the world of programming languages, there is a clear distinction between the language itself, and the implementation of the language. There is only one abstract Python, but there are many concrete implementations of Python. Only one Haskell, but several implementations thereof.

However, this is a false dichotomy. Each implementation is necessarily different from the others, mainly because implementing an identical specification in identical fashion is boring and doesn’t solve any problems.

Outside of those implementations we make as a learning process, we programmers typically create new implementations of existing languages in search of better performance or better user experience. I don’t expect anyone to agree with me that changing the performance characteristics of a language is the same as a change to the language, but that is what I believe.

More importantly, the implementors of a language will often try to make their implementation stand out as more productive, more useful to the programmer, by adding extensions. Whether or not these extensions are intended for widespread adoption by other implementations, and whether you call them extensions or pragmas or whatever else, the effect is the same. A program that is accepted by one implementation is either not accepted by another, or it runs differently under the different implementations.

The moment this happens, the two implementations are implementing different languages—with a lot of overlap, certainly, but nevertheless distinct. This divergence happens inadvertently as well: because of bugs, one implementation will likely fail or produce incorrect output for a program that another implementation handles just fine, and vice versa. These are still, by the same reasoning, implementing different languages.

So next time you go to accuse someone of conflating the theoretical and the practical, consider that they may simply be ignoring theory for the sake of practicality.


  1. Some kind of great news is given in this article. Excellent work is done in this article. Now its time to avail for more information.

  2. substance painter crack
    Crack Only. Adobe Substance 3D Painter For Windows v8.3.0.2094 Best Texturing App for 3D Professionals and Enthusiasts Software.

  3. cisco packet tracer crack
    A robust network simulation tool. A powerful customised script section. Innovative problem detection and resolution. Create a network with an

  4. delite MP4 Stream Editor Key is an MP3 ... Cut, copy, paste, paste mix, insert silence, change selection volume, apply DSP and VST DSP
    3delite mp4 silence cut license key

  5. Great Blog
    Struggling with your assignments? MY Assignment Help Singapore offers reliable and affordable assignment help services in Singapore. Our team of experts is dedicated to providing you with well-researched and customized assignments that meet your requirements. Contact us for help with assignments today!

  6. nice blog
    Get professional dissertation help online from our expert writers. We offer top-quality assistance with all aspects of your dissertation, including research, writing, editing, and formatting. Our team is composed of experienced academics who are dedicated to helping you succeed. With our assistance, you can be confident in the quality of your work and achieve the academic success you deserve. Contact us today to get started!

  7. Good Blog
    Are you tired of struggling with your assignments? Let our assignment helper Malaysia price Take the stress off your shoulders! With years of experience and a commitment to excellence, our team at can provide you with the high-quality, affordable assistance you need to succeed in your academic pursuits.

  8. I couldn't agree more with the importance of understanding the distinction between languages and implementations in the world of programming. Just like how "Family clinic Dubai" might refer to a specific medical facility, languages provide the foundation, while implementations are the real-world applications. It's crucial to grasp this concept to ensure efficient and effective coding. Much like a doctor needs to know the science behind medicine, a programmer needs to master the languages to create powerful implementations. It's all about that strong foundation!

  9. Ramma Foundation Repair is your go-to solution for Foundation Repair Edmonton. With years of expertise, we specialize in addressing foundation issues promptly and effectively. Trust us to restore the integrity of your property's foundation for lasting stability and peace of mind.