Ask HN: What Niche Language to Learn?

14 points by Levokaboky ↗ HN
For fun or for jobs if some random opportunity opens up...

42 comments

[ 4.3 ms ] story [ 104 ms ] thread
You could learn Zig, or Rust, or Lisp. There are many :-)
Probabilistic programming languages.

Stan in particular has a very healthy job market behind it.

There's also Pyro, Infer.NET, Turing.jl and a few others.

I've never even heard of stan. Where are these jobs?
https://discourse.mc-stan.org/c/jobs/33

Plus lots of things on Linkedin.

Other probabilistic frameworks are also taking off in pharma jobs, e.g. probabilistic + neural + diff eq. Most on Julia and Python.

Stan is used a lot to model things on sports teams, especially baseball and basketball, but also football. I've seen some job ads for that too. It's a niche, but it's quite interesting and not too small.

don't forget tensorflow probability and pyro.

I think 'probabilistic programming' is potentially one of the next popular paradigms of programming (or perhaps data science), especially with stuff like copilot. In this space, Julia can potentially shine relative to the current incumbents, since the focus on whole language JIT + lispyness really mixes very naturally to the style of the staged programming that is necessary for more complex probabilistic models. It also has one of the nicest libs for it (Turing), which is stan-like, but allows for more advanced models: https://turing.ml/stable/

My Julia-fu is weak compared to my Python or R-fu (or even C++), but the ecosystem is pretty innovative, if still immature (I would love more gradual typing tools).

Sure, Pyro is very nice for some deep latent probabilistic models. E.g. deep HMMs. So great to model complex time series and space-state models. Edward and TensorFlow Probability are theoretically also good for this, but docs are a bit lacking.

Turing is very user friendly, but in my experience really hard to scale to large hierarchical (multilevel) continuous variable models, which is what Stan was designed for. It can do lots of other things, like e.g. Bayesian NNs (Turing + Flux). And it's good for learning.

I've prototyped lots of models on Turing, but I have had to eventually migrate them to Stan as I struggled a lot with efficiency once I tried to scale to a massive number of variables (think e.g. a proteomics experiment).

If I had one of those krell brain boosting machines I'd learn CUDA.
I'd learn at least 1 from every major paradigm (see https://madhadron.com/posts/seven_languages.html), but in particular I'd say Haskell and APL can be pretty mind bending.
very happy to see Self on there.

I would definitely try Prolog if you want to open your mind a little..its sad there aren't more general purpose declarative languages.

You can try learning Neoxam. It won't be fun and it won't get you a job. It will be very niche though.
Solidity or anything smart contract related
For fun: Nim or any modern Lisp.

For profit: COBOL.

can you effectively learn COBOL without having access to mainframes/the hardware it usually runs on? I know that there are COBOL envs that can run on all major operating systems for practice. But has anyone been able to learn it at home per say and then transitioned to working on production COBOL codebases?
I can't answer your last question, but I don't see why it wouldn't be possible. From what I've seen there are z/OS emulators that can be used for practice, so it wouldn't be far fetched to transition to real hardware from there.

A quick search for COBOL resources yielded https://github.com/openmainframeproject/cobol-programming-co... , so it seems possible to learn without access to the hardware.

How would you suggets developers born in mid 80s/90s to learn COBOL and find COBOL jobs?

As far as I know, practically there are no COBOL jobs around me anymore. Big established institutions like telco and bank usually use Java. On the other side, the younger kids usually prefer something like NodeJS or Go.

It's certainly not as straighforward as learning a more popular language and environment, but there are online resources if you look for them. A quick search yielded https://github.com/openmainframeproject/cobol-programming-co...

There appears to be an active community around it, and I'm sure getting help in an apprenticeship sort of way is possible. Again, we're talking about a niche language, so you can't expect the same level of accessibility as NodeJS or Go.

As for finding jobs, they're probably few and far between, but appear to be well paid from what I've heard. Places that need COBOL programmers will announce it, opportunities will likely come up from other contacts in the community, and cold contacting companies you know are using it is always an option.

Elixir and Julia
XPath 3.1

It is a w3c standard for e.g. JSON processing

Autohotkey or Power Automate Desktop
What languages, niche or otherwise, do you already know?

In the absence of context, I would suggest Forth or Prolog, as they are sufficiently different from any mainstream language.

Of course, Lisps and Schemes are always fun, and I think Racket sets itself apart from those with its language making capabilities. Logo is also very fun, but it is essentially a Lisp/Scheme. There are a lot of neat older books using Logo in various domains.

Pharo is also a fun choice.

SQL and pgsql.

The set-based paradigm is something that most developers seem blind to.

Postscript.

Its a wacky stack based language, loads of fun, hard to master and almost entirely useless as a general purpose tool.

Although if you don't know sql, just learn that.

I do not believe that PostScript is "almost entirely useless as a general purpose tool" (I do sometimes use it as a general purpose tool), although improvements could be made. Some of the features that Ghostscript has are good (such as the ARGUMENTS array, and the %pipe% device); I have some ideas how to improve it further too (alpha transparency, optional auto-allocation for many operators, ExternalDecode and ExternalEncode filters, Environment resource category, a few of the features from NeWS, etc).
Granted its been a while since I played with Postscript i.e. NeWS system on a Sun back in the day. Still, I wouldn't choose it over Make or bash for doing something. Does Ghostscript have file handling capability?
> Does Ghostscript have file handling capability?

Yes (you can use the standard PostScript file handling operators), although it is disabled by default. Use the -dNOSAFER option to enable the file handling capability.

For pure fun (pun intended), Haskell. Less pure, more practical fun, F# or OCaml.

Semi-practical fun, Clojure, Racket/Scheme, or other Lisp.

More academic fun, Pony or Clean. Less academic Rust.

Tired of Ruby/Rails or similar frameworks and would like something more distributed/concurrent? Elixir/Phoenix framework.

If you don't have a strong grasp of SQL and a specific database (e.g. PostgreSQL or MySQL), learn it deeply separate from your libraries/frameworks. Want to get off the beaten path? CockroachDB or other NewSQL datastore.

If you're not adverse to a little OOP, Pony is a very interesting language with a nice syntax and a particular niche in solving concurrency problems.
Im not sure its a language but ive enjoyed autohotkey for Macros and automating repetitive mousemovement :)