- Paperback: 472 pages
- Publisher: No Starch Press; 2 edition (December 14, 2014)
- Language: English
- ISBN-10: 1593275846
- ISBN-13: 978-1593275846
- Product Dimensions: 1 x 7 x 9.2 inches
- Shipping Weight: 2 pounds (View shipping rates and policies)
- Average Customer Review: 4.1 out of 5 stars See all reviews (147 customer reviews)
- Amazon Best Sellers Rank: #17,408 in Books (See Top 100 in Books)
Enter your mobile number or email address below and we'll send you a link to download the free Kindle App. Then you can start reading Kindle books on your smartphone, tablet, or computer - no Kindle device required.
To get the free app, enter your mobile phone number.
Use the Amazon App to scan ISBNs and compare prices.
Frequently bought together
Customers who bought this item also bought
About the Author
Marijn Haverbeke is an independent developer and author, focused primarily on programming languages and tools for programmers. He spends most of his time working on open source software, such as the CodeMirror editor and the Tern type inference engine.
If you are a seller for this product, would you like to suggest updates through seller support?
Top Customer Reviews
Others have a utilitarian approach. An excellent O'Reilly book that I am also using delves into much more detail about the language itself. Language components are presented one by one. An explanation of the syntax is given, then examples are presented. After that, exercises are given to help test the reader's knowledge, then on to the the next topic. This method is pretty standard. It is also effective and thorough (as far as I can tell).
> In the beginning, at the birth of computing, there were no programming languages. Programs looked something like this:
> 00110001 00000000 00000000
> 00110001 00000001 00000001
> 00110011 00000001 00000010
Although EJ does not follow a stepwise evolution of programming from here, it makes sure to lay the foundation for everything taught along the way.
The pace is actually quite fast. From the binary code displayed in the introduction, the book progresses towards very modern, and possibly difficult, concepts. It is something more suited for weeks of study than for several afternoons' reading. In Chapter 1, the reader is introduced to the basics of data types, variables, and program control structures like loops and assignments. By Chapter 5, the reader is being asked to parse text files using map/reduce functions. It's quite a progression, but logical in its execution.
In the latter chapters, the book finally diverts to the topic of programming for the web. The quality of information in those chapters makes it well worth the wait.
I've found that many other resources (meaning books and/or websites) take for granted the basics that comprise web development. I suspect it is because the authors of those works are unfamiliar with the basics themselves. It is far too easy to get an even moderately complex system up and running without a full understanding of how everything works underneath. However, I feel that many details that are taken for granted deserve a more thorough discussion.
In EJ, the author gives programming for the web the same treatment he did programming in the abstract. He lays a foundation covering the fundamentals and then builds upon it, layer by layer. Chapter 9 begins with a definition and example of one simple and very basic HTTP request. From there, he continues on through client side browser manipulation and DOM hacking and then finishes up with a discussion of other types of HTTP requests (e.g. Ajax, etc.) and the HTTP protocol in general.
For me, this is the meat of the book. These three short chapters that contain a concise summary I have been unable to find anywhere else.
Separate from its utility, this book is also a pleasure to read.
The prose is witty and informative without getting in the way. The projects are practical but also fun in their whimsical nature. From Chapter 3 (Data Structure):
> Consider the following situation: Your crazy Aunt Emily, who is rumored
> to have more than 50 cats living with her (you never managed to count
> them), regularly sends you emails to keep you up-to-date on her exploits.
> They usually look like this:
You then spend the rest of the chapter writing programs to decipher Aunt Emily's letters. A later chapter on object-oriented programming has you constructing a virtual terrarium. Both sets of assignments are to the point; both are also fun.
The book is well edited. There are no typos that I have noticed so far, though I seem to find them quite easily in other books I read. The typefaces used are attractive and easy to read. Physically, the book is bound well and is sturdy. The paper is of relatively heavy weight, making it a pleasure to leaf through and useful for note-taking, if the reader is so inclined.
This book is highly functional, just like the material it contains.
Prior to this writing, I had already recommended this author's work to several friends as an excellent introduction to programming. (Full disclosure: This review was written against a free copy of the physical book sent by the publisher. At the time, I had already used and read the online versions, favorably mentioning them online.)
No, the code examples are not superficial. It's similar to Zed Shaw's exercises in Learn Python the Hard Way - they are specially crafted to teach you something. You should type out the examples on your computer, write comments on what each line does, download the data files from the website, and get the examples to run.
The author put this quote in the introduction:
"I do not enlighten those who are not eager to learn, nor arouse those who are not anxious to give an explanation themselves. If I have presented one corner of the square and they cannot come back to me with the other three, I should not go over the points again." -Confucius
An example is functional programming. I never understood it or the hype. I read many articles and discussion forums, but I never really got it. In Chapter 5, Higher-Order Functions, the author doesn't even mention the buzz-words "functional programming". He simply starts off with the typical for-loop to print each item in an array. Then he shows how the for-loop can be enclosed in a function. Then he modifies the function so it can take in generic actions instead of just printing - a function that takes another function as input. For practice with functions on functions, you create a few more: filter, map, reduce... BAM! it all hits me. With the stuff I learnt in Chapter 3, I now know the benefits of no-side effects, limiting scope, recursion, and leaving the original data alone. I see why stringing small functions together allows more flexibility than a long recipe of for-loops. I see why functions allow you to follow the data being manipulated more clearly. I finally get it.
The funny thing is, the book isn't even that "deep". After all, it's actually a programming book where he walks you through code examples, not a conceptual computer science book. It's odd how concepts just come to you - that's how eloquent the book actually is.
Most Recent Customer Reviews
Now I use node, express, jquery etc.Read more