The great thing about the internet is that you can always find someone to disagree with the most self-evident things. It is an enduring mystery.
1+1 is not equal to 2
And I guess if I can’t come up with a counter-argument, your assertion is proved correct.
The unreasonable burden of proof
So, some guy came up with a bunch of cases where apparently language choice makes no difference. If I can summarise his cases, I think they were
- interaction with [poorly designed] legacy systems
- algorithmic research
- limited platforms such as embedded systems, GPUs, parallel computing
And going back to the point I was trying to make
- for a given problem, some languages will be better than others
- libraries are (almost always) more important than languages, but selecting the language will determine the libraries
I’ve glued together plenty of legacy systems in my time. Some were written in Cobol, some were Pascal auto-translated into C, some were, shudder "modern" C++. I’ve gotta tell ya, I was seriously pleased to have libraries available.
Back in the day we were doing it with CORBA. These days I might hack something RESTful up with HTTP/ Twiggy. Or I could pass data around via the file system, or a database.
Anyway, this is stuff that is unlikely to be built in to the language. It is going to come as a library right? But for sure, if I pick a language that can interact with the file system, the database or sockets I’m going to have an easier job than if I don’t.
Brand New Micro-Processors
Does this even happen these days? I thought everything was a variant of Intel or ARM.
If I understand correctly, the argument is that if there is only a single choice of language (because, for example, it is a new micro-processor without a C compiler yet), then language doesn’t make a difference.
You know, I can’t agree with that. I can think of two possibilities.
Assembler (or assembly, whatever), is the best language for that microprocessor. Because otherwise I have to first implement the other language in assembly.
Another language, let’s say C, is better than assemblyer. So first of all I implement C in assembler.
But wait a minute. Then I’ve admitted that one language is better than another.
And as for embedded. Why does everyone with a moderately complex embedded system start with Linux? Is it a) because Linux provides loads of libraries that are great for implementing embedded systems, or b) there is no b.
I don’t have much experience in this area, but given the obvious flaws in the rest of the guy’s argument, I have no doubt that a few well chosen libraries can be very helpful. After all, in traditional sciences, progress is made by standing on the shoulders of giants. Why should it not be the same in computer science?
Yes, much of that work is now available in just about any decent language, but I think my point is plain.
No, no it isn’t plain. Sorry. What are you talking about? If languages now implement much of that work that shows that libraries help no?
Linking To Supporting Research
At the risk of making the same mistake, I can’t believe you (Jared) linked to that function point analysis as support. I don’t think much of the technique to begin with and that was a great example of why no one should. They included HTML (Why not include photoshop while you’re at it?) and SQL Forms beat everything else by nearly a factor of 2. Ugh.
I often see articles that begin with a line such as Numerous studies have shown that… and then strangely, the article doesn’t link to a single study. Kinda like the original article that I was refuting.
I linked to a study (I also saw a similar table in one of McConnell’s books) and you think that weakens my argument? So let’s see what their methodology was…
Where does the data come from? The gearing factors in this table were drawn from 2786 completed function point projects in the QSM database. As mixed-language projects are not a reliable source of gearing factors, only single-language projects are used. As an additional resource, the David Consulting Group has graciously allowed QSM to include their data.
Okay, that seems at least somewhat rigorous. But a handwavy "but but, HTML, SQL Forms" has convinced me they don’t know what they are talking about. Thanks.
I don’t know why they included HTML, or why SQL Forms is so good (I haven’t used it), but in specialised areas, I can easily believe a language (+ its libraries) can beat others by a factor of 2.
Read Full Post »