On 9/16/05, Josh Charles <josh.charles / gmail.com> wrote:
>>> Very interesting. But you'll still need C ;) I'm interested to know
>>> how this will effect performance, though.
>> No, you need C to implement a virtual machine, but not for the
>> language parser/bytecode compiler/runtime.

>> But i'm still convinced that ruby in ruby will got give us any real
>> benefits.
> My Point was that you still need to use C (a _strongly_ typed
> language) at some point,

C is anything *BUT* a strongly typed language. C is a very weakly typed
language that use some static type analysis for some optimizations. C++
is only marginally more strongly typed than C. Java and C# are also only
marginally more strongly typed than C++, in turn. There is a distinct
difference between the strong/weak typing axis and the static/dynamic
typing axis. Ruby is strong-dynamic; Ada is strong-static; C is weak-
static; JavaScript is weak-dynamic.

C's primary advantages are how close the development model is to the
bare metal of the machine without being tied to a single machine
architecture ("portable assembly") and that many thousands of man-years
of effort have been put into optimizing code generated by C compilers.

> or else you can't do what you want to do.

Your assertion here is wrong. One does not require a strongly typed or
even a statically typed language to do what you're suggesting. What you
need is a development model that makes it easy to adapt to the hardware
on which you're developing. Ruby is several abstraction levels above the
hardware, and *that* is what I believe makes it difficult to consider
writing an OS in Ruby. That said, I will *also* point out that many
early operating systems were developed entirely in machine code or
assembly language, neither of which can be described as either strongly
or statically typed.

> I was still reacting to the guy that flat out said that stronly typed
> languages were just wrong.

I don't agree with Phlip here, but he's not completely *wrong*, either.
Static typing is a false promise -- it gives a promise of compile-time
correctness, but if you've ever had to debug a C program, you know
better. Statically typed languages -- which is what he was actually
talking about, and I'll thank you to not confuse the two axes -- aren't
the panacea or the benefit that their advocates claim. Dynamically typed
languages are far more suitable to *most* problems than statically typed
languages.

> My entire point is that your should use the best tool for the job. It
> would be bad idea to implement something like basecamp in C. It would
> also be a bad idea to implement the latest NVidia 3D device driver in
> Ruby.

Not if Ruby had a good model for generating optimized machine code for
that NVidia 3D device driver. C is appropriate because it's effectively
and efficiently portable while remaining close to the hardware on which
it is to run. It is also highly optimized and optimizable to machine
code. Solve those, and Ruby is appropriate for developing device drivers
as well as for developing Rails websites.

-austin
-- 
Austin Ziegler * halostatue / gmail.com
               * Alternate: austin / halostatue.ca