Stories
Slash Boxes
Comments
NOTE: use Perl; is on undef hiatus. You can read content, but you can't post it. More info will be forthcoming forthcomingly.

All the Perl that's Practical to Extract and Report

use Perl Log In

Log In

[ Create a new account ]

ziggy (25)

ziggy
  (email not shown publicly)
AOL IM: ziggyatpanix (Add Buddy, Send Message)

Journal of ziggy (25)

Monday May 06, 2002
12:48 PM

Multi-language paradigms

[ #4696 ]
This was initially inspired by Matt's entry about Joel Spolsky's observations about the .NET CLR.

 

The .NET CLR isn't very exciting, at least now. Perhaps if Microsoft delivered on the promise of getting Eiffel, Haskel, Oberon, Smalltalk, Perl, Python, APL and JavaScript all working in .NET as first-class languages, then there might be something to examine. As it stands, Langauge Independance today on .NET means exchanging {, } and ; for begin, end and end-of-line. I agree with Joel here; the promise isn't very compelling.

But Microsoft did identify something important: multi-language development. The main issue they are trying to resolve are C++ component producers and VB component consumers, dealing in a world where documentation and interfaces are a little too opaque for everyone to be happy. Java has solved this problem, and Perl doesn't seem to have an issue with open/opaque interfaces (modulo the odd, poorly documented and buggy XSub). That's all well and good, but the issues that need resolving are integrating Java/Perl/C/C*, SQL, JavaScript, HTML, a templating language and perhaps some XSLT into a single project.

Those languages won't be integrated into a single runtime, or unified into a single language, because they each focus on solving a different problem in a different domain. Maybe if the entire world were recast as a big LISP machine, multi-language development would go away, but there's an equally strong argument that you'd instead need to invent 4 and 5 different sets of LISP macros or LISP dialects to do what Java/SQL/XSLT do already.

Add it all up, and it looks like multi-language development is a fundementally good idea (or at least the best idea we came up with over 60 years of trying). Distilling that down to a single Ur-syntax won't fly (unless you constrain yourself to solving the problem of the C++ producer and VB consumer).

The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
 Full
 Abbreviated
 Hidden
More | Login | Reply
Loading... please wait.
  • This isn't the first, or even the tenth, time something like this has been invented. It's been standard operating procedure on many systems, from IBM's big iron systems to midrage platforms like VMS. Amusingly, or sadly, it's been Unix machines where this has been horribly lacking due in large part to a historical lack of good calling conventions. Each language had their own, and you couldn't easily link libraries together from different languages. Hell, courtesy of some interesting fsck-ups on the part of
    • That's a really astute observation. With all of the hoo-hah about cross-language compatibility within a single VM, I never saw it as a rehashing of calling conventions.

      Surely there is more to CLR and .NET than just that. Or has the idea of a "compatible calling convention" simply been upgraded to include method calls, object definition, versioning, cryptographic signatures and reflection? And do you really need to have a VM for all of that?

      • It's a little more than calling conventions--there are exceptions as well. But that's about it, and getting cross-language exceptions isn't that big a deal either.

        All the other stuff is either upgraded calling conventions (method calls, reflection) or fancy dynamic loader stuff (versioning, crypto signatures). And no, you don't need a VM for it at all. You can do it entirely as normal, compiled code.

        The single biggest hurdle is the initial definition of the conventions, and that's as much engineering tr