Dec 25, 2007

Comparative Languages: Community is Everything

Over the past year one of my main technical interests has been exploring and comparing various programming languages. I'm not exploring the boundaries of linguistic obscurity like Steve J; I want to borrow ideas from other languages that I can incorporate in my daily work and evaluate potential future tools. (Any programmer who's satisfied with her tools isn't paying attention.)

There are endless metrics against which one can judge a programming language: the performance of programs, subjective readability, availability of libraries for common tasks, availability of quality language primitives, &c. In my explorations, however, nothing matters more than the community surrounding a language when determining its overall success.

A Happy Place

People program in Ruby because it's fun; it makes developers (of a certain persuasion) happy. Happy developers evangelize, and thus a friendly, productive community has grown up around Ruby and Rails over the last several years. Coming from the world of Java or PHP, the Ruby community is some brilliantly green grass. Rubyists tend to be pleasant, articulate, and helpful. That people write cogently about Ruby is perhaps the community's greatest strength, and one that will surely be tested as the community swells with bulk-rate developers.

A Chilly Place

2007 has been a big year for the visibility of functional languages like Lisp, Haskell, and OCaml, but no accessible community has yet formed around any of them. Indeed, by some accounts the functional language community can be downright hostile. In my experience, functional programmers can be a dry and academic lot. Languages don't take off until someone with a sense for humane aesthetics starts evangelizing in a format that people enjoy consuming. While Paul Graham has waxed poetic about Lisp, it'll take more than his essays to warm people up to the functional way of thinking.

A Scala Place

Former Java heads with an eye towards the more practical aspects of functional languages are flocking to Scala which, as mentioned in my previous post, runs atop the JVM. Scala, much like ECMAScript 4, has the potential to be the Next Big Language. It's got constructs to handle most any style of programming, a superb approach to concurrency, and much more. What may tie Scala down are its deep roots in the Java community.

That Scala builds on the strengths of the JVM and the plethora of available Java libraries makes good pragmatic sense. It also means that knowing Scala means knowing Java, and in turn dealing with the Java community. That means things like ugly documentation, forums and IRC channels filled with miserable code and incomprehensible language, Sun's endless cheesy marketing, and a pervading sense of enterpriseyness. Java isn't cool, it's Serious Business.

Converts from Java to Ruby haven't made the switch because Ruby is faster, or better at concurrency, or deployable in a broader range of environments, or better supported. They haven't reinvented the wheel in Ruby with new build systems, documentation setups, and libraries because doing so makes good pragmatic sense. Quite the contrary, on all counts. Developers have chosen Ruby because of the community. They've reinvented the wheel so many times over to keep tools within the Ruby community, where things are nice.

None of the above hassles will deter those familiar with the Java community to dive into Scala, and talented developers are already doing so. For developers that have had the pleasure of largely avoiding Java for the past few years, Scala is a harder sell. For us, the Java community is an albatross around Scala's neck. The question is whether Scala's benefits will outweigh that negative.

4 comments:

funkatron.com said...

I totally agree with you on most stuff, but I wanna step up and say that my experience with the PHP community has been quite good, especially in the past 2-3 years. How much of that has been a change in who I know, and how much of it has been a change in the community itself, I'm not sure. I do think that movement in some of the other scripting lang communities, esp Python and Ruby, has influenced PHP in some positive ways, and maybe this is one.

Regardless, I do think the quality of writing in the PHP community is very good. I think there is also a fair bit of crap, but I'd suggest that has something more to do with the size of the PHP community and the accessibility of the language. I'd suggest the PHP Advent Calendar as a good example and intro to folks who are doing good writing (except Day 12. That day sucked).

Steve Jenson said...

I completely agree that community matters. Ruby really does have a model community. One of the reasons I decided to stick with Scala, for it's youth, it has a friendly, active community.

Paul Barry said...

I was doing web app development with Java for years, and I've been doing Ruby on Rails for over a year now and I have really found it refreshing. But check out Rich Hickey's presentation on Clojure. He makes some good points that although Java might suck, the JVM and the plethora of Java libraries are your friends. It will be interesting to see if there is a return to the JVM with implementations of various dynamic languages like JRuby, Jython, Rhino, Scala, Clojure, etc.

Porges said...

I disagree with your assessment of Haskell; I’ve found #haskell to be downright friendly :)