Ask HN: How do I develop polyglot thinking?

1 points by gigatexal ↗ HN
I am self taught for the most part when it comes to programming. The first thing I learned to write in C++ was a for loop. for (int i = 0; i <10; i++) { ... }. That's imperative. Now I write SQL for a living and still find myself not thinking in a very relational way. I have desires to learn what I can from the functional languages but have a hard time wrapping my head around the concepts to gain anything of value from it. My question: how do I enhance the way I think to be able to think in different domains and become a better engineer?

2 comments

[ 4.1 ms ] story [ 14.4 ms ] thread
In my experience it really just comes down to doing work in them. I started programming with Java and initially found it difficult to break the OO style when moving into functional languages. What I ended up doing is just finding a personal project and committing to doing it in a new language. Years later, I find that my thoughts are tailored to the problem rather than the language. You can't really learn a language from a book or the docs, you have to actually do it.
I think the best way to internalize the "magic" that is possible w/ programming paradigms such as functional, logical, relational, etc. is to learn enough about how compilers and interpreters work that you can see how these things are implemented (what is really going on) and being able to use those kind of tools to create either internal or external DSLs that use those ideas to solve your problems.

Learning "yet another" programming language will probably teach you less than learning how to implement a programming language.