4 ms·
Programming languages that make you think differently
- sp332 15y agoThe link to the Perlis languages article was posted here a few days ago. https://news.ycombinator.com/item?id=2883868 https://news.ycombinator.com/item?id=2883868
- gtani 15y agoHere'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_out_of_programming_languages_to_study/ http://www.reddit.com/r/programming/comments/fbo0p/ive_run_o... http://news.ycombinator.com/item?id=2444508 http://news.ycombinator.com/item?id=2444508 http://news.ycombinator.com/item?id=2536309 http://news.ycombinator.com/item?id=2536309 http://lambda-the-ultimate.org/node/4312 http://lambda-the-ultimate.org/node/4312 http://www.reddit.com/r/programming/comments/jiies/perlis_languages/ http://www.reddit.com/r/programming/comments/jiies/perlis_la... http://hacklash.posterous.com/how-to-choose-your-next-programming-language http://hacklash.posterous.com/how-to-choose-your-next-progra... http://en.wikibooks.org/wiki/Subject:Computer_programming_languages http://en.wikibooks.org/wiki/Subject:Computer_programming_la... http://news.ycombinator.com/item?id=2906964 http://news.ycombinator.com/item?id=2906964
- timsally 15y agoThe 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 http://www.paulgraham.com/onlisp.html [2] http://www.xach.com/naggum/articles/ http://www.xach.com/naggum/articles/ (a filter: http://xach.livejournal.com/221433.html http://xach.livejournal.com/221433.html) [3] http://lists.common-lisp.net/pipermail/pro/ http://lists.common-lisp.net/pipermail/pro/ [4] http://stackoverflow.com/questions/1218390/what-is-your-most-productive-shortcut-with-vim/1220118#1220118 http://stackoverflow.com/questions/1218390/what-is-your-most...
- 5hoom 15y agoI agree about it being humbling. I'm at an early stage of learning lisp & coming from a C++ background I feel like a total noob lost in a syntax free wilderness where there is nothing but you and the problem domain. There is a lot to be said for trying new paradigms of interacting with the machine. Just trying to grok the way a different language or tool does things makes you not only a better programmer but a better thinker.
- synnik 15y agoThe 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 15y agoI think I've become one of those people. I'm trying to work it out, though. http://news.ycombinator.com/item?id=2924456 http://news.ycombinator.com/item?id=2924456
- hsmyers 15y agoWhat 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)
- stonemetal 15y agoHow 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 15y agoTry learning J or Prolog. Those are quite a bit further away from the norm, and will greatly expand your perspective.
- ThaddeusQuay2 15y ago"Notation as a Tool of Thought" by Kenneth E. Iverson in his 1979 ACM Turing Award Lecture. http://elliscave.com/APL_J/tool.pdf 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/sysj_r_29.pdf http://www.electricscotland.com/mcintyre/index_f/menu_f/j_f/... Conway's Game of Life in one line of APL http://catpad.net/michael/apl http://catpad.net/michael/apl Conway's Game Of Life in APL http://youtube.com/watch?v=a9xAKttWgP4 http://youtube.com/watch?v=a9xAKttWgP4