From: Bryan Murphy Date: 2001-08-01T06:05:39+09:00 Subject: [ruby-talk:18915] Re: Perl/Python/Ruby common backend Ah yes, the inevitable full circle return to implementing a .NET version of Ruby :) I keep trying to find reasons to hate .NET, and I succeed, but I'll be damned if I also can't stop finding reason to like .NET. Some of the articles you listed below are very interesting, especially how they hint at a migration of some functional languages (including Haskell, the only one I have any real experience with) to the .NET platform. The interoperability .NET is going to provide between languages is wonderfull. I can't believe we've suffered from this for the last 20 years. Maybe the g++ 3.0 ABI will help solve some of these interoperability problems in the fully compiled world as well. Regardless of that, I still dream of the day when I can link my C++ graphics code with my overall Haskell glue that runs an embedded version of Ruby for those times when Haskell and C++ are much more than I need. Well, ok, I can do that now (thanks to SWIG which is an absolutely wonderfull program), but it's nowhere near as clean of a process as it should be. Which brings me closer to my point... Why has it taken so long for people to really start pursuing interoperability between languages, and why of all companies has Microsoft been the one who is leading the charge? Back when I started, combining Pascal and C code was relatively easy, but it's mostly gone downhill since then. Even now I suffere from it. I want to learn QT. I have 0% interest in GTK, so I thought I'll just download some Ruby bindings from QT and be off... (car screeches to halt, loud crashing sound) The QT bindings for Ruby don't appear to work on windows. DOH! I really want to learn QT by the way. Well, I could spend the time getting them to work in windows. Is it worth the trouble right now? I really want to work on my app, not other things. Well, how about some QT bindings for Haskell? Any luck? No. Ok, well, I do want to learn O'Caml next, what about it... No. Damn, looks like it's GTK or C++. Maybe I'll finally learn Python... nah, why would I want to do that? :) Why does it seem like I always end up writing everything in C++? Well, because it works, and because C++ seems to be the only language that has bindings for everything I need. But that sucks, and it's not because Ruby, or Haskell, or O'Caml, or Python, or even Perl doesn't have good support. They have great support, but all these things take time. Why do they take time? Well, because right now interoperability between languages sucks. So, I guess my actual point is that interoperability between languages is a VERY VERY important thing for the next generation of development (say the next 10 years or so). If Microsoft is the only one doing it, Microsoft wins by default (why should I spend months creating bindings for all these different sub projects in the unix environment, when I can just move over to .NET, spend a month learning, and go from there). Ruby interfaces wonderfully with the C/C++ world, and with SWIG it just gets even better, but it's certainly not enough. There is a lot of work out there that the Ruby community could REALLY benefit from, and I think these routes are a very good way to do that. What's the best route? Well, I don't know yet. There's .NET, there's the possible Perl/Python runtime, there's the Java runtime, there's MONO, hell, there's even a C++ runtime I found the other day (I was absolutely surprised by this, too bad I don't remember the URL), and there's the g++ 3.0 ABI. Whatever route Ruby takes, it needs to take at least one. Interoperability is going to be a key for all languages, it's important to me as a developer, and I think it should be important to the Ruby community as well. Here's to a future free of programming language restrictions! My coworkers are going to absolutely hate me when I sneak that Haskell based .NET component into our infrastructure... :) >There are many similarities to this and the .Net experience. > >Related: The babel01 conference in septemper is listed on the following page > >http://research.microsoft.com/projects/ilx/ > >ilx is an extended version of MS Intermediate Language the .Net equivalent >of java bytecode. The extensions were created to support feedback from >language researchers working on getting Haskell, Mercury and other languages >to run on the same runtime. It was originally codenamed project 7. >ActiveState is involved in the Perl/Python port. > >http://aspn.activestate.com/ASPN/NET/index > >Here is list of languages (in english) that on some experimental level is >ported to .Net > >http://www.dotnet-fr.org/links.php3?op=viewslink&sid=15 > >I would be nice if all languages used the same bytecode language. It would >also be nice with a runtime that was not governed by Microsoft - i.e. a >parallel implementation like the parrot project. But I can see many benefits >in leveraging the amount of work MS has put into designing a platform where >languages can communicate. IMO it would be stupid to invent a third bytecode >language unless there are some serious benefits in doing so. > >Mikkel > > >