The Top 10 Programming Languages On GitHub, Over Time 132
An anonymous reader writes with a link to VentureBeat's article on the information that GitHub released this week about the top-ten languages used by GitHub's users, and how they've changed over the site's history. GitHub's chart
shows the change in rank for programming languages since GitHub launched in 2008 all the way to what the site's 10 million users are using for coding today. To be clear, this graph doesn't show the definitive top 10 programming languages. Because GitHub has become so popular (even causing Google Code to shut down), however, it still paints a fairly accurate picture of programming trends over recent years. Trend lines aside, here are the top 10 programming languages on GitHub today: 1. JavaScript 2. Java 3. Ruby 4. PHP 5. Python 6. CSS 7. C++ 8. C# 9. C 10. HTML
i think it shows trends in GitHub's demographic (Score:5, Insightful)
> it still paints a fairly accurate picture of programming trends over recent years
i don't think it does (at least not very much). i think it tells us about shifts in GitHub's demographic.
java usage has increased at GitHub, but this more likely reflects greater adoption of GitHub by the business community.
ruby has declined, but this probably just reflects that the ruby community really embraced GitHub at the beginning.
Re:i think it shows trends in GitHub's demographic (Score:5, Insightful)
And why would CSS be more than HTML? There's nobody who uses CSS without HTML, but people do use HTML without CSS. So CSS should be a subset of HTML (also neither are programming languages, but that's a separate argument). So even ignoring massive bias problems, I question their accuracy.
Re:i think it shows trends in GitHub's demographic (Score:5, Informative)
Re: (Score:1)
How is that? What is one styling if not HTML?
Re: (Score:2, Informative)
They're styling HTML, but the HTML is generated by jQuery, so the files showing up in github are primarily CSS and javascript files.
Re: (Score:3)
Re: i think it shows trends in GitHub's demographi (Score:2)
Re: (Score:2)
Re: (Score:1)
Easy: Most of the PHP files will generate HTML as output, and have CSS files associated with them, but github wouldn't see that as an HTML file.
Re: (Score:2)
What does the number of CSS projects have to do with the number of HTML projects? There's no reason their numbers should correlate to each other at all on GitHub, especially considering neither is a programming language.
Re:i think it shows trends in GitHub's demographic (Score:4, Informative)
There's no reason their numbers should correlate to each other at all on GitHub, especially considering neither is a programming language.
This will either interest or agitate you. HTML5 + CSS3 has been proven to be Turing complete [lambda-the-ultimate.org]. Just to drive the point home, someone's even made the effort to produce a desktop calculator app [hertzen.com] using only those two technologies.
Re: (Score:2)
Re: (Score:2)
You can also make a box of toothpicks and a handful of rules written in crayon on a piece of notebook paper for how to arrange those toothpicks on a tabletop Turing complete. It still doesn't make it a suitable programming tool. Also, 9*111 was not, the last time I checked, equal to 99. So it doesn't seem to be a very successful desktop calculator in Chrome 44 on OS X at least. HTML is a markup language and CSS is a styling and presentation language. Yes, one can press them into service to write crude progr
Re: (Score:1)
If you bring suitability into this then we could potentially do a lot of slicing and dicing* of the statistics. JavaScript is not suited to be a systems software language for building GUI engines, for example, but has ended up that way through historical accidents.
* No corporate pun intended
Re: i think it shows trends in GitHub's demographi (Score:1)
If it's based on lines of code then it would explain why JavaScript is number one. Everyone has to keep a copy of the gazillion libraries javascript requires in their repos for easy deployment. One place I worked at they had 400k lines of code but most of it was libraries for node.js and etc. Our python code was much shorter even though the custom lines were much longer. Also javascript sucks so everyone writes a new library to try to make it better and easier to work with.
Re: (Score:2)
There was an article recently that showed that HTML5+CSS3 was Turing complete. http://lemire.me/blog/archives... [lemire.me]
Which qualifies them (together) as a real language.
Re: (Score:2)
JavaFX uses something that looks a little bit like CSS. In fact CSS is theoretically applicable to any kind of hierarchical scene graph, you just need to define what object types exist and what properties they have. You'd think that'd be more widespread nowadays, when every project requires programmers and multiple artists to work together and modding is all the rage.
Re: i think it shows trends in GitHub's demograph (Score:1)
Eg there might be 20,000 lines of CSS, 600 lines of HTML and 500,000 lines of PHP (which is capable of generating billions of lines of HTML but GitHub doesn't see any of that).
Re:i think it shows trends in GitHub's demographic (Score:5, Interesting)
I agree. If you look up what programming language experience companies are looking for, you usually end up with two very unsexy choices: Java and C.
http://spectrum.ieee.org/compu... [ieee.org]
Javascript will continue to be popular if only because it's becoming the defacto standard for cross-platform mobile development.
Re: (Score:1)
with .NET it's the same, probably using some intern or microsoft specific versioning control program. We have our own servers to host our sources, we would never think about hosting it on GITHUB... So it also needs a certain kind of program...
Re: (Score:2)
You forget:
node
nodeJS
angularJS
and all the other mixed server/front end frameworks.
In business the trend right now goes to so called "full stack" developers that are fluent in Java, preferred Scala and nodeJS/angularJS depending on the architecture.
No one does C, unless he is forced by someone to do so, people usually do C++.
Re:i think it shows trends in GitHub's demographic (Score:5, Informative)
> No one does C, unless he is forced by someone to do so, people usually do C++.
Or they write in C and use a C++ capable compiler, like "gcc". A lot of "C++" code being published has no elements specific to C++.
Re: i think it shows trends in GitHub's demographi (Score:1)
Does there is no C++ compiler count as being forced?
Still lots of 8 and 16 bit CPUs left if the world. An they do not all have C++ compilers. Some are still at ANSI C89.
Not everyone works on desktops and servers.
Re: (Score:2)
A lot of "C++" code being published has no elements specific to C++. ;D
Never seen such a thing.
And frankly, professional code usually does not get published
Re:i think it shows trends in GitHub's demographic (Score:4, Interesting)
A great deal of professional code is published: it's key to the Apache foundation and the Free Software Foundation. And a great deal of the more straightforward being published as "C++" for lightweight applications is standards compliant C. I just went through a similar issue with a job applicant who wrote backend website processing: That person's code had _no_ C++ elements in it, written for the simplest and most reliable compilation. It was very lightweight, the libraries it required were very stable, and it had _no_ dependency confusion common to the "overloading" of C++ functions. I was quite pleased with their code.
Re: (Score:1)
I would not call code professional just because it is published via Apache ;D
Sorry, as I said before: in my professional career I have not seen any C code masqueraded as C++, and actually since the last 20 years I have no seen any C code at all.
Might be because the systems I was involved in where not supposed to run on washing machines.
That person's code had _no_ C++ elements in it, written for the simplest and most reliable compilation.
That is a non sense sentence. What exactly is an unreliable compilatio
Re: (Score:3)
> Might be because the systems I was involved in where not supposed to run on washing machines.
Then you don't look at Linux device drivers, and apparently don't look at highly performance optimized daemons. That's fine: you may not have needed to do this.
> That is a non sense sentence. What exactly is an unreliable compilation?
"Unreliable compilaton" could mean many things. Code that is likely to give different results based on subtle compilaton option differences, such as optimization levels, due to
Re: (Score:3)
I suggest you once work in a company/team that actually does embedded development instead of populating forums, web sites, blogs etc. with your nonsense.
Then you don't look at Linux device drivers, and apparently don't look at highly performance optimized daemons. That's fine: you may not have needed to do this.
This is not embedded software development so out of scope of this discussion.
Code that is likely to give different results based on subtle compilaton option differences,
If that is so, it is a compi
Re: (Score:2)
Literally nothing you wrote there is a reason to use C rather than C++. C++ can optimize at least as well as C (typically, in implementations where there's any cost to throwing exceptions, there's a compiler switch to disable them), since it can do anything C can do and more. Your idea of "unreliable compilation" has absolutely nothing to do with C vs. C++. Your "features" that help with programmer consistently are not C-specific, and frequently C++ smart pointers are superior to trying to tracking "fre
Re: (Score:3)
No one does C, unless he is forced by someone to do so, people usually do C++.
Uh, have you heard of Linus [cat-v.org]? A lot of embedded developers prefer C over C++, because there are fewer side effects. Other programmers prefer C over C++ because it has a cleaner design.
Re: (Score:2)
I did a lot of embedded projects the last 25 years: everyone was in C++, non in C.
An Linus is now using C++ as well.
Perhaps you should look at the graph again, C++ is far above C.
And our parent claimed that C would be a prime chose, which it is clearly not.
Re: (Score:3)
I did a lot of embedded projects the last 25 years: everyone was in C++, non in C.
If everyone was using C++, then your experience is obviously not representative.
If most people you associated with used C++ in embedded, then your experience is different than mine.
Re: (Score:2)
Ofc my experience is not representative.
However I'm a bit tired about posts of people who have no experience at all :D
"All embedded software is done in C!" ... So Android stuff is not embedded? A GPS running on Android or an Rasperi PI is not embedded?
As I said before: more than half of the embedded development in the world is in C++. And ALL embedded development I was involved in the last 20 years was C++ (or meanwhile in a few exceptions: Java)
Re: (Score:2)
However I'm a bit tired about posts of people who have no experience at all :D
True, if someone says embedded only uses C, then they are not correct either (I know of one chip that includes an embedded python interpreter).
Android barely counts as embedded though, maybe........it's a fairly advanced system.
Re: (Score:2)
I think iOS and Android blurs the line where embedded is on one site and "ordinary" software is on the other side.
Remember that embedded version of windows? It was mainly aimed to car entertaining, radio, navigation systems.
iOS and Android are from an architectural standpoint not very similar.
Re: (Score:2)
iOS and Android are from an architectural standpoint not very similar.
How so?
Re: (Score:2)
Sorry, I typoed, ment to say: "very similar". Delete the "not".
Re: (Score:2)
too bad, I was looking forward to a subtle exposition of some differences that I had overlooked.
Re: (Score:2)
I fear it is more likely that I overlook something ;D ...
My age is catching up with me
Re: (Score:2)
Right you are. Linus did a pretty good [well, succinct anyway :-)] job explaining this.
Here are a few more detailed reasons why you can't write a kernel in C++:
- C++ constructors [or destructors] can't return error codes. They can only throw exceptions.
- Leaving aside the fact that relying on exceptions (vs. checking error codes, which the kernel code already does at every step of the way) is largely unsuitable in a kernel [or an app even]
- The kernel has several modes/states: in ISR, in syscall, entering
Re: (Score:2)
But how does that violate encapsul
Re: (Score:2)
is_a/has_a is so you can determine if you can/should inherit. While the standard literature might say that the inheritance is part of the class definition, it's also an implementation detail of the given class. Radical idea, no? Read on ...
Back to school for the sake of common ground: An airplane is not an engine. It has an engine. An airplane is a vehicle. So airplane could inherit from vehicle but would have:
engine_t engines[4];
Encapsulation has two definitions:
https://en.wikipedia.o [wikipedia.org]
Re: (Score:2)
How about "unimplemented"? Why try to come up with witty synonyms when there's a perfectly accurate word in the English language already? Especially since "pure" already has a completely different meaning in relation to functions: it's a function that has no side effects and returns a value that depend
Re: (Score:2)
After some unobjectionable stuff (except that I wouldn't specify exactly four engines in an airplane), you misunderstand a pure virtual function and an abstract base class. A pure virtual function can have an implementation (it just isn't automatically used), and an abstract base class doesn't need to have all functions pure virtual (sometimes there's reasons to have standard implementations of some but not all functions). I've never heard anybody complain that "= 0" was really confusing; if they know wh
Re: (Score:2)
I wouldn't do engines[4] IRL, but, c'mon, this is slashdot. It's hard to post meaningful code fragments using what they provide. Would engines[NENG] be less objectionable, even if I hadn't defined NENG?
The whole point of "= 0" is that it came from a time in C++ when adding new keywords was eschewed because C++ wasn't fully adopted and the more new keywords used, the more places it would blow up C code that was being ported. For example, I do believe I had a function called "new" and when I recompiled the
Re: (Score:2)
I don't make arrays anymore unless I really have to. Unless there was a good reason not to, I'd use a std::vector instead of an array.
C++ started out as C with Classes, and then developed into its own language. It's not just "nowadays". BTW, if I want to know if a copy is deep or not nowadays, I look at the copy constructor and/or copy assignment operator. I don't see that examining what the compiler spits out is any more convenient.
I'd say that "= 0" is more readable than "+++", and it seems to fi
Re: (Score:2)
Let's see.
If you want to write a constructor or destructor that returns nullptr rather than throwing in C++, use "(nothrow)". You can normally avoid throwing exceptions, and many compilers have "no exceptions" as an option. C++ is just as suitable for the "dirty jobs" as C is, and object orientation is a lot easier in C++ (I've done both).
Your rant on "new" is by somebody who didn't understand what he was saying. void * is indeed a hole in the type system, and even in C its use is very limited. You
Re: (Score:2)
The rant on new (the stanford paper) was not mine. And, it was about new being an operator instead of a function. BTW, I've been programming in C for 35 years (+ 10 before doing C). I haven't seen malloc use char * in at least 15. And why does one need to use std::unique_ptr to force C++ not to be "cute"?
The RTTI is disallowed at Google and C++ is their goto language. It's also slow. There was a recent usenix paper https://www.usenix.org/confere... [usenix.org] that has a CaVer tool for detecting bad downcasts.
Re: (Score:2)
std::unique_ptr isn't to solve a purely C++ problem; it solves a C problem by ensuring that there are no memory leaks or double freeing or use after free. If you have to get rid of the memory now, without waiting until the end of the block, that's what the .reset() member function is for. I didn't say that the "new" rant was yours, but you linked to it, and it was clearly by somebody who didn't understand C++ well enough. There's lots of that going on for lots of different programming languages, which i
Re: (Score:2)
A cleaner design?! Hand re-implementing inheritance and polymorphism is cleaner? Hand implemented vtables is cleaner? Hand implemented intrusive containers are cleaner?! Lack of generics is cleaner?!
C has been described as a really nice assembly language, and it does that very well. It's easy to remember, easy to use, and is logical and fills its purpose. These are things you look for to determine a clean design. There were features that were left out of C because they didn't really fit.
On the other hand, C++ is a sausage factory. Features get added because people say, "oh look, that language has a cool feature." Half the language is deprecated, and no one can agree on the best way to use it. Differe
Re: (Score:2)
Re: (Score:2)
You silly. What do you need inheritance for in C++, except for marketroids? C++ is nowhere near CLOS anyway, would you hand-reimplement generic functions or meta-object protocol in C++ by the same measure? I mean, that's your argument - C++ must be crap because some other language is vastly more capable.
The main problem with C++ is that even at 1300 pages of spec, it does so little. The power/weight ration is simply horrendous, that is what is dirty about it. I'd rather work in a language that can do 80% of
Re:i think it shows trends in GitHub's demographic (Score:5, Informative)
> java usage has increased at GitHub, but this more likely reflects greater adoption of GitHub by the business community.
Not to forget that Google Code is closing, Codehause closed, SF.net becomes more shit every day. They housed a lot of Java projects, and they are moving to alternatives like GitHub.
Re: (Score:1)
>ruby has declined
because the fad is going away. I have seen the signs of decline of popularity of it in many places.
There other ways to measure (same ballpark questionable, I have to admit)
https://www.google.com/trends/... [google.com]
Re: (Score:2)
And isn't the business community part of "programming trends"? And hence should be included?
I can't understand the resistance to give Java credit here. It's one of the most successful modern programming languages and entirely open-sourced.
Re: (Score:1)
I would suspect it has more to do with Android apps. It will be interesting to see if Oracle's legal games change that.
Odd (Score:2, Funny)
What, no COBOL?
Re: (Score:3)
Re: (Score:2)
Re: (Score:2)
What, no COBOL?
You meant that humorously but there is evidence [slashdot.org] it's star is on the rise.
Programming? (Score:5, Insightful)
If it is about programming, then why are CSS and HTML along the list? These are rendering languages...
Re: (Score:3, Insightful)
We don't want anyone feeling diminished because their specialty is not considered "programming".
More seriously, especially with CSS, the capacity to design something that doesn't look like a mud fence is a substantial skill.
That is: don't discount the work just because it executes subjectively in the mind of a user. You want to know where the sale is made? It sure ain't in the elegance of the design patterns buried in the server code.
Re: (Score:3)
"More seriously, especially with CSS, the capacity to design something that doesn't look like a mud fence is a substantial skill."
So is riding a unicycle while juggling. That doesn't make it a programming language.
If CSS ever supports logical, mathematical and iterative operations then maybe it deserves to be on this list. Until then - no.
Re:Programming? (Score:4, Informative)
HTML plus CSS is Turing compete.Someone proved that by implementing rule 110. Quite astonishing, but they're you go.
http://lemire.me/blog/archives... [lemire.me]
Re: (Score:2)
Just because something is Turing complete doesn't mean I would want to program in it. I would rather use HTML5 + CSS3 for the purpose they were designed for (rendering web pages), and use a proper language to program the backend.
OTOH, I agree with putting HTML & CSS on the Github's top 10 list, since it takes skill & practice to develop in those as much as in a conventional programming language.
Re: (Score:2)
Just because something is Turing complete doesn't mean I would want to program in it.
Oh gosh no. But I think "Turing complete" is the only objective definition of a programming language I can actually think of. Befunge, Intercal, Brainfuck and ahem sed are all programming languages, but one wouldn't want to program anything in any of the first three (and anything but some simple text substitutions in the case of sed) except for fun.
HTML+CSS certainly earns the classification of "Turing Tarpit".
Re: Programming? (Score:2)
Re: (Score:2)
Making beautiful interfaces is a very valuable skill, of course. But it still isn't programming. It's like you're making a list of top flowers and you rank tomatoes 6 in that list. That doesn't make any sense.
Re: (Score:2)
Re: (Score:2)
Re: (Score:2)
Because: ;D
a) lots of stuff hosted on GitHub is HTML
b) the guys making such graphs don't know the difference between a programming language and a mark up language
Stop bitching and deal with it
If it was an article comparing languages regarding programming, I would agree with you!
Re: (Score:3)
Because they are both used with API compliant software to accomplish specific computer behavior, including I/O, programmed operations, and back end integration with style guides, QA verification, and clear functional success of the computer application if misused or if ocrrectly implemented. They may not be Turing complete and able to compile their own interpreters written in their own language as source code, but they're certainly "languages" as far as listing them on a resume or planning training are conc
Re:Programming? (Score:5, Interesting)
Next up: the TXT, NFO, INI, and CSV programming languages!
Re: (Score:2)
A CSV based scripting/DSL language could actually be viable, though terribly ugly. Admitedly HTML & CSS are arguable. You can write some pretty elaborate selectors in CSS, but I'd still consider it a declarative markup over a language. Its probably just a conspiracy to keep bash outside the top 10!
Re: (Score:2)
HTML+CSS is turing complete
http://lemire.me/blog/archives... [lemire.me]
Re: (Score:3)
HTML+CSS is turing complete
http://lemire.me/blog/archives... [lemire.me]
Well, so is TeX, [wikipedia.org] but you'd be insane if you used it for serious programming. The same goes for HTML+CSS.
Re: (Score:2)
My understanding, though I haven't looked into it myself, is that CSS is Turing-complete.
Javascript copies (Score:5, Informative)
Re: (Score:2)
Excellent point.. If github does de-duping, they might be able to extract such stats.
De-duping? They don't even recognize languages correctly. They list that I have Objective-C code in some of my projects, but I have no Objective-C code in any of my github projects.
Re: (Score:2)
Why should I accept a pay cut for you?
You shouldn't. When a recruiter contacts you, ask him for $1000k.
Since when are HTML & CSS programming language (Score:3)
They're page layout and style description languages, NOT programming languages. They have no place on this list. Otherwise you might just as well include troff & latex too.
Re: (Score:2)
LaTeX is astonishingly versatile (as evidenced by the underlying TeX \primes demo macro for example) and I spent way too much time 'coding' in it to make my thesis look pretty for example.
And plenty of non-imperative computer languages still require skills of scope and data design etc etc, from Prolog through SML to any of the functional languages, never mind the JS/HTML/DOM/CSS nexus.
So I think you protest too much.
Rgds
Damon
Re: (Score:2)
Small sample size in the early years? (Score:2)
This relates to the evolutionary process of random drift, and in particular to one manifestation of it known as the founder effect.
Interpreted labguages (Score:1)
I found it very interesting that 9 of thr 10 top languages are interpreted rather than native code labguages. That seems to indictate a strong focus on the part of the projects/people who use GitHub.
Re: (Score:1)
Re: (Score:1)
# github projects != language popularity (Score:4, Insightful)
Re: (Score:1)
Why would somebody post tutorial code to Github? That makes absolutely no sense...
Re: (Score:1)
And InfoWeek Has Posted the Inverse (Score:2)
http://www.informationweek.com/it-life/11-programming-languages-that-lost-their-mojo/d/d-id/1321678?f_src=informationweek_informationweek_mostpopular_fornewsletters&_mc=NL_IWK_EDT_IWK_daily_20150822&cid=NL_IWK_EDT_IWK_daily_20150822&elq=70d72d20140f4602a92820472e5c17fa&elqCampaignId=16221&elqaid=62985&elqat=1&elqTrackId=35c8af5f447d4d2a8f19ad601c98a3be/ [informationweek.com]
Re: (Score:3)
Well, that's depressing. Great languages like Ada, Algol, Pascal, Modula-2, and Logo, and in their place we have PHP and Javascript.
Re: (Score:2)
HTML is a programming language? (Score:4, Informative)
No VB?! (Score:1)
N/T
Re: (Score:2)
Since Github reports half of my Perl 5 code as Perl 6 (all my test files), neither show up on the report. But, keep thinking that as you want.
popularity lol (Score:1)
c is far too powerful for most of the script kiddies pretending they are real programmers these days.
If a programming language doesn't hold their hand, actively keeping them from drawing outside the lines with their little coding crayons, they can't write code to save their lives.
But that's ok. That's why they can't take my job. :)