I thought this was about programming languages before I saw it was from BBC, making me ask - what is the best way to learn a new programming language?
I'm guessing the answer is making small things, but what exactly? I've made so many to do list apps I don't know what to do with them
dabinat•36m ago
Create something you actually need, or port something you already created in another language.
I needed a tool to get the contents of a remote zip file without downloading the whole file. I wanted to learn Go, so I created the tool with Go, then I ported it to Rust when I wanted to learn Rust.
tmtvl•32m ago
Make things that require you to use the parts of the language you don't have a strong grasp on yet, so as to get to know those better. Sorting algos, data structures, a kanren, and a library website would be a good variety pack. And aside from that, reading codebases is also important. Read the code of your CPAN equivalent, your Alexandria equivalent, your Spring equivalent, and your SDL equivalent.
xandrius•31m ago
As any language, the core is "why" do you want to learn it. Is it to add it to a list and that's it? Then you might struggle by creating todo lists or play pretend on Duolingo.
On the other hand, if you do have a goal in mind try to do tiny bits of that.
My goal for natural languages is always connecting with another culture at a deeper level than just using English. If that's the case, you get someone to talk/write to and slowly do it. It won't be instantaneous or dopamine fueled but after a few years you might realise that you've been chatting with someone completely in their language without major hiccups.
For programming languages, I understand that filling a CV is tantalising and useful, so you've got to come up with projects and things you'd actually like to be doing with such a language.
You could say you want to pick up COBOL for a future job, well figure out what would make sense to use it for and go with that.
And if you really cannot think of anything, then you can fall back to make something up: make a game with such a language (even better if it is not meant for games), automate something, recreate a small tool which you find frustrating. And even if after you have read this and still cannot find a thing which gets you, maybe learning this language is not within your current interests and you might start considering to move on.
ivanjermakov•20m ago
Writing one from scratch gives a lot of understanding to how it works under the hood and in the process you learn right phraseology and treat all languages as computational fronteds.
embedding-shape•5m ago
> I'm guessing the answer is making small things, but what exactly? I've made so many to do list apps I don't know what to do with them
My favorite way has always been to not just build small things, but build small useful things. There is always something that could be better, and there is always a subset of languages best for the task at hand. If it's a CLI, then a language that can compile to binary tends to be best (for me at least), so that already limits the languages somewhat. Then depending on what the task is, it might make sense to learn a new language for it.
Then naturally over the years I've picked up 10-15 languages this way, by just following what each language seems best at, and not being afraid of spending 2-3 weeks writing something basic.
Then for each language you learn, next one gets a lot easier, especially when most mainstream languages today are Algol-like languages and more similar to each other than different.
shminge•58m ago
I'm guessing the answer is making small things, but what exactly? I've made so many to do list apps I don't know what to do with them
dabinat•36m ago
I needed a tool to get the contents of a remote zip file without downloading the whole file. I wanted to learn Go, so I created the tool with Go, then I ported it to Rust when I wanted to learn Rust.
tmtvl•32m ago
xandrius•31m ago
On the other hand, if you do have a goal in mind try to do tiny bits of that.
My goal for natural languages is always connecting with another culture at a deeper level than just using English. If that's the case, you get someone to talk/write to and slowly do it. It won't be instantaneous or dopamine fueled but after a few years you might realise that you've been chatting with someone completely in their language without major hiccups.
For programming languages, I understand that filling a CV is tantalising and useful, so you've got to come up with projects and things you'd actually like to be doing with such a language.
You could say you want to pick up COBOL for a future job, well figure out what would make sense to use it for and go with that.
And if you really cannot think of anything, then you can fall back to make something up: make a game with such a language (even better if it is not meant for games), automate something, recreate a small tool which you find frustrating. And even if after you have read this and still cannot find a thing which gets you, maybe learning this language is not within your current interests and you might start considering to move on.
ivanjermakov•20m ago
embedding-shape•5m ago
My favorite way has always been to not just build small things, but build small useful things. There is always something that could be better, and there is always a subset of languages best for the task at hand. If it's a CLI, then a language that can compile to binary tends to be best (for me at least), so that already limits the languages somewhat. Then depending on what the task is, it might make sense to learn a new language for it.
Then naturally over the years I've picked up 10-15 languages this way, by just following what each language seems best at, and not being afraid of spending 2-3 weeks writing something basic.
Then for each language you learn, next one gets a lot easier, especially when most mainstream languages today are Algol-like languages and more similar to each other than different.