Post #38,542
5/13/02 10:30:13 PM
|
I am curious about the second article though
I want to see how he got his language of choice to run well on it. Are there somewhat generic techiques which apply and could apply to other languages?
I am not hopeful, but I am interested.
Otherwise it really does seem to me to limit what interesting language features can be considered.
Cheers, Ben
"... I couldn't see how anyone could be educated by this self-propagating system in which people pass exams, teach others to pass exams, but nobody knows anything." --Richard Feynman
|
Post #38,564
5/14/02 12:43:37 AM
5/14/02 12:47:19 AM
|
CLR is Turing Complete
....so it can run probably any language. Whether the result is fast or has a simple interpreter is another matter.
I think where MS blew it is not directly supporting multiple inheritance. They could use it as a bragging point against Java. (Whether it makes any real difference or not is another matter.)
Sometimes I am disappinted when MS fails to act like MS for some odd reason. It is almost like the sun coming up in the west.
________________ oop.ismad.com
Edited by tablizer
May 14, 2002, 12:47:19 AM EDT
|
Post #38,572
5/14/02 7:03:21 AM
|
That wasn't my point
Of course anything can run in .NET, somehow. That is different from running fast and integrating well into it.
He is happy because Eiffel runs fast on .NET and integrates well into it. I am interested in how he accomplished those things, and what important things he found out while doing so.
Cheers, Ben
"... I couldn't see how anyone could be educated by this self-propagating system in which people pass exams, teach others to pass exams, but nobody knows anything." --Richard Feynman
|
Post #38,630
5/14/02 11:49:48 AM
|
And because C# is so oriented towards strong typing, etc
(Note for Ben: since I get the dead tree version of Software Development, I will be reminded of the series when it arrives and will post the link to it in this forum. I'll be interested in hearing your commments.)
I wonder how well dynamic &/or untyped languages will integrate in and how well (if at all) their classes can be shared between them and the "normal" CLR languages. For example, I'm working on Python code to dynamically create class data members (which can be strings, ints, and doubles right now) based on the contents of a MetaKit database file.
Basically, it's a class to store and edit configuration information. And, the editing will be is automated, too -- the Python code creates Tkinter dialogs based on database information. It's very convenient to be able to add more config data simply by adding to a database; my previous approach in C++ wasn't even close in convenience (required adding code in five different places, plus modifying the dialog screen).
My earlier Python approach was to load in the config information (strings, ints, and doubles) from an INI file into a Python dictionary, which can handle heterogenous types. C++ can't do this due to strong typing. The Python dictionary approach is workable, but the new approach is more convenient.
I also heavily rely on dynamically importing Python modules (specified by the configuration database) to allow easy customization by our customers (or by us for our customers).
In summary, I've found Python's dynamic abilities very useful, know that I couldn't do such stuff in C++, and doubt that I could do it (or at least do it conveniently) in either Java or C#.
I wonder how hard it would be to fully integrate a dynamic, untyped language into dot nyet, being able to share classes, make other languages dynamic, etc. I suspect it'd be pretty hard -- but I don't care enough to spend the time. I ain't going to dot nyet, and neither is my employer.
Tony
|
Post #38,638
5/14/02 12:29:23 PM
|
Re: I am curious about the second article though
From what I understand from the various reading that I've done on .NET (and I'm not claiming to be an expert, by any means) is that within the actual compiler for your langauge of choice, everything is pretty much open. Since the "byte" code is "complete," it should be able to handle pretty much any langauge. Of course, that's assuming that some sort of mapping by the compiler to the "byte" code exists. For some dynamic languages, they may get neutered in order to fit properly (like dyanamically redefining the class interface, or whatever). That's part one. Can it be translated such that it can be run by the CLR.
The next issue has to do whether it can be accessed externally by other .NET components. This includes features like inheriting from langauge A to language B across assemblies. This is where languages basically get neutered to be seen the same way. There's not a whole lot of difference here between the way COM works (it's a C-like interface). That's not to say that it's not an improvement over COM, because it is (you can't inherit a COM interface, for example). But, it does mean that langauges won't be able to be seen external the same way they are seen internally.
So, from my perspective, the whole multiple language thing is cool, but slightly misleading. First, there's a mapping of your language to run on the CLR (internal view). This removes *some* functionality from most all languages (or, at least, some modifications). This is *not* the same as the difference between managed and unmanaged C++, though (unmanaged C++ is like using JNI in java....it gets compiled to the machine and runs outside of the CLR). Second, there's the external referencing of assemblies (components, etc. get compiled into an assembly, similar to a DLL). There's nothing horribly new here, other than the improvement of that interface (i.e. inheritance). There's still the issue, for example, of case-sensitivity between languages.
Bottom line: it's definitely an improvement over COM/COM+/DCOM/etc., but it's not earth shattering. If I were MS, I'd have done the same thing (assuming I was smart enough to come up with the idea in the first place, which is debatable). On the one hand, it allows them to create a common view of their OS. On the other hand, it allows them to compete against Java on the server side (and other server-side development languages, too, such as PHP, Zope, ColdFusion, etc.).
I consider it a brilliant move on their part (under the circumstances), but it's not as *cool* once you get into the details and discover that, by "partnering" your language with MS's .NET to allow you to run there, you're really not getting what you think. It's that whole partnering with MS thing, again.
Dan Shellman
|
Post #38,758
5/15/02 7:40:50 AM
|
My issue is tony's
I like dynamic programming techniques.
.NET doesn't (from what I have read) seem very kind to that. Will I be able to transparently call across the CLR to a class that was autocreated on demand? Somehow I doubt it.
I am also watching to see how the [link|http://www.parrotcode.org/|Parrot] project does. You can think of it as a similar idea to the CLR except targeted at dynamic scripting languages. (Its performance on static ones will be worse. Initial toy benchmarks suggest that it will let the dynamic ones run much faster than they currently do though.)
Cheers, Ben
"... I couldn't see how anyone could be educated by this self-propagating system in which people pass exams, teach others to pass exams, but nobody knows anything." --Richard Feynman
|
Post #38,825
5/15/02 4:05:42 PM
8/21/07 6:30:31 AM
|
Ditto
David Simmons has been banging around the Smalltalk world producing very clever stuff (although he totally lacks any sense of business as far as I can tell - too easily distracted by tasty hacks). Nonetheless, he has done a scripting language called SmallScript that lives on top of .NET as well as on his own VM (which he calls the Agents Objects System AOS).
A couple quotes from him on his .NET implementation experience are:
[link|http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/33895|http://blade.nagaok...y-talk/33895]
[link|http://lists.squeakfoundation.org/pipermail/squeak-dev/2002-February/009189.html|http://lists.squeak.../009189.html]
So its not awful - but its not great either. It *is* better than the jvm.
The average hunter gatherer works 20 hours a week. The average farmer works 40 hours a week. The average programmer works 60 hours a week. What the hell are we thinking?
|
Post #39,261
5/20/02 10:13:52 AM
5/20/02 10:25:05 AM
|
Dynamic languages and the CLR
[link|http://www.javalobby.org/pdf/clr.pdf|CLR Cross Language shortcomings] this article contains rebuttal comments from the Microsoft Program Manager for the CLR, so the article is quite balanced. At the end there is a page relating specifically to Eiffel.
The bottom line is that even Microsoft [link|http://research.microsoft.com/~emeijer/Papers/CLR.pdf|admit] "It would be unfair to state that the CLI as it is now, is already the perfect multi-language platform. It currently has good support for imperative (COBOL, C, Pascal, Fortran) and statically typed OO languages (such as C#, Eiffel, Oberon, Component Pascal). Microsoft continues to work with language implementers and researchers to improve support for languages in nonstandard paradigms"
It is clear that dynamic languages will suffer under .NET.
One last quote from the article regarding Python "ActiveState reported their experience implementing Python for .NET (with funding and help from Microsoft): [link|http://www.activestate.com/Initiatives/NET/Research.html|http://www.activest...esearch.html]. The paper even reveals some cross-languages problems that I wasn t aware. They conclude the project was a success because they could get Python working on .NET; but this is with severe problems of interoperability and performance. The speed of the current system is so low as to render the current implementation useless for anything beyond demonstration purposes. Some issues are related to the immaturity of the current Python for .NET system, but many others are limitations of the CLR. Of course, Python is not a close relative to C#. This might change, as ActiveState mentions the possibility to introduce changes such as static type declarations I sincerely hope this is not the first step to make Python yet another C# skin ."
Edited by bluke
May 20, 2002, 10:25:05 AM EDT
|
Post #39,278
5/20/02 12:25:22 PM
|
Static languages...
Just for reference, there's a [link|http://www2.fit.qut.edu.au/CompSci/PLAS//ComponentPascal/virtual_machines.pdf|Comparison of VM's] from the Gardens Point Component Pascal group which tried to implement them in both JVM and CLI. (Granted that Object Pascal is about as static as they come, but the article may still be of interest).
|
Post #39,374
5/21/02 7:35:06 AM
|
Thank you all
Between the 3 of you, you did give some evidence that Microsoft at least has worried about dynamic languages (even if it thinks they should be second class citizens).
However I am going to wait to see if their promises of doing something about it, or the reality of languages that try to use it, pan out. You see I have a little trust issue that stuff from Redmond doesn't tend to work properly, and the desires of anyone other than their steamroller get ignored...
Cheers, Ben
"... I couldn't see how anyone could be educated by this self-propagating system in which people pass exams, teach others to pass exams, but nobody knows anything." --Richard Feynman
|