Actually, but very much does not have to be…
The only thing that C lacks is the object-oriented part of many other languages.But if you really miss that, you can always use C++.
Programming is mainly about four pillars, namely:
- Statements, or actions you perform.
- Conditions, or choice options.
Turn left or right?
(You could possibly see multithreading and asynchronous programming as a fifth pillar.)
In most programming languages, and certainly the OO languages, you are often busy on the last pillar, namely the creation of structures.You define classes where you create objects from interfaces and sometimes even more complex things such as generics, templates and delegates, and so you do little with the other three pillars. I work a lot with C# myself and I know that the structure of my code is the most work. The remainder suggests little.
And because in OO languages the first three pillars are little used, many developers have little experience with it.Ask them to build a simple website with a database behind it and in three days they are ready. That’s mainly structure. But ask them to write an algorithm to shake a pack of cards for a card game and then have some big problems with it.
This is how the Fizz-Buzz test for many engineers is impossible to do.Choose your most popular programming language and write a piece of code that displays the digits 1 through 100 on the screen. However, for every multiple of 3 you have to write “Fizz” and for each multiple of 5 you have to write “Buzz”. For multiples of 3 and 5 you Write “FizzBuzz”.And for that you get 15 minutes of time!
Successful?Well, good engineers usually succeed but many fail this simple test that is based mainly on the first three pillars. After all, there is not much structure in it. Just a walk with some statements and conditions and that’s all.
Well, meanwhile you can already find many variants online in various programming languages so if you want to see how to do it, go to Fizzbuzz on Rosetta Code.
Or how not to do it: Fizzbuzzenterpriseedition 🙂
Seriously, some companies consider it important that code looks “enterprise”, either full of unit tests, dependency injection and many other complex issues for a problem you can solve with a few lines of code.But yes, that Enterprise version is of course when you have more focus for structure than the rest…
Do you really need to learn C?Great chance you already have some C knowledge. It is not too big a step to learn programming in C. After a few months of practicing with C you should know enough to better program.
No.There are a lot of ‘ software engineers ‘, including myself, who know C or C++ hardly or not, simply because they don’t need it.
You can develop desktop applications.On Windows, you mainly use C#, on Mac today especially Swift.
With mobile applications, you use Swift for iPhone/iPad, and Java or Kotlin for Android.Here, too, you don’t need C or C++.
I could continue, but there are a lot of domains in which you do not need C or C++.These languages are especially useful if you want to write very high-performance applications (as you will find for example in the financial world), games, or things where you need very direct control, such as when writing an operating system (kernel), or applications where (work) memory is very limited, such as embedded electronics. These are all fairly specific applications that many software engineers never have to deal with.
Programming taught you the mid eighties at the HTS in Pascal.A year later we got C. Then it became clear to me that the language is just a vehicle and that it is about your mindset as a programmer.
Totally not self.Frontend Webdevelopers never do anything with it. People continue to insist on ‘ the basics ‘. That has now been abstrasted to the point that I think there is enough to overread.
It helps though.Experience in C teaches you concepts of machines and memory, and teaches your solution ways. Debugging your C code is also instructive.
C teaches you assembly and linking, and opens up a whole world for you outside laptops and Windows.In C You can program on your DS, on ARM.
C++ teaches you how difficult existing software can be.
Going further In C# is a logical step.But Mijdrecht Java as the disease.
It is rather important to know the basics of programming than the language.The basis is Object oriented programming and the different statements which can contain a language. Each programming language has its own way of error handling, if else statements and so on. If you get the basics, you can often understand most languages reasonably. If you understand it, you can then copy and modify it.