5 ms·
i could not disagree with this more, holy cow. C has so many weird and painful quirks, and is missing a lot of things that a novice programmer will need to know
by currymj 9y ago
i could not disagree with this more, holy cow. C has so many weird and painful quirks, and is missing a lot of things that a novice programmer will need to know (like object-orientation, especially).
it's a great second or third programming language to learn though.
- orwin 9y agoFrom what a saw, exceptionnal people aside, those who learned to code with a language favorising bad OOP (most OOP languages, maybe with the exception of Lisp) write nasty code. Especially when they work with a language like javascript, but even with c++ or Rust you can easely find abominations. Everybody should learn proper data structure before learning OOP. I don't like Go, but i'd much rather work with an intern who was first taught Go than any OOP language, even one i like. OOP is a great tool, but people that learned with it have the tendancy to use it poorly and everywhere, and to use abstractions of abstraction when this is not needed. Maybe for you, it was not an issue, because you were brilliant enough, but for average devs like myself, it is.
- khedoros1 9y agoMy first two languages didn't include object orientation (QBASIC, and badly-taught "C++" that was essentially C with iostreams). From experience, OOP's an easy paradigm to learn later. Early on, you're learning functions, loops, variables, breaking problems into pieces, how to hold a useful amount of the program in your mind at once, etc. BASIC would've been better with better explanation of how some of the keywords worked with memory segmentation. The "C++" would've been better if they actually stuck with teaching us plain C.
- flukus 9y ago> C has so many weird and painful quirks, and is missing a lot of things that a novice programmer will need to know (like object-orientation, especially). I don't think you can understand OO properly without C or another sufficiently low level language. You might learn the concepts at a high level, but it's still important to know at a low level, you know to know about the vtable of function pointers that makes inheritance possible, otherwise you will never truly grasp OO. Also, I'd prefer most devs learn to write functions that operate on data long before they learn how to combine them into a horrible mess.