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
I say we launch an affirmative action program for Python programmers. Fight the power!
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 Internet makes it easier to know about other choices and/or distribute other choices.
Table-ized A.I.
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
“The programming landscape today continues to fragment, and this GitHub data supports that trend over time....”
...
A better metric would be how many developers use more than the one language, and what are their reasons
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.
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.
Does this really tell us anything about the state of the world, or is this a collection of meaningless statistics about the large number of half-finished or abandoned projects on github?
I don't think any of the metrics described in the article are very useful. I'd be more interested in metrics that incorporate some measure of the importance or activity related to the project. (the "issues" metric is a start -- if people are asking questions about something, it matters to them, at least) but it also reflects which languages raise the most questions because they're just generally baffling)
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 think of programming in terms of languages, you're doing it wrong.
One day we will instruct computer AIs completely in a natural language like English or another language. The more cumbersome the markup and translation, the further you stray from that goal.
Thinking narrowly, there are features of languages that have proven to be useful over time, such as object orientation. The key here though is abstraction. However we do it, the programmers' job is to move electrons around. At every abstraction we should strive to simplify and in my mind I see a convergence such as the natural language interface. To facilitate it we need to think about what it really means to be a programmer, what it has always meant, and what it will always mean: To convey an accurate and modifiable sequence of instructions to some device in the most efficient way possible.
I Prefer this broader index: http://www.tiobe.com/index.php...
Somebody was pushing it back in the late 80's.
http://en.wikipedia.org/wiki/Architecture_Neutral_Distribution_Format
I guess Android is close enough, as running on many hardware platforms is required for its business model.
When a compiler can target a runtime like Java or the CLR, it seems like languages like Clojure or Scala or even Javascript are simply semantic sugar around the underlying runtime (which I approve of).
Make sure everyone's vote counts: Verified Voting
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.
As GitHub becomes an increasingly common repository of aborted attempts at utilizing fads, the metadata for abortions saved there can tell us a lot about the state of fads. 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 real languages is on a slight decline, while amateur-joke-of-a-languages are seeing modest growth in usage
Related: IBM's DAISY: http://researcher.watson.ibm.c...
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.
I started programming in BASIC. Even went to compiled BASIC. Then Pascal, Assembly (on bare hardware), then Rexx, a 4th GL named Focus (that no one ever uses anymore), COBOL, then C, then Modula2, more assembly (different machine architecture), more Cobol (by that time my incredulity for Cobol was much greater), more APL, LISP, Prolog, Bash, a bit of Perl, a bit of Javascript, and some PHP. Oh, and some PL/SQL. After a while it all starts to look like C (except like APL, and one I forgot to mention: JCL which is not coherent and doesn't look like anything else, and is a badly hacked abomination). The better ones all look like C.
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 different from the "implementation language" set for the projects.
http://freecode.com/search?q=P... 2416
http://freecode.com/search?q=C... 3632
http://freecode.com/search?q='... also 3632
http://freecode.com/search?q=J... 3967
http://freecode.com/search?q=R... 402
http://freecode.com/search?q=P... 1920
http://freecode.com/search?q=J... 921
I'm not sure if searches for "Java" include "JavaScript" or if the search box is smarter than that. It seems to lump C and C++ together.
I think you might be mistaken.
Just because someone posts something to git hub doesn't mean that is "the" language they have chosen.
We now have classes in college that are called "Intro to Programming Languages" and the whole purpose is to learn many different programming languages. Some of these "class projects" will invariably end up on GitHub. Then they have a final in the language of their choice, with a requirement that the language be "other" than the big 4 (Java, C#, C/C++, PHP).
So first, remove all those homework project from your evaluation, then redo your evaluation. You might see what I everyone else sees in the market: Java, C#, C/C++/ObjectiveC for compiled languages and JavaScript and PHP for non-compiled languages and then everything else is sometimes used for a product here and there.
All true up to the and including the GGP. Having new and nifty tools is cool and all, but the only real reason we have multiple tools is that tool X cannot do the job (or nearly as well) of tool Y and both are necessary (screwdriver and hammer), or new tool X1 (power screwdriver) just does the job sooo much better and it's worth migrating to. Outside of hobbying, blank cheque funded projects, and the hyped up startup that's just as likely to bust as to make it (if they survive what usually ends up being a maintenance nightmare for them later on), it's the business IT needs ("does it do the job", legacy support, maintainability, easy and rapidity of dev and deployment, availability of skilled labour. overhead) that dictate what tools should be used. Business that go with such an approach tend to do well, those that don't tend to get screwed (or screw someone).
Garbage in = Garbage out... " https://github.com/sdague/temp... is a good instance of a ruby project that has 0% javascript in it, but it classified as javascript."
Keep blowin mod points. You'll run outta 'em & I'll just post again. I have no limits. You do. I win. Always. K.S. Kyosuke is failing!
Since when are C# and Java "frameworks"?
Ran dry on sockpuppets and modpoints to downmod others with to hide your fuckups K.S. Kyosuke? Answer = Yes. Hahahaha, You lose/fail.