Hello, Khabrovites! Our teachers – Viktor Korobkov, an expert with 15 years of experience in IT, and Andrey Kravchuk, a developer at RavenPack International, told why the C language is still relevant, and why those who develop in other languages should learn it. The article was prepared specially on the eve of the start of a new practical online course “Programmer C”to help you figure out if these skills are useful to you.
Good day! I am Andrey, I have been engaged in commercial development for more than 10 years, I started with C and C ++, then switched to Python, and very often in my daily work knowledge of C helps me out. My colleague and course leader Viktor Korobkov has been in the IT industry for over 15 years, he started with programming in Delphi, C / C ++ and now specializes in databases. Today I have prepared a brief overview of the possibilities and prospects of the C language for developers at the present time and what awaits you in our course.
Why learn C?
Many young professionals regard the C language as a prehistoric fossil. Indeed, it has existed for almost half a century. And this fact is put to him not as a plus, but, on the contrary, a minus, declaring that it is ineffective, outdated and unfashionable to solve modern problems in the language created in the distant 1970s.
But what does the stubborn thing called “statistics” show? If you look at the TIOBE rating, then C has never dropped below 2nd place for many years, and in January 2021, at the end of 2020, it again became the first. In the PYPL rating, C / C ++ are constantly included in the top five languages for which information is most often searched for in the Google search engine. If you run the query “programmer C” on one of the largest job search services in Russia, HeadHunter, you can see that such specialists are required in many cities.
There are 4 main reasons to master C:
Get an understanding of the basics of how OS, system software, popular software products like Nginx, PostgreSQL, Redis, etc. work under the hood.
To interact with libraries written in C using FFI mechanisms.
For writing programs with uncompromising performance.
For low-level programming of various devices, for example, Arduino, the power of which is not enough for any other languages.
Perhaps the main advantage of the C is its extreme proximity to the car. It is a high-level language to be able to express some business logic and domain entities in it, but at the same time it is low-level enough to have ultimate control over how this logic and entities are processed by the processor.
The salaries of good C specialists, as a rule, are higher than in the field of web programming (especially if we are not talking about Russian research institutes, but about companies like NVidia, Intel, etc.).
It is worth, of course, to admit that the salaries at the initial stage for C programmers are offered by an order of magnitude less than for Python or Java. But even when applying for a job as a Python developer, knowledge of the C language is a big plus for the applicant – employers appreciate this very much. From all of the above, we can conclude that the communities of employers and programmers around the world not only do not forget the C language, but also constantly use it in one way or another.
At the moment, there is a noticeable shortage of specialists capable of solving practical problems in C. The fact is that earlier in C they taught in universities, now students more often learn programming in Python, Java or C #. Such students may have more or less basic programming skills, but not understand the in-depth fundamentals. If you dig deeper, problems begin. It is these problems in different areas of development that we will analyze on the course and learn to cope with them.
Finally, C can be useful for a programmer in any language to broaden their horizons. It helps to understand which “gears” are at the low level at the heart of another language. Allows you to optimize your code by rewriting performance-sensitive fragments of programs in C, as well as interact with arbitrary third-party libraries through FFI.
Well, in conclusion, there is an opportunity to go into the “iron” sphere, but here more specific knowledge is needed (Verilog, etc.).
Knowledge of C is also necessary for Linux administrators, since any UNIX system (including Linux) is mostly written in this language. A sysadmin who knows C has a deeper understanding of the OS design, can deal with unexpected operational problems and offer more optimized solutions.
On online course “Programmer C” we prepare students to use C in practice and solve Middle-level problems. We will look at the structure of a UNIX-like OS and related tools. We will give practical advice on writing specific classes of programs: web services, daemons, games, interaction with a database, concurrent programming (multithreaded and multiprocessing programs).
Another interesting feature of the course is that we will briefly review the analogs of OOP in C, although traditionally it is believed that there is no OOP in C.
For specialists in the IoT direction, the section on programming microcontrollers will be of interest.
At the end of the course, you implement a full-fledged project in C: it can be some kind of your work task, your own idea or a topic we have proposed.
Classes start on January 29, but you can join during February. In the first month, we go through basic knowledge and analyze the modern language C. Then we delve into its capabilities and study the nuances of application in different areas.
We immerse ourselves in the language quite thoroughly, so if you only need a basic theory, our program will be redundant. In this case, it is enough to go through some of the popular tutorials or videos for beginners.
And our course will be relevant for those who:
He stumbled into the speed limits of the programming language he used, for example, Python.
Wants to use a third-party library written in C in another language, again for example Python, and faces interoperability problems between languages.
Wants to learn more about how programs interact with the OS and the resources it provides.
Wants to start developing for microcontrollers and develop in the IoT direction
Wants to do systems programming.
If any of this is about you – go to the course page, take the entrance test and join the group. And if you have any questions, after passing the test you will have access to a private chat in Slack, where you can ask Victor and me your questions. See you in class!