15 ms·
Programming Language Rankings: January 2019
- sk0g 8y agoWith how much I hear about Rust on here, a little surprising to see it behind the likes of Haskell and and Perl! Kotlin is doing really well for its age especially, I'm guessing mostly used by Android devs (so far).
- benatkin 8y agoI'm not writing rust yet, but I'm using a couple of tools written in rust, and based on my experience with it, when I need a utility I seek out one that's written in rust. I'm using https://github.com/BurntSushi/ripgrep https://github.com/BurntSushi/ripgrep which is rg, like ack or ag (TheSilverSearcher). I've been using it for a few months, and I like it just a little bit more than ag, because I find its help and interface a bit easier to use. Like ag, it's incredibly fast. Just this week I started using https://github.com/watchexec/watchexec https://github.com/watchexec/watchexec to run rsync to sync from my mac to my vagrant box, because I was switching from using neovim on vagrant to using Visual Studio Code. It works great and has a very nice command-line UI. Another tool that's written in go that I thought maybe was written in rust that's handy is https://github.com/shenwei356/rush https://github.com/shenwei356/rush which runs multiple commands in parallel, like xargs. I'm using it to transfer images between folders on s3 using aws-cli. Based on this, and Servo, which is unstoppable with its Doge logo, I think Rust is going to be a very widely used language. https://github.com/servo https://github.com/servo Edit: I remember part of why I liked rg more than ag - I got to use cargo rather than go, which is a much more intuitive and less opinionated way of downloading libraries than using the go cli. go is coming around though: https://blog.golang.org/modules2019 https://blog.golang.org/modules2019
- sk0g 8y agoHow much of it is because there's a reason (of sorts), to do a complete re-think, when you're porting tools over? C and C++ have been stable for years, and so has all the little UNIX tooling that was built using them. People are excited by Rust, and take it upon themselves to re-build these tools, as they have well defined requirements and characteristics. The reason these tools might be better is because thought has gone in to modernising and enhancing existing features. That might not be so feasible/ easily doable if you were juggling a decades old codebase to start off with. I'm not sure what my point is, entirely... But ripgrep is good! I have replaced awk and grep with it, because it just feels more... user friendly? EDIT: remembered my point. Are you switching to Rust tools because they are written in rust/ benefit from Rust in some unique way, or because it's a common platform people are re-implementing and re-imagining classic UNIX tools in?
- benatkin 8y agoIt’s because I want something that’s been re-imagined, yes.
- feanaro 8y ago> Are you switching to Rust tools because they are written in rust/ benefit from Rust in some unique way, or because it's a common platform people are re-implementing and re-imagining classic UNIX tools in? I think it's a little bit of both for me. The Rust tools tend to have a nicer UX (pretty-printing, colouring by default, with smart detection whether output is to a terminal, subcommand-oriented CLI a la git, etc). This is probably a consequence of nice library defaults but also a matter of culture. They also tend to be very fast. Again, Rust is inherently inducive to writing fast tools, but you also have to do things the right way.
- chmln 8y agoShameless plug - you may also wanna try https://github.com/chmln/sd https://github.com/chmln/sd :)
- benatkin 8y agoI already found it and used it a couple times but forgot about it! It’s pretty neat. Gonna try using it for little things now that I’m using vscode instead of vim.
- hardwaresofton 8y agoI was pretty disappointed in the lack of progress, but a few things come to mind: 1. IMO Rust has the closest thing in "imperative" languages to haskell's type system in a recently released "mainstream" language. 2. Rust brings an entirely new value (memory safety), and accordingly an entirely new hurdle called the borrow checker. This feature is so advanced that languages like Haskell are catching up (it's not a competition really) by introducing things like Linear Types[0]. That's really impressive. 3. Rust is targeting system programmers -- they move the slowest (as they should) in the ecosystem and are the most risk averse (as they should be). 4. Compare Rust to relatively recent systems-level languages (I won't name any), it's doing great. 5. Staying at the same place in the rankings is actually moving forward -- it may not seem like it, but it's hard to stay both effective, liked, and relevant in the world of programming languages (see: Dart). I don't think rust is the kind of language to just shoot up the rankings -- it contains both higher level techniques that aren't quite mainstream yet and is targeted at a smaller community (though they're kind of going after web people with the wasm stuff). I think rust is the kind of language that shows up to be consistently near the top of the rankings in 10 years (and I've said it numerous times but I think Go will displace Java and Rust will displace C/C++ where possible). Yes, I will concede to a slight bias in favor of rust :). [0]: https://gitlab.haskell.org/ghc/ghc/wikis/linear-types https://gitlab.haskell.org/ghc/ghc/wikis/linear-types
- sk0g 8y agoNow I'm curious! What are other systems-level languages? I know Go was touted as one at the start, but that's definitely not where it's established a niche! Julia? Nim? That's about all that comes to mind. I wish I could read the Haskell documentation, but the code examples are straight up black magic to me. I really need to dig into some proper functional programming at some point!
- pjmlp 8y agoD, Free Pascal/Delphi, .NET Native, Ada, ATS, Zig, Jai, Oberon, C++20
- hardwaresofton 8y ago
- bsder 8y ago> With how much I hear about Rust on here, a little surprising to see it behind the likes of Haskell and and Perl! Perl? Please, Perl was SO huge that I'm surprised it's as low as it is (which makes me suspect the methodology, actually ...). In addition, if I remember from the TIOBE index there is the "Top Ten" and "everything else" where 10-20 is basically 1%+some noise and 20-50 is like .3%+noise. > Kotlin is doing really well for its age especially, I'm guessing mostly used by Android devs (so far). I wish the Android ecosystem would finally pick something and just stick with it. Having tooling, samples, and documentation that don't go out of date every 6 months outweighs any mythical "advantage" that switching language, build system, etc. actually gains.
- sk0g 8y ago> Having tooling, samples, and documentation that don't go out of date every 6 months This is exactly why I didn't stick with Android for too long. Everything's too... in flux, but in a weird way. "YAY, Google released this feature I've been dying for! Can't wait to use it in 4 years, when enough phones actually support it :)". It's either that or have API level dependent code. Maybe Dart will fix some of these pains, by abandoning all they have built up? It is Google, so I'd say it's unlikely, but still. Hell, I was trying to build an analog clock widget as a tribute to a certain sports team, and Google had deprecated the AnalogClock class. Its successor was, well, nothing. So a few community efforts took its place, and the fragmentation only got worse. Thanks, but no thanks!
- bsder 8y agoDart? All the cool kids use Kotlin, now, dontchaknow. The only good part about Kotlin getting entrenched is that JetBrains is MASSIVELY invested in not letting Google switch to something else--so we may finally get some stability for a change.
- pjmlp 8y agoThat depends pretty much on internal politics from other OS groups.
- 8y ago
- hugh4life 8y agoI think Rust will get a bump in popularity when Rocket no longer requires nightly releases. https://github.com/SergioBenitez/Rocket/issues/19 https://github.com/SergioBenitez/Rocket/issues/19
- pjmlp 8y agoLanguages only win long term when they get either a platform or a killer framework of some kind. For Kotlin that is Android. I am more interested to see what will happen to it if Google has one of their usual project reboots with Android. Rust still fails short in several domains, but now with Google and Microsoft's additional love we might see some improvements there.
- iainmerrick 8y agoHere’s a random question on Kotlin, hopefully not too controversial... I now use Kotlin on Android, and it’s mostly a tidied-up Java that’s slightly better in every way. The one big difference is checked exceptions -- Kotlin doesn’t have them. My question is, do Kotlin users prefer unchecked exceptions, or do you find yourself avoiding exceptions entirely now? Or even dropping back to Java when you need exceptions and you want compile-time checks? I find myself mostly trying to avoid exceptions entirely in Kotlin -- maybe not such a bad thing!
- aembleton 8y agoIf I want an exception, then I don't want it checked otherwise I have to handle it at every layer in which case I may as return a nullable object and handle that. I generally find that I avoid exceptions, but where they are necessary I try and catch at the right level to handle them.
- guiye 8y agoUse some lib like vavr (ex javaslang) for catching exceptions into a Try object, a simple functional solution
- iainmerrick 8y agoSure, but without checked exceptions, the compiler won’t tell you whether you’re catching/wrapping the right exceptions in the right places.
- V-2 8y agoI don't think checked exceptions have many defenders left... even among their original proponents. And no language (at least no significant one) really copied Java in this regard, as far as I'm aware. I can't speak for Kotlin users en masse, but personally I don't miss checked exceptions one bit, same as I didn't miss them in C#. And I've never encountered the practice of "dropping back to Java" for checked exceptions of all the reasons. A compelling way of emulating the presumed benefits - without the bad parts - in Kotlin would be to go sort of functional and use a Try return type from Arrow-Kt: https://arrow-kt.io/docs/arrow/core/try/ https://arrow-kt.io/docs/arrow/core/try/
- deleted 8y ago[deleted]
- defertoreptar 8y agoI have to question how valuable it is to include stack overflow in equation. It implies that all languages suffer the same rate of problems for which people need to seek out help.
- ne9xt 8y agoagreed. interesting data point, but maybe not worthy of an entire axis.
- axaxs 8y agoIMO, it's extremely reckless for this type of ranking. Most people who only seek 'coding' as a means to an end end up in JS, which would lead to an explosion in that section from folks still learning. Most ASM and to a lesser extent C programmers see it as a last resort...at least I do.
- hnra 8y agoThe graph shows SO vs GH rank, and if I'm reading it correctly it seems like C is slightly more popular on SO relative to GH while JS falls pretty much on the line. Wouldn't that imply that C programmers resort to SO more often than they publish code on GH compared to JS?
- axaxs 8y agoSure, I was a bit surprised by that. But, there are things to consider. JS is by nature(well, until Node) open source and has a generally younger base, both which would pad its GitHub numbers. C has two big areas I think - Linux/open source software, and embedded work. A lot of open source projects in Linux land are for whatever reason not in Github. Heck I still see sourceforge a lot. Embedded work is likely done for a company and of course wouldn't be in Github.
- raz32dust 8y agoWhile not 100% reliable, more questions in stackoverflow does indicate higher probability of the language being more popular, if you think in Bayesian network terms. And they call out all such caveats very clearly. Any "ranking" of programming languages is going to be flawed in some way or the other. Using only the github data might skew it towards more recreational languages and hide the enterprise languages, for example.
- kchoudhu 8y agoCSS is a language, but somehow SQL doesn't make the cut.
- bgorman 8y agoGood catch. Really makes you question the validity of their methodology. Although I suppose you could argue there isn't a single dialect of SQL in the top 20.
- austincheney 8y agoAre people producing SQL as an independent language in a separate repository or even a separate file? Since this ranking is largely based upon Github there would have to be SQL language files to make the cut.
- ilovecaching 8y agoI’ve never seen a community put so much effort into building an ecosystem as Rust. They have working groups for everything, they’ve slowly won over some extremely high profile programmers, and they’re taking on the areas of computing that are the hardest to solve as a manually memory managed systems language. Hats off the team, and I’m excited for all the game changers that are still in the pipe like the faster debug compiler. After a lot of languages that are just rehashes of what we’ve already seen, or just a different subset of features, Rust is a languages that actually feels like it’s from the future that's finally going to start moving us forward after a lot of stagnation in industry while PL theory has continued to move forward. If you haven’t given Rust a shot yet now is the time. You can get rust up into the top ten. :}
- pjmlp 8y agoFor us the GUI story, support for COM/UMP and binary libs still need to improve.
- RandNOx 8y agoI wonder how this would look like taking into account language-specific user forums. I do not know about other languages but the Rust users forum is very active. The popularity on StackOverflow is probably dragged down by this, although I do not know to which degree.
- blub 8y agoMe neither, but that effort's not visible in their rankings, because it's not even in the top 20, nevermind top 10. At the end the day it's platforms that move languages, not posting on HN and reddit. They quite brutally damned Rust with faint praise in the article: "It’s also worth noting that even if Rust never gets much beyond where it is today, it’s still ranking higher than well known languages such as the aforementioned Clojure and Groovy, as well as CoffeeScript, Dart or Visual Basic. Not bad for a systems language." Ranking higher than VB...
- barking 8y agoVB6 is still going strong. As answers to most vb6 questions are available on the web since forever, people rarely ask vb questions on stackoverflow. If you look at vbforums.com you can still have 500+ people at any time viewing the "vb6 and earlier" forum. And that's just one of many vb forums.
- alexanderdmitri 8y agoSo for "Popularity Rank on Stack Overflow" axis, I would replace the word popularity with attention. In addition to general engagement and use, a language getting more traffic/tagging there may indicate less quality documentation, more niche use (and less answers/tutorials from other sources as a result) or maybe tend to draw in (for many potential reasons) less experienced developers who are looking for active guidance or maybe the language generally has weird or non-intuitive patterns more likely to generate _wtf?_ type feelings that route you directly to stack overflow and onward to conspiracy sites from there. The "Popularity Rank on GitHub" is probably more accurately measuring popularity in the popular sense of the word. That's especially true because the GitHub archive used for the data only offers info on public repositories and even then I'm curious to know how it reports for multi-lingual repos (does LOC win out, do repos get associated with multiple languages?). Personally 90% of my commits over the past year have been to private repos for work. My public commits are in languages I look forward to using and learning outside my 9 to 5 because they interest and they offer a nice change up (ie PureScript and Rust lately). I'm super stoked to see FORTRAN is riding solidly at 60% for both metrics, regardless of what those metrics truly measure. ~40 public commits in the last 24 hours! Check it out: https://github.com/search?o=desc&p=4&q=fortran&s=updated&type=Repositories https://github.com/search?o=desc&p=4&q=fortran&s=updated&typ... Off Topic PostThought: Seeing JavaScript at that top corner and the amazing surge over the past couple years of Rust has got me thinking that when it comes to the art of programming languages, Brendan Eich is a (if not the) seminal artist of this time period. Learning JavaScript is when what Dostoevsky, Kierkegaard, Sartre and Camus were all trying to communicate really hit home for me. Meanwhile a recent foray into Rust is reminding me of the first time I read books like Tolstoy's Anna Karenina, Borge's Labyrinths and Steinbeck's East of Eden. To me it's pretty amazing that the same person has played pivotal roles in two languages that are both a joy to write and reason with and for completely different reasons.
- sorokod 8y agoIs there an animation of RM ranking graphs over time?
- sogrady 8y agoThere is not, though we have historical rankings for the top 20 available here: https://redmonk.com/rstephens/2019/03/20/redmonk-top-20-languages-over-time-january-2019/ https://redmonk.com/rstephens/2019/03/20/redmonk-top-20-lang...
- keyle 8y agoI'm surprised the Swift is not higher on the Stackoverflow side, seeing how utterly confusing this thing is with Swift version 1/2/3/4... I'm learning Swift at the moment and I'm running out of eyebrows, due to the sheer quantity of unforced facepalms I give myself.
- saagarjha 8y agoWhy, what's wrong with it? You should be writing Swift 4.2 unless you have a specific reason to deal with earlier versions of Swift…
- melling 8y agoSwift is a pretty nice language. I’ve got about 30 iOS examples on Github: https://github.com/melling/ios_topics https://github.com/melling/ios_topics
- iainmerrick 8y agoThe official docs are good but not comprehensive, and hard to navigate. Once you start googling around you get a random mix of third-party docs for various versions. It’s not at all obvious what’s outdated and what isn’t. As an example, I had to write a little code to connect some Swift and Obj-C code the other day. (I don’t use either one regularly.) It was very hard to find good up-to-date docs on how Swift/Obj-C bridging works.
- jsnk 8y agoI predict that we will see Dart in top 20 by next year, given that Flutter will become a bigger deal over time.
- pjmlp 8y agoFlutter is the next GWT. Even Fucshia is now adding support for other UI frameworks via Scenic.
- bsaul 8y agoi’m really interested about flutter so your comment comes to me as a surprise ( since i think you didn’t mean it as a compliment). Do you have any criticism about flutter you’d like to share ?
- pjmlp 8y agoEasy, Flutter is the last hope to make Dart relevant outside Googleplex, being dragged into Google's internal politics of Fuchsia, Android, ChromeOS. Less mature than every cross-platform mobile UI framework that are around since iOS and Android have won the mobile market. At the same time Fuchsia how has a UI composition engine, where Flutter is just one option among many (Scenic) and they are toying with a Rust based one (Fuchsia-ui). Being burned by Dart 1.0, I will only take it seriously when it officially gets adopted by the Android team.
- lorriman 8y agoWhat do you mean by "burned by Dart 1.0"? Dart was rejected by the community it was aimed at, Javascripts devs (and for pretty dumb reasons, I don't have much respect for either Javascript or its devs). Google understandably took the opportunity to reboot it. None of this is the same as dropping it, which for sure would merit "being burned". It's now a modernised and slick version of Javascript (minus the functional, which no one uses anyway) with a full Android and IOS framework and extensive and properly documented libraries. And it's opensource. At this point it's not possible for it to be 'dropped'.
- submeta 8y agoFor what it’s worth: According to google trends [1] the number of queries for (and the interest for) Python has surpassed JavaScript and is on a par with Java. And looking at the Alexa rank of the websites for Python [2] and Java [3]: Python‘s website has much more traffic. [1] https://trends.google.com/trends/explore?date=today%205-y&q=%2Fm%2F02p97,%2Fm%2F05z1_,%2Fm%2F07sbkfb https://trends.google.com/trends/explore?date=today%205-y&q=... [2] https://www.alexa.com/siteinfo/python.org https://www.alexa.com/siteinfo/python.org [3] https://www.alexa.com/siteinfo/java.com https://www.alexa.com/siteinfo/java.com
- onion2k 8y agoGoogle queries is a terrible metric though. If a language has good documentation and great support in popular IDEs you would expect more people to use it and the number of searches to drop.
- deleted 8y ago[deleted]
- sverhagen 8y ago>For what it's worth Right. I think it's a bit of a stretch to call java.com "the website for Java". I end up on python.org (or at least docs.python.org) often enough. I never go to java.com. If I end up anywhere on the "official" Java websites, it'd rather be docs.oracle.com/javase/...some-doc...
- submeta 8y agoGood point re java.com
- kriro 8y agoI roughly interpret the graph as anything being below the line leaning towards the "getting things done" camp and anything above leaning towards "academics". This is a bit distorted because FLOSS projects are favored (there's lots of "getting stuff done" code that is not on Github) and some languages have great communities outside Stackoverflow (Rust). Prolog seems like a good example. It is used in AI classes and "different enough" to leave students with lots of questions for assignments (imo). At the same time it's not used in many industry projects and if it is companies tend to use proprietary Prologs (like Sicstus) and the code is unlikely to be on Github. I suppose one could also argue that good setup/tooling and documentation helps to push a language below the line. I'd say Elixir is a good example of this. So by and large I'd lean towards languages below the line when trying something new. Am I wrong? Alas the next language I want to play around with (F#) is above the line. But the domain modeling with F# talk/website is very intriguing.
- jonsen 8y ago“I can’t find COBOL” I said to my wife. She replied “Well COBOL programmers don’t have any problems. No need to ask on SO where that comma should be placed. And they are so happy in their job they have no need to promote themselves on Github.”
- mem0r1 8y agoSomehow I just fail to unterstand how a technology like 'Java' can still be popular in 2019. At least to me it seems that there are much better alternatives for almost any use case I can think of.
- w0utert 8y agoThere's just an enormous supply of Java developers and consultants around, which makes it an easy business decision when deciding the technology to base your projects on. I would not be surprised if a very significant majority of Java code being written today is boring business logic and dime-a-dozen web services. For new OSS or hobby/pet projects I can also not come up with a single reason to use Java, except "I don't know anything else and don't want to invest time learning"
- ohaideredevs 8y agoI hate Java. It wasn't the first language I learned, but it wasn't the 2nd or 3rd either, so I don't think it's just inexperience. It feels like everything takes 3 times as long in C# as Javascript (though I understand AND appreciate why). It feels like Java takes 10x the time, and I DONT understand why. Everything seems overly convoluted. Even recent features like streams.
- cpt1138 8y agoJava is just a C based language for all intents and purposes. The ecosystem is why Java is popular. For a very long time Sun maintained a stronghold on the way things were done and all the libraries and frameworks followed suit. What this means in practice is that most of the libraries follow strongly opinionated conventions. Any time you are trying to solve a problem in a domain you are unfamiliar with, you have two problems. One is understanding the problem, two is understanding the framework's bizarre way of solving it. Java mitigates this in that most of the libraries and frameworks seem "familiar" and do things in a similar way. I do see a lot of programmers that seem to eschew the ecosystems available to them and prefer to write all the code themselves. In that case, maybe Java is not compelling.
- edpichler 8y agoI love Kotlin. I use every day for backend development, and I got surprised to see a birthday cake on Kotlin official Twitter account celebrating the just 3 years of the language. Kotlin v1.0 was released on February 15, 2016.
- guiye 8y agoI love kotlin too, I forgot about Java to something simpler... With graalvm will compete with other runtime platforms in terms of speed and sizing
- deleted 8y ago[deleted]
- mark_l_watson 8y agoI love the 2D graph. Zooming in is a much better way to see language popularity for github vs. stack overflow. I was pleasantly surprised at the popularity of Haskell.
- randompi 8y agoCSS's not a programming language
- waynecochran 8y agoIt can be considered a declarative programming language and is Turing Complete. You can even write games in it: https://minocernota.com/articles/pure_css_game/ https://minocernota.com/articles/pure_css_game/
- jaequery 8y agoThey should really try to separate JavaScript into client side js and backend node.js. I’m curious to see just how much of it is due to client side, as it probably skewed the ranking due to the fact all websites use JavaScript. I want to just see how node competes with other backend languages like php ruby and python
- patagonia 8y agoCan someone please rank languages by economic value added? Sample job openings and salary info from glass door and job search websites, then add some data points from LinkedIn. Finally try to guesstimate the value add as a percentage of companies market caps?
- DantesKite 8y ago“Ordinarily technology changes fast. But programming languages are different: programming languages are not just technology, but what programmers think in. They're half technology and half religion.” — Paul Graham