Live data from Hacker News

Ask HN: Learning multiple languages vs. mastering one

news.ycombinator.com

91–100 of 137 posts

Re: Ask HN: Learning multiple languages vs. mastering one

#91

Programming Languages are just like Human Languages. Every culture builds a common form of expressing ideas based around their shared values, needs and outlook. Restricting yourself to one Human language limits your thinking and perspective. Each time I acquire a new Human Language, I find myself thinking differently and understanding people more deeply. Speaking French and German allows me to be a better communicato…

I have a very hard time believing you can learn a "new human language" without dedicating 2 years of evenings and weekends to it in an optimized manner or moving to the country for a year or two. I like how people casually mention "When I learn a new language." It's hard to stay proficient in a couple of languages, let alone "casually" learning new ones.

Same goes for programming. If you don't believe me, note how most, even educated immigrants, either don't fully pick up English or forget a lot of their mother tongue. And yes, Europeans do generally know three languages, because they learn them early and for a long time.

Re: Ask HN: Learning multiple languages vs. mastering one

#92
post #84

Earlier quoted context omitted.

Hey, someone found a golden hammer! Better throw out all those other tools, who needs 'em.

Programming is not carpentry. The best programming languages (IMO) are general-purpose, and the gains from being able to know a single language in depth and reuse the same tools and techniques across different domains outweigh those from using different languages in different domains.

I agree with Imm

