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.
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
Post a Comment