Head First Java, 2nd Edition
by Kathy Sierra; Bert Bates
Head First Design Patterns
by Eric Freeman; Elisabeth Robson; Kathy Sierra; Bert Bates
Effective Java™, Second Edition
by Joshua Bloch
Pro C# 2008 and the .NET 3.5 Platform, Fourth Edition
by Andrew Troelsen
Masterminds of Programming features exclusive interviews with the creators of several historic and highly influential programming languages. In this unique collection, you'll learn about the processes that led to specific design decisions, including the goals they had in mind, the trade-offs they had to make, and how their experiences have left an impact on programming today. Masterminds of Programming includes individual interviews with:
Adin D. Falkoff: APL
Thomas E. Kurtz: BASIC
Charles H. Moore: FORTH
Robin Milner: ML
Donald D. Chamberlin: SQL
Alfred Aho, Peter Weinberger, and Brian Kernighan: AWK
Charles Geschke and John Warnock: PostScript
Bjarne Stroustrup: C++
Bertrand Meyer: Eiffel
Brad Cox and Tom Love: Objective-C
Larry Wall: Perl
Simon Peyton Jones, Paul Hudak, Philip Wadler, and John Hughes: Haskell
Guido van Rossum: Python
Luiz Henrique de Figueiredo and Roberto Ierusalimschy: Lua
James Gosling: Java
Grady Booch, Ivar Jacobson, and James Rumbaugh: UML
Anders Hejlsberg: Delphi inventor and lead developer of C#
If you're interested in the people whose vision and hard work helped shape the computer industry, you'll find Masterminds of Programming fascinating.
Average Amazon.com® Rating: ![]()
![]()
![]()
![]()
Based on 11 Ratings
There's no one "right" way to design a computer language... - 2009-08-22
Reviewer Rating: ![]()
![]()
![]()
![]()
![]()
So you don't get to be a mastermind behind a widely used programming language without having a pretty deep knowledge of computer science (and quite a few other things). But you *certainly* don't have to agree with other masterminds on what works and what doesn't. This shows very clearly in the book Masterminds of Programming: Conversations with the Creators of Major Programming Languages by Federico Biancuzzi and Shane Warden. They interview a number of the people behind some of the popular and influential computer languages and record those interviews for the reader. I think what I found most interesting is that there's no "right" answer about what works and what doesn't, and much depends on what niche the language will end up covering.
Contents:
C++ - Bjarne Stroustrup; Python - Guido von Rossum; APL - Adin D. Falkoff; FORTH - Charles D. Moore; BASIC - Thomas E. Kurtz; AWK - Alfred Aho, Peter Weinberger, and Brian Kernighan; LUA - Luiz Henrique de Figueiredo and Roberto Ierusalimschy; Haskell - Simon Peyton Jones, Paul Hudak, Philip Wadler, and John Hughes; ML - Robin Milner; SQL - Don Chamberlin; Objective-C - Brad Cox and Tom Love; Java - James Gosling; C# - Anders Hejlsberg; UML - Ivar Jacobson, James Rumbaugh, and Grady Booch; Perl - Larry Wall; Postscript - Charles Geschke and John Warnock; Eiffel - Bertrand Meyer; Afterword; Contributors; Index
I found this wasn't the easiest book to read, as it got deep into some very esoteric topics, and the interviews were likely to go off in many different directions. As such, it wasn't as if there were a set of questions that everyone answered so that you could directly compare and constrast topics and background. Still, I found a couple of ways in which the book worked for the reader. If you're into language design, Masterminds gives you some of the inner thoughts of people who have successfully built and rolled out a computer language that has been adopted for use by others. One of the most revealing topics is how they all have dealt with the issue of upgrading and enhancing the language without breaking stuff that has been previously built. As a language ages, it has more and more "cruft" from older features that are kept around for backwards compatibility. The language developers are always walking that fine line between adding new features and making sure it will be supportable going forward. You don't really get a chance to start over and correct your mistakes once they are part of a published version.
The second way you can read the book is to use it as a personality study of a language designer. Geeks are not always known for being the most socially adept or "normal" of humans, and language designers seem to take that a step beyond. These individuals appear to be totally consumed with their computer passions, and as such have very definitive personalities and viewpoints. One designer might state that object-oriented programming is without a doubt the biggest scam pushed on developers in the last decade. Others might state with equal conviction that OOP has been the revolutionary turning point in computer science. And what one designer finds as the "must-have" concept in a language, another designer will brush off as hubris. You'd think after all these years, there'd be some points of truth that just aren't arguable. But at least in language design, that certainly doesn't seem to be the case...
Obviously, it's not possible to cover every single language that's ever been written, and I'm sure many will quibble over why a certain language was included or excluded. Regardless of that, Masterminds is still a good read if the topic is one of interest to you. You may not agree with some of the views expressed by the designers (hey, they don't agree with each other!), but at least you'll have a better understanding of why a certain path was followed.
Unengaging - 2009-12-01
Reviewer Rating: ![]()
![]()
![]()
![]()
![]()
This is, as its subtitle says, a set of interviews with creators of programming languages. The interviews assume familiarity with the languages being discussed, which means that few people will find the book fascinating from cover to cover. Like many programmers, I first learned Basic, then C/C++, then Java and a smattering of other, hipper procedural languages (Python, Ruby), with a dollop of SQL on the side. So while I'm interested in functional languages like ML and Haskell, I often had no idea what the interviewees were talking about. Concrete examples would have been enormously helpful.
For a book about programming languages, there's astonishingly little source code. Someone who never learned Basic could read the whole chapter on it without having any idea how pleasingly simple its syntax is. The lack of code makes this book mainly useful as a supplemental text to other books on programming languages.
There are also some glaring omissions: Ruby, one of the hottest languages of recent years, is nowhere to be found. Nor is JavaScript, a language found on every modern web page. I would also have liked to see Erlang and Scala represented.
Packed with thoughtful, geeky quotes and insights - 2009-11-27
Reviewer Rating: ![]()
![]()
![]()
![]()
![]()
Masterminds of Programming: Conversations with the Creators of Major Programming Languages (Theory in Practice (O'Reilly)) by Federico Bioancuzzi and Shane Warden and published by O'Reilly and Associates is a large (480 pages), dense book packed full of exposition about language design, software engineering practices, software development lifecycle methodologies, Computer Science curricula, and unique insights into computer and computation history.
The format of the book is straightforward. Each chapter is dedicated to a programming language and contains a series of questions by the authors and responses from designers and creators of the language being highlighted.
I expected the chapters on languages I was familiar with to be the most interesting and those I was not familiar with to be the least interesting but my experience was the opposite. Chapters highlighting languages that I have had no exposure to such as Forth, APL, ML, and Lua were full of intriguing information, especially languages that were designed in the 1960s or 1950s. It's fascinating learning about how these languages came to be given the relatively restrictive hardware they were developed with.
Other languages highlighted in the book include:
* Python
* Perl
* Java
* C++
* C#
* Objective-C
* UML
* AWK
* Postscript
* Eifel
* Haskel
* BASIC
The book is just overflowing with powerful quotes that carry substantial meaning to developers, language designers, and managers. Here are a few that stood out to me.
"Whenever I hear people boasting of millions of lines of code, I know they have grieviously midunderstood their problem. There are no contemporary problems requiring millions of lines of code. Instead, there are careless programmers, bad managers, or impossible requirements for compatibility." --Chuck Moore in the Forth chapter
"As processors continue to get faster and memory capacities rise, it's easier to do quick experiments and even write production code in interpreted languages (like AWK) that would not have been feasible a few decades ago. All of this is a great win.
"At the same time, the ready availability of resources often leads to very bloated designs and implementations, systems that could be faster and easier to use if a bit more restraint had gone into their design. Modern operating systems certainly have this problem; it seems to take longer and longer for my machines to boot, even though, thanks to Moore's Law, they are noticeably faster than the previous ones. All that software is slowing me down." --Brian Kernighan in the AWK chapter.
"Software engineering is in many ways a very pathetic field, because so much of it is anecdotal and based on people's judgements or even people's aesthetic judgements." -- Peter Weinberger in the AWK chapter
"The software business is one of the few places we teach people to write before we teach them to read. That's really a mistake." -- Tom Love in the Objective-C chapter
"What do you think the chances are that Microsoft applications get slower and slower because they haven't managed memory properly? Have you ever met a three-year-old Microsoft operating system that you wanted to use? I actually operate with a laptop that has a Microsoft-free zone. It's amazing how much more productive I am than other people sitting in the same room with Microsoft computers. My computer is on, and I've done my work, and I've closed it down before they've gotten to their first Excel spreadsheet." -- Tom Love in the Objective-C chapter.
"If you study gold or lead from day to day, you can measure the properties and employ scientific methods to study them. With software, there is none of that." -- Brad Cox in the Objective-C chapter.
"C# basically took everything, although they oddly decided to take away the security and reliability stuff by adding all these sorts of unsafe pointers, which strikes me at grotesquely stupid, but people have used most of the features of Java somewhere." -- James Gosling in the Java chapter responding to the question related to C# being inspired by Java.
"I think architecture is very important, but I am cautious about labeling individuals as architects, for many reasons. Many times I have seen companies with a team of architects that they send to other organizations to work on projects. That may be fine if they work inside a particular project, but companies such as big banks usually have a group of enterprise architects that sit and draw representations of the architecture. Then they throw this over the wall to the developers. The developers just ask themselves: `What is this? It's useless.' In many companies, enterprise architects sit in an ivory tower without doing anything useful." -- Ivar Jacobson in the UML chapter
"Developing software is not rocket science. Look at the 5-10 million people who call themselves software developers. Very few of them really do anything creative of fundamentally new. Unfortunately, the outside world thinks that programmers are creative and brilliant people, and that's far from reality." -- Ivar Jacobson in the UML chapter.
"I rarely have met a programmer who understands the principles of computational complexity and puts them into practice. Instead they fuss with all kinds of pointless suboptimizations that are `pennywise and pound foolish... I think the most important skill in computing (as in physics and other creative fields) is the ability for abstraction." --James Rumbaugh in the UML chapter.
"I have found over my career, whether it be researchers or engineers, that in addition to the sort of intellectual skills that they manifest, if they are people who finish what they set out to do, they tend to be much more productive and have a much larger impact." -- Charles Geschke in the UML chapter.
These quotes are just scratching the surface.
Many of the interviews discuss history of computer science and computation theory. For example, Charles Geschke and John Warnock gave answers in the Postscript chapter detailing how Xerox PARC came into existence out of ARPA's emphasis on digital communications which was the result of thinking within the Eisenhower and Kennedy administrations.
Because of the simple, straightforward format of this book, there is definitely room for improvement. For example, readers unfamiliar with certain languages would find it immensely useful to see examples of the language in use. One thought is that each chapter could start with a code excerpt showing how a programmer might use the highlighted language to solve a generic problem. Readers could then see, in code, how each language differs in their approach to the same problem.
Each chapter is preceded by one paragraph description of the language which may contain brief history of the language's history. This could definitely be expanded upon. This book is big already and I don't think O'Reilly's goal is to make it a computer language text book, but it would be useful if each chapter started with 2-4 pages of introductory abstract about the language.
The authors have placed biographical information about each of the contributing interviewees in a Contributors appendix near the end of the book, but it would be more helpful to the reader if this information appeared at the beginning of each chapter instead.
Masterminds of Programming is available at a suggested price of $39.99. I rate it at four and a half stars.
This belongs in the hands of everyone serious about software. - 2009-09-25
Reviewer Rating: ![]()
![]()
![]()
![]()
![]()
Masterminds of Programming is a lot of different things, and it will almost certainly make a few programmers revisit their language wars. But the book transcends that.
There are 17 languages discussed in the book, but there are 27 people interviewed - language developers. And while there are funny moments - perhaps even moments that are arguable - there is also a lot of perspective that would otherwise have been absent had the arguable stuff not been put out there. These are interviews, folks, not religious textbooks.
The one thing that this book suffers from is being of such wide scope that it's hard to explain to people. The one thing that no other book has, though, is the beginning of a discussion on language development - not to mention the software engineering perspective on these projects that are at varying levels of maturity.
On [...], I gave this book a 10/10. Here, I give it 5/5. It's well written, it covers more ground than any computing related book that I have encountered, and it shows new dimensions to familiar subjects that would have otherwise been lost in the silicon sands of time.
It's nice to get into the heads of programming languages designers - 2009-11-30
Reviewer Rating: ![]()
![]()
![]()
![]()
![]()
It's really enlightening to get into the heads of programming languages designers and understand some of the ideas behind the way each of them designed the language, the problems they were trying to solve and how they solved them.
I find that very interesting and mind opening and I recommend this book to anyone who is interested in computer sciences as well as any programmer who aspires to be better.
Top Level Categories:
Programming
Sub-Categories:
Programming > APL
Programming > awk
Programming > C++
Programming > C#
Programming > Forth
Programming > Haskell
Programming > Java
Some information on this page was provided using data from Amazon.com®. View at Amazon >