Check out this boat car btw! (http://yachtpals.com/boat-car-9158)

It’s a boat. And it’s a car. It’s amazing.

People are so stupid that they’re still buying cars that can’t go in water. When will they learn?

Re: Ask HN: Learning multiple languages vs. mastering one

#93
You need to get out and help people. Learning a programming language without having anybody to help is like learning algebra without having any context of where/how to use it. It's perhaps a nice intellectual exercise, but you're missing out on the most important part.

Programming is mostly symbolic and mathematical. I love math and symbols. Fun stuff.

Making stuff for people is mostly, well, people.

Guess which one of these is more difficult?

You really learn a language when you're knee-deep in framework code, fuzzy requirements, conflict among stakeholders and the team -- and you've got to make something happen this week. Not when you're doing puzzles online.

Since you asked, in general if you feel like you've mastered an OOP language, I'd recommend going functional. F# worked for me because when I use F# correctly, the language/toolset helps teach me how to be more functional. Pure FP is always the goal, but you can do it in OCAML/F# and I don't think jumping right into something like Elixir or Haskell would have been as people-friendly. (Back to humans again)

In short, languages are great. Show me you learn a few. But that's 1%. 99% is people and problems. Show me you have lots of experience dealing with that while grokking out on the math and symbolic stuff and I couldn't care less which languages you know.

Re: Ask HN: Learning multiple languages vs. mastering one

#94
I'd recommend learning a few, here's my 2 cents:

- Start with Python, it's a very common dynamic language in the wild.

- From Python it's easy to learn Go and you'll want some Go experience if you want to work on distributed systems in today's culture.

- Javascript is another extremely useful one to know that you'll find everywhere, start with the book "Javascript the good parts".

Adding these in addition to your Java base would make you very well rounded, IMO.

In my 5-6 years of professional experience (startups and enterprise, full stack to infrastructure) I've never encountered Kotlin/Elixir/Haskell/Swift.

Re: Ask HN: Learning multiple languages vs. mastering one

#95
Everyone has an opinion about which language is better or worse. It didn't actually matter, they all suck in some way or another.

https://wiki.theory.org/index.php/YourLanguageSucks

You'll find something you like over the others. But it's all just syntax at the end of the day.

The real mastery is programming paradigms. Some languages lend themselves to particular methods and some just can't, or can't do some easily, but just knowing that is important too.

I believe there was a HN about this a while ago but I can't find it.

Re: Ask HN: Learning multiple languages vs. mastering one

#96
post #74

It's inevitable you will have multiple languages / platforms comprising your stack. Bash scripts for admin. Golang to write servers. Data science in Python. JS / D3 on the frontend. C# / Unity 3D modelling and scripting. Even low level C / Assembly if you need performance optimizations. I think mastery of cloud development and deployment is crucial going forward. Start experimenting locally right on your laptop with…

> It's inevitable you will have multiple languages / platforms comprising your stack. Bash scripts for admin. Golang to write servers. Data science in Python. JS / D3 on the frontend. C# / Unity 3D modelling and scripting. Even low level C / Assembly if you need performance optimizations. It's not at all inevitable. I would - indeed do - use Scala for all of the use cases you listed.

JS and bash here

Re: Ask HN: Learning multiple languages vs. mastering one

#97
I think the approach to learning that new language is not correct.

Master Java. What I mean is, learn how OO can be used to solve a problem. Learn why immutable classes were advertised as a best practice. Don't learn Java-isms. Learn why this language has certain features, and learn how to use those features. You'll be a master when you can take that knowledge and learn another modern OO language in a week, easy. For example, Python and Ruby should be easy to learn after that.

Learn a functional language afterwards - clojure, F#, Ocaml, Haskell. You'll feel naked w/o the OO backing. Master one of them.

After that, all the programming languages become roughly the same, all with their own -isms.

Distributed systems and data Engineering are not programming language specific - they are concepts that can be implemented in any language.

Re: Ask HN: Learning multiple languages vs. mastering one

#98
I think there's a crucial component missing from a lot of the good advice here: pick a couple of languages to learn deeply enough to get into the language specification. To really appreciate the interplay between code and execution, you need to dig into some of the differences between how languages are actually implemented and distributed. This will teach you surprising things about the language's execution semantics and what it means to avoid undefined behavior.

Even interpreted languages like Python and Java have tremendous depth in their runtimes and design, such as JITs, memory management, and more.

Set a goal to learn as much about at least a couple of languages as you can, and you'll be able debug and understand programs much better. It will also ease your learning of new languages, because many of their features will fit into things you know already.

Re: Ask HN: Learning multiple languages vs. mastering one

#100
post #74

Earlier quoted context omitted.

> It's inevitable you will have multiple languages / platforms comprising your stack. Bash scripts for admin. Golang to write servers. Data science in Python. JS / D3 on the frontend. C# / Unity 3D modelling and scripting. Even low level C / Assembly if you need performance optimizations. It's not at all inevitable. I would - indeed do - use Scala for all of the use cases you listed.

That is an interesting response. I wonder if it were equally possible with any language. Could a Python or Java programmer say the same? I think there are probably a handful of languages that you could use for "everything". The limiting constraint is the presence of a reliable javascript compiler, followed by data science libraries (I think).

I think most languages could get close - see e.g. https://www.teamten.com/lawrence/writings/java-for-everythin... . Of course if you want to actually execute code in the browser then you need to compile to javascript, but I'm not convinced that's required as often as people think it is (Wicket offers a very interesting AJAX model where you re-render UI fragments on the server in response to changes - all the code that runs is Java, but the behaviour ends up very similar to if you had client-side javascript making a server call to fetch data). "Data science" means many things to many people; you wouldn't want to write actual linear algebra in Java (or any language without operator overloading), but again the cases where you can't reuse a prebuilt model from your language of choice are rarer than one might think.

Scala was explicitly designed as a "scalable language" with both the strong safety guarantees that you need for large-scale development and the lightweight syntax that you need for throwaway scripts. But a lot of modern language design is converging on the same set of features (e.g. static typing for safety but type inference for convenience, pattern matching for the safety of the visitor pattern but the convenience of an if/else) and would have the same abilities. E.g. in a Reddit post about Rust a couple of days ago people were talking about writing web services in Rust, and part of the rationale there is that while Rust may not be the perfect web service language, it's good enough that if you already have Rust in your stack you might well write web services in Rust rather than bringing in a new language. I haven't seen anyone doing data science in Rust yet, but I see no fundamental reason why the language couldn't be adapted for it.

Post reply on HN