{"id":216,"date":"2008-07-11T16:56:31","date_gmt":"2008-07-12T00:56:31","guid":{"rendered":"http:\/\/www.airs.com\/blog\/archives\/216"},"modified":"2009-07-14T15:46:04","modified_gmt":"2009-07-14T23:46:04","slug":"reading-code","status":"publish","type":"post","link":"https:\/\/www.airs.com\/blog\/archives\/216","title":{"rendered":"Reading Code"},"content":{"rendered":"<p>The two best ways of learning how to program are writing code and reading (good) code.  I read a lot of code in my younger days, and I think it helped me.  Programming courses give students plenty of practice in writing code.  I wonder how many give students an opportunity to read good code.  There should be a course in which all the students read and discuss a large program, like a literature class.<\/p>\n<p>One problem with that idea is a lack of good code to read.  Knuth&#8217;s TeX and Metafont books are good reading.  But to really understand them you have to first wrap your head around TeX itself, which is a rather complicated macro processor.  In some ways the code for TeX is easier to understand than TeX itself.  Also, the code is in the Web version of Pascal, not a popular language today.  The Lions book and TCP\/IP Illustrated, Volume 2, show good coding, and are at least written in C, though again the code is rather old by today&#8217;s standards.<\/p>\n<p>Are there any modern code bases that are helpful to read?  It would be best if there were some commentary, or at least really excellent comments.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The two best ways of learning how to program are writing code and reading (good) code. I read a lot of code in my younger days, and I think it helped me. Programming courses give students plenty of practice in writing code. I wonder how many give students an opportunity to read good code. There [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[],"class_list":["post-216","post","type-post","status-publish","format-standard","hentry","category-programming"],"_links":{"self":[{"href":"https:\/\/www.airs.com\/blog\/wp-json\/wp\/v2\/posts\/216","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.airs.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.airs.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.airs.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.airs.com\/blog\/wp-json\/wp\/v2\/comments?post=216"}],"version-history":[{"count":0,"href":"https:\/\/www.airs.com\/blog\/wp-json\/wp\/v2\/posts\/216\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.airs.com\/blog\/wp-json\/wp\/v2\/media?parent=216"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.airs.com\/blog\/wp-json\/wp\/v2\/categories?post=216"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.airs.com\/blog\/wp-json\/wp\/v2\/tags?post=216"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}