Research Science Institute 2005

<p>...holy crap, this is a really long thread...</p>

<p>I didn't apply to RSI- I'm way too much of a fluffy for that- but good luck! For all the time you guys have spent talking about RSI, I'd say you all deserve to get in.</p>

<p>lol thanks mesotired...</p>

<p>this thread is the only thing keeping me alive until decisions time</p>

<p>
[quote]
<a href="http://www.eecs.harvard.edu/triforce/%5B/url%5D"&gt;http://www.eecs.harvard.edu/triforce/&lt;/a> (yes, click the link!)</p>

<p>This is one cool name for a research group! I wonder if they'll be doing researchf over the summer...

[/quote]
</p>

<p>LOL...they stole the Half-Life logo!</p>

<p>You chose the symbol for the coolest project on the page!</p>

<p>actually, they totally ripped off Zelda! Very cool legend though.</p>

<p>16 more days!!!!!!!!!!!!!!!</p>

<p>do you get your decision on pi day or 3/31 like they say?</p>

<p>i'm pretty sure it's the week of 3/14-3/18, most likely on pi day</p>

<p>


</p>

<p>Obviously you're into scheme. :-)</p>

<p>Anyways, I am trying to build up a knowledge on Garbage Collection. It's a great topic of CS! I'm designing my own compiler (hopefully), and you know, I might release "h88" script one day. But still working on it. [So far, lexical analyzer:done, code parser:almost done, bytecode compiler and interpreter: needs some work, garbage collection: haven't yet started, reading a book about it, and of course, a standard library:not yet done]</p>

<p>haha. . </p>

<p>what sort of CS stuff are you familiar with, schemer?</p>

<p>--</p>

<p>I think I'm going to apply to SSP after my rejection from RSI.</p>

<p>I'm especially entralled by all things programming languages related, though I fancy myself sort of knowledgeable in a broad way. In programming languages, in terms of conceptual knowledge though not practical experience, I think I'm competative with a grad student.</p>

<p>I'd suggest reading a little on stop and copy collectors, as they are fairly nice and they make memory allocation very cheap(just increment a pointer).</p>

<p>So you mean you've gotten to the point where you generate the abstract syntax tree, and you're not sure what to do next? Out of curiosity, what are the implementation language and book are you using. </p>

<p>While having automated memory management is important, the exact method that you are best off using is determined in part by your overall implementation strategy. For example, are you making the language in the imperative, OO or functional style (this is important in terms of ease of doing certain optimization analyses)? Do you want to have very inexpensive nonlocal control stuff(exceptions and concurrency), then you may wish to go for mostly heap allocation of function call frames instead of using a stack. What sort of language do you have in mind? I'd suggest also checking out MLRISC or C-- as backend targets instead of a bytecode because if you're simply doing a virtual machine/interpreter thing you can simply write it so that the garbage collector for the implementation langauge is what does the memory management. </p>

<p>There are more sophisticated garbage collectors, ie realtime ones (which have an added constant cost rasing the lower bound on time usage in exchange for lowering the upper bound in terms of large GC pauses), generational ones (which use heuristics to avoid checking the liveness of data that will likely remain live for a long time) amond others. However, you shouldn't start playing with these untill you already have everything in place.</p>

<p>For some more interesting memory management stuff I suggest looking on citeseer.org for stuff on the TIL compiler and tag free memory management, as well as on region inference, which is another scheme for automated memory management that is very nice and also check out the various papers relating to linear logic (which allow in place update of dead data with live data).</p>

<p>I like scheme because it is ridiculously easy to parse and has simple semantics. However, lately I've found myself interested in type theory and typed languages (which are arguably much more modern) such as haskell or ML, which are also ideal languages for writing compilers.</p>

<p>I could go on and on about this stuff, but out of respect for the sanity of the silly little bio and social sciences folk I won't.</p>

<p>haha thanks mate</p>

<p>maybe... if you're cool and get accepted you get your package on pi day?
and if you're not cool you get your little rejection letter on the 31st?</p>

<p>Actually it seems to me you're pretty much Godlike in this field. I never went as deep in CS as you did, as I was really busy lately, but I plan to continue in late March. </p>

<p>Well, I don't consider myself "lost" at this point. I am still researching on the topic, and trying to "implement" as I'm learning, so to speak. I am using C (also considering Pascal), and trying to implement a python-like OO language, ECMA-262 as of now (will certainly migrate to ECMAScript 4, but I figured that I can't start with ECMAScript4 right away.). . .</p>

<p>As for the book, I got this book: 'Garbage collection : algorithms for automatic dynamic memory management / Richard Jones, Rafael Lins.' and it pretty much go through the topic gradually and there is a full section about heap (it's what C uses afterall). . (and yeah, I'm not a fan of stacks). . memory management is pretty hard.</p>

<p>It goes on and discusses mark-and-sweep method. I also think that Ruby is a good language to look through for inspiration. Check out this article:</p>

<p><a href="http://www.rubygarden.org/ruby?GCAndExtensions%5B/url%5D"&gt;http://www.rubygarden.org/ruby?GCAndExtensions&lt;/a&gt;&lt;/p>

<p>I think I also should give scheme a shot and start learning it. thanks for your suggestions!</p>

<p>the heap is just the name for a region of memory which a program may use.</p>

<p>For writing the compiler I REALLY suggest a language which a garbage collector, as then it'll be easier to experiment with good data structure designs</p>

<p>I think a better introductory text for you can be found at <a href="http://www.cs.brown.edu/%7Esk/Publications/Books/ProgLangs/%5B/url%5D"&gt;http://www.cs.brown.edu/~sk/Publications/Books/ProgLangs/&lt;/a&gt;&lt;/p>

<p>I don't really see how the ruby article is relevant for memory management in a compiled language, though for an interpreted scripting language it is. If you really want access to better material on this topic
I suggest looking a <a href="http://www.citeseer.org%5B/url%5D"&gt;www.citeseer.org&lt;/a&gt;&lt;/p>

<p>The brown introductory text looks especially interesting, and I liked the other link!</p>

<p>Thanks for sharing, schemer.</p>

<p>what does "CS" stand for? and, what is "GC"?</p>

<p>CS: Computer Science. GC: Garbage Collection.</p>

<p>cs stands for compute science (its also the initials for my first and last name!)
gc stands for garbage collection, which is an automated means of ensuring that data a program can no longer reference is available for reuse by that or other programs</p>

<p>heh, i'm a couple of days late from when everyone else did it, but i'm a TASP-hopeful wishing good luck to all you RSI kids</p>

<p>thanks jimmy, good luck to u too.</p>

<p>It is time.</p>