+ 3

Why is C knowledge sparse? (As far as I've found it)

It's a miracle I found SoloLearn. Every site I went to contains maybe JavaScript, CSS, HTML, Python, even SQL? but no C. If C is the basis for most operating systems and Android, why are there not more courses about it? edX/mimo/etc... Also, are C# and C++ harder/easier than C? Which is the hardest/most advanced of the three?

24th May 2023, 9:50 AM
Esther
19 odpowiedzi
+ 6
Programming small devices like Arduino often fits into the category of embedded programming. That is a field where you develop code for products with built-in microcontrollers. The code might be stored in a dedicated read-only memory chip, and starts immediately upon power on.
24th May 2023, 1:33 PM
Brian
Brian - avatar
+ 4
C is a language with a very small scope, and very few abstractions. You have to build everything yourself from scratch. Its main focus is systems programming, a rather narrow area. And it is slowly getting pushed out of business, by more high-level languages such as C++, Go and Rust. Still you will probably find a lot of learning material about it on the internet, if you look at the right places, but C is not very fashionable these days. What is hard and easy? If you look at the "surface area", C is the easiest one because there is very little to learn. But if you want to build a complex application, doing it in C will be very painful. More advanced languages such as C# or Java have a lot more tools, high level programming abstractions, built-in and external libraries, prebuilt solutions that we can take advantage of.
24th May 2023, 11:03 AM
Tibor Santa
Tibor Santa - avatar
24th May 2023, 2:25 PM
Ipang
+ 3
Are C# and C++ harrder/easier than C? C# and C++ inherits C language syntactics. But these languages (C# and C++) employs OOP paradigm, whereas C is more procedural. All these languages has their own strengths & weaknesses, neither is harder or easier, nor can one be dubbed more advanced than the others.
24th May 2023, 10:15 AM
Ipang
+ 3
OOP is object-oriented programming. You'll learn about it in the intermediate course of any language except C (which doesn't have objects, though you can approximate it to some extent with structs). I'm also gonna slightly disagree with ipang: I would say raw C is the hardest of the C family to learn, not because it's more advanced but because it's more primitive. C++ is of course very closely related, but it has endless libraries available to do much of the hard work for you, and even just the standard library is much more robust than in C. C# meanwhile doesn't even make you manage memory, so it's probably the easiest to learn just for that reason alone. Of course, easy to learn is a very different question from easy to master, and that's where I think ipang is correct.
24th May 2023, 11:06 AM
Orin Cook
Orin Cook - avatar
+ 3
Python is highly popular, mainly in the area of data analytics and machine learning, but it is a general purpose language that is used practically everywhere. It is kind of related to C in the sense, that the most commonly used Python interpreter was written in C, and many high performance python libraries are also written in C to make them faster, because your typical Python program is normally slower than a compiled language.
24th May 2023, 11:22 AM
Tibor Santa
Tibor Santa - avatar
+ 3
You can imagine the world of software as a huge pyramid. At the bottom layer we have the pieces that connect to the hardware: device drivers, operating system kernels. Everything else is built on top of this. All the applications, graphical utilities, games, office software, and then for example the web browser, which is also a platform in itself for web applications and client programs. And the bottom layer is practically all built in C. Because actually C was designed with the intent to build the Unix operating system, and later also it was used to build Windows. Most of the mainstream languages have their roots in C (that's why they have so many similarities, like for and while loops etc.) And it is the same reason why C is so difficult to replace. Now the entire ecosystem of modern software depends on this language, and it is really difficult to pull out the bottom layer of bricks from a pyramid, to replace it with something else. But it has already begun, part of the Linux kernel is rewritten in Rust.
24th May 2023, 3:36 PM
Tibor Santa
Tibor Santa - avatar
+ 2
Ipang Please, what is OOP paradigm?
24th May 2023, 10:52 AM
Esther
+ 2
Oh, and as for why there are more learning resources for web development languages: probably a combination of easy to get started, and easy to get hired.
24th May 2023, 11:10 AM
Orin Cook
Orin Cook - avatar
+ 2
Thank you all. So which of the three is most widely used?
24th May 2023, 11:16 AM
Esther
+ 2
That's a little hard to answer because C is used everywhere, but it's all a comparatively small number of under the hood stuff that runs under everything; meanwhile a very large number of programs are written in C++. Also, C# is very common in game development thanks to native support in the Unity engine, which in terms of sheer number of projects out there might put it at the top (though Unreal uses C++, so for triple-A gaming it's back to that). As for Python, everything is to some extent somewhat related to C, but it's probably the least C-like of the commonly seen languages.
24th May 2023, 11:27 AM
Orin Cook
Orin Cook - avatar
+ 2
To give you some perspective on what I mean: parts of the kernels for Linux, Windows, and iOS are all written in C; do we therefore count everything running on any computer as part of C's "widely used" metric? Or do each of those only count once, despite the fact that everything else runs on top of them?
24th May 2023, 11:40 AM
Orin Cook
Orin Cook - avatar
+ 2
Also, as an aside, I'll throw in a plug for Rust, the only high-level language besides raw C to earn the Linus Torvalds seal of approval.
24th May 2023, 11:48 AM
Orin Cook
Orin Cook - avatar
+ 1
Tibor Santa thanks. Is Python related to C and is it also getting pushed out?
24th May 2023, 11:08 AM
Esther
+ 1
Thanks. So if I wanted to, say write programs like the ones on Arduino, and ie for engineering, would I be a back end programmer, and which languages will I most likely need to learn?
24th May 2023, 11:35 AM
Esther
+ 1
Arduino uses a variant of C++, so that's easy to answer at least lol. idk if you'd call that "backend" exactly, though; backend usually refers to servers, not hardware.
24th May 2023, 11:43 AM
Orin Cook
Orin Cook - avatar
+ 1
Tibor Santa 👍🏾
24th May 2023, 3:44 PM
Esther
0
🤔
24th May 2023, 11:43 AM
Esther
0
But if C lacks such interesting and useful features such as OOP, how did it become what it is today?
24th May 2023, 3:17 PM
Esther