aspose file tools*
The moose likes Other Languages and the fly likes Seven Languages in Seven Weeks Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Languages » Other Languages
Bookmark "Seven Languages in Seven Weeks" Watch "Seven Languages in Seven Weeks" New topic
Author

Seven Languages in Seven Weeks

Bruce Tate
Author
Ranch Hand

Joined: Jun 04, 2002
Posts: 71
Greetings. I'm Bruce Tate, the author of Seven Languages in Seven Weeks. I'm here to tell you a little bit about the book and answer any questions you might have.

In the book, my publisher and I published a poll for the languages people would most like to see in the book. I had some ideas about what I wanted to accomplish too: at least three programming paradigms; at most one object oriented language; an emphasis on functional programming. With the two approaches, I settled on Ruby, Io, Prolog, Scala, Erlang, Clojure, and Haskell.

The book takes the approach of letting the readers fend for themselves when installing the language, then providing three days of structured content, and allowing the rest of the week for projects. I've had lots of feedback on the approach. Advanced readers thought that the book moved too slowly; most people thought it moved briskly and was quite challenging. I think the balance is about right for most readers.

The goal of the book is not to teach a language end-to-end. Such a goal would require a whole book on each language and months of study. I was not qualified to write such a book. Instead, the approach is to take the reader far enough to solve a non-trivial problem. For example, I used Scala to concurrently and synchronously fetch four web pages and count the words on them. I used Prolog to solve a Sudoku. I used Clojure to build a shared cache (thanks, Stuart Halloway and Relevance for the help). You won't find full-scale business programming, but you will do enough to capture the essence of what makes each language special.

There are some other problems I had to solve as I wrote the book. I found the transition between languages difficult to manage. Eventually, I settled on comparing each language to a movie character. It's a little kitschy perhaps, but it did help me introduce the character of a language to a reader who was potentially new to it, and it also opened learning channels and allowed me to quickly capture the essence of working with a language. I probably spent longer coming up with these comparisons than I should have. Of course, feedback has been mixed. Some find the comparisons distracting, and some readily embrace them. I'm ok with that. The easiest way to write a book without offending anyone is to strip all of the author's personality from the book. You can find plenty of those books in other places.

All in all, I like this approach to writing about technology: providing a deep dive by ramping up quickly and letting the end user solve the installation problems using Google, leaving the author to grapple with the more interesting aspects of the technology. I hope the Pragmatic Bookshelf embraces the challenge and writes more of them.


First rule of Kayak: When in doubt, paddle like Hell
Paul Clapham
Bartender

Joined: Oct 14, 2005
Posts: 18887
    
    8

Welcome to the Ranch, Bruce!

I've just started reading about Erlang myself. Unfortunately I have so many other personal projects that I haven't even had time to download the language and try it out for myself, but maybe one of these days...
Mohamed Sanaulla
Saloon Keeper

Joined: Sep 08, 2007
Posts: 3071
    
  33

Welcome to JavaRanch, Bruce

I was impressed by Scala and hence was tempted to learn Functional Programming. Started with Erlang, but later shifted to Haskell and found it interesting. But the major challenge I am facing is switching to the functional paradigm and I think that's where most of the people would face the problem. So am working on Scala and Haskell in parallel. But as Paul mentioned, office work in my case doesnt allow me to keep the study continuous. But I would be looking forward to reading your book and especially Scala and Haskell.


Mohamed Sanaulla | My Blog
Bruce Tate
Author
Ranch Hand

Joined: Jun 04, 2002
Posts: 71
Mohamed Sanaulla, I agree with you. Learning functional programming is a significant departure. I do think in the next five years, you're going to see a pretty serious uptake of functional languages. They are by far the right paradigm for dealing with concurrency. In terms of organization, too, they are much more powerful.

But it's very similar to the paradigm switch to objects. It was radically different, and extremely difficult to process. I think languages like Scala, Python and Ruby that support functional and object oriented concepts are going to be important for helping us make the transition.

Thanks for the comment.
Bruce Tate
Author
Ranch Hand

Joined: Jun 04, 2002
Posts: 71
Paul, thanks for your welcome!

Erlang is a big time brain warp for me. Strangely enough, working through Scala and Prolog helped me make the switch. If you pick it back up, I'd like to hear what you have to say about what worked and what didn't in terms of learning the language.
Mohamed Sanaulla
Saloon Keeper

Joined: Sep 08, 2007
Posts: 3071
    
  33

Just one concern regarding these languages is the adoption by the enterprises on a large scale and also by the education community. Ruby seems to have established itself as one of the popular languages. Generally people tend to learn those technologies which would provide them with employment opportunities. I may be wrong in my perception.

I really like the Pragmatic Bookshelf
Bruce Tate
Author
Ranch Hand

Joined: Jun 04, 2002
Posts: 71
Mohamed Sanaulla, I agree. But I also think professionals need to learn new languages, whether they will use them in production or not. Just as a second spoken language can expand the way you think, a second programming language can change the way you approach programming. Working through this book has changed the way I write my Ruby code significantly.
Mohamed Sanaulla
Saloon Keeper

Joined: Sep 08, 2007
Posts: 3071
    
  33

