Found in 4 comments on Hacker News
dkarapetyan · 2014-04-19 · Original thread
You should definitely study parsers and compilers. The biggest gains for me have come from studying parser, compilers, VMs, and functional languages. The data structures and algorithms you sort of pick up along the way as you study the previously mentioned topics. For a really nice way to get started with all that stuff I highly recommend PL101 course at http://nathansuniversity.com/. It is a set of guided exercises for designing and implementing various programming languages all in your browser. That's actually how I started learning all this stuff.

If after going through the lessons from PL101 you decide that stuff is interesting to you then another book that I highly recommend is "Compiler Design: Virtual Machines": http://www.amazon.com/Compiler-Design-Machines-Reinhard-Wilh.... That one goes through various virtual machine implementations and by the end of it you'll understand precisely how pointers, stacks, arrays, etc. all work in various programming languages. Another good book is "Essentials of Programming Languages": http://www.amazon.com/Essentials-Programming-Languages-Danie... but I haven't put enough time into that one to say whether it will benefit you or not.

If the previously mentioned online resources and books are not your cup of tea then another good way to exercise your programming muscles while learning about data structures and various program organization principles is to implement a simple project like a ray tracer or a recursive descent parser in different languages. Start with a language you are fluent in and then diversify from there. This is actually how I learn programming languages and having a clear goal in sight is an excellent motivator for exploring all the new concepts in whatever language I'm learning.

Paying to learn at this point is a waste of money in my opinion. If you are comfortable learning stuff on your own then there is no shortage of resources available on the internet. All it takes is some discipline to follow through.

tokenadult · 2012-04-27 · Original thread
This is a simplistic restatement (on a rather ugly webpage color scheme) of the strong version of the linguistic relativity hypothesis ("Sapir-Whorf hypothesis"), which is surely wrong. My native language is General American English, and I grew up in what was essentially a monolingual immediate family and neighborhood of English speakers, although both of my parents had had some instruction in other languages. All of my grandparents were born in the United States, but three of the four spoke languages other than English at home, and my two maternal grandparents had all of their schooling in German.

German as a second language was mandatory for all elementary pupils in fourth, fifth, and sixth grade in my childhood school district, very unusual for the United States. I had more German in junior high and senior high (in two different states) and then Russian in senior high. I entered university as a Russian major and immediately began taking Chinese, switching my major to Chinese as I grew in delight for that language. I have had formal instruction as an adult in Modern Standard Chinese (a.k.a. Mandarin), Cantonese, Biblical Hebrew, Literary Chinese, Attic Greek, Biblical Greek, Japanese (first in the medium of Chinese, then in English), Taiwanese, and Hakka, and various courses in linguistics (also in the mediums of both English and Chinese). I have engaged in self-study of Biblical Aramaic, Mongolian, Spanish, French, Latin, Hungarian, Malay-Indonesian, Esperanto, Interlingua, etc., etc., etc.

I have to respectfully disagree with the strong version of the linguistic relativity hypothesis. Within each language grouping, people differ far more in their personal thinking along the dimension of visual thinker or not, or auditory thinker or not, than people differ from one another in thought patterns based on language background. But it is useful to learn another language and to live in another culture for exposure to new basic assumptions, and the same applies to learning computer language paradigms. People who program for a living, or who program just for fun, may like the books

http://www.amazon.com/Programming-Language-Pragmatics-Third-...

or

http://www.amazon.com/Essentials-Programming-Languages-Danie...

among other books on programming languages mentioned here on HN as examples of overviews of different approaches to high-level computer programming languages facilitating different kinds of programming problem-solving.

The case of human languages is quite a bit different. All human languages are constrained by the biology of the human brain, and human ear and human vocal tract (or hands and arms, in the case of sign languages for the deaf), and all human languages, without exception and even if they are constructed languages, have ambiguities and illogical features inconsistent with other features of the language. Many of the faults of Esperanto are very well documented,

http://www.xibalba.demon.co.uk/jbr/ranto/

and the Lojban promoters I have met online since 1994 have repeatedly demonstrated lack of logical capacity (at least in our common language of English) in a manner that puts me off from learning Lojban.

Learning a new cultural perspective by living in a new culture and learning the predominant language there is a very good idea, and highly educational. But the incidental features of one language as contrasted with another have no necessary relationship to how speakers of each language think, or how they can think.

tokenadult · 2011-05-11 · Original thread
You received another interesting answer. My native language is General American English, and I grew up in what was essentially a monolingual immediate family and neighborhood of English speakers, although both of my parents had had some instruction in other languages. All of my grandparents were born in the United States, but three of the four spoke languages other than English at home, and my two maternal grandparents had all of their schooling in German.

German as a second language was mandatory for all elementary pupils in fourth, fifth, and sixth grade in my childhood school district, very unusual for the United States. I had more German in junior high and senior high (in two different states) and then Russian in senior high. I entered university as a Russian major and immediately began taking Chinese, switching my major to Chinese as I grew in delight for that language. I have had formal instruction as an adult in Modern Standard Chinese (a.k.a. Mandarin), Cantonese, Biblical Hebrew, Literary Chinese, Attic Greek, Biblical Hebrew, Japanese (first in the medium of Chinese, then in English), Taiwanese, and Hakka, and various courses in linguistics (also in the mediums of both English and Chinese). I have engaged in self-study of Biblical Aramaic, Mongolian, Spanish, French, Latin, Hungarian, Malay-Indonesian, Esperanto, Interlingua, etc., etc., etc.

I have to respectfully disagree with the strong version of the linguistic relativity hypothesis. Within each language grouping, people differ far more in their personal thinking along the dimension of visual thinker or not, or auditory thinker or not, than people differ from one another in thought patterns based on language background. But it is useful to learn another language and to live in another culture for exposure to new basic assumptions, and the same applies to learning computer language paradigms. Besides the book mentioned in another reply, I like the books

http://www.amazon.com/Programming-Language-Pragmatics-Third-...

http://www.amazon.com/Essentials-Programming-Languages-Danie...

too as overviews of various programming languages.

rsheridan6 · 2008-11-15 · Original thread
This is the 2nd edition: there's a new edition out now. http://www.amazon.com/Essentials-Programming-Languages-Danie...

I have no idea what's changed.

Fresh book recommendations delivered straight to your inbox every Thursday.