Live data from Hacker News

Ask HN: Learning multiple languages vs. mastering one

news.ycombinator.com

61–70 of 137 posts

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

#61
Do a real project - making a tool someone (possibly you) actually wants to use - in the language. That's the only way to genuinely learn/evaluate.

For Scala (and I guess also Kotlin and to a certain extent Python), you have the advantage of easy JVM interop, so you can use them in an existing Java project. That's how I learned Scala (which I'd recommend): start by writing just a couple of classes (a small helper application with a main() where I wanted to invoke some of my existing Java code), start by writing very Java-like code, and then gradually work your way up. Don't try to force the fancy techniques before you have the problems they solve and can understand what they're good for. It took probably 2 years before I wrote any code that used (generic) monads, another year before I used any monad transformers, another year before I wanted to use final tagless...

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

#62
If you are interested in big data/data engineering, I would recommend you to learn python and scala. These 2 languages have been used in everywhere for data engineer world. For instance, Kafka was written in scala/java. Spark was also developed in scala language.

For python, it will increase your productivity in a lot of things such as etl/some scripts and also be very helpful to access various libraries for dealing with data such as numpy/pandas.

In my opinion, the best way to learn these languages is to tackle some problems. You can just start by scraping some data, inject them into distributed messages/logs system like kafka/rabbitmq ,transform them by using some tools like spark,and process them and store into some places that you want such as hdfs/postgresql/cassandra/s3.

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

#63
Since you already have a job role in mind, I suggest that you take a look at at job applications in that area, for example on https://www.indeed.com/. Look through the job requirements in various listings and see which languages they require. They probably mention a lot of non-language requirements as well that you should be familiar with. Don't just focus on learning a bunch of languages. If you do, you will be overly strong in languages and weak in other areas.

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

#64
post #59

There's much more to programming/software engineering/software craftsmanship than just the language. Firstly, the majority of the languages used in the industry really only have superficial differences, they are all implementing the same OOP semantics, with minor differences and are mostly isomorphic to each other up to some syntactic sugar. To really gain some knowledge out of learning a new language you should idea…

>"The most commonly cited example now is Haskell, which is a fairly state-of-the-art language in terms of PLT research, and is a great illustration of the functional paradigm, due to its purity."

What is PLT? I didn't recognize this acronym and it was too general to Google. Thanks.

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

#65
post #59

There's much more to programming/software engineering/software craftsmanship than just the language. Firstly, the majority of the languages used in the industry really only have superficial differences, they are all implementing the same OOP semantics, with minor differences and are mostly isomorphic to each other up to some syntactic sugar. To really gain some knowledge out of learning a new language you should idea…

>"The most commonly cited example now is Haskell, which is a fairly state-of-the-art language in terms of PLT research, and is a great illustration of the functional paradigm, due to its purity." What is PLT? I didn't recognize this acronym and it was too general to Google. Thanks.

programming language theory

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

#67
post #39

Go "T-shaped". In other words, be a "jack of [some] trades, master of [a few]". Specifically, you almost have to choose modern JavaScript -- because you will need it on virtually any real project (it's everywhere), and you've already got the enterprise-y server-side covered. Don't get pigeonholed into backend-only, non-JS roles. Despite all the haters, es6+ is powerful and expressive. You'll want to suppress your OO…

> virtually any real project (it's everywhere) That's a bit of an overestimation to say the least. E.g., I work at a trading firm and we use all kinds of languages for all kinds of purposes on all kinds of weird platforms, but JS is not one of them (I don't think we use Java much either, because why would you, this day and age). 'Any real web project' would be more correct. Not everyone cares about web projects thoug…

"I don't think we use Java much either": may I know what your trading firm uses?

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

#68
post #43
post #10

I suggest Elm into Haskell. Elm will give you the ability to do frontend work while familiarizing yourself with functional programming concepts. Once you're OK with Elm, go to Haskell, which is a great language to get exposed to plenty of radically new programming concepts. Once you have done that, and considering you have experience in Java, you will have a much broader view of abstraction thinking.

I don't see how you can learn Elm without knowing the basics of Haskell.

Trust me, you can. Elm was my gateway drug to Haskell. It's a great starting point, and the guide on the official Elm website offers everything you need to get started. Initially, I found Haskell overwhelming, but after spending a few months with Elm, which is a more narrow surface area, I found it much easier to sprinkle in Haskell specific concepts (typeclasses, applicative functors, monoids, etc).

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

#69
post #25

You should learn C. Most current engineers don't, and therefore the fundamentals of things like memory allocation, data types, call stacks, etc. remain a mystery to them. I have one other comment to make. In my opinion, being a strong programmer is mostly a "knack," meaning it's not a particularly teachable skill. Some people are just amazingly good at it. If you are, great. If not, I suggest acknowledging that and f…

I'll throw out my $0.02, which is C is a terrible language to learn. Much of writing "good" C revolves around knowing all the pitfalls to check for, then dealing with the archaic error handling mechanisms. Tomes have been written on the subject of proper error handing in C.

> fundamentals of things like memory allocation, data types, call stacks, etc. remain a mystery to them.

I don't think C is especially good at teaching these.

Unless you roll your own malloc, the big difference in memory allocation in C vs. say, Java is that C requires the programmer free memory after allocation on the heap. This is more tedious than difficult.

Data types exist in other languages. You can unpack raw bytes of data using Java and simulate the behavior or unions.

You'll have to explain how call stacks are more exposed in C. Best I can think is calling conventions, but that's more the domain of compilers than language. Buffer overflow prevention, maybe (but again, I think that's more tedium to deal with).

C is great because it's a small language. But I don't think it's an especially educational language.

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

#70
Throwing in a vote for Clojure since you already know Java. It's a great bridge language into the world of FP, and it lets you leverage the JVM ecosystem, so you can take advantage of Java libraries/packages when needed. From there, you can bridge into Clojurescript for front-end, and reagent/reframe are great ways to learn how to build single page react-style apps (all the rage these days...).
Post reply on HN