137 lines
5.8 KiB
HTML
137 lines
5.8 KiB
HTML
---
|
|
layout: site
|
|
title: Crystal, where it started
|
|
---
|
|
|
|
<!-- story -->
|
|
<div class="row vspace20">
|
|
<div class="span12 center">
|
|
<h1><span></span></h1>
|
|
<p></p>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row ">
|
|
<div class="span1"> </div>
|
|
<div class="span10">
|
|
<p>
|
|
Torsten Ruger started this on 10.04.2014 after having read the Blue Book 20 years earlier.
|
|
The main ideas were:
|
|
</p>
|
|
<p>
|
|
<b>Mikrokernel</b>: The microkernel idea: anything that can be left out, should, puts a nice upper limit
|
|
on things and at the same time provides a great cooking pot for everyone else to try out their ideas.<br/>
|
|
Given gems and bundler this also seems an obvious choice. I really hope to see things i hadn't even thought of.
|
|
<br/>
|
|
<b>Layers represent an interface, not an implementation</b>:
|
|
It is said that every problem in computing can be solved by adding anohter layer of indirection. And so
|
|
we have many layers, which, when done right, help us to understand the system. (Read, layers are for us,
|
|
not the computer)
|
|
But implementing each layer comes with added cost, often unneccessary. Layers can and should be collapsed
|
|
in the implementation. Inlining, is a good example of this.
|
|
<br/>
|
|
<b>Empowerment</b>: I like the openness of ruby. Everyone can do what and how they want. And change other
|
|
peoples code in an easy and sensible way. The best ideas survive and even better ones are coming.
|
|
Friendly competition as it were, cooperation, independant improvement all make ruby gems better all the time.<br/>
|
|
But ruby itself has not benefited from this in the same way (ie by ruby developers), because it is not in ruby.
|
|
<br/>
|
|
<b>To get it done</b>: I don't know why this has not been done before, it seems so obvious.
|
|
The Blue Book influence has left me interested in virtual machines and that hasn't gone away for
|
|
so long. So when i bought my raspberry pi and had a real need for speed, the previous ecommerce project
|
|
left me feeling that anything could be done. And so i started.
|
|
<br/>
|
|
</p>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
<div class="row vspace20">
|
|
<div class="span12 center">
|
|
<h1><span>Thanks</span></h1>
|
|
<p>This would not have happened without:</p>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- About Us -->
|
|
<div class="row vspace20">
|
|
<div class="span4">
|
|
<h2 class="center">Smalltalk</h2>
|
|
<p>
|
|
Smalltalk is the mother of OO for me. Adele Goldberg has written down the details of early implementations in the
|
|
Blue Book, which made a great impression on me. Having read it mri code is quite easy to understand. <br/>
|
|
Unfortunately Smalltalk was too far ahead of it's time and used the image, the implications of which are still
|
|
not understood imho.<br/>
|
|
Additional bad luck struck when, in Steven Jobs great heist of the PARC UI, he did not recognise the value of it's
|
|
implementation language and so Smalltalk did not get the same boost as the gui.
|
|
</p>
|
|
</div>
|
|
|
|
<div class="span4">
|
|
<h2 class="center">Ruby and Rails</h2>
|
|
<p>
|
|
After years of coding Java, Ruby was a very fresh wind. Smalltalk reborn without the funny syntax or image.
|
|
Instead of the image we now have gems, git and bundler, so code exchange has never been easier.
|
|
</p>
|
|
<p>
|
|
Rails has sort of given Ruby it's purpose and made it grow from a perl like scripting language to a server programming
|
|
environment with all the whistle and bells. Rails maturity and code quality make it not only a joy to use,
|
|
but an excellent source for good ruby practises.
|
|
</p>
|
|
<p>
|
|
</p>
|
|
</div>
|
|
|
|
<div class="span4">
|
|
<h2 class="center">Synthesis</h2>
|
|
<p>Synthesis</a> is a microkernel OS written
|
|
in the 80's by Alexia Massalin which not only proves the validity of the microkernel idea, but also
|
|
introduces self modufying code into, of all places, the OS.
|
|
</p>
|
|
<p>
|
|
Alexia has raised questions about the nature of code and ways of programming which are still unresolved.
|
|
I regularly reread the thesis and especially the chapter on
|
|
<a href="http://valerieaurora.org/synthesis/SynthesisOS/ch4.html"> Quajects </a> in the endeavour to understand what
|
|
they are in any higher language terms.
|
|
</p>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<div class="row vspace20">
|
|
<div class="span12 center">
|
|
<p>Many other steps on the way that have left their mark:</p>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row ">
|
|
<div class="span1"> </div>
|
|
<div class="span10">
|
|
<p>
|
|
<b><a href="http://judy.sourceforge.net/">Judy</a></b> has been a major source of inspiration and opened new
|
|
ways of thinking about data structures and indeed coding. It has been the basis of two databases i wrote and together
|
|
with Synthesis redefined the meaning of speed for me.
|
|
</p>
|
|
<p>
|
|
<b><a href="http://metasm.cr0.org/">Metasm</a></b> finally confirmed what i had suspected for a while.
|
|
Namely that you don't need C to generate (machine) code. Metasm has be been assmbling, deassembling and
|
|
compiling for several cpu's since 2007, in 100% ruby.
|
|
A great feat, and the only reason i don't use it is because it is too big (for now).
|
|
</p>
|
|
<p>
|
|
<b><a href="https://github.com/cyndis/as">As</a></b> ended up being the starting point for the assembly layer.
|
|
It was nice and small and produced working ARM code, which is what i wanted, as raspberry is arm.
|
|
<b><a href="https://github.com/seattlerb/wilson"> Wilson </a> </b>got assimilated for similar reasons, ie small and
|
|
no dependencies.
|
|
</p>
|
|
<p>
|
|
<b><a href="http://kschiess.github.io/parslet/">Parslet</a></b> is great, thanks Kasper! Parslet makes
|
|
parsing possible for everyone.
|
|
</p>
|
|
<p>
|
|
<b>Bundler</b> just makes you wonder how we managed before. Thanks to Yahuda, also for merb, which is not
|
|
forgotten, and thor.
|
|
</p>
|
|
</div>
|
|
</div>
|