
Learn C programming and the rest will come - majikarp
https://www.zeroequalsfalse.press/posts/learn-c-programming#.XHH5I3kBQA0.hackernews
======
ozzmotik
id probably be pretty inclined to agree with this, c was my first language
back when i was like 12 and i pretty much thank that for my general ability to
process programming languages (even ones unknown to me) as long as I can tie
it back to that algol style of syntax. granted I haven't used it in over a
decade now because I just haven't had the use case for it, but as an
archetypal starting choice i think there isn't a better one for a beginner
that wants a good and enriching challenge

------
rramadass
While the premise of the article is very correct, i am afraid it doesn't make
the necessary convincing arguments. C should be one of the very first
languages one should learn because;

 _C is a small, minimal language and hence it is quite easy to learn and keep
everything in your head unlike a lot of modern languages which are too baroque
and confusing. There is not much of "magic" in the language and thus "what-
you- see-is-what-you-get"._

 _C is considered as "high-level assembly" and thus is the closest to the
machine underneath. You will be forced to learn how computers actually work
rather than treating it as a blackbox. Language Abstractions have well-defined
limits._

 _C is available everywhere, from very small embedded systems to large
desktops /clusters/GPUs etc. This allows one to program literally anything. I
personally have programmed Windows Desktop Apps, Network Protocols/Appliances
and MCUs all in C. I had to only focus on learning the Problem Domain rather
than the Language/Libraries/Tools which made the job much easier._

 _C is the de-facto language for Systems programming. Thus one can avail of
opportunities throughout the software spectrum both Systems and Applications.
You can study and understand how "everything" works from Hardware all the way
to Application Software._

 _C is also the de-facto "glue" language i.e. every other language/system/tool
gives you a way to link to a C module. This gives one the ability to extend
the capabilities of one's chosen language/system/tool as needed. This is often
quite useful in the real world._

PS: To really understand how all the above come together through C, see the
book; "Computer Systems: A Programmer's Perspective" (3rd edition:64-bit, 2nd
edition:32+64-bit and 1st edition:32-bit).

