On Sunday, 23 December 2012 22:13:39 UTC+2, Peter wrote:
> Just wondering. Are there any branches of programming industry where
> very good knowledge of C++ and ONLY C++ suffices or is the language
> alone, without the aid of external frameworks completely useless
> unless one attempts to write some trivial applications?
Let me paraphrase:
"are there any branches in building industry where very good knowledge
of screwdriver and ONLY screwdriver suffices or is the tool alone without
the aid of other tools completely useless unless one attempts to clean
dirt from under his fingernails?"
> Is the bare- bone C++ of any real use, especially if we consider the fact
> that many frameworks reinvent the wheel by introducing their own
> counterparts of stuff included in C++ standard library (minor example:
> QString instead of std::string in Qt, major example: a completely new set of
> containers called NTL as opposed to STL in a framework called Ultimate+
> +).
C++ standard library contains useful templates loaned from other libraries.
The major loans are made from STL and from boost.
When you study C++ standard library more closely then you see that lot of
useful container types are missing (like ring buffers, non-binary trees, tries
and various graphs).
You may discover that some container has constraints or behavior that
makes it inefficient for usage in particular solution. I have used C++ for ~20
years and used profilers a lot. Still I have not measured a real world usage
where std::list had best performance among alternatives.
People are writing and sometimes publishing their own containers, smart
pointers and algorithms all the time. It is quite educational to take and
download and compile and try some NTL or Qt or the like. Often you
can find some useful thing there and nothing is really perfect for everything.
> Yes, I know they all use "standard stuff" underneath, but I think
> you get my point. Even if implementation of QString is (probably)
> based on std::string, it's hard to say a programmer who uses QString
> still uses "standard C++".
std::string is byte container. It can be (and is often) used as ASCII or UTF-8
character container. QString is UTF-16 character container. If that
difference does not matter now for you then it eventually will one day.
> So, basically it means all real-world C++ applications are written in
> something more than just C++ and, as a consequence, people who develop
> them must often relearn stuff they already know. Conclusion: knowing C+
> + alone is pretty much useless and is just a necessary introduction to
> learning a bunch of libraries/frameworks.
"All real world English books are written using something more than just
plain English." With same conclusion.
> Is it right? Or are there any jobs where C++ is all that's needed?
Being good software developer often takes more than knowledge of particular
tool or toolbox. People with good limited knowledge are very useful for
their limited use-cases. On the other edge there is Jack of All Trades whose
usage is also ... limited. You have given the time from your birth until your
death. So meanwhile pick your poison yourself and try to enjoy it ... there
are no ultimate winning strategies in this game.