Learning new Programming Languages

As a developer I like learning languages. I get into flow states often when I am learning the language and trying to implement something using it. Typically I try to solve Advent of Code problems using the new language. I have tried to learn Go, Elixir and Rust some time ago.

Go was ok for the most part, the garbage collector is not so nice, but still it does a pretty good job overall, is fast to compile and performant compared to Python. I did not get a chance to push this learning beyond the initial few weeks. Boy are there a lot of package dependencies for tools written in Go.

I did not pursue the Elixir learning path aggressively. The dynamically typed nature of it combined with the Erlang runtime, and the fact that the docker images are quite large were some petty reasons for me to say ‘sour grapes’ and put a hold on the learning process.

Learning Rust felt a bit more engaging, but boy it has a lot to learn. The core language was ok-ish, but I couldn’t event start tokio.

I typically go through the docs, suggested books, try to solve AoC problems when I have a decent understanding of the data types, loops, conditionals, and functions/procedures. I continue reading the docs and books as more advanced data structures and async programming is introduced. I know that trying to learn this way is not optimal as it just cramming through language concepts without actively building something. I have heard many people on youtube suggesting to build something you want. I have a hard time coming up with ideas of projects to build, that is the reason I choose Advent of Code problems I guess. Maybe it is my nature to be a task-taker, just working on tasks that others give and not come up with own ideas. I have not yet explored this part psychologically, and don’t event know if the ’not coming up with new ideas’ is objectively true? I also have heard the advice to build http client/server in the new lang, did not try that till now.

Odin init

In the last few days I started learning Odin, using the same approach. There is something enticing about the language, maybe the fact that gingerBill does not want an official package manager? Having worked with the likes of pip, npm and the go package manager, I am glad it is not explicitly supported. It makes me build self contained software. It is an open question if all software could be like that? Not supporting language servers is harder to understand though, ols is pretty good, but it is not created by the same official source? But does it have to be? A single developer creating so much of the language is nice enough, it is up to the community to build the tools around it.