Bruce Tate

+ Follow
since Jun 04, 2002
Cows and Likes
Total received
In last 30 days
Total given
Total received
Received in last 30 days
Total given
Given in last 30 days
Forums and Threads
Scavenger Hunt
expand Ranch Hand Scavenger Hunt
expand Greenhorn Scavenger Hunt

Recent posts by Bruce Tate

Thank you. This was truly my pleasure.
10 years ago
Thanks all for the kind words. As I said, that's why we write.

10 years ago

Sumit Bisht wrote:Isn't this is just too much to ask from any single text.Sure, we all love to brag (in person or in public) about how much we 'know', but merely skimming over languages is just an exercise in futility(as opposed to understanding different paradigms and leveraging them in one's language of choice [for multiple paradigm languages] ) .

I agree with Bruce on his choices in Ruby, Scala and Erlang (as I am having varying experience in them), but inclusion of other languages like Io, Prolog, etc. is beyond me (and change this mix for just about everyone).
Today, don't we use domain specific languages if we want to address a 'niche' problem ?
To me, frankly speaking, this Bruce Tate's work is disappointing, unlike earlier books.

It's really not about learning a language end-to-end. It's about learning what makes each language unique. If you believe, as I do, that programming paradigms are likely to change soon because of the massively parallel hardware we're building, this will be an important skill. The alternative is to guess right when paradigms do change, or to learn each language cover-to-cover, which is an expensive proposition.

Thanks for your feedback, but I am quite happy with the result.
10 years ago
For all who participated in the threads below, thanks so much. I'm honored that so many people cared enough to ask a question for such an obscure book. These days, most technical authors don't write for the money. We write because we have something to say that we think is important or interesting. Forums like this one help me validate the fact that these ideas are worth discussing. You have my heart felt thanks.

If it's not too much to ask, if you've read it or are reading through it, I would love to see your honest opinion in an review for the book. And if you like what you've read here, I'd love for you to pick up the book (after the drawing) and let me know what you think. I know that availability is limited. The book has done better than we expected, so we got caught by surprise, but you can still get an e-book version for your ipads and iphones here:

Thanks again for hanging out with me this week. Hope to see you around.
10 years ago

John Todd wrote:Hi Mr. Bruce,
Why in your opinion Haskell isn't being used to create real world systems?
Lisp is an alien language but it is used to create critical systems, also Lisp learning curve is among the hardest.
Is it because Haskell is an academic language and not industrial language?

Great question!!!

Both of these languages are difficult for large teams for the same reason. Lisp is impractical because if its syntax, but has the richest abstraction of all modern programming languages, I think. Tim Bray says it's really taxing on your short term memory, and I'd have to say I agree. I find math equations particularly difficult to process in Lisp, but some of the left to right operators included in Clojure really help to mitigate that concern for me.

Haskell is a conceptual brain warp. To do the most basic of tasks and do them well, you need to grasp three super sophisticated concepts:
1) the type system with type classes and a type tree. Haskell is strongly typed, so you can't dance around it.
2) Monads. You can't avoid monads; you have to use them to do any kind of practical programming. And it's not just a tedious kind of hard like prefix notation. It's challenging to grok the base concept.
3) Lazy computing. Some really elegant stuff breaks if you're not careful because it can force Haskell to realize an infinite sequence, and suddenly you're dead and you don't know why.

But that said, Haskell is incredibly powerful. In 10 years, we're going to wonder why more of us weren't writing Haskell, but I've seen some very sharp people fail with it. The transition is demanding, but the best minds in the business often prefer it.

I am sorry this is not more clear. It's a great question.
10 years ago

Gian Franco wrote:Hi Bruce,

What, with the experiences of this book, would be your 8th language?



There is lots of discussion about this on other threads, but I'll answer it again here.

If I do a sequel, here are some of the candidates:

Python and Smalltalk (for sure)
Either Lua or Self (for sure)

That's a pretty good list. IF you are asking what the last language that I struck from the book might be, it was one of JavaScript/Python/Smalltalk. But that's not really the same question!

Thanks for your question

10 years ago

Hauke Ingmar Schmidt wrote:

Mohamed Sanaulla wrote:I could go to an extent to specify WHAT but I really don't know HOW to measure :)

If you find a good answer on that you have an eternal place in literature for sure. ;-)

LOC- Lines of Code? But yeah Lines of code/verbosity can often help the developer :wink: For example- if we compare Java and Scala in terms of the verbosity of code- Scala is more concise.

As I wrote before, I don't think that shorter is better automatically, I don't think that typing speed is a limiting factor. Reading the more, but shorter code is not better suited for reading automatically. Otherwise one would only need the same functionality implemented in different languages to see which is more "productive". Obviously this does not work, there are many more factors. E.g. how should a "steep learning curve" be valued?

True for sure. Perl is considered one of the most concise of the imperative languages, but it's also one of the least readable. What's the joke about the world's first write only language? Can't remember...
10 years ago

Brett Lewinski wrote:Bruce Thanks for the Reply I appreciate it!

My pleasure.
10 years ago

Mohamed Sanaulla wrote:

Bruce Tate wrote:
Other languages to consider are JavaScript for stuff beyond the browser, Go (the Google language),

JavaScript- I have never thought using them beyond browser? (this is may be my negligence towards JavaScript)

Yeah. Believe it or not, a lot of the cool kids are doing some amazing things with JavaScript. The Prototype paradigm is very powerful, and there are plenty of functional concepts buit into JavaScript, and there are virtual machines everywhere.
10 years ago

