Hacker News new | ask | show | jobs
by zedshaw 5465 days ago
I'm hoping to make this book ramp up faster than LPTHW, since I'm assuming people have either read that book or know one programming language already. However, I'm also a big proponent of practicing the syntax even if you think you're an expert already. It just makes things way easier later on.
3 comments

Personally, I hope that this book will work for people who don't already know a programming language. C seems like a great first language to learn if only because (if taught well) it exposes a large number of the underlying details of how programs actually run on a system.
Moving from Python to C is a very good move. It allows you to go from programming to inner workings, everyone should have a solid knowledge of C since it give you the tools to identify and correlate aspects of other languages to reality.

I don't understand what "practicing the syntax" means (language barrier?), but I'm not suggesting that I've stopped learning, which I never will.

Different people learn differently. Some people don't like to practice the trivial practice stuff, and prefer to breeze through the beginning, read through new material, and then take on some real project.

Rich Hickey, recently in an interview, said he doesn't do programming exercises - he is not interested in programs which don't make the computer do something useful, interesting, or both.

I, for one, type the trivial examples. Or else, I simply forget how to use them. For example, you have list comprehensions in Python, Racket, F# and if you ask me to do a list comprehension right now without looking up the reference, the only one I will get right is Python. I recently started learning F# and didn't type much code; so the concept is known, but since I didn't practice the syntax, I will have to learn it again.

That's what he means by practicing syntax.

Got it.

I wouldn't however say that the complexities of C is it's syntax (unless you're playing around with macros : ) ). But I guess the concept can be applied broadly, like remembering functions, headers and other language specifics.

how about 'if you are proficient at another language, feel free to skip to chapter x'? and put the generalized stuff at that point
If you really are that proficient, you should be able to figure out what you can skip.
I'm not so sure about that. The devil's in the details - you might think you know something well enough to skip it, but get caught out later.
Sometimes due to language discrepancies, skills don't transfer and there is no easy "feel free to skip to chapter x".

For example, a conversant Python programmer's idea of string, and strings in C are 2 different things. A conversant C programmers idea of looping is different from idiomatic looping in Racket(and other lisps).

actually you are right, it completely doesn't work in that example