3 ms·
As a foreign language major in my undergraduate studies, I have to like item 49, "Learn foreign languages," and of course many participants on Hacker News pract
by tokenadult 14y ago
As a foreign language major in my undergraduate studies, I have to like item 49, "Learn foreign languages," and of course many participants on Hacker News practice that by learning English as a second language. (You know the old joke, right? Q: What do you call a person who knows two or more languages? A: Multilingual. Q: What do you call a person who knows only one language? A: American.) Learning a human natural language and its arbitrary rules (which will always differ from the arbitrary rules of your native language) provides a test case of what's involved in comparing different computer programming languages.
I was surprised that over 97 items there isn't even one item mentioning the importance of knowing a lot of mathematics. I would emphasize that as one of the top ten items if I were compiling a list like this. I have learned from working programmers who know a lot of mathematics that they think many of their fellow programmers could spot solutions for industry problems easier if only they recognized the mathematical structure of the problems they are trying to solve. In general, learning mathematics thoroughly at the primary-to-undergraduate level in a problem-solving curriculum builds problem-solving skills
http://www.artofproblemsolving.com/Resources/articles.php?page=problemsolving http://www.artofproblemsolving.com/Resources/articles.php?pa...
that generalize well to solving programming problems.
- gizmo686 14y agoI always took a fairly opposite view of foreign languages relative to programming languages that you. In my experience, when you learn a programming language, you want to understand it in as few and as simple terms as possible. So when you see two features, you should look for ways to ask, is their any way these features are really the same thing. With foreign language (and even native English for me) trying to do that will not work. Instead you need to constantly ask, is this an exception to the rules.
- csense 14y agoI found foreign language study to be entirely irrelevant to programming. In my experience, foreign language study consists of the memorization of lengthy lists of vocabulary words and verb suffixes. There's almost nothing but memorization, and if you forget a word or something, you're dead in the water unless you can remember it. I wasn't very good at it, it wasn't very much fun, I never used it and I've retained almost nothing. Other than satisfying graduation requirements on paper, I've gotten absolutely zero value out of it. Whereas with programming or mathematics, the memorization is minimal, the focus is on abstract ideas you use to represent problems and the way you put together the building blocks you know. You might memorize a string of symbols like this: x = (-b +- sqrt(b^2 / 4*a*c)) / (2*a) But if you happen to forget that string of symbols and need to know the quadratic formula, you can start from first principles "I have an equation of the form: a*x^2 + b*x + c = 0 and I need to get x by itself." With a little algebra (completing the square), you can re-derive the quadratic formula. Or if you only care about numerical solutions, you can use Newton's method or bisection. Or you can use your trusty TI-89 to derive the answer for you. The point is that, because everything is abstract ideas that fit together, forgetting things isn't usually a showstopper, because you can just use the problem-solving skills and tools you do remember to come up with a good-enough replacement. Likewise, with programming, once you know how to do "everything" (i.e. have mastered the bare minimum amount of syntax to write Turing-complete programs), if you forget about a standard library function or the implementation details of a particular algorithm, you can always write your own version with enough time, patience, and debugging.
- ColinWright 14y agoYour experience exactly matches my experience at school. However, I have since learned that I can acquire other languages, and I can communicate effectively in them, and it's nothing to do with pure memorisation. Yes, you need to memorise some things, but I've found that once I've got a few hundred words, the structures start building themselves in my brain. I don't bother memorising verb endings, they start to come of their own accord when I'm communicating with people. I read simple novels in my target language, spotting when the same words turn up multiple times and looking them up to make sure I've got the right definition. Things accrue, the structures emerge, and suddenly I'm a parody of a foreigner, but I can communicate. Your characterisation of math and programming needing effectively no memorisation is similarly counter to my experience. You need to know some things, they need to be as natural as breathing, otherwise when confronted by a huge structure to build, you have nowhere to start. Without knowing some of the standard results, sometimes even the statements of problems in math make no sense. Try working with code written by complete beginners as they've struggled, and failed, to implement something beyond their current skill set, and you will find that you know, and have memorised, much more than you think. Pair program with a beginner and you will be frustrated at how little they know, things you take for granted, things you have memorised. So my experience is that learning a foreign language is not entirely irrelevant to programming. For you to say it is, from your personal experience, makes me wonder if you have actually ever learned one. Can you tell us your experience base? How many (natural) languages can you communicate in?