Skip to content

Instantly share code, notes, and snippets.

@tmcw
Created March 14, 2017 19:42
Show Gist options
  • Save tmcw/c9e7b0d8e3d4b4d9841c428781496917 to your computer and use it in GitHub Desktop.
Save tmcw/c9e7b0d8e3d4b4d9841c428781496917 to your computer and use it in GitHub Desktop.
Language families gist post

I've been implementing more and more of my free-time hacks in Elm. Elm is, in many ways, a much better language that JavaScript. Experienced Elm hackers claim major productivity improvements and with a grain of salt, I believe them. Elm's documentation is great, its tooling is excellent, and there are plenty of examples.

It takes me about 10 times longer to implement anything in Elm than in JavaScript.

Sometimes I think that would be a good, honest tagline for any sufficiently new language: "want to work 10x slower for several months?".

Learning families is the biggest jump

There are lots of languages that, despite not having invested years perfecting, I could pick up relatively quickly and with the trustworthy help of web search and Stackoverflow, can be only 2-3 times less productive in than my native language, JavaScript. Almost all of those languages - Python, Ruby, Java, C++, Swift - are roughly in the imperative family, and many of them are scripting languages.

The amount of adjustment is relatively minimal - I do remember that JavaScript's function keyword is like Python and Ruby's def, is like Swift's func. They're all different places in the same territory.

Elm's different - it's in another land, closer to Haskell but thankfully featuring a less academic community and more precise usecase.

The more you invest in a skill, the harder it can be to switch

I've spent a lot of time with JavaScript - diving deep, implementing the same things over and over. The better I get at JavaScript, the more relatively worse I am at any other language. It's one of those ways that balance can disintegrate - it's so enjoyable to do things you're good at and so scary to branch out and fail for a while.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment