Thinking in Programming languages

I don't know who it was that said that a language changes (or defines) the way you think about the world. Similarly, programming languages also change the way you think about software. I've had brief trysts with three languages, GW-BASIC, C++ and Javascript.

GW-BASIC, a dialect of BASIC, was very methodical. The basic structure of the code was more important than the logic. I could reasonably predict what my code would do, so there was less debugging required. But if my logic was flawed, it was difficult to change the code, sometimes I opted for rewriting the whole program. While it worked for smaller programs, I would never want to write more than a hundred line program in this language.

C++ vs Javascript – I know that both of these languages are perhaps very different but looking back, I can only remember some major distinctions in my thinking. C++ was self contained and deterministic. Javascript was about code reuse and explorative. With Javascript, I could never tell if something was going to work or not. Javascript (or the way we use Javascript) forced me to think in terms of libraries, modules. While this was way more powerful, I found it way more difficult to understand the program and debug.