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