21

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.

9
  • 4
    If all you care about is making money why are you asking this question? Sep 12, 2010 at 16:12
  • 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. Sep 12, 2010 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?
    – P Shved
    Sep 12, 2010 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.
    – Ingo
    Nov 2, 2011 at 10:15
  • 1
    Some niche languages could make you more productive, thus allowing you to earn more money, than mainstream languages.
    – Giorgio
    May 23, 2013 at 14:50

8 Answers 8

25

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.

3
  • 1
    Exactly. For example I find that in some situations, a purely functional language simply doesn't suffice. However I constantly find myself pulling in functional concepts in languages that support functional programming (eg. javascript, c++0x, etc).
    – Cam
    Sep 12, 2010 at 16:36
  • 4
    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. Sep 20, 2010 at 4:45
  • 2
    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 Smith
    Jun 10, 2011 at 0:52
24

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)

  • You want to help develop the language
7

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.

4

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.

4

Speaking as a professional developer in a niche language, it's possible to make a living. There are upsides and downsides, though.

Things that are harder:

  • Finding a job takes longer
  • Jobs are more likely to require you to move
  • You will get little respect from mainstream programmers (and hence, more resistance).

Things that are easier:

  • The small pool of programmers makes competing for jobs easier
  • You can know every programmer of significance in your field
  • Developing a reputation is easier than in the mainstream

Things that just are:

  • Pay tends to be more variable, since there are few standards
  • Much time is spent on educating others about strengths and weaknesses of your niche

Overall, if a career is your concern, you should never be a one-trick pony, mainstream or niche.

2

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.

1
  • +1 for project euler. I did the same while I was learning python
    – user81965
    May 23, 2013 at 16:33
1

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.

Low probability, potentially high rewards.

1
  • 2
    Personally I will always try to learn concepts rather than languages... limited brain space if you know what I mean. Sep 12, 2010 at 17:05
1

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.

Not the answer you're looking for? Browse other questions tagged or ask your own question.