First of all, I would really like to point that some of the languages we are talking about (Perl, Lua) are
very widely used. Perl basically runs the Internet and Lua is extremely popular in the gaming industry. According to the
the latest TIOBE ranking, Perl is the 9th most popular language, ahead of Ruby, JavaScript, VB.net, Matlab and Assembly. Lua is 21st, ahead of PL/SQL, Erlang, Scala and F#.
They might sound exotic in terms of web development (which, I concede, covers the vast majority of job offers in Lebanon), but if you ever step away from this world, you will find them more common than you would expect.
Why you should learn it anyway
esr wroteLISP is worth learning for a different reason — the profound enlightenment experience you will have when you finally get it. That experience will make you a better programmer for the rest of your days, even if you never actually use LISP itself a lot.
This is a famous quote in the hacker world. And it's true.
We're curious about these languages because every time we pick up a new one, we find ourselves getting better at our day-job programming. I have no single doubt that learning Scheme made me a better Python programmer. It helped me understand generators, properties, classes, meta-programming, etc. Studying several different OOP systems helped me understand OOP better. Lua helps me understand prototypical inheritance, the way JavaScript never could.
You can see where I am going with this. Curiosity is more than looking for a new way to solve immediate problems. To me, looking at how people from other fields solve problems is incredibly interesting.
Also, you might use it
Let me repeat what others have said above. There is no silver bullet. Some tools are better than others at particular tasks, even if they are not very popular. 10 years ago,
Python was considered exotic. If programmers weren't curious to look at what might've seemed like a toy language, we would still be writing websites in C.
Programmers are always afraid of how volatile our knowledge is, that whatever we learn today is quickly
outdated. This is a real problem; you have got to face the fact that history shows there's a high probability you won't be working in .NET all your life. In that aspect:
- Learning a new language is a skill that you should train. If you are used to picking up a new technology, you won't be afraid that your technology might become obsolete.
- Core concepts slowly change. The libraries you're using are going to change often, this is true. However the basics are not that quick to change. Most of the recent updates in C++, Python and C# (and the general programming trend we're going through), are about rediscovering something academics have known for over 50 years. Learn them once, you can be sure you'll encounter them many times in your career.