4 ms·
The languages I'm using now are Ruby, Python, Elixir, JavaScript. Languages I was proficient into and I kind of let go are Java, C, Visual Basic, Perl. Maybe I
by pmontra 5y ago
The languages I'm using now are Ruby, Python, Elixir, JavaScript. Languages I was proficient into and I kind of let go are Java, C, Visual Basic, Perl. Maybe I should count some BASIC from the 80s too. Then there are a number of other languages I used for some time (PHP, even COBOL) but never become really an expert.
The pros:
I reuse some approaches that work well in some languages, unless they are definitely not idiomatic.
I keep my code idiomatic but simple because I don't have time to go into a language deep rabbit holes (eg: we usually don't need any metaprogramming.)
I can instantly smell bad design in some features because they remember me of the pitfalls of those parts of the languages I'm familiar with. Hint: moving the separator to the opposite end of Python's join / split is a bad idea, I never remember if "," splits or joins. Pick a direction and stick to it, a-la Ruby. After all, if ",".join(["a", "b"]) why not ",".split("a,b") ? Of course as I'm not a language designer this doesn't give me any advantage. Actually, I lose time thinking about it.
I can pick contracts for more projects because there are more chances that my potential customer has invested in one of the languages I know.
The cons:
I long for structural pattern matching a-la Elixir in every languages, not the glorified switch/case or the destructuring assignment that many languages are adding now.
I spend time to look for basic things like how to convert a string to lowercase because every language does it differently and I can't remember it. Is it necessary to be smart with those little things? Apparently yes so they go with downcase(), lower(), toLowerCase(), tolower(), lc() in random historical order. At least some languages copied other (Elixir from Ruby, JavaScript from Java.)