Beefy Boxes and Bandwidth Generously Provided by pair Networks
"be consistent"
 
PerlMonks  

comment on

( #3333=superdoc: print w/replies, xml ) Need Help??
Actually you'd be wrong.

The first interpreter that I know of for the first interpreted language (a dialect of Lisp) was first written in itself. And then that program was hand-translated to assembly. (The person who wrote the interpreter did not intend to see it ever run!)

Likewise C compilers like gcc are frequently written in C. To develop a compiler for a new hardware platform you modify an existing compiler to understand the necessary assembly language, then you compile a C compiler for the new platform.

The Squeak interpreter (Squeak is a type of Smalltalk) demonstrates an interesting variation of this strategy. Squeak is written in Squeak. But it comes with a program that can compile itself to a C++ program which, when run, recreates the original Squeak image.

As all of these examples show, it is often nice to write a language in the language that you're writing. Once you have it written, actually making it run requires some bootstrapping, but the bootstrapping process is usually much easier than writing your full program from scratch.

This is doubly true if you want to wind up with a language (like Perl 6) where you want to end up with a lot of hooks within the language to be able to manipulate the language behaviour. If you bootstrap then you don't have to draw so many fairly arbitrary internal distinctions between when you're looking at user-changed behaviour and native built-in behaviour.


In reply to Re^4: Open season on official Perl 6 grammar by tilly
in thread Open season on official Perl 6 grammar by kelan

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post; it's "PerlMonks-approved HTML":



  • Are you posting in the right place? Check out Where do I post X? to know for sure.
  • Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
    <code> <a> <b> <big> <blockquote> <br /> <dd> <dl> <dt> <em> <font> <h1> <h2> <h3> <h4> <h5> <h6> <hr /> <i> <li> <nbsp> <ol> <p> <small> <strike> <strong> <sub> <sup> <table> <td> <th> <tr> <tt> <u> <ul>
  • Snippets of code should be wrapped in <code> tags not <pre> tags. In fact, <pre> tags should generally be avoided. If they must be used, extreme care should be taken to ensure that their contents do not have long lines (<70 chars), in order to prevent horizontal scrolling (and possible janitor intervention).
  • Want more info? How to link or How to display code and escape characters are good places to start.
Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others studying the Monastery: (2)
As of 2023-01-28 16:58 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found

    Notices?