If you browse the code golf questions on StackExchange, you notice a ton of non-standard but real world (Eg not brain-f*ck) languages like F#, Scala, R, J and Clojure. Visiting their websites, some of the languages look interesting solving problems in whatever language your already using.

However there is coding in spare time, and coding for money. The closest thing we have to the truth on who uses a language is the TIOBE Index, which lists none of the above languages in the top 10-15. Which makes me wonder if I'll ever use them.

Should I even bother learning some of the small niche languages? It doesn't seem I would be making money, and some will probably fail anyway.

Many good questions generate some degree of opinion based on expert experience, but answers to this question will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise.
If this question can be reworded to fit the rules in the help center, please edit the question.

3

If all you care about is making money why are you asking this question?
–
ChaosPandionSep 12 '10 at 16:12

@Chaos: Thats the thing, I don't know if I would be making money.
–
TheLQSep 12 '10 at 16:14

4

F# is a first class language as of VS2010. I wouldn't say it is non-standard, and I think it will gain wide adoption soon.
–
Brian R. BondySep 12 '10 at 18:50

8

If all you want is just to make money, you'd better stay off from programming. How about becoming a popular actress?
–
Pavel ShvedSep 12 '10 at 19:41

2

@TheLQ: You want to be mainstream? You fear taking any step you do not know how much money it will bring before you do it? Then please, be also content with mainstream pay. This is all you ever will get with your mentality, if at all.
–
IngoNov 2 '11 at 10:15

8 Answers
8

I would learn any language that introduces me to concepts and paradigms I've never seen before. That's why I learned haskell and scheme - they introduced me to function programming and mostly-functional programming respectively. I wouldn't have cared less whether scheme and haskell were widely used, aside from how that would affect the available documentation and resources.

So basically, if a small niche language introduces you to new concepts and paradigms (especially those you can apply to other languages), then learn away!

Other reasons you may want to learn a 'small/niche' language:

The language allows you to solve a particular (type of) problem 'better' (faster, with a better solution, more portably, etc) than any other language

The language allows you to solve problems just as well as a popular language, but it has some cool features that you like (eg. clojure)

The Sapir-Whorf Hypothesis. It states, more or less, that what you can think of is limited by what you have the language to describe. The consequence of this is that multi-lingual people are able to think in ways that single language speakers may not be able to.

Many people (myself included) think this holds true to programming as well. Learning Lisp, for example, teaches you a whole new way of thinking about problems that you can apply to C# or Java or Python. The more language paradigms you've learnt, the more tools will be in your mental toolbox, regardless of what language you're actually using.

I'm amused that people continue to use the Sapir-Whorf hypothesis (largely, though not entirely discredited in Linguistics) as an analogy. I definitely agree with the sentiment with respect to programming, but I think that a different analogy had better be found if we want people to take us seriously.
–
Jonathan SterlingSep 20 '10 at 4:45

1

I don't believe the hypothesis, otherwise we'd have never moved beyond grunts. Similarly for programming, don't think people are limited by the language.
–
John SmithJun 10 '11 at 0:52

Well I'm using Clojure (one of the "niche languages" you mention) and found that it has been a very worthwhile experience.

It's made me much more productive (vs. Java and C# that I mainly used previously). As I run my own business, productivity equals money :-) so in that sense Clojure has already succeeded, at least from my perspective.

I've learnt new techniques that have made me a better developer (particularly around concurrency, functional programming, abstraction, metaprogramming etc.). Even if I went back to writing Java, I could still make good use of this knowledge

It's been genuinely enjoyable to learn a new language very different from anything I've done before. If you actually enjoy what you do, it's worthwhile in its own right.

Because it is a JVM language, it doesn't matter if the set of libraries is relatively small because you still get access to the entire set of libraries in the Java/JVM ecosystem. This is a big advantage for languages that run on the JVM (the same would apply to Scala)

I'd personally pay limited attention things like TIOBE - they don't really tell you much beyond what has been popular in the past. Useful perhaps if you want a job maintaining old systems, less so if you want to learn and broaden your horizons.

The reason to study a niche language is rarely the expectation that you'll use it directly (for money or otherwise). It's usually to learn some new aspect or style of programming. Doing so is likely to make you a better (and yes, probably more valuable) programmer, even if you never use that language to produce "production" code.

I'm currently learning Ruby by using it to solve Project Euler problems, just because I spend most of my day programming in C or PHP (and sometimes C#) and I want to broaden my horizons. So far it has really opened my eyes to what can be done. Even if I never use it for any "real" work, I believe the time spent learning about it will be worthwhile.

Agree with all of the points mentioned. Another motivation for learning a niche language is the possibility that the language will one day become very popular. In this situation, your early investment in the language could give you leads into work on influential frameworks, and elements of the language that could be in high demand in the future.

If the language does become popular, you will already be skilled in it, and therefore you will be in high demand.

As others have almost said, learning a niche language just because it's a niche language doesn't make much sense. Often, though, niche languages explore a concept further/more deeply than mainstream languages can afford to, or want to.

And sometimes niche languages have been around far, far longer than any of the mainstream languages - Smalltalk, Prolog and the Lisp languages leap to mind. They might not be popular, but they're not disappearing either.