C++ is not a tiny language designed to be a minimal language for
teaching, but neither are the languages people most often compare it to,
such as C, Java, C#. They too are huge compared to say, Pascal as Dr.
Wirth originally defined it – for good reasons. The programming world is
far more complex today than it was 30 years ago, and modern programming
languages reflect that.
C++ isn’t as big as some people imagine. By word count, the size of the language
specifications (excluding standard libraries) for C++, C#, and Java are
currently within a few percentage points of each other. This reflects
that they are general-purpose mainstream languages that have grown
similar features –
auto
/var
type deduction, range for
loops, lambda functions, various levels of support for generic
programming, and so on. It also reflects what design theorists call
“essential complexity in the problem domain” – the complexity in the
real world and that a serious language has to expose, everything from
fundamental OS differences to calling C++ libraries.
In some cases C++ directly supports (i.e., in the language) what some
other languages support through libraries, so the language part will be
relatively larger. On the other hand, if you want to write a “typical
modern application”, you need to consider operating system interfaces,
GUI, databases, web interfaces, etc. the sum of language features,
libraries, and programming conventions and standards that you must
become familiar with dwarf the programming language. Here, C++’s size
can be an advantage as far as it better supports good libraries.
Finally, the days where a novice programmer can know all of a
language are gone, at least for the languages in widespread industrial
use. Few people know “all of C” or “all of Java” either and none of
those are novices. It follows that nobody should have to apologize for
the fact that novices do not know all of C++. What you must do - in any
language – is to pick a subset, get working writing code, and gradually
learn more of the language, its libraries, and its tools. For my
suggestion on how beginners can approach C++, see Programming: Principles and Practice using C++.
No comments:
Post a Comment