Slashdot Mirror


Programming Language Diversity On the Rise

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."

24 of 177 comments (clear)

  1. A good sign by amn108 · · Score: 3, Insightful

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

    I think it is a good sign!

    1. Re:A good sign by TheGratefulNet · · Score: 5, Interesting

      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.

      --

      --
      "It is now safe to switch off your computer."
    2. Re:A good sign by NoNonAlphaCharsHere · · Score: 5, Insightful

      Hear. Hear. Add in the approximately 4 bazillion "frameworks" and the 9 bazillion JavaScript libraries and you've got the programming Tower of Babel.

    3. Re:A good sign by Dutch+Gun · · Score: 2

      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++ 11. A lot of C++ projects are pretty long-lived, and so predate these language features. I recently started a new game company, and was able to take full advantage of the language in my codebase from the ground up. With the ubiquitous use of now-standardized smart pointers with STL containers, plus the improved move semantics (meaning you don't always have to sacrifice readability for efficiency now), C++ feels a lot like using a managed language like C++, where you don't have to worry quite as much about carefully managing your allocations or worrying about raw buffer memory overwrites / memory stomps. Instead, you concentrate on ownership with solid RAII principles and let objects clean themselves up naturally, thanks to solid encapsulation.

      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. Those languages have a unique philosophy of letting the programmer do nearly anything they want, including very stupid and dangerous things. As such, less experienced or less disciplined programmers, when they run into a design wall (or prematurely optimize their code), often try to do "clever" things that end up causing issues down the road. And despite the improvements in recent years, C++ has still got its share of sharp corners - a lot of which come from backward compatibility with C, and some others simply bad decision decisions. It's definitely a language that's somewhat tailored for experts, and certainly would not be my go-to language for every project. However, for videogames, which are both complex and large in scope but extremely demanding in terms of required runtime performance and predictability, C++ seems to fit the bill.

      --
      Irony: Agile development has too much intertia to be abandoned now.
    4. Re:A good sign by serviscope_minor · · Score: 2

      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 piece of work. Once you know the basics (garbage collected, semi-dynamic in that you can cast all the way down to Object and back again but otherwise lots of static typing, OO, interfaces and everything is a reference) you pretty much have the entire semantis nailed at which point it's just a question of a fairly familiar syntax. The main problem then is the libraries (hello GridBagLayout you evil bastard), which can be new and unfamiliar even in a familiar language.

      Likewise, I occasionally have to hack python scripts of other people even though I've never written anything in it, but again if you know the principle then it mostly makes sense. Python is kinda like the language part of PostScript---dictionaries (the PS sort) all the way down. Except it's infix. but again, as a greyhair you should be able to understand the language semantics quickly.

      If the languages are too far from what I'm used to then yeah it might take a while and that does get more difficult. But if the semantics are familiar then it will be straightforward. If they're not then you're learning something genuinely new and that *ought* to be fun.

      --
      SJW n. One who posts facts.
    5. Re:A good sign by hax4bux · · Score: 2, Insightful

      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 have better things to do. I hope.

    6. Re:A good sign by MoonlessNights · · Score: 2

      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 other language features), or maybe Java.

      They could easily express their ideas and the code could be easily read by even a novice (part of knowing many languages means avoiding esoteric or "clever" language features).

      It is nice to see new ideas on the horizon but the signal to noise can get a little overwhelming when there are more frameworks or languages than developers (as it sometimes seems).

    7. Re:A good sign by Anonymous Coward · · Score: 2, Insightful

      "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.

    8. Re:A good sign by pjt33 · · Score: 2

      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.

  2. This is great news by SuperKendall · · Score: 3, Interesting

    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.

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
  3. Selection bias much? by bsdasym · · Score: 5, Informative

    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.

    1. Re:Selection bias much? by ArcadeMan · · Score: 3, Funny

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

    2. Re:Selection bias much? by LWATCDR · · Score: 2

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

      --
      See my blog http://ilovecookes.blogspot.com/ for light hearted technical information.
    3. Re:Selection bias much? by Sarten-X · · Score: 5, Insightful

      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.

      --
      You do not have a moral or legal right to do absolutely anything you want.
    4. Re:Selection bias much? by AzP · · Score: 2

      You seriously state that new, languages more or less in an alpha or beta phase, like Rust and Go can be compared to C/C++ which has 30+ years of development behind them, including amazing libraries like the STL and Boost, not mentioning the thousands of libraries and frameworks that are available all over the web?

  4. Point and drool over security... by Anonymous Coward · · Score: 2, Interesting

    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 insecure programming. Those variables that fell out of scope... does the GC bother overwriting them, or can some other process grabbing memory sift through and see what is inside?

    I'm not saying we go back to Ada (although Ada 2012 is pretty good), but we don't play fast and loose with programming languages that encourage the "it builds, ship it" mentality.

  5. Eh.. not really by Anonymous Coward · · Score: 5, Informative

    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

  6. GitHub's language ID can be misleading by Trepidity · · Score: 4, Informative

    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).

    1. Re:GitHub's language ID can be misleading by Trepidity · · Score: 2

      There is no advantage at all to doing it, is the problem. Solving nonexistent problems is something nerds love to do, but it isn't that helpful.

  7. JVM-based languages like Scala, Groovy, Clojure by AlienSexist · · Score: 2

    ... 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 comprising their consultancy's experience and evaluations of various tech.

  8. Re:Programming, not programming in a language by Kittenman · · Score: 2

    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:

    --
    "The greatest lesson in life is to know that even fools are right sometimes" - Winston Churchill
  9. The right 3 languages by BadDreamer · · Score: 2

    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 libraries - but require Java knowledge to be effectively used to develop applications.

    The effectiveness of different language paradigms in solving specific kinds of problems varies quite a lot, and therefore it is often useful to have different languages for different parts of a complex system. A domain model will benefit strongly from language features in Lisp and strong OO systems, while a view layer benefits from loose structure and lack of formalisms. This makes it likely that the main product of a shop really should use several languages in a controlled manner.

  10. "Diversity"? by Anonymous Coward · · Score: 2, Informative

    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.
     

  11. Stats are about number of new projects by loufoque · · Score: 2

    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.