Become a fan of Slashdot on Facebook

 



Forgot your password?
typodupeerror
×
Programming

Programming Language Diversity On the Rise 177

jfruh writes: "As GitHub becomes an increasingly common repository of project code, the metadata for projects saved there can tell us a lot about the state of the industry. In particular, a look at the programming languages used over the past half-decade shows an increasingly fragmented landscape, in which the overall share of most major languages is on a slight decline, while less-used languages are seeing modest growth in usage."
This discussion has been archived. No new comments can be posted.

Programming Language Diversity On the Rise

Comments Filter:
  • A good sign (Score:4, Insightful)

    by amn108 ( 1231606 ) on Wednesday May 07, 2014 @03:53PM (#46943317)

    Well, isn't it what we wanted pretty much - "right tool for the job" and all that?

    I think it is a good sign!

    • Re:A good sign (Score:5, Interesting)

      by TheGratefulNet ( 143330 ) on Wednesday May 07, 2014 @04:10PM (#46943487)

      not when you start to have too many tools.

      part of your value is being experienced in a language. you can't do that if you are spread thin amongst too many.

      yeah, we can all -learn- new languages. sometimes its fun, but it stopped being fun for me decades ago (I'm a greyhair). at this point, its more of a headache to have to support this or that fad language if someone decides to write some key bit of code in his favorite. I was just thru this a few months ago, having to support a guy's code in a fad language and no one else in the company had any time spent on this language; yet this fix needed to be done yesterday.

      I'd error on having 3 languages in the shop and that's about all that you'd need for most things. beyond that, you really fragment people, support and everything suffers.

      • Re:A good sign (Score:5, Insightful)

        by NoNonAlphaCharsHere ( 2201864 ) on Wednesday May 07, 2014 @04:22PM (#46943595)
        Hear. Hear. Add in the approximately 4 bazillion "frameworks" and the 9 bazillion JavaScript libraries and you've got the programming Tower of Babel.
      • yeah, we can all -learn- new languages. sometimes its fun, but it stopped being fun for me decades ago (I'm a greyhair). at this point, its more of a headache to have to support this or that fad language if someone decides to write some key bit of code in his favorite.

        If you're a greyhair, then learning a new language, even on the hoof should not be that hard, because you'll have seen them all before unless it's a really off the wall language.

        I had to learn enough java and JNI relatively recently to do a p

        • Re: (Score:3, Insightful)

          by hax4bux ( 209237 )

          Yes, learning another language is not hard. And to use your example, if most languages are more alike than not, why do we need another one? It's all just riffs on the same core.

          I am working (until Friday) w/a group of children who download every shiny thing on the internet and throw it into production. The result is chaos and they are rather proud of it. Amazing to watch, impressive if it worked. It doesn't work, and they spend a lot of time tinkering. Oh, well. Someday they will discover girls and h

          • And to use your example, if most languages are more alike than not, why do we need another one?

            Because the rest of them are not?

      • by plopez ( 54068 )

        I see your point. But likewise what tools you use depends on what you are working on. To use an analogy; carpenters use a different set of tools than plumbers, plumbers use different tools than electricians, electricians use different tools than landscapers etc. There may be overlap but the tools you use will depend on your problem domain. Over the years my jobs have shifted to different areas and consequently my tools have also.

      • I always try to remember this when I wonder if I am getting out-of-touch (being a 30-something, primarily C guy) but the reality is, despite all the hype around new languages (or new service providers *cough* GitHub *cough*), it turns out that much of what is currently used, is used for a reason.

        The best software developers I knew were comfortable in several languages and could pick up new ones in an afternoon but they preferred writing in simple C, heavily-simplified C++ (basically just C plus classes, no

        • Are you trying to say you don't find any value in GitHub?

          I'm (semi) with you on knew languages... but new platforms like GitHub have totally changed how people develop open source projects...

          If you haven't tried it... then you REALLY should.

          • Re: (Score:2, Insightful)

            by Anonymous Coward

            "new platforms like GitHub have totally changed how people develop open source projects"

            Sure have. Now it's next to impossible to find good code in the sea of pointless forks.

      • by JanneM ( 7445 )

        "I'd error on having 3 languages in the shop and that's about all that you'd need for most things."

        That sounds on the low side to me. One low-level, hardware-linked language (C or C++); one dynamic language (Python, Ruby); a functional language (Scala, Scheme, Haskell); one for numerics (R, Matlab/Octave); one embedded language (Scheme, Lua); client-side web (javascript); database access (SQL); and of course the platform-specific major languages you can't get around: Java, C# and Objective-C. I'm sure you c

        • by pjt33 ( 739471 )

          If you have one software shop doing everything from embedded to client-side web then you need a bit more than 3 languages, but most places specialise to some extent. And even if the company isn't specialised, its individual teams or studios often will be.

      • If you're a greyhair, surely you remember that there were people a long time ago who were writing compilers in Fortran...pardon, FORTRAN...because that was the only tool they had? Well, we've sort of rebooted to that time ten years ago, only our FORTRAN and COBOL were named C++ and Java.
      • If it's the right three languages, perhaps. But I doubt it would be enough even then.

        Almost every kind of shop today will need a feature filled main language tailored to the main product, a SQL style language and a scripting language for glue, installers and small tasks. That's your three languages right there.

        And that assumes that the main product can effectively be developed in one language, which is increasingly not the case. For example, languages such as Clojure and Scala allow leverage of Java librari

      • yeah, we can all -learn- new languages. sometimes its fun, but it stopped being fun for me decades ago (I'm a greyhair). at this point, its more of a headache to have to support this or that fad language if someone decides to write some key bit of code in his favorite.

        Throw 'em for a loop and write your next project in APL. They will cower in fear at your prowess.

        • by AJWM ( 19027 )

          +1 nostalgia if I had the mod points. Heck, there was a time (about 3 decades back) when I was being paid to teach APL (or APL, as properly rendered).

          Mind, the bit-arrays used in ElasticSearch filtering strike me as a very APL-like idiom. You never know when something you learned back when will prove useful again.

        • by jbolden ( 176878 )

          APL is way cool. There is a modern APL btw: http://en.wikipedia.org/wiki/J... [wikipedia.org]

          • Thanks, I was thinking I should probably learn some APL.
            • by jbolden ( 176878 )

              Honestly if you don't know APL / J I think you'd be better off other functional languages particularly Haskell. J teaches you functional code and a rode not taken for in terms of tradeoffs. Haskell IMHO teaches you what compilers are going to look like in 2030 and gives you exposure to the ideas that will be common in future languages.

              • Eh, I already know Haskell, but that's an interesting way of looking at it.
              • I'm not sure how true that is, though. My coworkers who are recent graduates, they are fine programmers but they see the world through such a small lens. To them, languages like Python are the epitome of programming language design. A lot of universities are teaching Python, so I guess that's why. That is kind of moving the opposite direction oh Haskell: the compiler doesn't check almost anything until run-time. Another told me, "I really like Python but list comprehensions are kind of confusing."
                • by jbolden ( 176878 )

                  I think Python is a good example of a the power of scripting and dynamic languages. Perl (up to 5), Python and Ruby (excluding things like Rails) represents the improvements in the 1990s and the advantages of dynamic languages with powerful libraries. Ruby is a bit more advanced since it was able to learn from Perl and Ruby. Perl6 IMHO is way more advanced but I don't know if it will ever get off the ground. But Haskell is incomparably more powerful. To use your example list comprehensions are finite i

                  • Data structures in functional languages is something I feel is a weakness of mine. Do you know a good book you could recommend on the topic?
      • by grcumb ( 781340 )

        not when you start to have too many tools.

        part of your value is being experienced in a language. you can't do that if you are spread thin amongst too many.

        As a 50-year-old, I'm inclined to agree with the statement that there is such a thing as too many tools, but not for the same reason. Expertise and experience are important, no question about that. But both are often easily transferred from one language or framework to the next. For my part, I'm quite enjoying working with NodeJS, Angular, NoSQL and a bunch of things that take significantly different approaches to problems I've been solving my entire career.

        But a problem I face quite often these days is try

      • by jbolden ( 176878 )

        I'm a fan of diversity. I like the of DSLs. I'm also middle aged. There is nothing fun about roughly the same kinds of languages but the more different the language the more fun it is. I'd love to have time getting to play with some radically different paradigms from the newer languages or obscure languages. I've been wanting to do SNOBOL / Icon / Unicorn but haven't had the chance. I'd love to do Factor and get a chance to play with a stack based language (I know Postscript, RPL, Forth). ETC...

    • Well, isn't it what we wanted pretty much - "right tool for the job" and all that?

      I think it is a good sign!

      "The right tool for the job" is exactly what I was going to say. Good for diversity - nothing wrong with healthy competition among languages. As a game programmer, my bread and butter language is C++, but I've also deeply invested in C# for tools, and I know some Lua, which is used heavily for scripting by many companies. Beyond that, I'm looking to add IronPython as an extension language for the tools.

      BTW, if programmers hate C++, I wonder if they haven't yet benefited from the full feature set of C++ 1

      • C++ (as well as C) is certainly one of those languages that can come back to bite you in the ass unless you're extremely disciplined in its use

        Indeed, but it's not only you that needs to be disciplined and consistent - it's everyone in the team that's working on the project. I had a nightmare of a time working with C++ code (CERN's Root package) that obviously had been people with a very different idea of sensible programming practice. It was a lot quicker, easier and more reliable to ignore it all and write mostly outside it, even if it meant reinventing the wheel a lot.

        Plain C isn't nearly as opaque and unpredictable as C++ can be, but then I w

        • The only reason plain C isn't typically as opaque as C++ is that there isn't much to try. The IOCCC is proof enough that the problem wasn't created by C++.

          • The only reason plain C isn't typically as opaque as C++ is that there isn't much to try. The IOCCC is proof enough that the problem wasn't created by C++.

            The primary thing the IOCCC proves is that C doesn't restrict you from doing crazy things with macros and variable names, and that it doesn't care about whitespace. There's certainly a lot of clever coding represented in that contest, but a good deal of the obfuscation is simply related to formatting (i.e. making ASCII art from the source code, etc).

        • Indeed, but it's not only you that needs to be disciplined and consistent - it's everyone in the team that's working on the project. I had a nightmare of a time working with C++ code (CERN's Root package) that obviously had been people with a very different idea of sensible programming practice. It was a lot quicker, easier and more reliable to ignore it all and write mostly outside it, even if it meant reinventing the wheel a lot.

          Yep, very true. I've seen both extreme cases - in one place I worked, the code was rather a mess, with poor design choices and a lot of hard-coded nonsense throughout the code. At the last place I worked, the very large codebase was exceptionally clean and well written, even though using largely C++ 98-compliant features and styles (that tends to be the case for most older projects). The coding standards were well documented and adhered to rather strictly.

          In fairness, nearly any large project can turn in

        • We've found code reviews to be excellent at disseminating and continuing a consistent style. Maybe better at that than at finding bugs.

  • This is great news (Score:4, Interesting)

    by SuperKendall ( 25149 ) on Wednesday May 07, 2014 @03:54PM (#46943319)

    Competition results in better organisms, and this is equally true in programming languages as it is in life...

    Honestly amazing things can now be done in a variety of languages. And it's better mentally to learn a number of languages so the variety helps to create more seasoned programmers in the long run.

  • Selection bias much? (Score:5, Informative)

    by bsdasym ( 829112 ) on Wednesday May 07, 2014 @03:57PM (#46943353)
    Github as a yardstick for language usage tells you nothing beyond what the most popularly used languages for github hosted projects are. Publicly accessible github projects at that.
    • by ArcadeMan ( 2766669 ) on Wednesday May 07, 2014 @04:03PM (#46943409)

      My own research also indicates that Atmel microcontrollers are used by 100% of Arduino users.

    • by LWATCDR ( 28044 )

      Yep C++, C, Objective-C, and C# are not popular?
      CSS is a programing language?

      • by Sarten-X ( 1102295 ) on Wednesday May 07, 2014 @04:14PM (#46943525) Homepage

        Yep C++, C, Objective-C, and C# are not popular?

        Not by a number-of-new-projects metric. They're popular in the "build a giant flagship product" world, but by sheer number of projects, I'd expect them to be pretty small. They're not the kind of language where you can just slap pieces together and do a job, like Ruby, Python, or Perl tend to advocate. Rather, they're elegant for larger projects. A comparison by lines of code would show the C family in a much more favorable light.

        CSS is a programing language?

        Yes. It's not Turing-complete, but it's still a language for defining instructions.

        • Sigh, CSS is not a programming language ... it is simply a 'definition' language like e.g. EBNF (to a much lesser degree even).

        • by u38cg ( 607297 )
          Actually, CSS with a little accompanyine HTML and JS to turn the handle can run a simple state machine that is Turing complete, though it wins an award for being inferior to Brainfuck.
          • by Xest ( 935314 )

            Once you involved JS you're already involving a turing complete language, so of course CSS becomes turing complete if you throw in Javascript.

            That still doesn't make it turing complete by itself though.

            • by u38cg ( 607297 )
              No, the JS is only used to iterate the state machine. You can do it entirely using keyboard events but that gets tedious, a bit like slashdot discussions.
              • by Xest ( 935314 )

                Even throwing a human into the mix doesn't make CSS in itself Turing complete.

                Your argument is effectively that if you throw in an outside executor then CSS becomes Turing complete. No fucking shit, I could literally make many things Turing complete by throwing Javascript or a human into the mix, but that doesn't mean they are in themselves Turing complete.

                • by u38cg ( 607297 )
                  Right, remove the clock edge from your CPU and let's see how Turing complete it is...
                  • by Xest ( 935314 )

                    You're really struggling with this aren't you?

                    Yes, you can also make something Turing complete not Turing complete by removing one of the things that makes it Turing complete. What exactly is the point of that point exactly? What's the relevance? It still doesn't make CSS Turing complete, and it doesn't make something that is Turing complete not Turing complete, unless you actually do do something to make that Turing complete thing not Turing complete.

                    • by u38cg ( 607297 )
                      Yes. I am completely wrong and realise the error of my ways. How idiotic I feel now. Thank you for setting me on the path to righteousness. I realise now that all Turing machines are entirely seperate from their substrate and that if their substrate is required to operate they clearly cannot be Turing machines. Gosh. The scales have really fallen from my eyes.
                    • I think the point that he's trying to make is that CSS is Turing complete so long as you have some external source that will provide a "tick" to advance the state - that external source does not have any logic in and of itself, and its sole purpose is to maintain execution flow. For your typical language, when running normally, this is ultimately the CPU clock. But if you're doing "whiteboard programming", the same source would be a human manually executing lines of code one by one. In case of CSS, there's

          • by LWATCDR ( 28044 )

            Javascript is a programing language.
            Saying that is like saying if you take a CSV file and throw in some Fortran it becomes turing compete.

        • by Xest ( 935314 )

          "Not by a number-of-new-projects metric."

          But what does that metric achieve exactly? It tells us nothing of real use. It certainly doesn't answer the question most people are asking when they want to know these numbers - "What language(s) will best support my career?". It's useless knowing that there are 5 new PHP projects to every C++ project if each PHP project is a one man bottom of the rung near minimum wage "Hello World!" type application and the C++ ones are 100 developer massive scale high paying type

          • It also tells us little about successful projects. Lots of projects are stuck up on more or less open repositories and abandoned. (I used to look at numbers of Sourceforge projects by maturity level, and the percent that made it to full release (level 5, IIRC) was not all that high.)

    • Agreed. My conclusion from the data is that github is getting more mainstream.

    • Indeed. Most of the github projects I've interacted with over the years started out as hobbyist projects, and most of those were ones the developer did to scratch their own itch while getting in some practice on a language they didn't know as well. Granted, there are plenty of larger open source projects or business-level tools using github as their repository, but they're a tiny minority compared to the innumerable hobby-time projects a developer started off as a practice exercise or a fun side activity.

      I'

    • Github as a yardstick for language usage tells you nothing beyond what the most popularly used languages for github hosted projects are. Publicly accessible github projects at that.

      The other thing that makes such a comparison fairly uninformative is that the vast majority of publicly accessible GitHub repos are surely small hobbyist/academic projects, so the stats are going to skew towards the tools likely to be used by hobbyist/academic developers. And since new languages arise all the time and old langua

  • by Anonymous Coward

    This is very foreboding. Instead of people using a language that supports secure, defensive programming, it shows that the "cobble something that builds and ship it... we will fix things later" mentality has all but won in the computer industry.

    Even perl, laughable as it is, is a language good enough to be relied by banks for real security. Use of languages where Bog knows what sits in memory until the garbage collector comes around to clean it up is easy on the programmer, but is fertile ground for insec

  • Eh.. not really (Score:5, Informative)

    by Anonymous Coward on Wednesday May 07, 2014 @04:03PM (#46943413)

    I'm not sure this tells us much about the state of the industry. More like the state of the industry for projects that are allowed to have the source posted online. In my area at least, the popularity of tags on StackOverflow seems to be a better indication of the industry: http://stackoverflow.com/tags

    • C# is the most popular language on StackOverflow.
      • by Xest ( 935314 )

        Which is probably about right in general if you look at job postings in various cities across the globe.

        The majority of hires are still for C# and Java positions to this day.

        There are areas where other languages shine (In the UK, London and Cambridge have a higher proportion of C++ roles for example) and hipster areas have high proportions of RoR and PHP hires.

        But in general one thing seems to be a constant - that C# and Java are right at the top of the skills list both where other languages are strong, and

          • by Xest ( 935314 )

            I'm not sure how sensible that data is though, when I went to the site it says it pulls Job data from Twitter and I've frankly never heard of anyone getting or looking for a job, let alone a C# job from Twitter and that's even assuming that Jobstrator doesn't fail hard when trying to parse C# from hash tags or something similar. It'd be more interesting if it was from actual job sites, but if you visit the likes of Monster.com the job listings for many major cities correlate quite strongly with the Stackove

            • I'd wager therefore that both these are better indicators. Certainly it seems a complete nonsense that there are more Ruby and Objective C jobs than C# jobs.

              I can't speak for Minnesota, but in Silicon Valley that is not surprising at all. Every company wants their own iPhone app. They aren't as interested in their own WP8 app.

      • FWIW, Stack Overflow was started by .NET guys, and the earlier joiners were people who followed their blogs. That influenced the culture. I don't know if that's continuing.

  • Wow, C# is everywhere. Look at all of that code. That must mean C# is super popular. Or, that certain populations prefer certain tools and repositories.

    On the other hand, the growth in JavaScript does seem to confirm my (totally biased) opinion that there are tons of "reinventing the wheel" JavaScript projects out there and it's just getting worse and worse.

    • On the other hand, the growth in JavaScript does seem to confirm my (totally biased) opinion that there are tons of "reinventing the wheel" JavaScript projects out there...

      Well, if I had to pick a modern language to use, it would be Javascript. Yes, I know this is heresy to some of you, but at least it has one feature not commonly found in other programming languages - prototypical inheritance - so it does have a reason for existing. That almost (but not quite) makes up for its shortcomings as a programmin

      • by doom ( 14564 )

        Re: Javascript.

        You forgot the broken scoping rules.

        And lame unicode support (as of ES 5)-- but hey, it's only the "World Wide Web", and no one really uses the astral planes, do they?

      • by ndykman ( 659315 )

        To be fair, one can use the prototype-based model in Python (prototype,py is one implementation) and Ruby. And scoping is another big issue, as was mentioned. Heck, you could probably come up with a version of it in C# (via the ExpandoObject).

      • What's good about prototype-based OO? A lot of people pitch it is as "nice, just misunderstood". I sort of agree about the misunderstood part, but the code that is touted as example of good use of prototypes generally avoids all the crazy things that are possible to do with them that actually distinguish them from class-based OO. So end result is basically the same - and then why bother with being different from everyone else?

  • by Trepidity ( 597 ) <[delirium-slashdot] [at] [hackish.org]> on Wednesday May 07, 2014 @04:22PM (#46943589)

    For example if you have a Python project, but it has an example web demo, and the web frontend for the demo uses jQuery, suddenly you have a giant pile of JavaScript code in your repository. So much of it that GitHub often identifies the project as JS, even though it's really a Python project that just has a JS library buried in the examples/ directory.

    Of course in some ideal world you wouldn't have third-party library dependencies actually checked into your repository. But it's common to include any JS libraries your HTML documentation/demos/etc. need, because that lets the HTML be viewable and work correctly straight out of the repository (including offline).

  • by AlienSexist ( 686923 ) on Wednesday May 07, 2014 @04:28PM (#46943655)
    ... would further inflate Java's domination of the stats. Java as the core is very strong. I'm seeing increasing adoption of (and job offerings for) the JVM-based languages though. If you don't already know about it, ThroughtWorks has a wonderful semi-annual Technology Radar [thoughtworks.com] comprising their consultancy's experience and evaluations of various tech.
    • The JVM is even one of the three primary targets for Rakudo, the main Perl6 front end. It is increasingly feature complete. So if that ever ships it'll be another interoperable JVM production language.

  • Programming is a set of thought processes that are being applied regardless of the language or environment being used. The other part is markup or translation, and that part of the work should be minimized.

    I've been programming since I was a little kid and now I'm almost 40. In developing my craft over 30 years I've focused on learning how to write solid code that can be easily modified by the next person. The software that you write needs to read like Hemingway: short, simple, and declarative. When you thi

    • I was with you 'til you said English was a natural language. It isn't. One example from "Monkey Business" - Marilyn Monroe is asked to go to every Ford garage in town and find Professor Fullton. "But which one do you want me to do first?".

      One reason we have computer languages is that our normal ones are too ambiguous.

      I like the idea of computer languages that read like Hemmingway novels. My suggestions,.,.,

      1: The SUN also rises
      2: For (whom the bell tolls): Do
      3: The Old man and the C:
    • by jbolden ( 176878 )

      Programming is a set of thought processes that are being applied regardless of the language or environment being used.

      I disagree with you here. I think the thought process is highly dependent on the language. For example in a low level language I spend a great deal of time thinking about how I want the machine to perform various computations. In a high level language I spend my time thinking very abstractly about the process. In your typical structured programming language I spend a lot of time conce

  • I Prefer this broader index: http://www.tiobe.com/index.php... [tiobe.com]

  • "Diversity"? (Score:2, Informative)

    by Anonymous Coward

    99% of them are basically the same only slightly different structure. Programming languages are like novels; "ME TOO! I MADE ONE TOO!". What we need the least is more "diversity" when most of it is just dialects that increases the chance of errors and makes life harder for people.
     

  • by loufoque ( 1400831 ) on Thursday May 08, 2014 @05:39AM (#46947609)

    It's important to note the stats are about the number of new projects.
    Most C or C++ code, for example, will be mature projects that stay alive for a long time.

    I think it is a bad stat, what would be more interesting would be to know the total quantity of actively maintained code and not just the number of new projects.

  • At freecode.com they have a few tools regarding language. It's a public release site and not just whatever someone is working on at the moment. The uploader allows people to specify which language something is in. There's a link to those counts and then to projects in those languages right on the front page of the site. However, it's often helpful to know with which languages things are meant to interoperate or process, too. Freshmeat... err, Freecode allows one to search projects. There are counts there di

To be awake is to be alive. -- Henry David Thoreau, in "Walden"

Working...