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...
Ask HN: Learning multiple languages vs. mastering one
61–70 of 137 posts
Re: Ask HN: Learning multiple languages vs. mastering one
#62For 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
#63Re: Ask HN: Learning multiple languages vs. mastering one
#64There'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…
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
#65There'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
#66Re: Ask HN: Learning multiple languages vs. mastering one
#67Go "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…
Re: Ask HN: Learning multiple languages vs. mastering one
#68I 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.
Re: Ask HN: Learning multiple languages vs. mastering one
#69You 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…
> 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.