
Can a Programming Language Make You Smarter? - gigasquid
http://gigasquidsoftware.com/blog/2015/12/20/can-a-programming-language-make-you-smarter/
======
daviddaviddavid
If my only criterion in choosing a programming language was to make myself
smarter, I would probably choose Prolog or a similar language. I find that
when I'm writing Prolog I am forced to think precisely about the problem at
hand. The reason for this is that the programs one is writing are basically
just specifications of the truth conditions that constitute a solution to the
problem.

Other languages (especially those with flexible syntaxes) make me feel more
mentally limber due to the amount of creativity they encourage. But Prolog is
the only language I've ever written that makes me feel like I might actually
tack on an IQ point.

------
im_down_w_otp
I'm 100% certain that I'm a better engineer and designer/architect as a result
of learning Erlang. Not just the language, but the OTP patterns and also the
BEAM VM internals.

I design and build better software in other languages and ecosystems and have
a much, much higher bar for what constitutes properly encapsulated concerns,
coherent failure management, and "completeness" as a result of having used
Erlang in production.

My Scala is better, my Rust is better, my C is better, and my framework of
thinking for how to design software is better. Hell, even my Javascript is
better. Despite being a niche inside a niche as far as languages/ecosystems
go, the decision to learn it might be one of the best decisions of my career.

------
y0y
Unrelated to the question in the title, but a friend and I have often talked
about this. Neither of us are in any way experts in psychology/neurology/etc.
- we're lowly developers.

However, to us it made sense that language increases the cognitive ability of
the brain because it's like memoization. We now have a symbol to represent a
concept. We don't have to re-compute it over and over again. So now we
reference that symbol when we are thinking and can build upon it and attach
new symbols. Without having to re-compute, so to speak, the whole underlying
framework/structure we are better able to utilize our cognitive cpu.

Whether that is true in any way is beyond me, but it made sense to us.

------
drallison
The question is poorly formed. How do you measure smartness? And who is doing
the measuring.

A programming language can provide a framework for problem solving, and such a
framework can make the task of solving a class of problems easier. Because
problems can be solved with less work, it makes you feel smarter. Having the
right abstractions makes problem solving simpler.

------
isolate
Learning to program can teach you approach other areas of your life with more
rigor: separating concerns, minimizing dependencies, iterating fully or with a
short-circuit over a collection, refactoring, eliminating cruft, keeping
history, reducing constant factors, task decomposition, etc. etc. etc.

