I work on a project that uses C++. Our runtime is implemented in C++, and our compiler produces C++. For us, performance is a top priority. I am quite frustrated by C++ sometimes, but I think it's the best tool for our job. I'm quite fond of pure C, but I also like having rich abstraction mechanisms like classes and templates, so I don't think it's appropriate for us. And no other language with broad support is as well-suited to writing high performance systems code while also allowing us to have rich abstraction mechanisms.
I am interested in D for this purpose - the most recent version looks quite well designed - but it's not as widely supported.
Isn't it easier to work with the tool that you know thoroughly, which may not be "cool", rather than pick up a new tool in a different ecosystem?
Re:The Silent Majority of Experts
by AnswerAndForget on Saturday July 14, 2012 @12:13PM
(#4244547)
Who said anything about coolness? Seriously, why do people think that just because all languages are Turing complete, any further discussion is just a popularity contest?
The point is that if you know one of the languages cited by the parent ("C++, Perl, and even PHP"), then you do make your life easier by working with that language rather than choosing one which you don't know.
All other things being equal, sure, choose the maximally powerful language in whichever dimension makes sense. But all other things are usually not equal.
If you are working on a project by yourself, here are some things which are more important than the characteristics of the language:
- your knowledge of the problem domain
- your knowledge of general software development
- your knowledge of the limits, capabilities and ecosystem
of the language (aka project experience)
Also, if you're working with others, the following factors are more important than choice of language: - your customer's expectations (if you're shipping software to them)
- the ability to recruit experienced individuals for your project
- the availability of mentors / reviewers within your organization
- the availability of secondary resources (books, FAQ, etc)
(edit: formatting)Only in the short term.
Picking up a new tool shouldn't take long, but can give a significant benefit. As I like to say, learning something well enough to use is an O(1) action where the benefit is in O(n) to how much you use it.
In the long run, the quality of the tool dominates your current familiarity with it.
I do not accept that they are making it any easier on themselves by this choice of language.