28 Feb 2002 (updated 28 Feb 2002 at 20:40 UTC)
»
SICP
After the test I had a while ago, I received the news that
my final grade is 88%. IMVHO, I deserve more, but perhaps I
should have stayed a while in the testing room and gone over
the test, instead of handing it right away, like I did.
Not staying to go over the test, seems to be a theme of mine
lately in the Technion. I just don't have the nerve to spend
more time in the testing room and
ahttp://groups.yahoo.com/group/fc-solve-discuss/message/283m
anxious to get out
ASAP. I'd like to break this habit for the Game Theory test
though.
Next semester I am taking the course "SICP 2", which from
what I understood is being taken by very few students. Dudu,
Eran's friend, is taking it too, so I'll have a partner in
case the course gives way to them. The course covers the
other part of the book, with the interpreters and the
compiler as well as some external material.
When I read the book I found it strange that it is a
register machine where every register can hold an entire
S-expression. I.e: '(hello (6 (9 0) jkl (uo) op) kl). Now
put this in the EAX register of a Pentium...
But thinking about it, Abelson and Sussman got along with
very few registers, so I don't think consing several values
into one register, could give any advantage. And Parrot has
registers which are strings of unlimited length or those
"Parrot Magic Cookies", so it's probably a relatively common
idiom in designing high-level virtual machines.
Nevertheless, I don't think the book gives the readers
enough knowledge to implement a Compiler from Scheme to a
Real-Life Assembler. But that's what the Dragon Book is for
probably. I did not read the Dragon Book as of yet, but I'd
like to, sometime.
Freecell Solver
Being home after the SICP test gave me some time to work on
Freecell Solver vis-a-vis with studying for Game Theory.
After fine-tuning the FCS 2.2.x autotools parameters, I
started working on implementing the so called "Soft Threads".
By "Soft Threads" I mean a way for several parallel scans to
operate on the same state collection. I remember that last
time I tried it (in what should have been FCS 1.8.x), it
took me a very long time to get everything working and even
then it was not flawless. This time, howver, working on gvim
with a lot of substitutions and an internal framework that
was adapted to it a-priori, I managed to get it done very
quickly. God bless Linux.
The code is very stable now, and the soft threads work
beautifully. Refer to the
following URL for more details.
There is still a minor glitch I encountered, which I'll have
to deal with. And then there is a mis-feature in the range
solver, which I'll have to adapt to the new architecture.
Incidentally, Tom Holroyd
released PatSolve 3.0 recently. He claims that he managed
to code a very speed-wise optimized mode using a genetic
algorithm. I was not able to compile it (probably due to a
python version mismatch) and Tom is out of town until next
Wednesday, so I'll just have to wait.