Skip to main content

Great Technical Books on Programming

We are in the middle of a computer programming languages explosion. In the last few years, a slew of programming languages have come into their own, others have been revived with new expressions and a whole bunch of them have been born anew. Also a new modality has appeared of the polyglot programmer, that is a programmer that works in multiple languages.

This last change is the most significant. Because for a long time programming was dominated by a very few select group of languages: C, C++, Java and C#. All of which are related. And dominated by a tool set like Visual Studio with C# and Visual Basic. Now that is no longer the case and things are for the better.

Recently I taught myself how to program and want to highlight a few books that are good reads. Most books in programming fall into a trap, that is they don't teach programming at all, but instead teach only the programming language. That's like teaching someone the rules to America Football and expecting them to automatically 'get' the strategy of the plays. That was my experience when I picked up the white book on Ansi C in college and couldn't make heads or tails of it.

So here are some great technical books that are just great even if you know how to program:

1. Why's poignant guide to Ruby by _why (also called the onion book, in a self-deprecating reference to pungent) is the best book I've read on programming. It is not for everyone but for everyone that it is for, it's absolutely superb. It does an incredible job of teaching you both a language and programming using comics, scatological stories and all sorts of cool mnemonic tricks. I would consider this a master piece. And it is free!

2. Javascript: the Good Parts by Douglas Crockford. Now this book is not about programming but about the language only. But it's super concise and helps you see why programming languages are constructed the way they are. His talks on the subject are super illuminating (look them up on YouTube). Javascript is a language that has a lot of quirks and they can get in the way of the beauty of the language, this book lets you see it. Javascript is also a very different language from the typical say Java or C#, it's prototypal not classical inheritance base, it's dynamic not static typed (meaning you don't have to say what a kind of things a variable will contain, that's what a type in programming is called), and multi-paradigm with a strong functional component. This book shines a light into the the sexy parts of the language and helps you understand how to avoid the crazy parts.

3. Practical Object-Oriented Design by Sandi Metz. I haven't finished this book yet. Just two chapters worth earns it a place on this list. This book is about how code is organized. Its short and dense and brilliant. More about it as I read it, but it's just great and written in a no-nonsense style that makes it perfect for a novice or an expert, a feat that is not easy to to do.

4. Exploring Everyday Things with R and Ruby, by Sau Sheong Chang. This is another great book that works both as an introduction to languages (ruby and R) and programming. It's well written and takes and interesting path using programming to satisfy your curiosity and experimenting with things in the real world. It's fairly fast on it's introduction to the languages but it does a good job of tying everyday things to programming which reveals a lot of what programming can be used for outside of just making apps.

Now for some general good books: the seven languages in seven weeks series (there's two of them) are pretty good, I'm reading the second one now. They also have a db one which is not as well written but an interesting topic. I've heard good things about Test Driven Development with Python but haven't read it. I'm liking Leanpub's everyday Rails Testing with RSpec and the Rails 4 way for solid practical advice. And when I was learning Rails, Sinatra: Up and Running was really helpful. Exceptional Ruby is an interesting book. And the Well Grounded Rubyist is a fantastic book for learning the Ruby language (it's the one I used in conjunction with the above).

Lastly, I want to reiterate the strange polyglot environment we are in now in programming. It is a time like no other, because instead of an arcane family of languages dominating all of programming: C, C++, C#, Objective-C and Java (which once was going to be called C++++) all of which follow the similar conventions now we are having a sort of Cambrian explosion of languages with whole bunch of interesting new ways of doing things. The "this is how you do things in programming" has been thrown out the window.

Comments

Popular posts from this blog

My Fake Resume

Inspired by the over aggrandized bio of Joseph Rakofsky I want to write my own. If you don't know who he is; Joseph Rakofsky is a lawyer who earned a mistrial for a criminal client due to his (alleged) incompetence as reported on the Washington Post . There has been quite a few commentaries on his "Streisand-house" approach of suing all the bloggers and even the Washington Post and American Bar Association for reporting his (alleged) ineptitude. ("Streisand-house" is what happened to Barbara Streisand who wanted to have a picture of her mansion removed from the internet and she sued to have it removed. Unfortunately suing requires the filing of public documents with a picture of her house. The lawsuit had the direct opposite effect it intended. Everybody now could see legally, since it was a public document, a picture of her house.) But all that internet gossip aside I'm most impressed by his resume. Here is a quote from the website: Prior t...

Setting JRuby to run in 1.9.2 mode by default

JRuby comes with both 1.8.7 and 1.9.2 (currently) and the default is 1.8.7. If you want to change it you have to feed an option at the command line: $jruby --1.9 This weekend I had to migrate a rails program that I hadn't written and the author used 1.9.2 notation so it would not run on JRuby with the default settings. So I had to add the version option with every command which gets old quick. I looked online for a way to make this automatic (and on my JRuby books) but could only found the way to do it on a Mac or Linux but all Windows references just mentioned nebulous concepts such as environmental variables and seemed to be different from which version of Windows you are using. Here is how to do it. Windows 7: Got to Control Panel, System. Wine (Crossover 10): Java 6 version 21 will run on Wine (at least on Crossover 10) and you can install JRuby on top of that. To set environmental variables you have to go to regedit and set it there manually. Follow th...

Coca-confusion, it comes and goes...

Recently Latin American countries have voiced their opposition to prop 19 (it would legalize recreational marijuana use) because it will cause confusion. This is hogwash. While it might be a little curious to a Columbian that he can go to jail for growing pot while a Californian will not; it's no more confusing than a Bolivian growing coca legally and a Californian not. Wasn't Evo Morales a coca grower? Legalizing Marijuana if anything will lead to less confusion not more.