5 ms·
Ask HN: Best compiler/interpreter books for hacking on Scheme?
Hello, I'm starting an interdisciplinary PhD in the fall between computer science and music to continue working on Scheme for Max, my open source project that puts a Scheme interpreter in the Max/MSP audio-visual low-code platform. I want to learn enough to work on improving the GC and (soft) real-time capabilities of s7 Scheme, which is written in C and originally came out of the Tiny Scheme code base. There are a lot of books that get recommended here on compilers and interpreters! I'm hoping to get recommendations for my particular use case, and for someone like me who is brand new to the field. (My Masters was on the music side, so lots of catch up to do on comp sci)
thanks!
- eimrine 3y agoWhy not to download all books from torrents with Scheme or Lisp in name and start to read all but finish one.
- i_don_t_know 3y agoAndrew Sorensen used Tiny Scheme as the programming language for his Impromptu app on the Mac a long time ago: https://en.m.wikipedia.org/wiki/Impromptu_(programming_environment) https://en.m.wikipedia.org/wiki/Impromptu_(programming_envir... There’s lots of good stuff on the project’s website but the papers section might be of particular interest: http://impromptu.moso.com.au/downloads.html http://impromptu.moso.com.au/downloads.html
- iainctduncan 3y agoah good suggestion. I was planning on looking more closely at impromptu and didn't know about the papers page. thanks!
- Doctor-R 3y agoThe wikipedia article on Garbage Collection (software) is one place to start: https://en.wikipedia.org/wiki/Garbage_collection_(computer_science) https://en.wikipedia.org/wiki/Garbage_collection_(computer_s... Here is a list of garbage collection papers (newest is 2002) https://sites.cs.ucsb.edu/~ckrintz/racelab/gc/papers/ https://sites.cs.ucsb.edu/~ckrintz/racelab/gc/papers/ Here is an old paper (1994?) that surveys different kinds of software Garbage Collection. https://www.cs.cmu.edu/~fp/courses/15411-f08/misc/wilson94-gc.pdf https://www.cs.cmu.edu/~fp/courses/15411-f08/misc/wilson94-g... I am concerned that you are new to CS and you want to 'improve' a working system's garbage collection code. But good luck anyway. Finding a new fast GC is like searching for the Holy Grail.
- iainctduncan 3y agoAlso re the GC thing... the reason I am interested in is that Bill Schottstaedt, the author of s7, was not focusing on soft-realtime in the design of s7. His principal use was in Snd, his non-realtime Scheme based audio editor system. So while s7 is fast, there is (possibly) some low hanging fruit for making it perform better in the soft-realtime context of Max for Live, for example. It could well turn out to be either too hard or a dead end, but hey, that PhDs are for. :-)
- iainctduncan 3y agoThanks! FWIW I'm not new to CS, I'm just coming from an interdisciplinary masters where the principal faculty side was music, while for the PhD those will be flipped. I am, however, new to compilers and interpreters... but I am talking about over the time span of a PhD so this is a multi-year worth of work question. I will be taking courses on compilers but would like to be studying the topic ahead of the course.
- sn9 3y agoNot sure if this is precisely what you were looking for, but you can check the table of contents of this recent book on writing compilers in Racket: https://mitpress.mit.edu/9780262047760/essentials-of-compilation/ https://mitpress.mit.edu/9780262047760/essentials-of-compila...
- iainctduncan 3y agoThat is one I was thinking of working through, but as it's brand new I haven't found much in the way of reviews of it. If anyone has comments on it, I'm all ears....
- Rochus 3y ago> I want to learn enough to work on improving the GC and (soft) real-time capabilities of s7 Scheme The first thing you should look at is MPS (see https://github.com/Ravenbrook/mps https://github.com/Ravenbrook/mps and https://www.ravenbrook.com/project/mps/ https://www.ravenbrook.com/project/mps/). It's open source, professionally maintained and very powerful, and it was used e.g. in Dylan and LispWorks.
- iainctduncan 3y agoThat looks like a great thing to dig into. Thanks very much for sharing this.