Fog Creek Software
Discussion Board




No Perfect Language

Heres a very interesting interview with 'Matz', the creator of Ruby.

Yukihiro Matsumoto: Language designers want to design the perfect language. They want to be able to say, "My language is perfect. It can do everything." But it's just plain impossible to design a perfect language, because there are two ways to look at a language. One way is by looking at what can be done with that language. The other is by looking at how we feel using that language—how we feel while programming.

http://www.artima.com/intv/ruby.html


You can hurl technical arguments all day, but in the end it's how something feels thats really important. 

Ged Byrne
Wednesday, October 15, 2003

My friend said once: "How can there be a language that's good for everything if there isn't such a screwdriver?"

Shlomi Fish
Wednesday, October 15, 2003

I've been accused of having a bad attitude for saying it, but everything sucks, just in varying degrees.

Flamebait Sr.
Wednesday, October 15, 2003

Microsoft says that people only use 10% of the features of Word, it's just that everyone uses a different 10%.  I propose that 90% of everything is crap, but everyone feels it's a different 90%.

Almost Anonymous
Wednesday, October 15, 2003

Wow, that's the best use of Sturgeon's law I've seen yet, Almost Anonymous.  ;)

Flamebait Sr.
Wednesday, October 15, 2003

This is a straw man. Which language designers say "their language is perfect it can do everything?"

Matthew Lock
Wednesday, October 15, 2003

Sun.

Ged Byrne
Thursday, October 16, 2003

Microsoft.

After all, .NET can *be* any language, right? (Sorta kinda)

Portabella
Thursday, October 16, 2003

Any language you like as long as its C# with syntax sugar.

Ged Byrne
Thursday, October 16, 2003

The .NET thing isn't completely hype.  I've been communicating with it using C on a UNIX box. It's more an interchange format than a language, but it's definitely been a nice way to exchange data.

Clay Dowling
Thursday, October 16, 2003

> The .NET thing isn't completely hype. 

Seriously now, I have heard it both ways:

1. The multi-language support in .NET is pretty good
2. But it's not perfect, in particular dynamic languages like Python are poorly supported

Much the same is true with the JVM, which also supports multiple languages (although it isn't marketed that way because Sun doesn't want to fragment the platform).

For example, Jython, the Java Python interpreter, does some pretty weird stuff under the covers to make it work (eg, dynamically generating bytecode).

Portabella
Thursday, October 16, 2003

The JVM is unfortunately very tied to Java.  In my university years, I studied it quite a bit (I also wrote my own VM for my own language based loosely on the JVM).

The JVM was designed to executed by hardware and put in washing machines.  If the designers had envisioned it being JIT'd and running on servers no doubt they would have made it a bit more general.

.NET, in my opinion, just does the obvious thing and provide a basis for other languages.  In some cases, like with tail-recursion, they go out of their way to support something not even needed for C#.

Almost Anonymous
Thursday, October 16, 2003

> The JVM is unfortunately very tied to Java.

It sounds like you've studied this quite a bit more than I have.

But I have trouble reconciling this statement with the fact that lots of other languages *are* available for the JVM:

  http://grunge.cs.tu-berlin.de/~tolk/vmlanguages.html

I'm not trying to be a language (or framework or VM) bigot here. I have no difficulty believing that, since multi-language support was an explicit goal for .NET but not for the JVM, the support is better -- or that Microsoft took the opportunity to learn from Sun's mistakes.

Portabella
Thursday, October 16, 2003

On that recurring ".NET only supports C#" nonsense...

Here's an incomplete list of languages that currently have working implementations on .NET:

C# and J#
C++ (via Managed C++)
Basic (via VB.NET)
Cobol (Fujitsu)
Fortran (Salford, Fujitsu/Lahey)
A# (free Ada port)
ML (MS research)
Eiffel (Eiffel Software)

Under development: Delphi, Python.

I'm sure I've missed a couple, feel free to add to the list...

Chris Nahr
Thursday, October 16, 2003

My point may have been missed.  On my UNIX system, I'm not in any way using the .NET framework directly.  There is no .NET framework equivalent in C on UNIX that I am aware of. 

But because of the inter-process communication methods used by .NET, I don't have any problem interacting with it from my UNIX box, using nothing more than the out of the box gcc compiler and a SOAP library.

Clay Dowling
Thursday, October 16, 2003

"But I have trouble reconciling this statement with the fact that lots of other languages *are* available for the JVM:"

I obviously very possible to port other languages to the JVM, it's just that JVM is nearly a mirror assembly-like image of Java itself.  For example, it has no concept of function calls -- only method calls on objects.

Almost Anonymous
Thursday, October 16, 2003

Chris, the problem is that not all of those languages are fully first-class citizens of the CLR world.  And not all of those languages are actually production-grade.

Flamebait Sr.
Thursday, October 16, 2003

What does "fully first-class citizens of the CLR world" mean? I don't understand that.

And yes, some are not "production grade" -- just like many languages available for physical CPUs or for the JVM are not production grade. That's not a specific disadvantage of .NET.

I was simply pointing out the range of available languages, regardless of the implementation quality of any specific one, because some people are apparently of the opinion that C# and VB.NET are the only languages that can possibly run on the .NET Framework.

Chris Nahr
Thursday, October 16, 2003

> For example, it has no concept of function calls -- only method calls on objects.

Thank you! That was informative, which is not always the case on this board.

It also tickles my funny bone, because as far as I know, methods on objects are often implemented under the covers as functions -- but here you'd have to do it the other way round!

Portabella
Thursday, October 16, 2003

"Fully first-class citizens of the CLR world" means those languages get the most support and optimization to the CLR environment, assuming I'm thinking the same as Flamebait Sr.  If MS decides to optimize the way programs are run in CLR, they will be inclined to do so in a way that benefits VB and C#, and Java, Ada, Python, etc. will run better by accident, if at all.

Conversely, Sun will tend to improve JVMs in a way that benefits Java code first, too.  (In fact, I've heard that in at least one case, the JVM architecture is designed to run better on Sun hardware.)  However, Sun isn't promising developers that the JVM as a common virtual runtime environment, as MS is doing with .NET.

Paul Brinkley
Friday, October 17, 2003

There are plenty of people trying to develop languages for the .Net framework, but very few of them are succeeding.

Python.net doesn't seem to be going anywhere [1] and Ruby is going for a 'bridge' rather than a .Net implementation because '.NET is not nice to the dynamic language camp.' [2]

Ironically, despite being written for just one language, Java already has implementations of both. [3][4]  I think that this is probably has more to do with developers being much more familiar with the JVMs innerr workings than anything else.

I await .Net 3.1 with much anticipation. 

[1] http://www.activestate.com/Corporate/Initiatives/NET/Research.html?_x=1
[2] http://blade.nagaokaut.ac.jp/ruby/ruby-talk/79638
[3] http://jruby.sourceforge.net/
[4] http://www.jython.org/

Ged Byrne
Friday, October 17, 2003

*  Recent Topics

*  Fog Creek Home