Win a copy of Re-engineering Legacy Software this week in the Refactoring forum
or Docker in Action in the Cloud/Virtualization forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

Seven Languages in Seven Weeks

 
Bruce Tate
Author
Ranch Hand
Posts: 71
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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.

 
Paul Clapham
Sheriff
Pie
Posts: 20758
30
Eclipse IDE Firefox Browser MySQL Database
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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
Posts: 3159
33
Google App Engine Java Ruby
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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.
 
Bruce Tate
Author
Ranch Hand
Posts: 71
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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
Posts: 71
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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
Posts: 3159
33
Google App Engine Java Ruby
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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
Posts: 71
  • Likes 1
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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
Posts: 3159
33
Google App Engine Java Ruby
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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
Sheriff
Pie
Posts: 20758
30
Eclipse IDE Firefox Browser MySQL Database
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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
Posts: 71
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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
Posts: 3479
Clojure Mac Objective C
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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
Posts: 71
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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
Posts: 71
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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
Posts: 3
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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
Posts: 71
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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!
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic