Enhance your brain's thinking ability: learn a new language/platform

by bugbear on 2013-09-18 17:25:41

Hello everyone!

This title is the same as a phrase from a book, and that’s no coincidence. I really like some of the excellent advice given in *The Pragmatic Programmer*. Here, I mainly want to share with you by answering a question that some friends have asked me: "Is it necessary to learn a new programming language? Why?"

This is a very complex topic, and here’s my suggestion, which is quite similar to the viewpoint presented in *The Pragmatic Programmer*. For most people or most of the time, I think that after mastering some languages (for example, Java EE and related frameworks), it's worth making an effort to learn a new language. The main idea behind this is "lifelong learning," but more specifically, it’s about improving your problem-solving skills.

Let’s make a simple analogy. Suppose you're very good at drawing, but you only use pencils. When you try to draw with a pen for the first time, you might accidentally smudge the paper because you're not used to using a pen. But when you pay more attention, not only will you learn how to draw with a pen, but you'll also discover how to create effects that are unique to pens. If you learn to draw with other different tools, you'll develop a different understanding of drawing.

In the programming world, if we look back, we see many programming languages rise and fall (such as assembly, Basic, Pascal, Cobol, Java, etc.), and many platforms/operating systems (DOS, BSD, UNIX, LINUX, Windows, iOS, Android, etc.). I’m not saying that these languages or operating systems are all dead; rather, I’m emphasizing that things change. So, you need to adapt to changes and develop the habit of accepting them. Keep an open mind toward new things, and you’ll always be prepared, no matter what the future brings. Be brave: master your current work, then look ahead and learn things that may not be directly related to your current projects. Tech blogs can help you find good news leads and relevant books.

Speaking of myself, I am currently learning Erlang and Elixir (to put it simply, these languages are very different from the ones I've used in the past). I mentioned these two languages in my article on WhatsApp, where I developed a custom XMPP system using Erlang for WhatsApp. You can get a quick introduction to Erlang through this link, and try out Elixir here. I think you might prefer Elixir's syntax over Erlang's. You can install Elixir according to this document. If you're using a Mac, you can install Elixir step-by-step as follows:

```bash

ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go)"

brew doctor

xcodebuild -license

brew tap homebrew/versions

brew install erlang-r16

brew uninstall erlang

brew link erlang-r16

brew update

brew install elixir

```

You can try out various languages with the following commands:

- Input "erl" for Erlang

- Input "irb" for Ruby

- Input "iex" for Elixir

I hope you enjoy this article. I would be very happy to read your comments, and I would also welcome any other opinions or suggestions you might have.

Bye!!!!!