5 ms·
It is widely recommended that learning a new language will improve your skills with languages you already know, and I've never heard anyone contradict this. Bu
by dbecker 14y ago
It is widely recommended that learning a new language will improve your skills with languages you already know, and I've never heard anyone contradict this.
But I've never noticed this in my experience. Moreover, whenever I come back to a language after any time away from it, I'm amazed how much time I spend remembering (or looking up) superficial differences.
Stuff like looking up whether I get the length of a vector with "len" or "length" (for a language I already knew) just feels like a distraction.
- cschneid 14y agoOne thing I'd suggest is to learn a vastly different language. If you use ruby all day, learning python probably won't give you the type of insight that learning C would. Or learning a lisp. So much is looking at things in a different way, and a quick way to do that is by picking something across the metaphorical language town, rather than the language next door.
- viscanti 14y agoExactly. Although I've found it helpful to learn similar languages too (i.e. more than one scripting language). Seeing how subtle differences in the languages play out (beyond the superficial len/length type differences) has helped me understand some of the more subtle concepts of computer science. That said, you probably get the most bang-for-the-buck by picking up a language with a fundamentally different programming paradigm or at a lower or higher level than what you already know.
- brandonsavage 14y agoLanguages exist to solve certain classes of problems. PHP, for example, is primarily designed as a web language. Learning ANY language designed for other uses will teach the developer something new. Once you have learned something like Python or Ruby, learning C would probably be the next logical step.
- gavingmiller 14y agoLookups for syntax and the like is very annoying. However, learning new languages is all about the principles you pick up. I'm a better iOS developer today, because I learned how awesome blocks can be from Ruby. Same goes for meta-programming. Languages usually have features that span everything you do in that language. Getting comfortable with blocks in a language that uses them as a primary/native data type shows me how useful they can be in a language that uses them more cumbersomely. That's how I've benefitted from learning multiple languages. As well as the fact that I will avoid Java/.NET because they and I don't agree! :D
- freework 14y agoI think the benefit of learning a new language is only felt when you are at the expert level on that language. For instance, I'm an expert at python. If I were to learn Ruby at a novice level, I would get nothing out of it. I need to learn Ruby to the expert level to get the full benefit of knowing another language.
- dbecker 14y agoThat makes a lot of sense... though people that telling you to "learn language y to become better at language x" never tell us they mean "become an expert in y." And suggesting a 1000 hour investment is a lot different than suggesting a 100 hour investment.
- cbs 14y agoAre you venturing outside of the realm of C/Java descendants? The nature of how those languages model execution, their basic paradigms, data structures and design patterns all fall within a fairly narrow scope. Stepping outside those trappings lets you see them with a bit more clarity because you're forced to stretch your brain to accommodate something altogether new and get fresh perspective on the problems the languages are solving and how they solve them. You won't necessarily gain any perspective if you're writing the same exact kind of code in languages X and Y, and you can gain perspective by writing an entirely different kind of code in a language you're used to. It just tends to follow that when you learn a new language, you'll learn to do things in the style of that language.
- dbecker 14y agoI spend most my time doing Python (for scientific programming). Knew Java, C++, Matlab and Perl before I learned Python. A couple years ago, I learned R... I still use that a few times a week. Don't think it's improved my python programming. More recently learned Clojure and Javascript. I think those count as meaningfully different from Python. I program differently in those languages, but I'm skeptical they've made me a better python progammer.
- GeZe 14y agoTry learning Haskell. The concepts I discovered while learning it were very influential in my approach to other languages, even if I don't use Haskell itself all the time. I would suggest http://learnyouahaskell.com/ http://learnyouahaskell.com/
- cbs 14y agoI'm skeptical they've made me a better python progammer. Maybe it hasn't, the whole idea is basically acquiring tacit knowledge and understanding through osmosis. That's why its hard to quantify how it should work.