Comment by davedx
3 years ago
It's a very interesting article, but the lack of citations backing up some of the big claims make me doubt its premises. It's a shame because the author seems to know his programming language history. The most important IMO is this point:
> Fortran is significantly faster than C
Then later:
> Is Performance Necessary for a Hundred-Year Language?
> Fortran, one of the oldest thriving languages, lives and dies on performance. So that’s a check mark in the “yes” column.
I did some googling and found that there are some design choices that might make Fortran faster, but it's highly debatable whether it's "significantly faster than C".
Given how hardware has advanced over the years, "performance" just seems a weird feature to look for in a 100 year language too. You don't build performant software by building it in Fortran or C, you do it by making sensible design choices and writing thoughtful code, and not over-architecting or over-complicating provisioning.
IMO C is obviously going to be a 100 year programming language, and I came away a bit disappointed the article didn't quite fully claim that.
An interesting and thought provoking read nonetheless.
In the past, Fortran was always faster than C in scientific computation applications, mainly because many optimizations are prevented when compiling C, by the risk of pointer aliasing.
In modern C, such optimizations are possible by using "restrict".
Nevertheless, few C programmers bother to write "restrict" wherever it should be used, so casually written C code remains slower than similarly written Fortran code.
Moreover, modern Fortran has a lot of builtin operations for multidimensional arrays, which can be implemented in an optimized way by the compiler.
Writing simple C code cannot achieve a comparable effect.
Achieving a similar performance in C would require a special optimized library and this would result in extremely verbose and ugly C code. It is really impractical to do this in C and C++ must be used, with operator overloading, iterators and templates being needed to write a custom library that can match or exceed the builtin features of Fortran.
> Writing simple C code cannot achieve a comparable effect.
Can you provide a citation or source on this please?
I can't provide a citation or source either but I have seen such claims in a variety of places over the past 20 years. Certain design choices in C have caused the compiler to not be able to optimize as much as compilers for languages like FORTRAN or SISAL can. Of course, the ability to optimize SISAL was critical since it ran on the Cray supercomputers.
I would disagree that C is going to be a 100 year programming language. I think the recent focus on safety is going to not only turn businesses away from using C but that they will active push C out of their code bases in the quest for safety. C was fine back before networking was everywhere. Today, it's a disaster waiting to happen in every C program. Sure, there are C programmers who claim they can write safe C code, but the numerous hacks prove they can't. Why wouldn't a programmer prefer a language that handles most of the safety for you, and is designed to allow for better optimization to boot?
I don't think I'd claim anything about what computers are "obviously" going to be in 50 years' time. AI, quantum computing, more advanced BMIs (thought-controlled computers etc.) and who-knows-what could disrupt everything we know in that time easily. As could civilisational collapse, though I'm certainly willing to bet there'll still be computers and programming languages of some sort in another 50 years.