It seems discussions and observations of several «fancy» programming languages such as Ruby, Python, and GoLang become a good style on numerous blogs of the contemporary software developers.
Those quite mature languages that have been served software vendors faithfully for many years fall out of the public discourse almost completely.
The rare exceptions when the «ancient dinosaurs» such as COBOL are pulled out of mothballs just prove the rule. Is such indignity justified by the actual current situation in the software development market?
It is highly improbable that C, Java, or C++ become so obsolete that “serious” software market players can afford to ignore them all.
One of the circumstantial evidence of the significant demand in C++, for example, can be found on hiring sections of many developing companies’ websites.
Just look at whom one of the leading Ukrainian software vendors is interested in to employ. Namely C++ developers occupy the top lines of their hiring list.
The programming Kingmaker
The very maturity of C++ makes this language “uninteresting” from the burning software topics’ viewpoint, probably.
Such an unfair approach reflects neither the actual significance of the programming language for the contemporary software outsourcers’ customers nor the technological capabilities of C++ for numerous fields of application.
It can be a big surprise for the majority of the technically inept users to get to know that despite a certain fuss around widely discussed programming stacks and frameworks the biggest part of the software products we use on daily basis is written in C and C++ languages.
In order to understand how this has happened, a brief historical overview of C++ is worthwhile.
When time demands
The rapidly increasing computation and performance capacities of the large software systems were requiring better-organized applications in the early 1980s.
The software engineers of such giants of those days as Bell Labs realized that creation of more flexible and advanced software architectures was possible with some better language facility than C language which has been serving their systems for a decade at that moment.
Hence, in order not to reinvent the wheel, C language was used as a basis of a new object-oriented language. This language was called C++ by Bjarne Stroustrup from Bell Labs who represented the language in 1983.
(Photo taken from article)
The language proved to be sufficiently satisfactory for many development areas especially for the telecommunication industry which was gaining momentum and where solutions from Bell Labs were occupying dominant positions.
Since that time, C++ has been succeeding in many spheres that helped to make this world widely interconnected.
The origin justifies compatibility
Although the most significant update widely known as C++ 11 was made in 2011, the initial world recognition of this programming language was obtained in 1988 when C++ ANSI/ISO standard appeared.
Of course, the standard published in 2011 outpaced the first version of the language with the improved usability appropriate for much more complicated apps relevant to the worldwide craze of mobile in particular.
Many contemporary software developers may dispute the genesis of Java and C# languages rooted in C++ even though this is an “established scientific fact” since both C# and Java borrowed a lot from C++ syntax.
Programming veterans used to say half-jokingly that everything grows from C language. Such a statement can be disputable, but the common syntax clearly recognizable in many languages hints at a common origin on many levels.
This fact, by the way, helps to explain a huge number of the developers (which exceeds 10 million devs throughout the world, according to some reports) who regularly use C++ in their practice.
Another positive outcome of such a big developers’ community implies the abundant C++ support along with plenty of resources each may find online in order to integrate C++ solutions for any conceivable functionality.
Too universal to be ignored
So what are the contemporary spheres of software development that C++ is good at? Perhaps, it is worth starting from the “beloved” mobile devices we all are obsessed by.
Many users are aware of Java in which Android apps are written. Some had heard about Kotlin which was recently recognized as another language of Android development and which was even included in the “official” Android SDK.
The same concerns Objective-C for iOS apps development. However, very few users know that C and C++ code lines dominate over everything else in memory of mobile devices.
In fact, each operating system contains C++ code since the language was created particularly for the platform independence.
While mobile development is nevertheless focused on other specific languages than C++ (the so-called “one-fits-to-all” solutions relate to rather imaginary parallel universe of idealistic features than to the real-world workflows), the area where this language is shining brightly and unequivocally is desktop development in general and Windows desktop and client-server environment in particular.
Many Windows development engineers appreciate C++11 for easy access to SQL server and to other databases servers.
Besides, garbage collection powered by C++ does not interfere with the rest development routines as it oftentimes happens with other languages.
And the greatest advantage of C++ admitted by the majority of the Windows programmers allows programs written in this language to be extremely fast and very small.
However, the ointment could not escape a fly: UI libraries such as MFC remain a little bit outdated making programs look originated from the 1980s.
Meeting IoT paradigm
Once C-based languages like C++, C# and Objective-C have the inherent compiling simplicity, the software products written in them fit the industrial hardware environment where the “closeness to metal” is crucial.
Of course, C++ has gone far from assembly or machine code, but it still remains closer to the IoT paradigm than many other high-level programming languages do.
The rapidly evolving IIoT (Industrial Internet of Things) industry occupies outsourcing destinations all over the world, and the Eastern Europe is not excluded.
The very common sense and a straightforward logic suggest that C++ developers should be available as well as in a certain demand there since IIoT development requires C++ proficiency in no small part.
How to stay relevant
As it was proved by one our previous posts, Ukrainian software outsourcers do not trail far behind in the IoT development.
However, only a few of them can boast with a standalone original IoT product created under its own brand name. Indeema is a notable exception in that since their iReDS desktop software-hardware IoT solution perfectly meets the notorious IIoT paradigm.
Being a constituent part of the ViDiSy (vibration diagnostic systems) complex, iReDS provides advanced monitoring and analyzing routines for various rotating mechanisms at a vast variety of the industrial production fields.
It should be noted that the development and successful implementation (the system has been already commissioned at several big industrial enterprises, by the way) of iReDS in particular and ViDiSy in general have been possible thanks to the rich C++ skills of Indeema’s software engineers.
This simple but illustrative example evidences both the actual significance and the dire need of C++ knowledge for the contemporary software development companies regardless whether they outsourcers or branded software vendors.
Thus, more generally we can say that this is too early to uniformly dismiss and write off such programming facility as C++ language: the huge and flexible outsourcing community of the Eastern Europe will always find an appropriate field where the local C++professionals can get the thumbs-up.
If you enjoyed reading this post, please share it to help others find it!
SUBSCRIBE for weekly updates.
Thanks for reading...