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)
I keep telling you how stupid you're being, but you damn dirty apes don't actually want to solve any problem.
Inevitably you eventually come around to the natural and correct way of thinking, as proven by information theory and dimensional symbolics, but you do it by a circuitous route of problem space evolution instead of just THINKING and intelligently designing your approaches. Just look at the damn www!
It's not fucking hard. All programs must run as operation codes anyway. So you can have infinite languages without problem if you use a single Turing Complete Virtual Machine opcode as your intermediary format for all programs. Language compilers are breeching the hardware abstraction layer boundary and generating machine code from the intermediary formats. That's stupid. Hardware abstraction is the OS's job. You'll see. Everyone's going that way eventually. Then every program will be cross platform AND run native opcodes. You damn apes are so back-assward you have chips doing microcode in real time just to get the independence they need from program representations in order to advance (in a stifled fashion). You approach every fucking solution from the ass end -- That's the end your shit comes out, so GIGO covers the whole "solution" in excrement! Eg: Now you've even got VM OS's that don't even link programs into machine code at install time, so you waste fucking processing power -- They seemed like they would get Android right by doing endian conversion of primitives and resolution of symbol names at install time... but that was only PART of the solution, dumbasses.
Some levels of abstraction are STUPID to avoid. Abstract your languages' "compiled" output from the hardware representation and you can solve this problem and more: Give the OS control over optimizing programs for its environment and you can eliminate / discover lots of classes of bugs, like buffer overrun and stack smashing... but NoooOOO, for purely monkey-minded reasons you will have to learn shit the hard way.
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.
Just check benchmarks, e.g. vs Java: .NET a hard sell to informed customers (if they need large fast stuff). And then there is vendor lock-in and available hardware (need a 1024 core machine for your solution, good luck if it is on Windows).
- Minimum latency for each framework (1.2 ms vs much much more)
- Throughput (200k vs at most half that), requirements...
- Alone this two points make
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.
[gay-sex-access.3om]? [amazingkreskin.com] 7o work I'm doing, (I always bring my
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
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.
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!
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!
Ran dry on sockpuppets and modpoints to downmod others with to hide your fuckups K.S. Kyosuke? Answer = Yes. Hahahaha, You lose/fail.