+ 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?
19 Réponses
+ 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.
+ 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.
+ 4
Esther
About OOP https://en.m.wikipedia.org/wiki/Object-oriented_programming
+ 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.
+ 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.
+ 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.
+ 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.
+ 2
Ipang Please, what is OOP paradigm?
+ 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.
+ 2
Thank you all. So which of the three is most widely used?
+ 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.
+ 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?
+ 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.
+ 1
Tibor Santa thanks. Is Python related to C and is it also getting pushed out?
+ 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?
+ 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.
+ 1
Tibor Santa 👍🏾
0
🤔
0
But if C lacks such interesting and useful features such as OOP, how did it become what it is today?