
Adopting a new programming language - klaaspieter
http://www.annema.me/adopting-a-new-programming-language
======
hyperliner
Maybe another way of saying "Staying Idiomatic" is "What made you great before
won't this time."

I had to do a C++ project a while back and got my hands on "Advanced C++
Programming Styles and Idioms" by James Coplien through a friend's
recommendation. Best thing I ever did to really understand the soul of the
language.

I am sure there is such "soul identifying" book for each language. What would
those books be? If you know of one, reply here. I'd love to know them (Go,
Haskell). Not just books that show you the syntax, but which show you the
soul.

~~~
bitpew
Thanks for the "Advanced C++" tip. "Eloquent Ruby" did the same for me when i
was looking into ruby.

"Effective Java" is a similar book for Java.

~~~
ryanyogan
If you want an amazing book on Design Patterns for ruby,
[http://www.amazon.com/Practical-Object-Oriented-Design-
Ruby-...](http://www.amazon.com/Practical-Object-Oriented-Design-Ruby-Addison-
Wesley/dp/0321721330)

------
arms
To the author's points of committing and staying idiomatic, I'd recommend
rewriting an existing application in your new language of choice. It doesn't
need to be a 1:1 port, but by porting over the basic/foundational pieces, you
really learn a lot about a new language and its idioms. For me, it's a much
more concrete way of learning a new language.

~~~
klaaspieter
It's definitely a good way to get started with learning, but you have to be
even more careful that you're not just copying patterns from one app to
another.

I had this experience when I started working on Karma's Android app. I
basically started out by copying the entire iOS architecture to Java. It
helped me get started quickly without having to make too many hard decisions
early on, but I did have to rewrite some things after I became more
experienced and learned there was a better, more Android idiomatic, way of
doing it.

The thing that helped me the most is that I became part of the community. Some
of them explained to me why I was wrong and then taught me a better approach.

~~~
arms
"you have to be even more careful that you're not just copying patterns from
one app to another" Absolutely. I hope my post didn't convey the opposite. The
way I see it is that the designers of the language know more than the (new)
developers using it, so it pays to rewrite existing applications in the way in
which the language designers intended.

------
ChikkaChiChi
I think learning the frameworks isn't nearly as important as trying to learn
the standard library.

If you start to rely on frameworks, it's entirely possible you'll bypass some
pretty spectacular features built right in to your new language.

~~~
klaaspieter
When I said framework I meant standard library. The most important thing to
learn is not the syntax of the language but the standard library. They know
everything the language can do and will most likely use all of it's features
somewhere.

Thanks for clearing it up, I think standard library is a better term :)

~~~
Zelphyr
MUCH better term! :) I'd submit that learning a framework will actually do you
a disservice as far as learning a new language goes.

------
peaton
I definitely agree. Furthermore, I think being multi-lingual in terms of
spoken languages also helps understanding and being open to new paradigms and
idioms. And this works both ways. After spending a semester programming in
Scheme, I was much more open to the idioms and syntax of Chinese. I think this
effect is super exciting and not discussed enough.

------
breadbox
Cached version:
[http://webcache.googleusercontent.com/search?q=cache:sT1c5m_...](http://webcache.googleusercontent.com/search?q=cache:sT1c5m_RsBgJ:www.annema.me/adopting-
a-new-programming-language+&cd=1&hl=en&ct=clnk&gl=us)

~~~
klaaspieter
Thank you. My blog is rather old and still runs on app engine. First time I
ever hit the free quota.

Should be up again.

