In fact, in a "mature" system with a lot of utilities, one often finds that no code at all needs to be written!
Just found this statement in the "users' manual" of some software from 2001. What leads me to the question: how mature is C++? Do C++ still need to worry about algorithms for trivial tasks (like pattern matching receently on this forum -- http://www.cplusplus.com/forum/general/251289 ) or is all customary done and a programmers task is just to find where?
Not to ask questions only, here my own answer:
New to C++ but not new to programming at different levels (HP-41 up to Pipelines on VM/ESA) I am a bit astonished about C/C++. I felt most effecitve with a "vertical" language like REXX, about two dozens commands/functions (~100 to be precise), adaptable by optional arguments instead of a vast "horizontal" set with different names doing almost the same as several others (like ooREXX with ooDialog for example). Up to now I have not enough insight to judge about C++ -- I have the impression that it servers many programmers as right to exist.
is all customary done and a programmers task is just to find where?
The task is not just to find where, but to understand how it's done, what trade-offs were taken, assess integration and maintainability, and make the engineering decision about which solution to onboard, or, if none satisfy the project requirements, create (and test and commit to supporting) your own.
This is not even specific to C++ software development, though C++ typically puts much heavier emphasis on understanding how it's done compared to e.g. Java development.
To me maturity in a language is more to do with how hard you have to fight the language to get the work done. Adding utilities (useful features) to a language makes it easier to get work done and adds to the maturity of a language. C++ is very mature.
Really? Does sort sort faster if you know how it sorts?
If you are, say, Google, and you have to process 40,000 searches every second, over 10-15 exabytes of data, if you were to just use std::sort() you would loose your business faster than you could trip and impact the floor.
But if you are a Google app that needs to sort a user’s travel plans, std::sort() is more than satisfactory.
Knowing the characteristics of the tools and methodology you are employing are critical to good engineering.
If you're talking about std::sort, it won't make it work faster (I think STL used to expose its tuning knobs, though). Such understanding is required to be able to compare against other available sorts, assuming I even need an unstable comparison-based mutating sort routine in the first place (it's rare in my experience).
What criterion would trigger the go! to code some sort of your own?
Already said, the criterion is that no existing available solution satisfies project requirements, at least to the degree where the cost of rolling your own is justified.
Remember, you are telling beach sand what to do. You can't just say "run a game" or "do my taxes."
Cubbi: [NR lacks...]
Everything. It's an early-intermediate textbook with spotty discussion and useless source code samples.
Two statements with IMO the same message. I suppose it is the scale of the task. So not to get the 42 as answer, I should ask more precise: up to which complexity is C++ mature enough, that no programmer would re-invent the wheel? I remember the question lately about sort count but sortet by occurrence. Example: an election with 5 aspirants and many voters, list them not alphabetically but according harvested votes -- using C++ is there really a new program needed or are there "ready to use mini-programs" you just have to stitch together?
Look at the publication date. 2007.
What's missing is C++11 and later.
The "C++" in that book is missing C++98 as well, but it's not even that. It's just not a book for programmers, it's a book for scientists who don't have access to decent software libraries and have to cobble things together as they go. I should know, I was one of those scientists when I read the 2nd edition of NR, working on my PhD. Besides, If you are familiar with the subject matter of any of its chapters, you'll find it introductory and often immature. But if you're not familiar, they are a great introduction (except that source code used to illustrate them is not usable)