- worry about memory management;
- know the difference between compiler, linker and loader;
- find out that compilers make some optimizations (compilers code better than you);
- learn meta-programming;
- distinguish compile time from run-time;
- really understand low-level implementation of polymorphism (such as virtual tables and virtual table pointers, or dynamic type identification);
- pointer arithmetics, which could be a good base for understanding node-based data structures (f.i., linked lists, trees or graphs);
- find out that compiler generates platform-specific code, and discover that there are many other platforms, instead of Windows on x86;
- find out that there are ELFs and PEs and other executable file formats, each of which has a bunch of sections you should at least partially be familiar with;
- find out that the size of data types is something you have to worry about (sometimes);
- implement some function pointers to understand the under the hoods of callbacks;
- dive deeper into generic programming;
- use and understand iterators, implement containers supporting various categories of iterators;
… the list goes on and on and on..
These are some “knowledge” that are a MUST for any CS student, at least for any CS student who is willing to become a good programmer. Mastering C++ guarantees required experience to master almost any other programming language.
Why C++? Easy to answer to this one. Tell me what you want to be a world-class developer working on really interesting stuff.. ?
..or you just want to make some money while coding routine tasks with some Currently Popular JS Framework?
If your answer is “ye-yeah, i want to be a rock-star developer”, then C++ is your choice. If you are the guy who claims “oh, come on, language is just a tool, I know React, I can do a lot of stuff, I make money, man!” Sure you are right, no one tells you shouldn’t use other tools, no one tells you shouldn’t solve problems with a tool created just for that particular problem. Finally, no one says you should code some website’s front-end with C++.
It’s your choice, but remember this, JavaScript runs on engine written in C/C++ (f.i. Google V8), .NET Framework CLR is written in C++, even MS Windows is written in C/C++. Java JVM is written in C++, MongoDB, Redis, web-browsers, Linux, MySQL, (I’m listing random software/tools), Adobe Photoshop, Illustrator, Nginx, OS X is written in a mix of language, but a few important parts are C++, many Google internal/external products (including Google Search), Microsoft Visual Studio, even C# compiler itself is written in C++. (you can find more by googling).
At the dawn of the 21 st century, C++ was under assault. Fans of C pointed to C++ programs whose performance was inferior to supposedly equivalent code written in C. Famous corporations with big marketing budgets touted proprietary object-oriented languages, claiming C++ was too hard to use, and that their tools were the future.
Universities settled on Java for teaching because it came with a free toolchain. As a result of all this buzz, big companies made big-money bets on coding websites and operating systems in Java or C# or PHP. C++ seemed to be on the wane. It was an
uncomfortable time for anyone who believed C++ was a powerful, useful tool.
Then a funny thing happened. Processor cores stopped getting faster, but workloads kept growing. Those same companies began hiring C++ programmers to solve their scaling issues. The cost of rewriting code from scratch in C++ became less than the cost of the electricity going into their data centers. All of a sudden, C++ was popular again.
So, do you want to make some noise? Then learn C++!
No comments:
Post a Comment