| I have asked HN the very pertinent question albeit in a different manner after doing some homework myself[0]. This was me 8 months back-
Freshman Year | Autodictact | Non-CS Major |Knew no programming language. In my experience C is better off learnt by textbook approach i.e. modules of theory+problem sets. The chapter end problem sets must test accumulated knowledge of the previous chapters. This boosted by problem solving skills, algorithmic thinking skills, understanding deep internals, their working and memory layout. I recommend postponing learn-by-building-fun&real-projects approach as I hold that as a culprit for many people who get discouraged or worse, turn away forever. That approach is something brash, confident, and experienced people should be doing (like fcking with Brainfck language, haha!), not amateur innocent kids like me who feel the immense pain and frustration of shooting oneself in the foot. I've doubted on me creativity in building the project more than my ability to do abstract thinking through the language( or...I am not able to express myself clearly on this but then again, its better to suppress depressing memories). There is frustration in both the approaches but the immensity of the later(most) is nowhere comparable to former(least). I cut through 80% of Cormen's problems with C like hot knife in a block of butter. I prefer C for the immense pleasure it gives that I don't prefer python for Cormen. I am now planning to build something with C with the Computer-networking theory I am learning. I am still wary of touching Linux though I can understand and take pleasure in reading its highly optimized code. Linus and his world wide team is a genius. Coming to python, I started learning it once I completed Linked lists and Files chapter in Noel Kalicharan's book.
Thereon, I took advantage of MOOCs and started out building projects (GUI apps in Linux) at a blazing fast speed. Quickly I turned into web development. It wasn't even 2 weeks and I could take everything swinged at me. Now the comment pertinent to the article,
I do recommend learning C first even after I have budding-experience with Java, Javascript and Python. I don't like being a magician without knowing on how-s and why-s of my own tricks. This gave me power to tweak and god did I twerk every time I tweaked!
Had I started out with any other language,I would have been left hungry and dissatisfied in its richness of mental exertion and incompleteness in operating that language as well as no appreciation of the power of jumping miles( without knowing how to run). C hits the sweet spot that neither assembly nor Java can. I can see why C is still recommended and relevant today. I am one of the few who is wanted in a company I am interning in, because of my in-depth understanding. Many fellow interns come to me whenever they are stuck in all those higher-level abstracted languages( Thank you for letting me brag on this humble achievement). My routine during these 8 months - 6 to 8 hours a day of programming with a lot of intermittent breaks. Lots of StackOverflow, rubber duck talking, writing code and test cases out on papers, hair pulling, banging keyboard, and Coffee. My relationship with programming was that push-pull/love-hate one with a stronger desire of pull/love than push/hate. [0]https://news.ycombinator.com/item?id=15471223 |