Ted Leung on the air
Ted Leung on the air: Open Source, Java, Python, and ...
Ted Leung on the air: Open Source, Java, Python, and ...
Sat, 05 Apr 2003
Languages that support community
Today I discovered that Carlos is a former IBM'er too. Of course, that's not that hard. As usual, he's got some good info. Today's interesting tidbit references William Grosso's presentation Why Java is a Better Programming Language than you Think, and calls out a statement regarding how well a language supports communities:
[00:06] |
[computers/programming] |
# |
TB |
F |
G |
0 Comments |
The single best measure of whether a programming language is worth using is: how well does it support communities. The social aspects of the language dominate the technological aspects of the languageSo how does a language support communities? Here's Grosso's take.
New programmers must be able to get up to speed in the languageThis implies the availability of documentation and free implementations. Java did both of these. The downloadable .NET SDK is a free implementation, but there's not enough documentation. Python is good on both.
Platforms to learn the language on must be cheap and plentifulThis implies the availability of free implementations on multiple platforms. Java did this. .NET did not do this, although the Mono guys are trying to fix this. All Python versions are free.
Programmers must be able to use the language on whatever machine they're usingThis implies the availability of implementations on multiple platforms, and the implementations must not be total resource pigs on the majority of installed hardware. Same as the last item.
Programmers must be able to understand and reuse each other's codeThis means that there is source code and / or binary code compatibility across platforms. Java does this. We'll see what happens as the CLR and .NET framework evolve. C and C++ failed to do this. Lisp and Smalltalk failed to do this. Python does this.
Old code must survive in a useful form (and evolve and improve)To me this means release to release binary compatibility (RRBC). This is an even stricter requirement than the last one. Java has done this so far. We'll see for .NET. Python is okay at least until you start wrapping C code. Everyone else lost on the easy version, so they definitely failed the hard one. It's an interesting list. So let's see how Python stacks up, since I've been doing a bunch of Python hacking lately, and I've really enjoyed that. The language is nice, the libraries are pretty large and the implementations are free. All code is source, and it seems to be reusable, except for features that changed between 2.0/2.1/2.2. However, the amount of libraries available for Python seems much smaller than Java. This is a function of community, and the Python community is pretty healthy. So where's all the code? It's strewn all over a gazillion websites. The Python Index proposed for 2.3 should help this a lot. Every other language community should be learning from what Perl did with CPAN. The Java folks should be trying to build a CJAN (and there've been multiple aborted efforts to try -- jardeps is a stab at this, but is stalled for the moment). I haven't seen anything like this for .NET, but it may be that I don't know where to look. If there isn't anything, the Mono guys should jump all over this. If your language supports community, build in a way to find useful code. The Python tools situation is also poorer. I like Emacs, but after working with Eclipse for Java, going back to any other tool just doesn't make it. I've been using WingIDE to work on PyBlosxom, and that's helped a bit, but it's not Eclipse. I haven't done a lot yet with VS.NET, but I know from some reading that it's still missing things. Tools that understand what programs mean are really powerful. Ironically, it may turn out that Eclipse is what locks me in to Java. I can see the stream of Java code being ported to C#. If the C# people play it smart, they'll get the benefit of learning from Java's mistakes. So it's possible that C# could catch up to Java's libraries, and potentially pass them in quality (since many of the best Java libraries are open source). With the library story at parity or better, then it comes down to tools. Even if VS.NET turns out to be a match for Eclipse, it costs a lot of money. Eclipse as an open-source base is really pretty powerful. It'd be pretty funny if a year or two from now, people are saying, "boy, if they had Eclipse on CLR, I'd jump". Instead of spitting on the Eclipse team, Sun might actually be thanking them. Who knows. Maybe Miguel will decide to port Eclipse.
You can subscribe to an RSS feed of the comments for this blog:
Add a comment here:
You can use some HTML tags in the comment text:
To insert a URI, just type it -- no need to write an anchor tag.
Allowable html tags are:
You can also use some Wiki style:
URI => [uri title]
<em> => _emphasized text_
<b> => *bold text*
Ordered list => consecutive lines starting spaces and an asterisk
To insert a URI, just type it -- no need to write an anchor tag.
Allowable html tags are:
<a href>
, <em>
, <i>
, <b>
, <blockquote>
, <br/>
, <p>
, <code>
, <pre>
, <cite>
, <sub>
and <sup>
.You can also use some Wiki style:
URI => [uri title]
<em> => _emphasized text_
<b> => *bold text*
Ordered list => consecutive lines starting spaces and an asterisk