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

How to configure Ubuntu's keyboard to work like a Mac's

Typing accents on a PC is a complicated Alt + three numbered code affair. One feels like a sorcerer casting a spell. "I summon thee accented é! I press the weird magical key Alt, and with 0191 get the flipped question mark!" For a bilingual person this meant that writing on the computer was a start-and-stop process. With Mac's it a whole lot easier, just Alt + e and the letter you wanted for accents and alt + ? for the question mark. No need to leave the keyboard for the number pad and no need to remember arcane number combinations or have a paper cheat sheet next to the keyboard, as I've seen in virtually every secretaries computer in Puerto Rico.

Linux has a interesting approach to foreign language characters: using a compose key. You hit this key which I typically map to Caps Lock and ' and the letter you want and voilá you get the accent. Kinda makes sense: single quotation mark is an accent, double gets you the ümalaut, works pretty well. Except for the ñ, wh…

Fixing Autocomplete in Github's Atom Text Editor for Ruby

I really like Github's Atom Text Editor. I really like that it's multi-platform allowing me to master one set of skills that is transferable to all platforms and all machines. 

On thing that just burns me of the default set-up in Atom is the Autocomplete feature that seems to change my words as a type them. Because Ruby uses the end of line as a terminus for a statement you usually finish a word with pressing the return button and you get really annoying changes to your finished typed word a la MS Word. I find myself yelling "No that's not what I wrote!" at the screen in busy coffee shops.

I disabled autocomplete for a while but it is a very useful function. Then I found out they changed the package that gave the autocomplete to a new one called "Autocomplete Plus" that gives you more options. All that I needed to change to make autocomplete sane again:

1. Open Atom's Preferences
2. Search the bundled packages for "Autocomplete Plus"

3. Go to t…

Contrasting Styles of Writing: English vs. Spanish

There is interestingly enough a big difference between what's considered good writing in Spanish and English. V.S. Naipul winner of the 2001 Nobel prize for literature publish an article on writing. In it he emphasizes the use of short clear sentences and encourages the lack of adjectives and adverbs. Essentially he pushes the writer to abandon florid language and master spartan communication. This is a desired feature of English prose, where short clipped sentences are the norm and seamlessly flow into a paragraph. In English prose the paragraph is the unit the writer cares about the most.

This is not the case in Spanish where whole short stories (I'm thinking this was Gabriel Garcia Marquez but maybe it was Cortázar) are written in one sentence. Something so difficult to do in English that the expert translator could best manage to encapsulate the tale in two sentences. The florid language is what is considered good writing in Spanish but unfortunately this has lead to what …