Analyzing GitHub, how developers change programming languages over time
blog.sourced.tech
blog.sourced.tech
I guess if you can split out Node, React Native, and whatever other thing people are doing with Javascript that is pure Javascript, that would be a little bit more fair.
Don't forget Electron desktop apps, also pure js - the framework itself has 100-200k monthly downloads.
However, I do disagree about not including JS.
According to the stack overflow survey this year, JavaScript is at the top of the list of programming languages
https://insights.stackoverflow.com/survey/2017#technology-pr...
When WebAssembly stabilizes, it would be interesting to redo this analysis and see if JS will remain king.
Therefore, if you included it, the data wouldn't lead to meaningful conclusions. I feel like this was pretty obvious from the article and that the explanation was enough. For example, substituting node for js seemed to work well enough.
I think there is a lot more vertical movement and the horizontal stuff might be a sideshow without considering overlap or experience with C or JavaScript as significant in how one transitions between purely competing languages.
But JavaScript's real problem for the analysis might be that its competition is largely excluded since the walled garden apps rarely have related code on GitHub, even if their language is present.
The only good thing about it is that the language is easier to write a compiler for, as it is basically a portable macro assembler, specially the K&R C variant.
1. The fact that fewer people are choosing C for other projects doesn't mean they can't or won't learn it for kernels.
2. Nobody has yet to produce a language that is clearly superior to C for systems programming. Otherwise, we would be seeing movement towards that language instead of Java and Python.
The other thing to remember is that these are GitHub projects; the vast majority of them are not going to be kernels but application software or libraries. That would explain the moves from C to Java and Python; it's easier to write applications in those languages.
I would argue Rust already has.
https://github.com/helena-project/tock
https://github.com/redox-os/tfs
https://github.com/intermezzOS/kernel
The biggest application example:
https://github.com/servo/servo
And some self promotion:
https://github.com/bluejekyll/trust-dns
----
I encourage all programmers to check it out. You may discover like me, that Rust is a compiler and language which guards against all the hard learned lessons I've had over my career. It's an amazing language to program in.
This isn't scientific: http://benchmarksgame.alioth.debian.org/u64q/rust.html
tomsmeding's comment?
Your statement "Rust has been shown to…"?
The website you point to?
(What is "This isn't scientific" even supposed to mean?)
So how do we justify this JavaScript as forced labor argument?
The programmer can decide to do webapps that run atop C and get assistance from a backend that ultimately runs on C. The programmer can use backend frameworks that deliver incantations in JavaScript much like their downcalls to C.
If the migration were toward metal we would be hearing that C has to be excluded. Really how the Buffalo herd is moving does matter in a discussion of what ditches they are stuck in in the middle Savannah.
Please explain how to make a slippymap[1] in C.
For srs, I'm making a hobby project at the moment that needs a dynamic, interactable map on a webpage, and as a long time noscript user it galls me a little to use JS. The only compromise I can come up with is re-hosting the JS libraries I use and ensuring they don't have their own dependencies so that users only need to enable my domain for the site to work.
If you can tell me how to do the same thing in C, I'll swap to it immediately.
The same way Doom has been compiled and run in the browser.
https://github.com/kripken/emscripten/wiki/Porting-Examples-...
I guess that meets the criteria of "programming for the web but not making github commits in javascript", but it doesn't really solve my problem. Oh well.
There are still systems that lack full C++98 compliant compilers, for example (mostly embedded stuff).
Also byte flow makes little sense for programming languages. lower level languages are going to be more verbose than high level languages. They'll be used for different things. Some will have tonnes of boilerplate that travels with the project (e.g java). Forked projects? etc.
Further, to me it seems that this ought to be a more descriptive thing of how something happened in the past and not subject to probability unless the claim is a prediction about next years conversions between languages or that conversions are stationary over time.
I.e a set of metrics that proxy transitions and an order list of from and to, would be just the ticket IMO.
Hard to tell how much private repos would sway the results. Maybe a large number of COBOL programmers are stuck behind their organization's private repos and all we see are the languages they play with on the side for fun?
>We have to add an artificial source and sink on both sides of our bipartite graph to ensure flow conservation
Wasn't there a hack with the slack/surplus variable in the LP constraints to deal with this or was it a dummy variable? Pretty sure that was able to handle the case where supply was not equal to the demand.
Also, how were cases where the user stopped using GitHub altogether or a new user started programming are handled?
Yes, it's the only dataset you have. You still sound dumb when you inflate the importance of the population you have data for to make the anlaysis sound more useful.
Anyway the first paragraph also says: Thus, it has become engaging to deepen this idea and see how the popularity of languages changes among GitHub users.
I don't get the sense anyone is trying to inflate the importance of anything.
Source: Consistently steep slope over time of Indeed job interest in Elixir plus the fact that ElixirConf doubles in size every year
https://www.indeed.com/jobtrends/q-elixir.html
For comparison, Go, stagnant: https://www.indeed.com/jobtrends/q-Go.html
Java, slight increase: https://www.indeed.com/jobtrends/q-Java.html
Scala is the closest competitor I've found (and it's still not close): https://www.indeed.com/jobtrends/q-Scala.html
F#, stagnant: https://www.indeed.com/jobtrends/q-F%23.html
Haskell, stagnant: https://www.indeed.com/jobtrends/q-Haskell.html
Clojure, stagnant: https://www.indeed.com/jobtrends/q-Clojure.html
Erlang, stagnant: https://www.indeed.com/jobtrends/q-Erlang.html
Rust, almost stagnant, extremely gentle slope: https://www.indeed.com/jobtrends/q-Rust.html
Elm is also rising fairly fast, but not as much as Elixir (almost, though): https://www.indeed.com/jobtrends/q-Elm.html
So, my point, WITH data: One of these things is not like the other
Here's the kicker: https://www.indeed.com/jobtrends/q-Clojure-q-Haskell-q-Elixi...
Elixir is about to pass Clojure AND Haskell AND Rust in developer interest, and shows no signs of abating
https://www.indeed.com/jobtrends/q-elixir-q-java-q-go-q-who....
...or maybe we're reading a bit more into the data than what is really there?
And your go jobs to 'go' along with the data: