[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: Init : someone could comment this ?



On Jan 6, 2008 1:20 AM, Dimi Paun <dimi lattica com> wrote:
> Oh please, I hope you're not being serious! I mean Haskell is cool
> and all, but it is rather obscure for the vast majority of people,
> and the last thing we need is yet another strange language mixed in
> such a critical part of the system.
>
> The entire point of having a scripting language in the init scripts
> is for the admins to have a chance of making small adjustments easily.
> If we use Haskell, we lose 99.99% of the population right there.
> We might as well just code them in C: that would provide for faster
> start-up AND it will be accessible to most people.

It is obscure, and I agree it's very hard to justify putting more
languages in the mix.

Haskell has a few advantages over C.  It's very easy to write a
wrapper in Haskell that checks if file 'foo' is newer than the binary
that it's trying to execute, and if so, to compile the new file, load
up the new binary and keep running.  You can also have it redirect any
error output anywhere you like.  The difference between Haskell and
Python is that instead of calling an interpreter that byte-compiles a
script and runs the byte-compiled code in a VM, it calls a compiler to
convert the Haskell into C-- code, and then calls gcc to compile that
into native code.  (At least that's what GHC does.)  This 'just in
time' compiling is slow the first time, but cached conveniently by the
file system for each subsequent run.  XMonad takes full advantage of
this architecture so that you can literally edit your configuration,
press a key command and see your new config loaded in real time.

There are other aspects to the VM vs native machine code arguement
that are still important.  For example, getting to a 'prompt' in the
vm on top of a running process is much harder and requires more boiler
plate in Haskell, whereas Python has it embedded in its standard libs.

-Yaakov


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]