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."
Well, isn't it what we wanted pretty much - "right tool for the job" and all that?
I think it is a good sign!
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
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.
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.
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
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).
10 PRINT CHR$(205.5+RND(1)); : GOTO 10
... 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.
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
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.
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.
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.