So a little bit ago Gruber posted about how in the near future scripting languages would be used to write desktop apps with performance sensitive pieces written in your C’s and C++’s. He followed it up with another post and Scott posted about it too. I spent a bit of time thinking about this but for some reason I had a hard time figuring out whether I agreed or not. My thinking came in two waves.

The first wave was taking the question (or I guess, statement) at face value. First I immediately stopped thinking about performance as an issue, since one tenet of the article was that hardware was becoming fast enough that dynamic languages perform just fine for most things and that for trouble spots you could code closer to the metal. So I thought about my problems developing using the stricter languages. The first was that one of my big issues is that there’s a lot of overhead associated in starting a project - looking at hello world in C or Java vs Perl and there’s a lot more work you have to do. For little web development projects, it just isn’t worth it. But for larger projects the cost of that overhead is essentially fixed and drops to nearly nothing as a percentage of the total amount of effort. So for large desktop apps, this problem seemed like it didn’t really matter.

Then I thought about that what the strict languages give you, which is less flexibility. And that is both good and bad. It is good because all that compile time checking cuts out a whole class of problem - it, in some ways, limits how bad you can make your program. Contrast this with the perl’s of the world where we’ve all heard too many times how awful the code is and how unmaintainable it can be. The flexibility that perl and dynamic languages in general provide give you a lot more rope to hang yourself with. But that additional flexibility also gives you the chance to write incredibly elegant and expressive code at the same time.

To me the rigor of static languages is a benefit when you have large projects and a large development staff. By imposing this level of strictness and catching many bugs at compile time it helps settle a sort a baseline standard. Dyamic languages fare better with a smaller development staff of excellent, experienced developers. I can really think of no situation I’d less like to be in than a large perl develoment staff with mediocre developers. My initial thinking about this was that I suspected that a lot of big companies were in the large number of developers category in which it was much more difficult to ensure the quality of each developer, so static languages could hold out as the languages of choice.

But I quickly came to my second wave of thinking on this. Ultimately this question is one of “this language is better than that language” that the interwebs has seen so much. Is Perl better than C? Is Java better than Ruby? Those questions need to be followed up with by For who? For what? There are many reasons why a company decides to go with one language over another some technical, some less technical. Does it already have a staff of developers working in a language? Is there one particularly influential person who wants to work in a particular language? Are there any libraries/frameworks already in existence that might help with the application in question?

That dynamic languages are now an option in developing desktop apps is without question and that’s great, it broadens the field. But will it take over? I don’t think so. Sure no one’s writing any cgi scripts in C anymore but Java and C# sure as heck still power a lot of web sites.

← newer Pipes loves me!  ↑  Breakfast Links: Flaming Ice, Comic Con and Palm older →

TwitterCounter for @nybble73