Friday 6 October 2006

Despite having programmed computers since before many graduate computer science students were born, no one ever actually taught me how to program. Being self-taught, I missed some of the fundamentals. Actually, I missed a lot of them, and every so often one of two things will happen: most commonly, I simply won't know how to do something that a first-year CompSci kid born during the administration of a President I voted against (or worse, voted for) picked up in her first class; less commonly, I will feel bad about this.

The category "things I don't know how to do" includes, for example, creating a linked list in C, or generating x86 Assembler code to index memory allocations on a heap. It comforts me to know that these fundamental questions have only affected my life once, when I interviewed at Microsoft in January 2005.

I've frequently thought about filling these gaps in my knowledge, not because I think it will help my business much, but because I hate not knowing stuff. So a couple of weeks ago I came across a recommendation to read Abelson's Structure and Interpretation of Computer Programming. (I thought I read this is Joel Spolsky's blog, but he has only one reference to Abelson in an entry I first read while trying to source this entry.)

I've started reading Abelson, with the consequence that at my advanced age I have also started learning a new programming language: Scheme. Abelson's book uses the language throughout, precisely because it has a simplicity that enables unbelievable complexity, not unlike the Latin alphabet. It comes out of an entirely different philosophy than does my primarly language, C#. I find it refreshing. And really cool. And I found a free interpreter that is also really cool, DrScheme.

Some readers may find this kind of amusing, as if a master mason had suddenly picked up a book on trowel design. But I think a thorough grounding in fundamentals makes anyone better at his or her profession, even if the knowledge is not strictly required. Learning how to create a linked list in C won't help me any more than learning how yeast cells reproduce would help a brewer.

Or, maybe, it will help me exactly as much, and make me a better programmer.

Comments are closed.
Search
Navigation
Categories
On this page....
Archives
<November 2008>
SunMonTueWedThuFriSat
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456
Total Posts: 65
This Year: 1
This Month: 0
This Week: 0
Comments: 9
Blogroll
Contact me
Send mail to the author(s) E-mail RSS 2.0 Atom 1.0
Administration