

Programming languages that make you think differently - AlfredTwo
http://blogs.msdn.com/b/alfredth/archive/2011/08/24/languages-that-make-you-think.aspx

======
timsally
The idea that one should experience different types of programming languages
is fairly well known. But there are wrong and right ways to use any given
language and reaping benefits depends on you using it the right way. But how
one should know whether s/he is using a language correctly? I suggest the
following, decreasing order of effectiveness (1) find a mentor who deeply
understands the language, (2) read programs by those who deeply understand the
language, and (3) read writings by those to deeply understand the language. As
you might expect, a mentor is by far the most effective method. However, you
can still do quite well without one. Between Paul's _On Lisp_ [1] and various
online resources [2, 3] one can still do quite well.

The above actually applies in most areas of our profession. For example, how
sure you are that you are using Vim/Emacs in the right way? Do you actually
understand how to _think_ in the way these editors want you to think [4]? I
find these thoughts deeply humbling. There is a reasonable chance that you
don't fully understand the languages or the tools you use and thus always an
opportunity to improve.

[1] <http://www.paulgraham.com/onlisp.html>

[2] <http://www.xach.com/naggum/articles/> (a filter:
<http://xach.livejournal.com/221433.html>)

[3] <http://lists.common-lisp.net/pipermail/pro/>

[4] [http://stackoverflow.com/questions/1218390/what-is-your-
most...](http://stackoverflow.com/questions/1218390/what-is-your-most-
productive-shortcut-with-vim/1220118#1220118)

~~~
synnik
The problem is not only finding someone who truly deeply understands the
language, but knowing how to tell that they do.

I've seen way too many "Senior" developers who really have just done the same
junior-level coding for 15 years in a row. These people also tend to have a
poor grasp of where their skills really stand.

People reading HN probably are self-directed enough not to fall into this
trap, but we are not the majority of developers.

~~~
michaelcampbell
I think I've become one of those people. I'm trying to work it out, though.
<http://news.ycombinator.com/item?id=2924456>

------
sp332
The link to the Perlis languages article was posted here a few days ago.
<https://news.ycombinator.com/item?id=2883868>

~~~
gtani
Here's my "What language to learn next" bookmarks (oh, and I wrote lots of IBM
APL 2 code. I liked it)

[http://www.reddit.com/r/programming/comments/fbo0p/ive_run_o...](http://www.reddit.com/r/programming/comments/fbo0p/ive_run_out_of_programming_languages_to_study/)

<http://news.ycombinator.com/item?id=2444508>

<http://news.ycombinator.com/item?id=2536309>

<http://lambda-the-ultimate.org/node/4312>

[http://www.reddit.com/r/programming/comments/jiies/perlis_la...](http://www.reddit.com/r/programming/comments/jiies/perlis_languages/)

[http://hacklash.posterous.com/how-to-choose-your-next-
progra...](http://hacklash.posterous.com/how-to-choose-your-next-programming-
language)

[http://en.wikibooks.org/wiki/Subject:Computer_programming_la...](http://en.wikibooks.org/wiki/Subject:Computer_programming_languages)

<http://news.ycombinator.com/item?id=2906964>

------
stonemetal
How large an impact has learning a different language had on you? Having heard
and followed this advice long ago I have learned several other languages.
While good Haskell looks different than good C++ it is more "Rojo is red in
Spanish" and "adjectives typically go after nouns instead of before" rather
than a truly different way of thinking. I still think in terms of information
hiding, good clean interfaces, DRY, SRP, etc...

~~~
silentbicycle
Try learning J or Prolog. Those are quite a bit further away from the norm,
and will greatly expand your perspective.

------
hsmyers
What is fairly amusing is that this is much more true for the FORTRAN(64) that
was current when the statement was first made. More current versions(anything
since 95) are much closer in features and facilities than good old (very) 64
and it is much easier to write FORTRAN in C++. Useful if you are translating
Math/Science libraries but still something to re-factor at a later date
(should such a time ever come)

------
ThaddeusQuay2
"Notation as a Tool of Thought" by Kenneth E. Iverson in his 1979 ACM Turing
Award Lecture. <http://elliscave.com/APL_J/tool.pdf>

"Language as an Intellectual Tool: From Hieroglyphics to APL" by Donald B.
McIntyre in IBM Systems Journal Vol.30, No.4 1991, p.554-581.
[http://www.electricscotland.com/mcintyre/index_f/menu_f/j_f/...](http://www.electricscotland.com/mcintyre/index_f/menu_f/j_f/sysj_r_29.pdf)

Conway's Game of Life in one line of APL <http://catpad.net/michael/apl>

Conway's Game Of Life in APL <http://youtube.com/watch?v=a9xAKttWgP4>

