Miguel On GNOME, Bonobo, .NET and more 24
unixbob writes: "Microsofts developer site MSDN is running an interview with lead GNOME developer Miguel de Icaza entitled Using the ECMA Standards: An Interview with Miguel de Icaza ."
On a clear disk you can seek forever. -- P. Denning
Do We Need This? (Score:2, Informative)
Re:Do We Need This? (Score:1)
Re:Do We Need This? (Score:1)
Re:Do We Need This? (Score:1)
.NET CLR, C# etc.: ECMA Standards.
Questions?
Re:Do We Need This? (Score:2)
If you're talking asm vs. C vs. C++, you can call C++ a high level language. If you're talking C++ vs. Java, C#, Smalltalk, and Python (as was the context here) then it's disingenuous to the point of laughability.
And the lack of parameterized types in Java is just ludicrous; if you have static type-checking, parameterized types are basically a must-have. Generic Java generates a lot of interest precisely because of this. Not to defend templates per se, but the concept is inseperable from a strong static typing system (see: Dylan, Haskell, ML)
If you can't tell the difference between Java and C#, you don't know Java or C#.
I think the implication wasn't that they aren't different in details, but rather that they aren't different in any interesting high-level PL sense. Not sure I agree with that, but I do agree that smalltalk or python or another dynamically typed language (not an untyped language) is often a far superior way to attack the problem spaces that
The CLI is way better designed than the JVM's bytecodes, you have to at least give it that.
Sumner
Re:Do We Need This? (Score:4, Interesting)
The point was that in this context referring to C++ as a high-level language is pretty iffy. To an EE designing a chip, i386 assembly is a high-level language. To an OS implementor, asm is a low-level language and C is a high-level language. To your typical application developer, C is a low level language and Python and VB are high-level languages. In the context of Smalltalk, Python, Java, C#, and C++--which is what we were talking about--C++ is unquestionably a low-level language.
It's all relative to your point of reference.
parameterized types are basically a must-have.
I've seen some huge Java projects with very clean designs, so "must-have" seems awfully strong.
Way to snip the context. I said something along the lines of "in a strongly statically typed language, parameterized types are basically a must-have". Java purports to be such a language, but any sizeable program using collections foists off a fair amount of manual dynamic type-checking on the programmer. All this without the RAD and code-density advantages of a true dynamically typed language.
Seriously, this and the borked up I/O and threading capabilities are some of the worst parts of Java. That's not to say you can't write large projects in Java--_any_ language can be used to write large, successful projects with enough skill and effort. Java simply doesn't, in my opinion, approach either the dynamic (Smalltalk, Python) languages or the more mature static (OCaml, SML) languages as far as ease of implementation for large projects. It's libraries are it's strength and weakness; many of them are horribly designed, but they're bog-standard and they have an API (however poor) for basically everything. But Java still doesn't come anywhere near approaching especially Smalltalk in terms of installed base by application size and transaction counts, nor by total $$$ handled. And it doesn't approach even a goofy language like VB for worldwide LOCs or apps written. This despite a lot more marketing behind Java than Smalltalk ever had.
It's hardly the worst language ever written, in fact the language (as opposed to the libraries and the JVM platform) is a decent one if they'd just add parameterized types. But there are much better ones out there that have open licensing and source.
Personally, I'd recommend the following 4 language groups to any computer scientist wanting to learn several kinds of programming styles:
1. C, as a basic procedural language and because most other languages are implemented in it.
2. A strong statically typed functional language like OCaml, ML, or Haskell; OCaml wins based mostly on quality of implementation and availability, as well as offering an exposure to OO in a statically typed functional context.
3. A highly dynamic language like Lisp, Scheme, Smalltalk, or Python; Python and Smalltalk are my tossup choices here because they also offer an exposure to true OO programming (not simple class-oriented programming a la C++ and Java)
4. A weakly or non-typed language like typical Perl 4 or Tcl just to appreciate the alternatives. (Perl 4 wins because Perl knowledge is often handy)
Those I'd recommend well before C++ or Java (which offer comprimises on categories 1-3), although those 2 would probably be next (simply because of increasing prevalence) along with a programming by contract language like Eiffel and a logic-based language like Prolog.
Even if you wind up using VB on a daily basis, a good exposure to functional programming, static typing, etc will make you a better software engineer.
For real-world problems I almost always find myself falling on a mix of C, Python, Smalltalk, and high-level script (awk, Bourne, sed, etc). But I wouldn't give up my fp experience for the world.
Sumner
How many more times? (Score:2, Informative)
Oh well. (Score:2)
Interesting thing he said (Score:1)
How do any Java developers here feel about this? Ultimately, I think the success of
Java all the way! (Score:2, Informative)
I don't have time here to recount all the reasons Java is a great choice for enterprise application developmnt. I can tell you that if you don't yet have a good grasp of object oriented programming and design, then you won't appreciate Java until you do. And if you haven't done large enterprise systems with other technologies before, then you won't appreciate the advantages offered by the Java platform. Let me give you a couple of high-level points to consider:
Re:Java all the way! (Score:1)
Java is non-portable. Only a couple weeks ago did Sun allow FreeBSD to use their runtime. They refused to do so (FreeBSD is in direct competition with Solaris) until Microsoft committed to porting the
Mono is not interested in using Microsoft's proprietary libs. Interop is not their goal.
Thanks for strengthening my argument. (Score:1)
You make a good point about Java's security, which only strengthens my argument. What counterpoints can you offer to show that my analysis is mistaken? By what other metrics is Java inadequate for enterprise computing?
Java is non-portable.
Here's the short answer in the form of a simple syllogism: If a program runs on more than one platform, then it is portable. Java runs on more than one platform. Therefore, Java is portable.
Of course, that's not a satisfactory answer for enterprise computing. The platforms in question must be significant to an enterprise. Sun supports Java on Solaris, Linux, and Windows. This is more than satisfactory for enterprise computing.
I do agree that it would be nice for Java to be supported on FreeBSD, and I'd appreciate a link to your story about Sun refusing to allow FreeBSD to use their binary. As far as I know, anyone can implement a JVM. Being a for-profit company, Sun has to choose which platforms it supports directly, and I don't fault them for that. Personally, I'm very grateful for Sun's (and IBM's) Linux support, because it means that I don't have to run Windows at work.
Mono is not interested in using Microsoft's proprietary libs. Interop is not their goal.
Once again, you strengthen my argument. A lack of interoperability in .NET is yet another reason Java is the better choice for enterprise computing.
Re:Thanks for strengthening my argument. (Score:1)
Anyway, one can make
We're talking about asymmetric advantages and disadvantages. Sure, Java has advantages, but those can't be extrapolated to prove that Java is an instant win. The battle hasn't begun.
Re:Thanks for strengthening my argument. (Score:1)
As far as I remember the no. 1 reason for MS bashing Java is the "least common denominator" argument. However it looks like MS will run into the same kind of problems that Sun solved three years ago.
No - the war has not begun yet, but given the momentum that java has right now in the not very important area of enterprise computing, MS will be in for a hard time.
Re:Thanks for strengthening my argument. (Score:1)
I couldn't care less about "enterprise computing" arguments, because those go nowhere. Everyone should learn to roll their eyes when someone has the Right Answer.
I work often with Java, and scrape up barnacles with its more esoteric features. It ain't the One Answer, but if you find some solace in Java, more power to you. Handy tool. Don't let it blind you.
This is OT (Score:1)