Slashdot Mirror


RedMonk Identifies 2017's Most Popular Languages: JavaScript, Java, And Python (redmonk.com)

Twice a year the tech analysts at RedMonk attempt to gauge adoption trends for programing languages based on data from both GitHub and Stack Overflow. Here's their top 10 list for 2017: JavaScript, Java, Python, and PHP, followed by a two-way tie between C# and C++, a two-way tie between Ruby and CSS, and then C at #9, and Objective-C at #10. But their GitHub data now counts the number of pull requests rather than the number of repositories. An anonymous reader quotes their report: Swift was a major beneficiary of the new GitHub process, jumping eight spots from 24 to 16 on our GitHub rankings. While the language appears to be entering something of a trough of disillusionment from a market perception standpoint, with major hype giving way to skepticism in many quarters, its statistical performance according to the observable metrics we track remains strong. Swift has reached a Top 15 ranking faster than any other language we have tracked since we've been performing these rankings. Its strong performance from a GitHub perspective suggests that the wider, multi-platform approach taken by the language is paying benefits...

Of all of the top tier languages, none jumped more than TypeScript on our GitHub rankings, as the JavaScript superset moved up 17 points.... PowerShell moved from 36 within the GitHub rankings to 19 to match TypeScript's 17 point jump, and that was enough to nudge it into the Top 20 overall from its prior ranking of 25... One of the biggest overall gainers of any of the measured languages, Rust leaped from 47 on our board to 26 â" one spot behind Visual Basic.

Swift and Scala and Shell all just missed out on the top 10, clustering in a three-way tie at the #11 spot.

