Live data from Hacker News

Polyglot programming and the benefits of mastering several languages

stxnext.com

11–20 of 68 posts

Re: Polyglot programming and the benefits of mastering several languages

#11
post #6

> The younger generation is also familiar with the “memento Ruby” argument. “The decision to learn a new language is about career planning and risk diversification. Just look at Ruby,” Michał says. It's funny, while community interest in Ruby peaked around 2012, industry adoption and usage of Ruby at startups and in enterprise is higher right now than it ever was, so this whole "remember Ruby" trope is such a farce.

Ruby is in the post-hype phase.

Re: Polyglot programming and the benefits of mastering several languages

#12
As I master my 15th or so language, I can't help noticing how often I have to search online for the simplest of tasks whenever I switch languages now because it's all turned into a big jumble.

Does it need parentheses or not?

How are closure variables managed? Do I need to release things?

Do lambdas require scoping braces or not? What's the damn syntax for them again???

Do I need to use case(X), switch(X), when(X), something else?

Do cases fall through or not?

How do I concatenate strings in this language again?

How do I get lengths in this language again?

Is it -> or => or functions? Are functions even first class? Can they be anonymous?

How did this language handle async operations again?

Anyone watching me work would probably think I don't know a damn thing. And after 25 years in the industry, I sometimes wonder the same thing.

Re: Polyglot programming and the benefits of mastering several languages

#13
“Mastering” is a tricky term to use here.

It could imply simply gaining a level of competency/proficiency that means you basically can use the language to accomplish things without feeling owned by the language. I think this is the kind the author is getting at.

But mastering can also mean rising to a guru level of proficiency where you can do things with the language that the majority of your peers cannot.

I find this second difficult to achieve in a polyglot sense. I used to be able to do guru level things with Smalltalk. For the last 10 years I’ve done no Smalltalk and embraced the way of the polyglot, becoming moderately proficient in Python, Kotlin, Swift, Linux cli, Elixir, C, but in no ways do I have the bandwidth to chase “guru level” with any of these. That kind of mastery usually comes from focus and experience, something that’s difficult (impossible?) to achieve when your task switching cognitively. Even with Smalltalk, I would have to swim in the waters a while before I felt I was in a master position again.

This kind of mastery also makes you a better programmer. “To boldly take this language to solutions no one has tried before” will definitely hone skills.

At the end of the day, it really boils down to “keep pushing yourself to learn new and varied things” and you’ll grow. If you decide to cache in and just leverage your acquired wisdom, you’ll stagnate.

Re: Polyglot programming and the benefits of mastering several languages

#14
A few years ago I did a MOOC called 'programming languages' which teaches languages like racket and ML.

In one of the intro lectures, the professor remarked that (paraphraaing here) 'now I am not naive--I know you will probably end up programming in Java or python when you reach the professional world, but the purpose of this course is not that you will actually go out and use racket in your life as a business programmer, but instead that your knowledge of racket will change the way you program in Java or Python'.

So there's really two types of learning--learning a language to use it, and learning a language as a sort of intellectual feast to bring back to your own.

This also has paralells in (human) language. The only languages I've studied are French and Hebrew. French has 'que' which can combine two noun phrases in a way that doesn't quite exist in English, and Hebrew has construct state.

[1] https://www.coursera.org/learn/programming-languages Sorry if I make a mistake here, Im not really very knowledgeable about either language, but I hope the general point stands.

Re: Polyglot programming and the benefits of mastering several languages

#16

As I master my 15th or so language, I can't help noticing how often I have to search online for the simplest of tasks whenever I switch languages now because it's all turned into a big jumble. Does it need parentheses or not? How are closure variables managed? Do I need to release things? Do lambdas require scoping braces or not? What's the damn syntax for them again??? Do I need to use case(X), switch(X), when(X), s…

This is how I feel too. And not just with programming languages, but with cloud platforms like AWS and GCP. I've spent the last 3 years working just with GCP, but I have prior AWS experience and recently started working in an AWS heavy role. I don't remember anything. I know what I want to do, and what the things AWS provide do, but I can't remember how, so I'm asking questions and looking things up online because I don't know and I feel like an idiot.

Re: Polyglot programming and the benefits of mastering several languages

#17

“Mastering” is a tricky term to use here. It could imply simply gaining a level of competency/proficiency that means you basically can use the language to accomplish things without feeling owned by the language. I think this is the kind the author is getting at. But mastering can also mean rising to a guru level of proficiency where you can do things with the language that the majority of your peers cannot. I find th…

Yes, I feel like aiming for a T or Pi shape is a good analogy: Try to truly master the 1 or 2 languages you work with most of the time. Have a good enough knowledge of other languages in order to learn and grow or to use them for specific needs.

Edit: typo.

Re: Polyglot programming and the benefits of mastering several languages

#18

As I master my 15th or so language, I can't help noticing how often I have to search online for the simplest of tasks whenever I switch languages now because it's all turned into a big jumble. Does it need parentheses or not? How are closure variables managed? Do I need to release things? Do lambdas require scoping braces or not? What's the damn syntax for them again??? Do I need to use case(X), switch(X), when(X), s…

I agree with the spirit of your point, but I'd be hesitant to say you're "mastering" your 15th language if they are all jumbled together. It sounds like you've learned 15 languages, but mastery implies an extreme depth of understanding beyond the point of confusing minor details. I would bet you have at least one or two languages that you work in often that you never get this stuff confused for, and those are the ones you've mastered. The additional languages are subject to a sort of Jack-of-all-trades syndrome.

Re: Polyglot programming and the benefits of mastering several languages

#19
You can't actually be a Master of only 1 language.

This applies to human and computational languages. Consider that English derives from French, German, Latin, Greek, etc. Without knowledge of the root languages, you can't actually master English.

And beyond polyglot is "polyparadigm". Knowing 7 languages in the same paradigm makes you an expert in a particular style of programming. But True Mastery means transcending style.

With that said, most are better served by gaining proficiency communicating with (managing) people than mastering programming.

Re: Polyglot programming and the benefits of mastering several languages

#20
post #18

As I master my 15th or so language, I can't help noticing how often I have to search online for the simplest of tasks whenever I switch languages now because it's all turned into a big jumble. Does it need parentheses or not? How are closure variables managed? Do I need to release things? Do lambdas require scoping braces or not? What's the damn syntax for them again??? Do I need to use case(X), switch(X), when(X), s…

I agree with the spirit of your point, but I'd be hesitant to say you're "mastering" your 15th language if they are all jumbled together. It sounds like you've learned 15 languages, but mastery implies an extreme depth of understanding beyond the point of confusing minor details. I would bet you have at least one or two languages that you work in often that you never get this stuff confused for, and those are the one…

You'd think so, but that's not the case. I've mastered go so deeply that I even wrote [1] to subvert the runtime. But even with go I have to look things up after working in Kotlin for a week.

[1] https://github.com/kstenerud/go-subvert

Post reply on HN