Skip to main content
15 events
when toggle format what by license comment
Dec 1, 2020 at 21:40 comment added natiiix @pjc50 I used a very recognizable example, but what I meant was far more generic. There are various points of view that give you different advantages of learning C, but the point is that it still very much remains relevant and that it is most certainly worth learning if you're interested in low-level computer security and exploitation.
Dec 1, 2020 at 14:41 comment added pjc50 I think the three of us may be talking past each other somewhat; while buffer overflows are possible in other languages, they are usually a lot harder; C's decision to use zero-termination and not carry the length around with array types makes it uniquely easy to write code vulnerable to a stack-smashing attack; whereas in Java or Python or C# you can't overwrite the machine stack even if you want to.
Dec 1, 2020 at 14:32 comment added Martijn I strongly agree with @pjc50's analysis, and strongly disagree with yours. That they present their analysis as support for yours while you both say it's opposite to each other is very confusing.
Dec 1, 2020 at 12:16 comment added natiiix @Martijn The fact that OS and libraries are written in C doesn't matter too much because even programs in high-level languages suffer from the same exact problems. You just can't see it as directly as you would have in C, but that doesn't matter when you're attacking them from the outside anyway. The knowledge of C, and computers in general, is helpful even if you're "hacking"/reverse-engineering Java/C#/ECMAScript/Python code. A buffer overflow is a buffer overflow, a socket is still a socket (both in networking and -nix OS terminology), regardless of the language/framework/runtime.
Dec 1, 2020 at 12:14 comment added natiiix @Martijn Yeah, because C++ isn't really relevant to what I talked about. C++ stdlib already comes bundled with all the stuff that you have to re-invent yourself if you want to write anything in C, hence you wouldn't learn a whole lot from it. It also has a far more high-level memory management, which would further cloud the learner's understanding of the underlying processes. This is why almost every serious IT/CS/SE/whatever university teaches some C basics as early as possible. It's uncomfortable but necessary.
Dec 1, 2020 at 12:12 vote accept Cronos
Dec 1, 2020 at 10:51 comment added Martijn @pjc50 that's an entirely different (arguably even opposite) take than the answer has, which argues that it doesn't matter that the programs are written in C: "It's not the C language itself that matters, but rather the fact that in order to know C, one must first understand fundamental computer principles" C++ isn't even mentioned in the answer.
Dec 1, 2020 at 10:30 comment added pjc50 @Martijn it's the primary one most people will encounter which compiles to platform code rather than bytecode, and offers ready control over memory layout. C or its inheritor C++ account for the vast majority of operating system and native app binaries that you might want to exploit.
Dec 1, 2020 at 9:02 comment added Martijn This makes it seem like C isn't just another language that compiles down to machine code.
Nov 30, 2020 at 16:16 comment added mishan @natiiix About a week ago I was explaining this pretty much exact thought to a friend of mine, who moaned about not learning more "modern" language in programming basics in their requalification course (after a lecturer dismissed the language when teaching them about automated testing).
Nov 30, 2020 at 12:58 comment added natiiix @MargaretBloom Thank you, but I felt a bit emotional about this question because I see similar questions appear all over the place (forums, Q&A platforms, "tech" articles, student communication channels, etc.) and it's simply not true that the "ancient" languages are dead and useless nowadays. If for nothing else, they will always be some of the best ways to gain a deeper understanding of computers. This is precisely why virtually every interviewer asks about which datatype (list/map/set) is good for what and why. Because low-level knowledge matters when it comes to scalable performance!
Nov 29, 2020 at 18:47 comment added Margaret Bloom "in order to know C, one must first understand many fundamental computer principles". You deserve a thousand upvotes just for this :)
Nov 29, 2020 at 13:04 history edited natiiix CC BY-SA 4.0
improve wording
Nov 29, 2020 at 12:57 review First posts
Nov 29, 2020 at 14:03
Nov 29, 2020 at 12:57 history answered natiiix CC BY-SA 4.0