Bruce Tate wrote:Mohamed Sanaulla, I agree. But I also think professionals need to learn new languages, whether they will use them in production or not. Just as a second spoken language can expand the way you think, a second programming language can change the way you approach programming. Working through this book has changed the way I write my Ruby code significantly.

Totally agree with this. Thanks a lot Bruce for clarification and useful feedback
Paul Clapham
Bartender

Joined: Oct 14, 2005
Posts: 18887
    
    8

Well, when I learned XSLT I found I didn't have a problem with functional programming. But I'm going to have to find a personal project where Erlang is going to be useful. I don't want to just run through the examples, although I know that doing that might spark some ideas. It might take a while.
Bruce Tate
Author
Ranch Hand

Joined: Jun 04, 2002
Posts: 71
Paul Clapham wrote:Well, when I learned XSLT I found I didn't have a problem with functional programming. But I'm going to have to find a personal project where Erlang is going to be useful. I don't want to just run through the examples, although I know that doing that might spark some ideas. It might take a while.


You're a step ahead of where I was, then. Erlang is a little tougher to work into a typical development stack because it wants to be in the center of the stack. But you can see some isolated Erlang projects that have done well, like CouchDB, a NoSQL database.

Off the cuff, I can't think of anything I'd use Erlang for, but when I come across a potential Erlang Project, I'll know it. I will look for something with outrageous needs in the areas of reliability, concurrency, and performance. Erlang is extremely fast and reliable.

Thanks once again for your response.
Hussein Baghdadi
clojure forum advocate
Bartender

Joined: Nov 08, 2003
Posts: 3479

Hi Mr. Bruce,
The dedication of your book is really touching and emotional, Lynda Lyle Tate is an amazing woman.

Every time I'm trying to dive into Scala I escape immediately, it looks to me to be very elaborated and over designed.
The typing system is so vast (trying to improve Java by injecting more static typing?).

What do you think of Scala language?
Personally my #1 language is Clojure.

Your book looks amazing (as all of your books), thanks for your time and effort.
Bruce Tate
Author
Ranch Hand

Joined: Jun 04, 2002
Posts: 71
John Todd wrote:Hi Mr. Bruce,
The dedication of your book is really touching and emotional, Lynda Lyle Tate is an amazing woman.

Every time I'm trying to dive into Scala I escape immediately, it looks to me to be very elaborated and over designed.
The typing system is so vast (trying to improve Java by injecting more static typing?).

What do you think of Scala language?
Personally my #1 language is Clojure.

Your book looks amazing (as all of your books), thanks for your time and effort.


Scala does a pretty good job of merging two different paradigms. There are a bunch of things to reconcile: mutable state, program structure, types, and on and on. If you are limited to the Java ecosystem and the object oriented programming paradigm, you could do worse. That said, I had a hard time with Scala because I am not in the Java ecosystem at all, for the most part. I am also looking for a functional language that is a little more pure, so I don't have to deal with the sophistication of two type systems.

So I liked Scala currying and partially applied functions, and I really like the way that they abstracted the actor libraries. But if I was starting a green-field application, I might prefer to use something like Clojure, Erlang, or Haskell. But if I had a team of object oriented programmers and wanted to nudge them toward functional programming, Clojure might be a pretty good bet.
Bruce Tate
Author
Ranch Hand

Joined: Jun 04, 2002
Posts: 71
Bruce Tate wrote:
John Todd wrote:Hi Mr. Bruce,
The dedication of your book is really touching and emotional, Lynda Lyle Tate is an amazing woman.


Oh, and thanks for the kind words. Writing that dedication was a cleansing experience for me, and meant a great deal to my family. Thanks for noticing.
Michael Bedward
Greenhorn

Joined: Dec 10, 2009
Posts: 3
Many thanks for the book Bruce. I confess I was dubious about the concept when I first heard about it via pragprog, but then I got my copy and all doubts went out the window. Working through the book in my spare time I'll probably take seven months rather than seven weeks, but that's fine since I'm a s-l-o-w learner.

I'm presently working on a small scripting language for raster image processing. The book is very helpful this context: the explanations and contrasts of the languages being the perfect antidote to tunnel vision in design and implementation.

Great to see Prolog in there ! I'm looking forward to reacquainting myself with it after a very long break. And Io looks like it will be great fun - I love little languages.

Thanks again and cheers,
Michael
Bruce Tate
Author
Ranch Hand

Joined: Jun 04, 2002
Posts: 71
Michael Bedward wrote:Many thanks for the book Bruce. I confess I was dubious about the concept when I first heard about it via pragprog, but then I got my copy and all doubts went out the window. Working through the book in my spare time I'll probably take seven months rather than seven weeks, but that's fine since I'm a s-l-o-w learner.

I'm presently working on a small scripting language for raster image processing. The book is very helpful this context: the explanations and contrasts of the languages being the perfect antidote to tunnel vision in design and implementation.

Great to see Prolog in there ! I'm looking forward to reacquainting myself with it after a very long break. And Io looks like it will be great fun - I love little languages.

Thanks again and cheers,
Michael


Thanks for the kind words!
 
It is sorta covered in the JavaRanch Style Guide.
 
subject: Seven Languages in Seven Weeks