Sunday, May 10, 2009

On "RailsConf: What killed Smalltalk could kill Ruby, too"

Browsing Reddit introduced me to RailsConf: What killed Smalltalk could kill Ruby, too The keynote speech by Robert Martin. I found it to be quite interesting as I had been monitoring odd posts on the Rails community and its general attitude.

Some of the points made by Robert on why Smalltalk contracted in popularity included:

  1. It was too easy to make a mess.
    And the mess was found late in the project timeline, leading to failed projects.

  2. Smalltakers didn't want to deal with the boring 'corporate' tasks.
    Leading to the rise of programmers using other languages to earn a corporate living.

  3. When Smalltalk was 'riding high', a tendency to look down on other languages.
    This would alienate the general population of programmers.

Robert put in a big, recurring, plug for both TDD and refactoring IDEs as ways to keep Ruby alive.

One comment he made was that he thought that in the dynamic vs static typing, language wars: Dynamic won and cited as evidence that most mainstream 'static' languages such as Java, C++ and C# have ways to do dynamic type checking – although badly. I wouldn't go that far, as I suspect that little of the mindset of programming in a dynamic language such as Python would be adopted by a C# or Java programmer. I suspect that they will use the dynamism available to them as a last resort as part of a design pattern to solve a particular sub-problem.




4 comments:

  1. I think the real answer is interoperability with other languages. When you look at all the highly successful languages, they all have systems in which they can be mixed and matched to produce a whole stack solution. Java is one of the poster childs of this with its ability to work well with C/C++/C#/VB and a host of other languages using those as a common ground.

    This is also where python shines.

    Ruby needs a focused effort on interoperability with other languages and packages. If Ruby can not be integrated into a system which is using Java and PHP, it will not survive.

    ReplyDelete
  2. Hi Doug,
    It is surprising that you play the interoperability card against a scripting language and have Java win? I'm not a Ruby or Java programmer, but from my readings I would think that Ruby has its C/C++ API and tools to automate a link to C/C++ libraries; and IronRuby and JRuby projects too.

    In some ways, I would say that Python has never had it better: Advocacy by influential companies such as Google and Microsoft, a great community, and some god software, both commercial and open-source. I watch a video like that for pointers on how to keep the momentum going in Python.

    The biggest threat to any established programming language at the moment I think is multiple cores, A languagethat solves how to easily make use of multiple cores efficiently and makes the programmers task trivial would have most any other problem ignored in the stampede to adopt it.

    - Paddy.

    ReplyDelete
  3. And here's a reply from a Smalltalker.

    What they both agree on is the need to be a good winner when times are good. I try and be polite on the web, as that's the kind of post I like to read, and is less likely to obscure any point I'm making.

    - Paddy.

    ReplyDelete
  4. @Paddy,

    I have it win for shear amount of code and projects which have Java integrated with them across all levels of computer science. When you look at the big picture of computer science in general and look at the history of Java, it quickly becomes apparent that its ability to integrate and inter-operate with other languages was key to it's acceptance and dominance.

    Ruby has much more work to go in catching up to Python when it comes to the shear amount of integration code there is out there.

    Does Ruby have the equivalent of SciPy or the IMSL? no. Does it have the equivolent of matplotlib? not yet. reportlab? almost. Does it have something as powerful as the Imaging Library? getting there, but not yet. Are there Ruby API's out there for matlab? mathmatica? svn? git (i think there is one for git...), Photoshop? Maya?

    being able to use python in all these contexts is a real boon for python, and more so than the support it has been getting from corporations. The reason why corporations are giving their support is because of these integrations. At least that is what the corporations are saying.

    ReplyDelete