3 ms·
I'm not sure I buy this argument. The author seems to be arguing that it's a fatal design flaw for a language not to be implemented in itself. But as near as I
by theBobMcCormick 17y ago
I'm not sure I buy this argument. The author seems to be arguing that it's a fatal design flaw for a language not to be implemented in itself. But as near as I can tell not that many languages are implemented in themselves. I'm pretty sure Java and C# (as examples) are implemented in C.
Also, his argument that the compatibility issues between JPython and CPython are because python isn't implemented in itself also don't hold water. One very simple counterexample would be Ruby and JRuby. Ruby isn't implemented in itself, and like JPython and CPython, JRuby and MRI are two different code bases written in two different base languages. Despite this, JRuby has kept very close syntax compatibility with the standard Ruby 1.8.x interpreter. The secret in their case isn't self hosting, but rather a very comprehensive unit testing suite for the language. (interestingly enough, developed initially by yet a third implementation of Ruby).
- andreyf 17y agothe compatibility issues between JPython and CPython are because python isn't implemented in itself Didn't say that. Said that self-hosting is one solution (one Perl 6 uses), not the only one. [Ruby's secret] isn't self hosting, but rather a very comprehensive unit testing suite for the language No, Python also has a comprehensive test suite. The difference between Jython and Ruby is that Jython isn't as well maintained as the Ruby branches. Self-hosting the syntax is an architectural solution which requires zero additional effort to implement syntax upgrades.
- theBobMcCormick 17y agoAhh.. Thanks for the clarification. That makes a lot more sense to me now. I thought you were arguing a slightly different point. :-)
- extension 17y agoI think the important property the author is talking about is not self-hosting, but rather extensible syntax. But your point still stands in that very few languages have this feature. Ruby has a very flexible syntax, but there's no particular reason to call it extensible. It's also not a great example of forward progress considering that the latest language version (1.9) has been around for years and none of the alternate implementations fully support it, not even the one that is now on the verge of release (Rubinius).
- jamesbritt 17y ago"It's also not a great example of forward progress considering that the latest language version (1.9) has been around for years and none of the alternate implementations fully support it, not even the one that is now on the verge of release (Rubinius)." Possible reasons for this: People working on alternate implementations of Ruby started on 1.8.x. 1.9 has been evolving over time (even after its release) , and is different enough from the 1.8 version that having a single interpreter that can handle both 1.8.x and 1.9 is non-trivial. The 1.8.x version is by far the most popular, so people working on other implementations focus on them, looking to fix bugs, make them faster, etc. I think that were there a big demand for JRuby 1.9 or IronRuby 1.9 then the appropriate teams would have it done, but right now it isn't (I imagine) a big priority.
- strlen 17y ago> I'm pretty sure Java and C# (as examples) are implemented in C. Not to argue against your point (you don't need self-hosting to get cross-implementation compatibility), Jikes RVM < http://jikesrvm.org/ http://jikesrvm.org/ > is a JVM written in Java itself.