23 of 125 comments (clear)

  1. Counts sharing, not use. Javascript always shared by raymorris · · Score: 4, Informative

    Reading this, perhaps we should keep in mind it is based on pull requests on public Github repositories; that's counting how much these languages are *shared*, not how much they are *used*.

    Since the full source code most Javascript is generally distributed to the public anyway, it's not the language of choice for proprietary applications. You may as well put it on Github, since you're already putting the source code on your web site. Proprietary software is most commonly written for Windows, and therefore written in C#. Github pull requests will over represent Javascript, and under represent C# in terms of actual usage.

    Github also very much over represents new projects that were started in only the last few years, after Github became popular. You won't find Linux or Apache on Github, for example, or most other software that has been around a long time. A lot of software had their development processes in place before Github even existed. Along the same lines, Github is used more by people who choose to newer, "trendier" options versus time-tested methods.

    This survey will therefore under represent older languages and over represent newer, trendier languages.

    Measuring Github pull requests might be a better measure of which languages are popular in recent open source packages, vs overall usage.

  2. Re:I thought it was Rust. by thebullshitpatrol · · Score: 2

    It's a very cool and enjoyable language but it's obviously not being used in a ton of major projects right now. Who would have thought that the biggest commercial languages would actually be the most used languages in general?

    Rust is being used in production though. Check out Rust's site. There's a page listing off a good amount of serious projects. SmartThings is even using it, I don't know in what capacity though. Doubtful that it's in an embedded capacity. Probably backend shit.

  3. Re:Counts sharing, not use. Javascript always shar by hajile · · Score: 2

    Most serious JS is definitely NOT open to the public. Common libraries certainly are (and the JS community is very aggressive about pushing the programming envelope), but most significant projects are closed source. You could argue that you can see the source anyway, but between babel transformations and minification, the output is obfuscated (to say differently would be similar to arguing that C projects are open because you can disassemble them).

  4. And the most Popular Hamburgers Worldwide by hcs_$reboot · · Score: 4, Interesting

    The most popular hamburgers worldwide are Mac Donald's. Does that make them better?

    --
    Slashdot, fix the reply notifications... You won't get away with it...
    1. Re: And the most Popular Hamburgers Worldwide by zaphirplane · · Score: 2

      Yes it does, because better is an overall rating, taste is a singular attribute so is cost, ease, speed, consistency

  5. Re: I thought it was Rust. by aquabat · · Score: 2

    A good programmer can program Fortran in any language.

    --
    A republic cannot succeed till it contains a certain body of men imbued with the principles of justice and honour.
  6. Re:CSS is a language? by mwvdlee · · Score: 2

    If CSS counts as a programming language, then I'm pretty sure Markdown is the most popular programming language on Github.

    --
    Slashdot social media options: AIM, ICQ, Yahoo, Jabber and Mobile Text. Why no MySpace?
  7. Because they weren't written in just ten days by raymorris · · Score: 4, Insightful

    > why are they better?

    *Why*, the *reason* they are better, is that the creators had more than 10 days to design, plan, implement, integrate, and test them. Several years, in most cases.

    Netscape very much wanted a client-side programming language built into the browser for their big 2.0 release. The original plan (Scheme) didn't work out, so with just ten days left before the public beta release, Brendan Eich designed and implemented, and integrated Javascript.

    It was a pretty amazing accomplishment - I rather doubt I could do that in ten days. Also, there are many areas where the ten-day schedule is apparent, such as inconsistencies in the naming and format of Javascript functions. In ten days there was no time to have a full complement of types, in fact Javascript can't handle integers. That's a problem because, for example it means 9999999999999999 is equal to 10000000000000000. Floating point comes with all kinds of errors. You're actually not supposed to ever compare to floating point numbers for equality, you're supposed to check whether the difference between them is small. Since JavaScript only HAS floating point numbers, it can't tell whether or not two numbers are equal, in the general case.

    JavaScript generally ignores errors and carries on. If you're driving somewhere and you realize you're going the wrong direction, you'd stop and turn around, right? Not JavaScript. When JavaScript notices it's doing something wrong, it continues full speed ahead, intentionally continuing to screw more and more things up.

    Type coercion in Javascript is nuts. In Javascript, 1 + 2 = 12, sometimes.

    One of the four useable types Javascript does have is Number. But 1 is not a Number.

    Number has properties MIN_VALUE and MAX_VALUE.
    Keep in mind, though, -1 is less than Number.MIN_VALUE, and MAX_VALUE is less than MIN_VALUE.

    Again, I couldn't write a better language in 10 days. Give me 60 days, though, and I might have built something better than Javascript.

    1. Re:Because they weren't written in just ten days by BlackPignouf · · Score: 3, Informative

      To be fair, in most other languages, 99999999999999999999 == 7766279631452241919

      Which other language, exactly?

      Let's see :
      Not in Ruby.
      Not in Python.
      Not in Java (compiler would complain, needs to be BigInteger).
      Not in C# (same) ...

      Sorry, JS is all alone on the shittyness podium.

    2. Re:Because they weren't written in just ten days by Pseudonym · · Score: 2

      In ten days there was no time to have a full complement of types, in fact Javascript can't handle integers. That's a problem because, for example it means 9999999999999999 is equal to 10000000000000000. Floating point comes with all kinds of errors. You're actually not supposed to ever compare to floating point numbers for equality, you're supposed to check whether the difference between them is small. Since JavaScript only HAS floating point numbers, it can't tell whether or not two numbers are equal, in the general case.

      Oh, dear.

      First off, the main alternative in the scripting world is the union of monotypes model, where a number could be a float, integer, or string depending on context, and the language will silently cast between them as needed. The unpredictability of this model is, in my experience, the cause of far more errors than floating point misuse. JavaScript numbers often aren't what you want, but the vast majority of the time you know exactly where you stand with them.

      Secondly, you can and sometimes should compare floating point numbers for equality, and in JavaScript use it's typically the right thing to do. This is the 21st century, and the screwed-up numerics of x87's 80 bit registers are far behind us. A 32-bit integer fits losslessly in a 64-bit floating point number. If you do ring operations (e.g. the vast majority of what happens in CSS layout computations) and don't overflow, they will behave exactly as an integer would. If they don't, send your compiler or FPU back because something is broken.

      There are many bad design decisions in JavaScript, but this one was smart.

      Keep in mind, though, -1 is less than Number.MIN_VALUE, and MAX_VALUE is less than MIN_VALUE.

      As you probably know, this behaviour was inherited from C, where DBL_MIN is famously greater than zero. Most languages since (with the notable exception of C++; see min() vs lowest() in std::numeric_limits) have corrected this mistake but it's arguable whether or not JavaScript should have attempted to do so.

      --
      sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
  8. Re:java by j-b0y · · Score: 4, Insightful

    Java has a robust and widely used and robust frameworks for applications so in many cases the developer can focus on the business code; several mature development environments which hook into the reflection capabilities of the language to make coding quite pleasant; a rich set of tools useful for program qa and developer support; a massive developer pool. As a language it's OK, but language wars are so 90s.

    For a business that needs to get stuff done that's pretty important. For projects with lifetimes potentially in decades Java is an easy choice. A good programmer is a good programmer in any language; Java can make mediocre programmers productive. That might sound deeply unsexy to the slashdot crowd, but I think that's the reality of an awful lot of SW development, which is internal or contracted development for businesses.

    --
    Please remain calm, there is no reason to pani... wait, where are you all going?
  9. Re:Counts sharing, not use. Javascript always shar by Gravis+Zero · · Score: 3, Insightful

    You won't find Linux or Apache on Github, for example...

    Linux kernel
    Apache HTTPD Server

    I'm not saying you're wrong, but your examples are wrong.

    --
    Anons need not reply. Questions end with a question mark.
  10. This is getting old by Anonymous Coward · · Score: 3

    Every couple of days some random guy who measured programming language popularity by pissing against the wind while spelling the name of the language backwards pretends to have figured out how he future of software development will look like. And every damn time this garbage is getting posted on /.

  11. That's how these things always go by Sycraft-fu · · Score: 4, Insightful

    Whenever there's a "language popularity" thing online they always do their research by looking at what people are doing online. Either what they are talking about, what they are sharing, etc. Somehow none of them ever consider how horribly skewed this is.

    The simplest counterexample to something like this is embedded software. It is unarguable that there's a lot of development of that going on. Everything today gets controlled with a micro-controller or small CPU. Actual custom designed ASICs/circuits are reserved for only a few applications, most things get a more general purpose device and do it in code. Your car, your cable modem, your microwave, your TV, etc all of them run code.

    Well guess what? That embedded code isn't done in Javascript or Ruby or any of these other trendy languages. Often as not it is done in C/C++ (and sometimes partially or all assembly). It just isn't the sort of things that gets posted about online. First the code is almost always proprietary, so the project itself isn't going to get posted as it is property of the company that paid to have it written and second it is professionals working in teams doing it, not people who are getting started out or playing around. They are likely to get help internally, not talk about it on the Internet.

    So if you want to look at Github to see what is popular on Github, that's cool, but when people try to generalize that to development overall, it is false. To get a feeling for what is really popular in software development you'd have to poll programmers working at a variety of big companies since that's where a lot of the code is being generated.

  12. Popular?? by maroberts · · Score: 2, Insightful

    I do JavaScript development. That does not necessarily mean I like JavaScript

    --

    Donte Alistair Anderson Roberts - hi son!
    Karma: Chameleon

  13. Re:I thought it was Rust. by DrXym · · Score: 3, Insightful

    Exactly. Java, C++ and C are not going to go anywhere for a long time. Even if Rust is better for a whole raft of systems programming tasks it's not like anyone is going to go out and rewrite code that already works. More likely usage for Rust will grow with IoT since code needs to be performant, reliable and secure and C / C++ really aren't suitable for that task.

  14. Python by fluffernutter · · Score: 5, Insightful

    I just want to say. Good for Python. I know a lot of people hate it but once you get past the static indents there is a lot to like about the language.

    --
    Laws are rules for the court, but merely a bottom bar to hit for life. Think beyond laws in your actions always.
  15. Re: by fluffernutter · · Score: 2

    I work in a lot of different languages and it changes from week to week. Maybe what makes a language simple also makes it efficient to change. Unless you can point to something that Python cannot do with simpler source code, why would you want to use the more complex one? I can appreciate the use of objective-c for speed or, well, it took Android awhile to get 'smooth' on Java but it's there now and it has a full complement of libraries. But for the part that needs to be extended and tweaked and retweaked, I think Python is a valid choice. You get a lot done in a simple way.

    --
    Laws are rules for the court, but merely a bottom bar to hit for life. Think beyond laws in your actions always.
  16. Re:I thought it was Rust. by angel'o'sphere · · Score: 2

    You should tell that to the mozilla foundation ...

    --
    Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
  17. Re: I thought it was Rust. by DrXym · · Score: 2

    The Mozilla Foundation are trying to solve problems that would be nigh impossible in c++. Not reimplementation for the sake of it.

  18. Re: I thought it was Rust. by Stoutlimb · · Score: 2

    Can you elaborate? Not that I doubt you, rather, I'm very curious as to what problems, how, and why.

  19. Re:This calls for ballot stuffing by RabidReindeer · · Score: 2

    One of the first things that they teach you in Calculus I is the concept of Domain and Range. Actually, if you had the "function machine" concept of New Math, I think it originally gets introduced there.

    Most programming languages have only a limited concept of domain and range. Especially domain. Usually, in fact, it's limited to throwing an exception when you do something that violates the range like divide by zero or get a register arithmetic overflow error.

    Ada allows you to precisely define datatypes and to give them domains and ranges. So A), you cannot pass a value in meters to a function that operates in inches (the best you can do is input a raw number that the function assumes is in inches). And you cannot pass in a value that is outside of the domain. So if I define a POSITIVE_INTEGER as having a vaue of 1..infinity, then passing zero to a function that takes a POSITIVE_INTEGER is a compile-time error.

    As they say, make a system that's idiot-proof and some idiot will prove that it isn't, but Ada puts a lot more protections in at both compile and run times than most languages. It's the opposite extreme from some of the scripting languages where you could spill beer over the keyboard while sneezing and the resulting collection of random characters wouldn't fail until maybe the module got called next Leap Year.

    Ada as a practical language suffered from 2 problems, First, it came out too soon. At a rough guess, a really competent Ada machine requires as much horsepower as Java, and when I studied Ada, merely running the compiler could bring an IBM mainframe of the day to its knees. Secondly, as with Java, any language that pushes most of the development cycle into the design and coding phases because until that part's right, absolutely nothing runs has a hard battle going up against the "instant gratification" of today's popular scripting languages, where the bulk of the work tends to be done chasing the run-time errors slowly emerging because the interpreter couldn't catch them in advance and the program "runs" almost as soon as you start coding.

  20. Re:This calls for ballot stuffing by TechyImmigrant · · Score: 2

    Those the the reasons I like Ada, or rather Ada written in VHDL, what with VHDL being pretty much a superset. It's a superb modeling language. You can easily constrain all state to be what the thing being modeled. But it's a fugly language and only the hard nosed people building chips had the stomach to take it. Which is why we are here today. Pity the people trying to build test benches in Verilog and having to investing in expensive test languages after finding how useless it is. The irony is VHDL is a pretty sucky HDL full of verbosity and boilerplate when you just want to describe binary logic.

    --
    I should use this sig to advertise my book ISBN-13 : 978-1501515132.