Hacker News new | past | comments | ask | show | jobs | submit login

The simile is imperfect.

Driving a manual car, rather than an automatic, teaches you nothing about cars, possibly bar the fact that they have gears. Even that is tenuous: the interaction between the clutch, stick and accelerator is a very abstracted interface to the actual drive mechanism of a car. Manually changing gear is just an extra dexterity skill to learn.

And the opinion is out of date.

The "learning x will make you a better programmer" argument has been made before. However, last time, x was Lisp. This makes sense, because in that case you're sacrificing performance to gain better tools to problem solve. But, in this article, the argument is that learning C++ teaches you about computing basics - memory allocation, storage, retrieval etc. But these things just aren't that relevant anymore. Problem solving tools are generally useful. Technical details are specifically useful, and thus less enriching.




Driving a stick shift well teaches you not only that cars have gears, but that the power output by an engine depends on RPM, that your car has synchronizers and that you can reduce the wear on them, etc.


I live in Norway. Most people here drive stick-shifts. I can guarantee you that the vast majority of people driving stick-shifts have no idea what synchro rings are, nor would they be able to point them out if you cracked a gearbox open and told them to point them out. So yes, the simile is flawed.

As for the usefulness of learning C or C++, I do think it is useful as a learning exercise. As would assembly programming be. I have met developers who considered themselves "experienced" who are unable to estimate memory requirements for simple data structures. I've had people tell me that pointers are "about one byte" and people who insist that the most compact way to store a boolean value is as an int value.


Note that he said well. Yes, you can drive a stick to work and the grocery store without learning anything significant about it at all, just like you can write "Hello World" programs in C++ without really knowing anything about pointers, dynamic mem allocation, etc. But in both cases, to be able to do anything significant, you'd need to learn more than the absolute basics.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: