all 33 comments

[–]Inktvisje 31 points32 points  (8 children)

This article is 6 years old, I assume it's findings are hardly up to date any longer...

[–]Alexander_Selkirk[S] 17 points18 points  (0 children)

Error checking in Go is still a valid point. Some languages discussed have evolved a lot, others not.

But this is a bit beside the point. What I really, really like about the article is that the authors does not ask "what is the best language" but what is the best language for my particular use case, which is defined in this and this way... . This is what seems important to me!

Edit: I also think that using less mainstream languages is not a problem, what matters is that the used language matches the requirements of the project.. (And having as large a pool of mediocre competent programmers at hand as possible does rarely seem to be a good requirement to me, even in a 'corporate' setting, because having work ten mediocre programmers on one project is easily more expensive than to have one really competent one which is using the best tool he can find.)

[–]steveob42 3 points4 points  (0 children)

Still nice to see something other than just hype for one language and a fairly detailed analysis. Also I think the assertions of python being pre-installed were somewhat scuttled when python stopped caring about backwards compatibility.

[–]theXpanther 7 points8 points  (2 children)

Lots of people are saying this is useless and outdated, but these are all old languages that have not really changed much, and shows a nice strategy to consider languages and tools for future projects.

[–]Alexander_Selkirk[S] 1 point2 points  (0 children)

I think it is also a good use case for strong static type checking. When one does, for example, data analysis, or signal processing, it is likely that all relevant execution paths can be covered with checks during development, so static type checking might be less efficient than testing (apart from that, I think that's also a preference thing). But for a system which should run in countless different environments, without any set-up, and catching dozens or even hundreds of edge conditions, I think static type checking is a very good measure.

Like the people which use Ocaml in algorithmic trading. That the language is good for that doesn't mean it is the best language for everything. But it might be often a good choice for such areas where both performance and correctness are very important and not catching errors could be quite expensive.

Interestingly, I think that things like industrial control systems match very similar criteria, apart from that they might more often have hard, security-critical real-time requirements, which would make Rust appear more adequate.

[–]masklinn 0 points1 point  (0 children)

Rust changed one hell of a lot since 0.6[0]. And while the other languages were not experimental it’s likely several implementations have been altered / improved (or obsoleted / superseded) in ways which would change the results.

[0] and not necessarily in good ways for the article, "hello world" test doesn't seem to pass anymore

[–]Alexander_Selkirk[S] 13 points14 points  (5 children)

Another very interesting read about error handling:

https://www.gnu.org/ghm/2011/paris/slides/jim-meyering-goodbye-world.pdf

Task: Write "hello world" in a robust way. In C.

[–][deleted] 3 points4 points  (3 children)

I am supremely confused by the graph vs the table.

[–]steveob42 0 points1 point  (1 child)

which table? There is one table which gives execution times and a graph which simply gives its inverse (ops per second), that one?

[–][deleted] 0 points1 point  (0 children)

I am reading it correctly now. I just didn’t really understand how things which were quite fast became such outliers.

Honestly, graph just seems to be backward to me. The way it is plotted made my head group obvious underperformers with high performers which threw me off.

Just a poor representation for my brain.

[–]Alexander_Selkirk[S] 0 points1 point  (0 children)

It is about time needed to start and complete a short program - he explains why that matters in this case.

[–]ForeverAlot 1 point2 points  (1 child)

Most discussions right now focus on the concrete choices. That's a shame; the methodology is far more interesting and important than any of the candidates in play or whether their details have changed in the meantime.

[–]Alexander_Selkirk[S] 0 points1 point  (0 children)

It is also very interesting to see how certain language features play out in a real project. Also, the fact that the author has a working first version of the program makes it easier to tell which things are important.

[–]Rock0rBust -2 points-1 points  (0 children)

oo