Hacker News new | ask | show | jobs
by meatbundragon 2915 days ago
The article's main point is that learning C first makes it easier to learn the language a programmer will actually use, be it Javascript or something else.

In my experience, the best course of action is to learn whatever you need first.

For those considering programming as a hobby/occupation, being told to learn a relatively complex and unpractical language would raise the bar of entry.

2 comments

C is great language specially if you learn programming as a hobby
C is a very simple language. much simpler than js

you can write a C compiler in just a few thousand lines.

C is also a terrible learning language, much harder to reach the "get things done" stage than most other languages.

You can spend weeks segfaulting in C before you get things actually working, and for a beginner — especially self-teaching/unsupervised — it's extremely easy to rely on compiler-specific behaviour in the face of UBs.

When learning, if the only choice were C or assembly I'd actually recommend assembly.

> You can spend weeks segfaulting in C before you get things actually working

This seems like an overstatement. The first programming class I ever took was "Introduction to Programming with C" where the textbook was K&R and we were writing and compiling programs from day one.

If you can't figure out how to manage memory (one dimensional data structure) in C jumping into a language that immediately allows you to abstractly manipulate complex multi-dimensional data structures will certainly not make your life easier.

Depends on the type of thinker someone is. Everyone thinks best at a particular level. While a certain data structure might be complex, it’s use might be simple.

If I show someone a list of lists in C# the semantics of that will be very easy for them to grasp. The same data structure in C might defeat them altogether.

> The same data structure in C might defeat them altogether

I agree with this, but my point is that to get started in C all you need to work with is strings/arrays.

> While a certain data structure might be complex, it’s use might be simple

I would argue that in most cases the use only appears to be simple and in reality the correct use is just as complex as the data structure.

> I agree with this, but my point is that to get started in C all you need to work with is strings/arrays.

Which are both absolute shit, that's not exactly a ringing endorsement.

ok, sarcasm, got it
C with its unsafe pointers, unsafe memory management and unsafe types is the worst language to learn for the beginning. It's good to know and learn as 2nd language, but for the beginning you need to learn proper concepts, not broken concepts.

Lisp is still the best language to learn, but any proper scripting language will do also.

PS: "proper scripting language" of course excludes PHP and JavaScript. Dart is fine.

C is hard to create complex programs but for learning simple things pointers are much more simple to understand then say Rust or other abstractions, a programmer will have to understand what it happens under the abstractions.

I understand the point that C is not the best choice this days to do big projects but for learning it seems a good idea, even to learn what segfaults are and buffer overflows are.

C for utter beginners is probably like being tossed into a tsunami for swimming lessons.

"Okay, now this is how you float on your back; but watch your head: there a protrusion of iron rebar sticking out of a broken concrete bridge support, and you're heading straight for it! We call that 'uncomfortable behavior'."