Raghavan Muthu wrote:Hi Bruce,

First of all, it was a different book I had ever come across. Thanks and Congratulations for having written such a book!

I have few questions for you. Few of them may make you feel like too personal. If so, please ignore it

1. what made you write such a book?

I like the idea of learning languages, and it's an important time for our industry. I can sense a paradigm change, and you can see it with the proliferation of new languages on the JVM, for example. New languages don't pop up by accident. They scratch an itch. Now, the itch is all about programmer productivity with concurrent access.

Raghavan Muthu wrote:
2. I had been wondering how come seven such different languages (Ruby, Io, Prolog, Scala, Erlang, Clojure, and Haskell) had been composed in one book, when there are so many books for one single language.. I had read more than one book for a particular programming language. Would like you to share the challenges specifically you had faced while composing the compact structure of it? I am sure you would NOT have covered (or you dint want to) the entire features of the languages. I am interested and curious to know!

It's not a definitive guide for any language. It's about improving myself as a programmer, and learning how to learn. It's a very important skill right now. You need to be able to dive in and get deep enough to understand what's interesting and important about a new language. If you can't do that, you're going to be left behind when paradigms eventually irrevocably change.

Raghavan Muthu wrote:
3. Overall, what was the idea behind choosing these 7 languages when there are enormous programming languages? Are there any common factors behind choosing these languages?

See the previous posts on the subject.

Raghavan Muthu wrote:
4. Have you demonstrated any application/project work at the end of the book? I know you would have covered good amount of examples for each aspect of every language.

Nope. The goal is to solve a nontrivial example for each language. There is not enough room to do much more.

Raghavan Muthu wrote:
5. Do you think really one week will suffice for each language? :P

Nope. But you can capture the essence of a language in a week of study.

Raghavan Muthu wrote:
6. Have you discussed about the integration of these languages with some of the few popular programming languages like C, Java etc.? I know not always there is a need to interact with other languages. However, if there is a need, what extent is it easy to plugin?

Not at all. I specifically avoided this problem. It's too complicated.

Raghavan Muthu wrote:
7. Are there any IDEs required for the other languages Scala, Io, Erlang, Clojure etc.,? Have you got a chance to describe any of them?

I specifically avoided this too. I wanted to deal in foundations.

Raghavan Muthu wrote:

Eagerly waiting to hear from you.....

You're making me work.
10 years ago

Hauke Ingmar Schmidt wrote:

Bruce Tate wrote:A type is just a convenience in Io, not like a class in OOP. It's a tool used to help a programmer organize, and not one to help the language organize internally.

Hm, but there is a difference in (proto-)types and "non-type" clones, if I understood it correctly? Namely the "type" slot. It's just that this change is hidden within the capitalization that I stumbled upon. So capitalization gets part of the syntax. That's different to naming convention where e.g. constants are all-capital but this does not change semantics.

That's a pretty minor difference. I bet it is implemented in a single line of Io code. Consider the difference between, for example, Java or Ruby classes and Io types. An Io type is an object with an upper case name... period. That's pretty astounding to me, actually.

10 years ago

Mohamed Sanaulla wrote:

Christophe Verré wrote: ... do you also explain some of their practical use in the industry ?

This is always one of the reasons which developers look while learning a language ;)

Yeah. I try to. I try to talk about the kinds of problems that a particular language is well-suited to solve. The book also solves a nontrivial problem in each language by the end, and those problems tend to be in the power zone for each of the languages. So I think the approach works well for me.

Thanks for your question.
10 years ago

Mohamed Sanaulla wrote:We have seen scattered discussions about different languages. So which languages can we brand as productive- both in terms of developer productivity as well as the ease of use in application development and as promising language. By promising we can think of extent to which the language would be adopted by the developer community as well as by the enterprises for application development. We saw Java as the revolution language some 15 years back, so which is that language in the current set of languages.

We could consider the Seven languages chosen by Bruce or if anyone has another language to add- it would be most welcome.

Out of the seven in my book, for mature and highly productive, I would consider Ruby, Scala (for Java shops only), Erlang, Clojure, and possibly Haskell. I would have to have the right team to try any of them, but that's doubly so for Haskell. The learning curve is very, very tough. Each one of those languages has some pretty significant advantages for certain types of projects.

Other languages to consider are JavaScript for stuff beyond the browser, Go (the Google language), Python (again, with renewed support from people like Google and the University of Texas), Lisp, and some of the prototype languages like Lua. I occasionally hear cool stuff about other languages too like Oz, but it's still way too early for most of them.
10 years ago

Andy Bach wrote:

Campbell Ritchie wrote:

Bruce Tate wrote: . . . Java, JavaScript, C or C++ for a variety of reasons. Mostly, they are all too popular, . . .

Agree: they are already well covered elsewhere. For that sort of book, it is better to go for less well-known languages.

Just a link - Steve Yegge has lots to say about languages in his various blogs (he's very smart and funny:

) one I remembered was sort of "7 languages in one page" - Tour De Babel:

Yes! I remember that page. Steve was one of the guys who reviewed Beyond Java. We both liked Ruby, and both wanted a chance to be able to write it professionally. He's one of those guys who is just smarter than the rest of us. I have a tremendous amount of respect for what he was able to accomplish at Google.
10 years ago

Vijitha Kumara wrote:Thanks Bruce. Looks like you have optimized the book probably the best possible way to serve the nature of it

Hah... you're giving me too much credit. I wrote just about the only book like this that I cam capable of writing.
10 years ago