Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<blockquote> <p>(although a long time ago) and know that the creation of a compiler is an enormous major undertaking, at least for a language such as C++.</p> </blockquote> <p>A lot of things have conspired to make things easier:</p> <ol> <li><p><strong>Computers have a lot more RAM and speed.</strong> Much of the challenge of writing early compilers was being able to do so efficiently and with a minimum of memory. That's why C can compile in a single pass: at the time, you may not have had enough memory to even fit an entire source file in it. Where before a lot of the magic of compiler-writing was optimizing your symbol table representation and parsing as fast as physically possible, now you can get by doing things much simpler and easier.</p></li> <li><p><strong>Base technology has gotten better.</strong> Most languages have nice easy to use parser libraries, high-level data structures (symbol tables are a snap if you already have a nice hashtable implementation!) and other tools to make getting a compiler or interpreter up and running much easier.</p></li> <li><p><strong>GC is ubiquitous.</strong> Most new languages being created today are garbage collected. That makes it easier to design the language (you don't have to specify detailed memory semantics). At the same time, you can target some existing GC platform like the CLR or the JVM so as the language author, you don't have to write your own GC. In fact, targeting the CLR or JVM makes your job as a compiler writer much easier in general: as a higher-level platform, the bytecode meets you halfway.</p></li> <li><p><strong>Most new languages are dynamically-typed.</strong> The majority of new languages being created are dynamically typed. Those are <em>much</em> easier to design and implement. I've found that a majority of the challenge in language design is designing a type system. Likewise, compiling or interpreting a static language is more of a challenge. Dynamic languages where everything is just a property bag are surprisingly easy to get up and running.</p></li> <li><p><strong>Again, computers have a lot more RAM and speed.</strong> Back in the day, if your language was to have any chance of success, it needed to compile down to efficient machine code, use memory efficiently and run fast. Otherwise it would be unusably slow. Now that computers are so much faster, even a slow language like Ruby is still fast enough for many real uses. As a compiler writer you don't need as much optimization skill as you used to.</p></li> </ol> <p>It's also worth noting that <em>no one</em> is making a new language as complex as C++ these days. C++ really is near the top end of language complexity.</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload