[self-interest] goals (was: dynamic deoptimization)

Casey Ransberger casey.obrien.r at gmail.com
Wed Dec 14 06:24:19 UTC 2011


PEGs are painful to debug. All that memorization creates a lot of instance state. This is presently a given. I've experienced the same problem with OMeta, PetitParser, and Treetop. 

I would offer: PEGs are relatively new, at least compared to CFGs. They make a lot of things that are hard to do with CFGs really easy. It's likely, given that they provide a different set of trade-offs from what one gets with traditional compiler design, that we'll eventually find better ways to deal with debugging them.

Another way of saying this is: test methodology will always follow at least slightly behind development methodology. 

But yeah, debugging an OMeta grammar is a pain in the ___:)

On Dec 13, 2011, at 9:46 PM, ungar at mac.com wrote:

> Have you ever used OMeta and tried to debug your OMeta program?
> 
> I tried, very briefly, and was put off by the debugging experience.
> But maybe you've had better luck.
> 
> - David
> 
> 
> 
> On Dec 12, 2011, at 5:48 PM, Casey Ransberger wrote:
> 
>>  
>> 
>> Top post: nested interpreters makes me think about OMeta. Just a thought. 
>> 
>> On Dec 12, 2011, at 3:28 PM, "Jecel Assumpcao Jr." <jecel at merlintec.com> wrote:
>> 
>>>  
>>> Thorsten Dittmar wrote:
>>> 
>>> > I'm interested in general , to get self more selfish. If we would be able to
>>> > manifest the principles of self even more accurate and more evident, that
>>> > would be something great. For that reason I thought that the Klein VM would
>>> > be one of the right steps.
>>> 
>>> It is a very good idea to be able to use what we have learned. That is
>>> how we got Self in the first place, and before that Smalltalk-80 from
>>> -78/-76 and those from -72/-74. Commercialization from Smalltalk-80 as
>>> it was, so the lessons from Ark couldn't be applied.
>>> 
>>> Klein tried to implement the stuff learned after Self 1, 2 and 3 and
>>> then Squeak. My main problem with that project is that it uses
>>> generative coding (think macros) to get more done with less but this is
>>> done in a system that is unaware of this. So you get generated code side
>>> by side with hand written stuff and it takes a very long time to figure
>>> out which is which if you weren't the one who created them in the first
>>> place. This also tends to create many copies of the same stuff (made
>>> worse by the fact that there are several parallel experiments in the
>>> same code) and it takes a while to figure out which ones are used where.
>>> 
>>> Since Klein has not been touched since 2006, my own strategy will be to
>>> try to include what I can learn (and have already learned) from it in a
>>> new system. My PhD project is to implement a self sustained system in a
>>> way that is understandable by generating code from nested interpreters
>>> (which are easy to write and understand) with partial evaluation (even
>>> if a mostly faked one, like in Pypy where tracing does the job a partial
>>> evaluator would do). One way a system can be defined in itself is
>>> through reflection - meta-objects. That leads to the problem of an
>>> infinite tower of interpretation, but as I just said nested interpreters
>>> are exactly what I hope my system will be able to handle.
>>> 
>>> The metric to measure the success of my PhD project will be how much of
>>> Klein's funcionality it will have compared with how much smaller it will
>>> be to do it.
>>> 
>>> The language I have been using is Squeak in order to play nice with
>>> several projects that are interesting to me. But I think it might be
>>> better to include more options, like Self 4 and some even simpler
>>> version.
>>> 
>>> -- Jecel
>>> 
>> 
> 
> 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.selflanguage.org/pipermail/self-interest/attachments/20111213/da0e1692/attachment.html>


More information about the Self-interest mailing list