Seven Languages in Seven Weeks: A Pragmatic Guide to Learning Programming Languages (Pragmatic Programmers)
G**B
I was amazed at how much I remembered and how much I ...
Pragmatic Programmers just released the first draft of Seven More Languages in Seven Weeks, written by Tate and a few others, and I found myself downloading this rather than digging my paper copy out of storage. Coming back to it, I was amazed at how much I remembered and how much I had forgotten. But the one thing that has stuck with me is thinking through different ways of thinking things through.For most of the languages in this book, I saw how they worked, did the easier exercises and called it good. But I was left intrigued by Erlang and worked through Simon St. Laurent's Introducing Erlang even though I have no need of the language. Fast forward a year and I'm learning R to sort through company data more easily and all of a sudden a functional mindset is extremely valuable for me to have. Coming from the dark ages when amateurs wrote everything in BASIC and done a little bit of C++, Java and Javascript, I would have been lost without my Erlang background.Seven Languages in Seven Weeks was written to stretch your brain and show you that assumptions about programming based on the language you use most can limit you while learning new languages gives you new ways even to use old languages. For me, it's a winner. I learned a language I've never used in real life since, but had I not done so, I would have been baffled by a language (R) that I've been learning and using for the last year or so. I highly recommend this for anyone who has to solve problems on a computer but keeps turning to the same tricks for the same problems instead of breaking new ground.
M**T
Much (perhaps over) anticipated
Background: I stumbled across the author's blog post announcing his intention to write the book while looking for materials comparing language paradigms instead of particular languages (object-oriented, logical, functional, prototype, etc). The as yet unwritten book sounded like exactly what I was after (thus my enthusiastic anticipation). I purchased an electronic copy of this book from the Prag Press beta program about six months ago and began reading the chapters as they were completed and released. My paper copy just arrived from Amazon today. Thus I can comment on the whole content of the book and the physical object.Languages: While the languages covered (Ruby, Io, Prolog, Scala, Erlang, Clojure, Haskell) are excitingly (painfully?) trendy the list is not without merit. In the introduction the author explains that he arrived at the list by asking readers and edited from there: swapping Io for JavaScript and excluding Python thereby making room for Prolog. One could debate the choice of Io over JavaScript (particularly in a post Node.js / Common.js world) and make a case for including Smalltalk as the canonical OO language over Ruby; however, the chosen languages each bring something to the book and represent a number of interesting paradigms.Chapters: Each language has its own chapter. Each chapter has five sections:- an introduction to the language covering topics like it's history, place in the modern language landscape, paradigm, etc- 'Day 1'- 'Day 2'- 'Day 3'- and a conclusion with a few parting words / 'the moral of the story is...'.The boundaries between days are not particularly meaningful but roughly build from "here's the syntax" to "here's an interesting thing you can do with this paradigm". By Day 3 each chapter has moved beyond trivial "hello world" examples; not surprisingly then, the pace of progress is brisk and the details of how to get up and running with each language are largely left to the reader.Each language chapter includes an interview with a user/creator of the language (Matz, Steve Dekorte, Brian Tarbox, Martin Odersky, Joe Armstrong, Rich Hickey, Philip Wadler / Simon Peyton-Jones). These were an unexpected addition and quite worth reading. In fact, I wish the interviews had been longer and gone into more technical detail.In addition to the seven language chapters there is an introductory chapter that has the sort of information normally found in the pre-page-numbering introduction to a book (explanation of the book's contents, intended audience etc) and an excellent final wrap-up chapter (more on it later).Length: I easily completed each language chapter in a weekend. The first and last chapters are very quick reads. Seven weeks should be more than enough time to work through the book.Subjective annoyances:- The quality of the physical book (not great) will be familiar to regular Prag Programmer shoppers. It is not up to O'Reilly standards (it's more like an Apress book). Although the typesetting is easy to read the top and bottom margins are unpleasantly tight. The outside margin leaves room for notes which I like, but the book is awkwardly square. For $22 what does one expect?- Each chapter attempts creativity with a supposedly allegorical popular culture reference threaded through it (ex: Io = Ferris Bueller). I found these more distracting than informative. I'd include naming the chapter sections "day n" as similarly failed attempts and wish that instead attempting wit (ex Io Day1: An Excellent Driver) they had substantive names. Obviously this is totally personal opinion, you might like it.Outright Disappointment: I wish that the individual chapters went into significantly more depth comparing the motivations for and consequences of each language design. While the key features of each language are demonstrated with annotated code samples and explanatory text little is offered in the way of discussion comparing across language. For example the Scala chapter (selected at random) is on pages 121-166 in the index under "Scala" the only references outside its own chapter are found on pages 302, 303, 305-306, and 308 (all in the final wrap-up chapter). I view this as a real missed opportunity given the books unique approach/content. The final wrap-up chapter seems to be the only place with this sort of cross-language discussion and as a result it is both excellent and much too short.Conclusion: An interesting book that I enjoyed reading and expect to return to in the future. The physical book is of so-so quality and as such the electronic book may be the right product for you to buy. The missed opportunity (and loss star) are for a disappointing failure to draw cross-language comparisons within the text of each chapter.----------Update: [...]is a 45 min talk on the book / topics in the book.
H**N
A Software Vacation
I wasn't sure what to expect but it turned out to be much more than I hoped for. After nearly 30+ years of coding experience I found myself wandering around blindly in the world of computers. When I started there were two languages Cobol and Fortran. Language references were only a couple of hundred pages long, even for Fortran. There was this thing called Algol which was trying to unify the computer world but it was hard to find. For the last ten years I have been working for an unenlightened organization that is only interested in the bottom line. Unfortunately, what they never figured out was that a lack of vision usually leads you to a technological cliff somewhere. Anyway, I saw the title and I was intrigued. After reading the book I now know just how much I have missed. While I have spent my time trying to get acceleration vectors to integrate into velocity vectors which integrate into position vectors the world has gone several different directions. Also, some very bright people have tried to teach computers how to deal with this modern world. Bruce's book describes both their successes and their frustrations.I suspect that Bruce will prove to be a profit. Early in the book he offers the speculation that his book is going to set off a book selling frenzy. I suspect that this will prove to be true. I have ordered three language references for two languages that I didn't know exists. I ordered one for a language I had run into a few years ago but it has grown greatly.What compels me to write this is Bruce's final paragraph "Finding Your Voice." Finally, I understand why I have spent the last thirty years programming computers. It was a long, twisted way to get some place but finally I understand why I had to do it. Thank you Bruce!!
Trustpilot
1 week ago
1 month ago