Sadly, it seems that the last attempt at connecting a decent debugger to
Chicken has long since been abandoned:
http://wiki.call-cc.org/eggref/3/mayo

I, too, regularly end up hitting a wall with any decent sized application
that also relies on native compilation and interfacing with external
components due to the lack of visual source-level debugging. At some point
it becomes incredibly cumbersome to wade through stacks of generated C
code; and it seems like it would be reasonable to expect to be able to
debug Chicken applications without becoming somewhat of an expert in how
chicken operates at a low-level. By way of example, there's more often than
not no need to understand how V8 works in order to have source-level
debugging of Javascript.

OTOH, the trace egg is oh-so-close; I've considered integrating support
with it into Emacs, so as to have visual source-level debugging.
http://wiki.call-cc.org/eggref/4/trace

-Dan


On Mon, Aug 18, 2014 at 11:13 AM, Alan Post <[email protected]>
wrote:

> On Mon, Aug 18, 2014 at 06:54:48PM +0200, Peter Bex wrote:
> > On Mon, Aug 18, 2014 at 10:00:46AM -0601, Alan Post wrote:
> > > I used Chicken Scheme to bootstrap my company.
> >
> > That's really cool!
> >
>
> Thank you!  It's the most successful Scheme program I've ever
> written by a large margin.  I was recently trying to find a
> single routine that best expressed what a bootstrap in Chicken
> does, exactly, and I settled on this as a good balance of
> expressiveness without requiring too much context:
>
>   (define (alist->argv l)
>     (define (fn k v)
>       `(,(string-append "--" (symbol->string k)) ,v))
>     (flatten1 (map-alist fn l)))
>
> This routine was where I took any of a number of highly experimental
> data structures and passed them to programs which had well-defined
> interfaces, converting an experiment to infrastructure, if you will.
> One end could change to whatever it needed to be, the other end was
> where I could put solved problem, and this interface let me see how
> far apart those two components had gotten.
>
> I know that's not much too look at for this list--I wanted an
> example I could give to people who are afraid of Scheme.
>
> > > As of a few months ago, I am no longer running any scheme code, it
> > > has been ported to either C or Python.
> >
> > What is/was the main reason you had to rewrite to Python?  C I can
> > understand, for performance reasons.
> >
>
> When we started, it was not clear how much of the codebase would be
> in C vs. Python.  I was using Chicken to as a high-level language
> that I could compile to C (that was a hard requirement, we needed our
> application to run as a shebang line).  As we developed the
> application it became clear that nearly all of it could be written
> in Python, and the pieces that could not were natural to express in
> C, so the need for the abstraction provided by Chicken went away.
>
> You may be happy (or disgusted!) to know that the engine I wrote in
> Scheme had been implemented, quite naturally, as a series of
> promises.  Depending on the user input, it calculated any needed
> dependencies on the fly to produce a correctly ordered result.
>
> In Python, to get the same result, this engine became a four-pass
> compiler.  It's certainly easier to see the structure of the thing,
> but I needed the flexibility provided by Scheme to see the solution,
> and the feedback I got here on the user interface for genturfa'i (my
> PEG compiler) was "why the hell did you write a multi-pass compiler
> in Scheme?!")
>
> A side benefit I hope to captalize on later is that my logging
> infrastructure is based on association lists.  I did that because I
> wanted to future-proof my logs for the time when I need to go back
> to them and profile the system, but it also provided an upgrade path
> from the Scheme code to Python.
>
> > > I am still maintaining my eggs, and will be happy to do so through
> > > this transition--one problem I ran in to prototyping, which frankly
> > > surprised me--was hitting code- & infrastructure-related scalability
> > > limitations in Chicken.  I'm happy see the effort above as a result.
> >
> > It would be nice if you could elaborate on the exact things you ran into,
> > so that we may try and fix them.
> >
>
> Hands down the largest difficulty I had with Scheme was debugging.
> You gave me a hint some time ago that adding type declarations to my
> code would have made my job easier.  I haven't had a chance to explore
> that, I'm sorry to report.
>
> But my specific pain: I got to the point where I needed to debug a
> compiled application, that was my deployment model.  In that I could
> not produce results when I ran the code interpreted.  I put together
> what tools I could for capturing and managing exceptions, so I could
> get traces and debug output, but I often found myself pouring over
> a couple thousand lines of trace trying to find the relevant section
> of code that crashed.  The tools I had to write to make this visible
> in the first place were the first ~hundreds of lines, and if I had
> an invocation to genturfa'i (le PEG parser), I had to look at that
> enormous, entirely machine generated, trace.
>
> Thematically, Chicken let abstract my problem away to an amazing
> degree--I would write two pieces of code, realize they were similar,
> and merge them together.  I had a lot of sweet spots like this where
> I kept seeing a new pattern, parameterizing it, and finding novel
> uses I hadn't anticipated.
>
> Much as Chicken let me do this, my ability to debug problems became
> substantially constrained.  I found that the further I got away
> from core the harder it was to connect the location of a failure
> to the part of the code that needed to change.  My lack of ability
> to debug was the significant technical driver that limited what I
> could do in Scheme.
>
> By way of an unfair contrast, I'm able in Python to run a collection
> of jobs, collect any failures, and jump around to each of the stack
> traces and do a post-mortem debug.  I can safely attach information
> as any exception heads up the stack but still debug at the original
> failure point.
>
> If I, personally, were going to work on one exciting project in
> Scheme, it would have to be a debugger.
>
> hth,
>
> -a
>
> PS: this community has given me far more than I could ever hope to
>     give back.  I thank each of you for what you've done for me.
>
> -a
> --
> analytics in physical space: http://venueview.co/
> my personal website: http://c0redump.org/
>
> _______________________________________________
> Chicken-hackers mailing list
> [email protected]
> https://lists.nongnu.org/mailman/listinfo/chicken-hackers
>
_______________________________________________
Chicken-hackers mailing list
[email protected]
https://lists.nongnu.org/mailman/listinfo/chicken-hackers

Reply via email to