Programmer Migration Patterns
apenwarr.ca
apenwarr.ca
From what I understand (which, admittedly, isn't that much) those bindings, along with projects like Jupyter, really can't be understated. They really are incredibly high-quality projects.
That being said, I'm honestly surprised to see so little mention of Rails in this article. I would have honestly expected at least an arc from Java and PHP to Ruby, simply because of how its adoption skyrocketed around 2009.
Despite the intentions of Go's creators, Go continues to be seen more as a naive alternative to Javascript than a high-level replacement for C++ (at least in the sense of users migrating). I've observed far more Javascript developers excited about Go than I have native C++ developers - who tend to gravitate more towards Rust for it's similar feature set [generics, no need for garbage collector, etc], and it's focus on low-level safety and performance.
I've seen a LOT more go from Python to Go, and a few go from Java to Go.
Do you have any examples or places that have written about a switch from JS to Go? I'd be super interested in reading their experiences!
The language has it's own built-in process manager capable of running thousands of concurrent processes with a small footprint.
Things like function arity and pattern matching are core concepts and core parts of how the language works. I've found that when comparing 2 simple web applications, one Python 3 and one elixir, that the Elixir codebase ends up being a bit larger because of the required boilerplate. However, as an application becomes larger, the disparity swings the other way and the Elixir codebase will remain smaller over time.
In addition, writing Elixir code just feels clean. Nothing really feels hacky, even if it is.
The only real problems we had little to do without Go itself and more to do with others willingness to try it or learn it. The projects it was used in were quite successful and by comparison have been very stable.
I don't know how big is the NodeJS community is today but I have a hunch it isn't that big anymore. Definitely smaller than the already-declined Rails. This is just anecdote though.
Also they both use this_casing_style for most identifiers and ThisOne for types.
It's a shame that there's nothing about Clojure(script), because it does fix many problems mentioned: Javascript is ugly, yada-yada
Those productive hours were very, very satisfying, but the biggest thing I took away from the experience was that it underscored my ADD. If I didn't have ADD, I think I would be spending a lot more of my time in Clojure/Lisp.
Other than that, this is an interesting idea. Obviously it is going to be pretty inaccurate because it is just one guy's opinion. I wonder if you could construct a similar graph based on actual measurements of people's Github commits or Stackoverflow questions.
While you are technically correct, I think the distinction between server-side and client-side matters here.
Many people started with javascript out of necessity, but then began using it in many areas outside of scripting for web pages. And server-side JS is very different than client-side JS in many ways.
Take something like Ruby for another example. I wouldn't find it out of place to see something like this with "Ruby [without rails]" and "Ruby On Rails" listed as 2 different things.
I suppose the amount of people starting with C now is massively lower than even 10 years ago, let alone 20 or 30 - so that's where the graph falls flat for me and a lot of people my age who grew up "with the internet" and migrated upwards in this graph (and downwards the stack).
Then again I never migrated, I guess. There are 27 languages on this graph and I've been paid to write 13 of them, read 1 (rewriting from this to something else), used 2 more professionally on a lower scale and dabbled with 3 or 4 on my own.
Also, about 10 years ago or so, I believe there was a rather big exodus from Java to Ruby.
If I had to describe my own journey, it's Basic -> Modula2 -> Prolog -> C -> C++ -> Java -> Javascript -> Ruby -> Groovy -> Node.js -> Typescript.
(I was also surprised, when doing a job interview in C# recently, to see how behind-the-times the version Unity supported for so long is -- mostly surprised by the nicer string interpolation that is now possible.)
[0]: https://mindsea.com/app-stats/ (see point 4)
[1]: https://techcrunch.com/2018/09/05/unity-ceo-says-half-of-all...
C# -> TypeScript -> node.js
I'm really trying but I can't see how/why you would go from C# to JavaScript?Once you've been exposed to a bit of that it would be natural to get curious about other parts of the JS ecosystem i.e. node.
Another example would be UWP, which has pretty robust JavaScript support, meaning someone could switch from C#/XAML over to a JS app that more closely matches the web front ends of their site.
And really Angular is a pretty simple leap for anyone familiar with ASP.NET MVC.
Then throw in that many C# devs already had to know some JS for doing web applications in .Net, and you have both the motivation and the stepping stones in place to make it an easy transition.
I would be interested about the position of Julia in a hypothetical future version of that article. On a first glance, one would expect migrations from MATLAB, R and Python 3, but maybe it will be mostly C++ programmers wanting some more interactivity?
Python is an ideal example of a scripting language that got so popular in so many areas that it is hard to say who uses it for what. Pupils use it for getting familiar with programming. Many standard linux distribution tools are written in Python. There is so much beyond web development and scientific applications.
Elm -> Haskell
F# -> Haskell
Scala <-> HaskellThat said, I started getting into Elixir while doing C# and Javascript development, but I suspect that's a pretty uncommon path.
Java-> Go, Java > Python, PHP > rust and so on