Spacemacs (emacs + vim) is getting a lot of love lately. http://spacemacs.org/
Just my (not so) quick experience on this:
I live in a place where technology moves really slow. People here are just starting to get on the RoR bandwagon, which leaves me bewildered. Luckily, Iāve had a chance to travel to SF and spend some time with some very talented engineers in events, airbnb, ā¦ etc. One of them told me about FP, made me research it, and now Elixir is my main backend language. When I went back to my country, people havenāt even heard of Elixir! I did a talk, developed an Elixir backend for one of the startups, and gave away some stickers, lol.
Shortly after, I visited the startup scene in Tokyo. I tried to meet the most reputable and skilled engineers there, and found the biggest RoR shop (at CookPad) and also a gaming startup with a backend built with Clojure. Engineers from both companies have heard of Elixir, but I was the first developer they met in Tokyo who is actually building something with it.
So, itās probably the natural course of any language, to kind of spread steadily as more people talk about, organize events and suchā¦ Another takeaway was the market segment. Elixir is my personal choice, but Iāve met engineers moving to Go, thanks to Googleās marketing, Clojure, for it being around longer than Elixir, and now Swift 4 is promising us first-class concurrency, using actors and such ā¦
Finally, I would like to add that Elixirās best chance at hitting mainstream is targeting developers who are new to backend development. Personally, Iāve never done serious backend development before Elixir. Iāve used Flask, Google App Engine, a bit of Rails, and even C++ but I really hated it. Elixir clicked with me a lot better than the others. Since I didnāt have any āemotionalā attachments to other languages, adopting Elixir was a no-brainer.
Thank you @brightball. I have indeed looked into spacemacs - it was certainly popular in that favorite IDE thread. I include that under the āand variantsā in my post, and I still stand by my comments!
I highly agree with your comments about Go and its adoption, etc. I went with Elixir because of my previous comments elsewhere: I see Erlangās implementation of the actor model as a naturally distributed and concurrent architecture, whereas I see Goās implementation as a highly focused collection of concurrency patterns (but Iām not a Go expert). The barrier to entry with Erlang is what Iām talking about with the need for better tooling. IMO Elixir is already doing just about everything else with regards to dropping barriers and being attractive.
I also wanted to mention on the static vs dynamic aspect: I have recently come to appreciate guards as essentially more powerful āstaticā type contracts. If I expect a certain type in a function signature, I create a guard for it. On top of that, for free, I get even more robust contract declaration through the same guard mechanism. So whereas in .Net I would have to implement Code Contracts using a separate extension that combines static analysis and interweaved runtime injection (if using runtime contracts). So what Iām saying is, guards provide both ātypingā and the more advanced (pre-condition) ācontractsā as a natural, tried-and-true aspect of the language. I think also that with a bit of syntactic sugar, guards could even be implemented with a ātypeā syntax similar to:
def foo(bar) when is_atom(bar) do
becomingā¦
def foo(<atom> bar) do
or however you want to indicate a type. But, and I hate to sound like a broken record, there needs to be kick-butt tooling to give us solid intellisense, jump-to-def, and refactoring (at a minimum!).
You all really should look at atomās plugins. I have dialyzer linting, intellisense, etcā¦ Iām even thinking of converting from vim to atom at homeā¦ >.>
Not for speed reasons, but because typing catches a holy-hell-ton-of-bugs at compile-time instead of randomly ālaterā. Even if it is just a typing only for the specific language, even if it is optional, even if it compiles down to a dynamically types language, having types still means catching a holy-hell-ton-of-bugs at compile-time.
What plugins do you use? I use Atom exclusively for Elixir and I only have two installed: the official one and the one guy one guy called āatom-elixirā I think.
I have installed:
- atom-elixir
- atom-elixir-playground (Iām not sure if Iāve ever touched this one yet though)
- autocomplete-elixir (love it)
- build-elixir
- elixir-cmd
- language-elixir
- linter-elixir-credo (love it)
- phoenix-elixir-snippets
Iām not entirely sure all which commands and functionality I use from which, but I like my work-flow.
EDIT: I also use Elm, and the atom-plugins for elm well out-do that for other IDEās.
I want to reply to this (and obviously I am), but I donāt want to hijack this thread. Iāve started a new thread on elixir atom configuration if you wouldnāt mind continuing there.
Oliver Steele: The IDE Divide (2004-11-21)
Basically sufficient effort has been expended to convince the language-mavens - typically a lot more effort is needed to attract the tool-mavens.
And I will pay for a license the next day.
Same here