# Explain "source code" to me

**URL:** <https://boards.straightdope.com/t/explain-source-code-to-me/552317>\
**Category:** Factual Questions\
**Created:** [September 1, 2010, 10:40pm UTC](https://boards.straightdope.com/t/explain-source-code-to-me/552317 "2010-09-01T22:40:34Z")\
**Posts on this page:** 2\
**Page:** 3

<div class="post-metadata">

**Author:** ![BigT](https://sea3.discourse-cdn.com/straightdope/user_avatar/boards.straightdope.com/bigt/32/12044_2.png) [@BigT](https://boards.straightdope.com/u/BigT)\
**Post date:** [September 3, 2010, 1:45am UTC](https://boards.straightdope.com/t/explain-source-code-to-me/552317/41 "2010-09-03T01:45:57Z")

</div>

> [@TriPolar](#):
>
> Back to common terminology.  
> Lest we forget, some programming languages are interpreters, and execution is based on the source code. Batch files and javascript\* work on that basis. Most complex or intensively used languages based on interpretation still compile source code to an object code which is unrelated to the computers native machine language. A common example of that is Java.

Another example was the Z-machine, which allowed text-based games to be compiled, and used on any machine that had a Z-interpreter for it. Back in the day, actually encoding all the data would have taken too much space for the small media that was being used.

What’s cool is that people first reverse engineered the object code, then created their own compiler for it, then used that to create their own interpreters. So, if you follow the indy text-based Interactive Fiction scene, you wind up with games that use neither the original object code, nor the original interpreters.

This is also how high resolution versions of old games get made. You know, like Doom or Elite. ([Doomsday](http://sourceforge.net/projects/deng/) and [Oolite](http://www.oolite.org/), respectively.)

---

<div class="post-metadata">

**Author:** ![TriPolar](https://sea3.discourse-cdn.com/straightdope/user_avatar/boards.straightdope.com/tripolar/32/3008_2.png) [@TriPolar](https://boards.straightdope.com/u/TriPolar)\
**Post date:** [September 3, 2010, 1:52am UTC](https://boards.straightdope.com/t/explain-source-code-to-me/552317/42 "2010-09-03T01:52:40Z")

</div>

> [@BigT](#):
>
> > [@TriPolar](#):
> >
> > Back to common terminology.  
> > Lest we forget, some programming languages are interpreters, and execution is based on the source code. Batch files and javascript\* work on that basis. Most complex or intensively used languages based on interpretation still compile source code to an object code which is unrelated to the computers native machine language. A common example of that is Java.
> 
> Another example was the Z-machine, which allowed text-based games to be compiled, and used on any machine that had a Z-interpreter for it. Back in the day, actually encoding all the data would have taken too much space for the small media that was being used.
> 
> What’s cool is that people first reverse engineered the object code, then created their own compiler for it, then used that to create their own interpreters. So, if you follow the indy text-based Interactive Fiction scene, you wind up with games that use neither the original object code, nor the original interpreters.
> 
> This is also how high resolution versions of old games get made. You know, like Doom or Elite. ([Doomsday](http://sourceforge.net/projects/deng/) and [Oolite](http://www.oolite.org/), respectively.)

Yes, interesting type of language implentation evolution.

Also, I forgot to add the note about Javascript\* for the quibblers.

\*Most versions of Javascript compile the source code into an intermediate object code which is faster to interpret, as do many other interpreters. This is usually a one-to-one type of translation which aside from removed comments and formatting, could be decompiled back to the original source code.

[Previous page](https://boards.straightdope.com/t/explain-source-code-to-me/552317.md?page=2)
