Beta
×

Welcome to the Slashdot Beta site -- learn more here. Use the link in the footer or click here to return to the Classic version of Slashdot.

Thank you!

Before you choose to head back to the Classic look of the site, we'd appreciate it if you share your thoughts on the Beta; your feedback is what drives our ongoing development.

Beta is different and we value you taking the time to try it out. Please take a look at the changes we've made in Beta and  learn more about it. Thanks for reading, and for making the site better!

Programming Language Diversity On the Rise

Soulskill posted about 5 months ago | from the digital-melting-pot dept.

Programming 177

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

Sorry! There are no comments related to the filter you selected.

A good sign (3, Insightful)

amn108 (1231606) | about 5 months ago | (#46943317)

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

I think it is a good sign!

Re:A good sign (5, Interesting)

TheGratefulNet (143330) | about 5 months ago | (#46943487)

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.

Re:A good sign (5, Insightful)

NoNonAlphaCharsHere (2201864) | about 5 months ago | (#46943595)

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

Re:A good sign (1, Insightful)

Anonymous Coward | about 5 months ago | (#46944835)

Last job, I had to my "core" programming in java (which I knew) and javascript (which I didn't) while also doing maintenance on PHP, VB and C# (ditto). Learning them was not a problem. Constantly switching IDEs, or editors, idiosyncrasies, and libraries certainly was.

Re:A good sign (1)

Anonymous Coward | about 5 months ago | (#46943719)

"Fad" and "Favorite" are key to this discussion. New or minority languages should be evaluated with the goal of adding the useful ones for when there's a task they are suitable for and would be better at than the ones used for most other things. The only times a language should be used be a single person are if they're writing utilities for themself or if there hasn't yet been the chance to get anyone else learning it.

And I was in a similar but opposite position to you earlier this year - something was needed which would be a simple task with HTML and JaveScript, but as they're not our core languages it had to be written in C#, taking far longer and bringing a heap of problems with it.

Re:A good sign (2)

serviscope_minor (664417) | about 5 months ago | (#46943761)

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.

Re:A good sign (2, Insightful)

hax4bux (209237) | about 5 months ago | (#46943953)

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.

Re:A good sign (1)

K. S. Kyosuke (729550) | about 5 months ago | (#46944283)

And to use your example, if most languages are more alike than not, why do we need another one?

Because the rest of them are not?

Re:A good sign (-1)

Anonymous Coward | about 5 months ago | (#46944625)

K. S. Kyosuke ya bigmouth: Yer bein called out (why ya runnin "forrest"?) http://slashdot.org/comments.p... [slashdot.org]

Re:A good sign (-1)

Anonymous Coward | about 5 months ago | (#46945465)

Fuck off moron!

Re:A good sign (-1)

Anonymous Coward | about 5 months ago | (#46945571)

I'll call the parent "APK fails again!"

Re:A good sign (-1)

Anonymous Coward | about 5 months ago | (#46945619)

Nobody is interested in validating your need for acknowledgement, try fulfilling your needs through a relationship with a real person rather than pursuing it through pseudonymous people on the internet.

Re:A good sign (0)

Anonymous Coward | about 5 months ago | (#46944817)

Time is of the Essence...

Re:A good sign (1)

plopez (54068) | about 5 months ago | (#46943801)

I see your point. But likewise what tools you use depends on what you are working on. To use an analogy; carpenters use a different set of tools than plumbers, plumbers use different tools than electricians, electricians use different tools than landscapers etc. There may be overlap but the tools you use will depend on your problem domain. Over the years my jobs have shifted to different areas and consequently my tools have also.

Re:A good sign (-1)

Anonymous Coward | about 5 months ago | (#46945207)

Of course, the carpenter, the plumber, and the electrician all use the same tool when duck away with your mom for a quick one.

Re:A good sign (2)

MoonlessNights (3526789) | about 5 months ago | (#46943977)

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

Re:A good sign (1)

friedmud (512466) | about 5 months ago | (#46945535)

Are you trying to say you don't find any value in GitHub?

I'm (semi) with you on knew languages... but new platforms like GitHub have totally changed how people develop open source projects...

If you haven't tried it... then you REALLY should.

Re:A good sign (2, Insightful)

Anonymous Coward | about 5 months ago | (#46946345)

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

Re:A good sign (1)

JanneM (7445) | about 5 months ago | (#46944175)

"I'd error on having 3 languages in the shop and that's about all that you'd need for most things."

That sounds on the low side to me. One low-level, hardware-linked language (C or C++); one dynamic language (Python, Ruby); a functional language (Scala, Scheme, Haskell); one for numerics (R, Matlab/Octave); one embedded language (Scheme, Lua); client-side web (javascript); database access (SQL); and of course the platform-specific major languages you can't get around: Java, C# and Objective-C. I'm sure you can add other categories to the list as well.

Re:A good sign (0)

Anonymous Coward | about 5 months ago | (#46944391)

Which platforms were Java and Obj-C specific to again?

Re:A good sign (0)

JanneM (7445) | about 5 months ago | (#46945159)

"Which platforms were Java and Obj-C specific to again?"

The wording was unclear on my part; you pretty much need to use Java to develop for Android, and Objective-C to develop for IOS. Those platforms use those languages specifically, not that they are used only on those platforms. You can use a few other languages to develop Android or IOS apps if you insist, but with more pain, less support, and you'll normally still have to write minor parts in these languages to make it a complete application.

Re:A good sign (1)

K. S. Kyosuke (729550) | about 5 months ago | (#46944273)

If you're a greyhair, surely you remember that there were people a long time ago who were writing compilers in Fortran...pardon, FORTRAN...because that was the only tool they had? Well, we've sort of rebooted to that time ten years ago, only our FORTRAN and COBOL were named C++ and Java.

Re:A good sign (-1)

Anonymous Coward | about 5 months ago | (#46944613)

K. S. Kyosuke ya bigmouth: Yer bein called out (why ya runnin "forrest"?) http://slashdot.org/comments.p... [slashdot.org] and that's the stupidest and least apt description I seen of the very example languages that I have EVER seen. Only a talk a lot and never put his hands on either would have much such an erroneous comparison!

The right 3 languages (2)

BadDreamer (196188) | about 5 months ago | (#46944855)

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.

Re:A good sign (1)

phantomfive (622387) | about 5 months ago | (#46945693)

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.

Throw 'em for a loop and write your next project in APL. They will cower in fear at your prowess.

Re:A good sign (1)

AJWM (19027) | about 5 months ago | (#46946535)

+1 nostalgia if I had the mod points. Heck, there was a time (about 3 decades back) when I was being paid to teach APL (or APL, as properly rendered).

Mind, the bit-arrays used in ElasticSearch filtering strike me as a very APL-like idiom. You never know when something you learned back when will prove useful again.

Re:A good sign (0)

Anonymous Coward | about 5 months ago | (#46946085)

slashdice has too many tools.

Re:A good sign (1)

grcumb (781340) | about 5 months ago | (#46946169)

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.

As a 50-year-old, I'm inclined to agree with the statement that there is such a thing as too many tools, but not for the same reason. Expertise and experience are important, no question about that. But both are often easily transferred from one language or framework to the next. For my part, I'm quite enjoying working with NodeJS, Angular, NoSQL and a bunch of things that take significantly different approaches to problems I've been solving my entire career.

But a problem I face quite often these days is trying to apply the toolkit approach with newer software. On any decent POSIX-supporting platform, you can generally leverage libraries and modules for just about anything and still expect at least a modicum of consistency. Each tool has its own quirks and foibles and strengths, all of which need to be understood, but with a bit of time and perseverance, these can be coped with.

But the application I'm working on right now requires the integration of an Angular framework with UI elements derived from JQuery, D3 and Bootstrap as well as one or two products of the inspiration of some young developers who are clever but sadly too confident in their own abilities. Trying to reconcile them all has resulted in a LOT of time spent pondering, refactoring and coping with bugs that inevitably result from using the tool in a way that wasn't foreseen by enthusiastic but inexperienced developers.

So far, the benefits have outweighed the costs, but there's a fine line between saving time by appropriating others' tools and wasting time shaving a very big, hairy yak.

I like many of the new technologies I'm using, and I love learning new tricks, notwithstanding the few grey hairs remaining on my shining dome. But yes, there is such a thing as too many tools. And many young developers these days are going to have to learn that the hard way.

Re:A good sign (2)

Dutch Gun (899105) | about 5 months ago | (#46943615)

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.

Re:A good sign (1)

Rising Ape (1620461) | about 5 months ago | (#46943905)

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

Indeed, but it's not only you that needs to be disciplined and consistent - it's everyone in the team that's working on the project. I had a nightmare of a time working with C++ code (CERN's Root package) that obviously had been people with a very different idea of sensible programming practice. It was a lot quicker, easier and more reliable to ignore it all and write mostly outside it, even if it meant reinventing the wheel a lot.

Plain C isn't nearly as opaque and unpredictable as C++ can be, but then I write mostly in Fortran these days (90 or later) which I suspect doesn't appear too high on lists of most used languages.

Re:A good sign (1)

ericloewe (2129490) | about 5 months ago | (#46944011)

The only reason plain C isn't typically as opaque as C++ is that there isn't much to try. The IOCCC is proof enough that the problem wasn't created by C++.

Re:A good sign (1)

Dutch Gun (899105) | about 5 months ago | (#46945815)

The only reason plain C isn't typically as opaque as C++ is that there isn't much to try. The IOCCC is proof enough that the problem wasn't created by C++.

The primary thing the IOCCC proves is that C doesn't restrict you from doing crazy things with macros and variable names, and that it doesn't care about whitespace. There's certainly a lot of clever coding represented in that contest, but a good deal of the obfuscation is simply related to formatting (i.e. making ASCII art from the source code, etc).

Re:A good sign (1)

Dutch Gun (899105) | about 5 months ago | (#46944177)

Indeed, but it's not only you that needs to be disciplined and consistent - it's everyone in the team that's working on the project. I had a nightmare of a time working with C++ code (CERN's Root package) that obviously had been people with a very different idea of sensible programming practice. It was a lot quicker, easier and more reliable to ignore it all and write mostly outside it, even if it meant reinventing the wheel a lot.

Yep, very true. I've seen both extreme cases - in one place I worked, the code was rather a mess, with poor design choices and a lot of hard-coded nonsense throughout the code. At the last place I worked, the very large codebase was exceptionally clean and well written, even though using largely C++ 98-compliant features and styles (that tends to be the case for most older projects). The coding standards were well documented and adhered to rather strictly.

In fairness, nearly any large project can turn into a mess, no matter what language is used. I don't think that's necessarily unique to C or C++, but those two languages tend to be used on many of the largest and most complex projects. Still, bad or inexperienced programmers can certainly exacerbate the problem with unwieldy and unnecessary inheritance chains and horribly over-stuffed "kitchen sink" type classes, and those can be extremely hard to untangle.

Plain C isn't nearly as opaque and unpredictable as C++ can be, but then I write mostly in Fortran these days (90 or later) which I suspect doesn't appear too high on lists of most used languages.

In my view, the C++ language itself isn't really opaque or unpredictable at all - just about anything you do has a highly predictable run-time cost and effect, which is one reason why game developers tend to use it. C and C++ are somewhat unique in sticking to a zero-overhead principle as part of the core language design. That is, you shouldn't pay for language features you don't want to use, and designed language features should have a well understood and predictable run-time cost. That certainly doesn't mean it's necessarily *easy* to understand, but it is largely predictable.

Re:A good sign (0)

Anonymous Coward | about 5 months ago | (#46945423)

How about a set of methods built into every API to translate standard classes and methods from each language to every other language, Problem Solved! That will be $89,999.99. Check, cash or money order!

This is great news (3, Interesting)

SuperKendall (25149) | about 5 months ago | (#46943319)

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.

Re:This is great news (1)

digitalPhant0m (1424687) | about 5 months ago | (#46943703)

Honestly amazing things can now be done in a variety of languages.

Really? I thought they were all limited by the underlying hardware.

Last I checked they all basically did the same thing(s), just in different ways.

Re:This is great news (1)

SuperKendall (25149) | about 5 months ago | (#46945317)

Last I checked they all basically did the same thing(s), just in different ways.

BASIC is over there shivering in a corner, along with the developer that tried to build a web server using it that handled a few million requests per hour...

What were you saying again?

Re:This is great news (1)

Tablizer (95088) | about 5 months ago | (#46943769)

But a lot of programming language design is about trade-offs and personal preference. When I probe others on why they like a particular feature that I find odd or "bad", it often turns out to be a personal preference. Different people think and process symbols differently.

It may be merely an increase in prima-dona Picasso's rather than real progress. I'd like to see more discussion about features and trade-offs BEFORE new languages are made. Let's document our decision process and boo-boo's to avoid reinventing the wheel and reinventing design mistakes.

Re:This is great news (1)

SuperKendall (25149) | about 5 months ago | (#46945325)

increase in prima-dons Picasso's

Sounds like progress to me. The greatest progress always comes when the artists are involved somehow.

Re:This is great news (1)

Tablizer (95088) | about 5 months ago | (#46945945)

Well, I've seen some esthetically fantastic websites that had horrid usability scores in terms of practical navigation and reading issues.

Parsimony and functional (practical) clarity are things many artists do not put high value on compared to esthetics, entertainment, and mental titillation.

Re:This is great news (0)

Anonymous Coward | about 5 months ago | (#46945591)

> Competition results in better organisms, and this is equally true in programming languages as it is in life...

There's no evidence of EITHER of those assertions being true. You make a generalization without defining something as simple as "better" then go on to say that conditions result in more of it. Evolution doesn't result in smarter slashdotters.

Re:This is great news (1)

AzP (1499773) | about 5 months ago | (#46946943)

And it's better mentally to learn a number of languages so the variety helps to create more seasoned programmers in the long run.

I'm not sure I agree with this, I know there's a huge "Learn a new language at least every fortnight to grow your beard enough to compete with the other flannel wearing, home-brewing, bearded kids at your local food truck", but at the same time I feel there's great value in sticking with a language that's generic enough for lots of stuff, and learning the ins and outs of it. But I'm a C++ nerd, so I guess I can blame myself for loving a language (including the STL) that is nearly impossible to grasp fully.

I do agree that it's great to learn a couple of languages, but when going through university, they pushed one language per course: Java, C++, C, C#, VB.Net, Lisp/Scheme (hurraaah! I might mention that it was quite dead at the time, but lo and behold, the Zombie arises!), Prolog, JavaScript, MatLab, perl, html/css, LaTeX, etc. Python hadn't exploded at the time, nor had Haskell (hence the Scheme I guess, but it was in an AI course, where Scheme was still commonly used, according to the professor).

Sure, some of those languages are just variations of the same thing, and it is easy to learn the difference when knowing one of them, but constantly switching language was more confusing than rewarding. We also constantly had to learn a new framework for doing stuff, which often had us struggling more with the actual language and the proper way of using it (which was probably off by a mile anyway) than focusing on the problem at hand.

I agree that knowing a couple of languages is great, and I don't count XML, HTML/CSS, LaTeX, etc, as languages, but one or two compiled OO-languages (C/C++/C#/Java) combined with a scripting one (Python? Perl? Bash? Perhaps I shouldn't compare Bash to Python... :) ) and a functional one is probably enough for most people. But that might just be because I suck at Haskell, and I'm bitter.

A friend/colleague of mine goes on daily rants, screaming "Why can't everybody not just program in C++?! It's the best language there is, there's no need for other languages!", but I wouldn't go that far ;)

Well, after writing this, I've noticed that you actually wrote "a number of languages" which can be interpreted as the exact same thing I just wrote. Well, to heck with you all!

Can a brother get some Python round here? (0)

Anonymous Coward | about 5 months ago | (#46943323)

I say we launch an affirmative action program for Python programmers. Fight the power!

Re:Can a brother get some Python round here? (1)

Bigbutt (65939) | about 5 months ago | (#46943447)

Nah. If I don't want to use Python, I shouldn't be forced to use it.

[John]

Re:Can a brother get some Python round here? (1)

jonyen (2633919) | about 5 months ago | (#46943849)

affirmative_action.py
#!/usr/bin/python

def affirm(lang):
print "Go " + lang + "!"

affirm('Python')

./affirmative_action.py
>> IndentationError: expected an indented block

Alas, it appears that the Slashdot commenting editor is biased against Python code...

Selection bias much? (5, Informative)

bsdasym (829112) | about 5 months ago | (#46943353)

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.

Re:Selection bias much? (3, Funny)

ArcadeMan (2766669) | about 5 months ago | (#46943409)

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

Re:Selection bias much? (2)

LWATCDR (28044) | about 5 months ago | (#46943419)

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

Re:Selection bias much? (5, Insightful)

Sarten-X (1102295) | about 5 months ago | (#46943525)

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.

Re:Selection bias much? (0)

Anonymous Coward | about 5 months ago | (#46944047)

CSS is a programing language?

Yes. It's not Turing-complete, but it's still a language for defining instructions.

Nope. It's a language, but not a _programming_ one.

Re:Selection bias much? (0)

Anonymous Coward | about 5 months ago | (#46944061)

A comparison by lines of code would show the C family in a much more favorable light.

Why? Because you need 10 times as much code to do the same thing? ;-)
[C#-Rant] C# is a walking dead. Most C# opensource projects are funded by MS, otherwise it would be even more dead. Want to bet on Windows-only in this time? (don't come with mono, check benchmarks first). [/C#-Rant]

Re:Selection bias much? (0)

Anonymous Coward | about 5 months ago | (#46946623)

When I learned C we used to have competitions to see who could write a function in the least number of lines, often creating some obfuscated piece of shit that worked perfectly on one line. It was a piece of shit because it wasn't clear what you were doing and someone later, even yourself, would come back later and say, 'what the fuck was I doing there'. If you have an unreasonable number of languages the chances that someone ten years from now won't know what the fuck your lambda or other ridiculous encapsulation of a 'for loop' is doing is very high (or even more years... the oldest code I saw reviewed in a production environment was originally written around 35 years before). Just because you can put 10 lines of code on one line doesn't mean you should. The compiler or run time engine will make sure the object/bit code is optimized whether you write it in one line or not. The difference is that other people will be able to maintain it. So your argument isn't worth a hill of beans if you actually want something useful in a real production environment. Something built to last. Just because you can do something doesn't mean you should, if you have any intelligence.

Re:Selection bias much? (0)

Anonymous Coward | about 5 months ago | (#46944275)

I'd argue that C and C++ are still wildly popular (and in many cases, the only really appropriate choice) for low-level infrastructure programming (kernels, network daemons, filesystem implementations, etc). Go is stepping into some of this territory slowly (other than serious kernels) but has a *long* way to go (pun intended) over many years. They're also wildly popular for implementing highly-efficient library routines used in $your_scripting_language_of_choice. It's pretty much a win/win scenario when some publishes a Python or Perl module that uses C for an efficient implementation of a performance-critical algorithm.

Re:Selection bias much? (1)

Beck_Neard (3612467) | about 5 months ago | (#46944635)

There's D, Rust, and Go, to name a few. All of which are designed for systems programming and are far more modern than C and much safer as well.

Re:Selection bias much? (0)

Anonymous Coward | about 5 months ago | (#46945063)

C or C++ is dead language or will be by 2023...

Re:Selection bias much? (1)

pentagramrex (1125875) | about 5 months ago | (#46944307)

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.

Bah.

You can slap projects together easily in c# and c++.

C++ is my favorite scripting language because it has good debuggers on all platforms.

Admittedly C++ isn't the language of choice for slapping together a webpage, on the other hand it can do that and outperform anything else.

C# and C++ have years of broad libraries behind them.

Choose the tool for the job, but don't neglect the ones that have real substance (I'm looking at you, PHP).

BTW, Github is no measure of what people are doing, even if it hosts some cool projects. Most of my stuff is for companies I work for, and you can't see it online, as is most code. The most important open source projects don't live there either.

Rob.

Re:Selection bias much? (0)

Beck_Neard (3612467) | about 5 months ago | (#46944587)

C++ is not elegant for larger projects. It is not elegant for any projects. And neither, honestly, is C. I can understand working with these languages when you're working with existing projects, but there is absolutely no reason to use C/C++ anymore for a new project. Believe me, I know, I programmed in C/C++ for 15 years.

It's time to move on.

Re:Selection bias much? (1)

jones_supa (887896) | about 5 months ago | (#46945091)

Apparently you are modded down because the so called hive mind (wavy hands) does not agree.

Anyway, interesting and proud comment. Thank you for it. But out of curiosity, what language would you prefer, then?

Re:Selection bias much? (1)

Beck_Neard (3612467) | about 5 months ago | (#46945335)

It depends on what you want to do and what your emphasis is on (speed, security, access to bare hardware). I don't want to advocate any particular language here. But for anything you want to do, even for systems programming, there are alternatives (Go, Rust and D are just a few examples, though I personally don't recommend D). Especially, LLVM has allowed a number of new C alternatives to arise that are just as fast as C.

Re:Selection bias much? (2)

AzP (1499773) | about 5 months ago | (#46946959)

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?

Re:Selection bias much? (1)

Beck_Neard (3612467) | about 5 months ago | (#46947187)

I'm not against using existing C libraries. Most libraries I (and everyone else?) use on a day-to-day basis are C libraries, or wrappers around C libraries. I'm talking about using C for new projects.

If you're talking about language 'maturity', sure, C is mature. But an embarrasing proportion of new exploits that are found every day are simple buffer overrun exploits caused by that damned C function memcpy() somewhere in the code. 30 years of experience apparently haven't been enough to get people to stop making the same C coding mistakes. Maturity has zero bearing on reliability or bugs. Most bugs occur OUTSIDE the language implementation and standard library. Really, 'maturity' is a false god that people chase and does nothing to make you a better coder. PHP is also mature.

Really, I could go on an on.

You can do great things with C. The linux kernel is a nice piece of C code. But it takes time, discipline, and falling flat on your face many, many times. You are a human and you will make mistakes. Why go through all that hell? You should use a language that keeps you from doing stupid things.

Re:Selection bias much? (1)

angel'o'sphere (80593) | about 5 months ago | (#46944749)

Sigh, CSS is not a programming language ... it is simply a 'definition' language like e.g. EBNF (to a much lesser degree even).

Re:Selection bias much? (1)

u38cg (607297) | about 5 months ago | (#46947193)

Actually, CSS with a little accompanyine HTML and JS to turn the handle can run a simple state machine that is Turing complete, though it wins an award for being inferior to Brainfuck.

Re:Selection bias much? (1)

Anonymous Coward | about 5 months ago | (#46943441)

Indeed; since 'the code is in github' is about the only way a minority javascript preprocessor^W^Wlanguage gets any traction, this is actually something of a self-hosted distortion of the truth.

Re:Selection bias much? (1)

Darinbob (1142669) | about 5 months ago | (#46944547)

It also doesn't tell much about what is really used by most engineers. Some of those projects have hundreds of developers, some of them only have one. Long term stable projects are given the same weight as the project that was created yesterday because someone who drank too much.

Re:Selection bias much? (1)

mooingyak (720677) | about 5 months ago | (#46943697)

Agreed. My conclusion from the data is that github is getting more mainstream.

Re:Selection bias much? (1)

Anubis IV (1279820) | about 5 months ago | (#46943819)

Indeed. Most of the github projects I've interacted with over the years started out as hobbyist projects, and most of those were ones the developer did to scratch their own itch while getting in some practice on a language they didn't know as well. Granted, there are plenty of larger open source projects or business-level tools using github as their repository, but they're a tiny minority compared to the innumerable hobby-time projects a developer started off as a practice exercise or a fun side activity.

I'd be much more interested in stats like the number of commits per language or the average number of commits per unique contributor per language, since those would give us a much better sense of the sustained activity levels surrounding each language, rather than the number of new projects per language, which can be swayed easily by minor projects that few use or care about.

Re:Selection bias much? (1)

QRDeNameland (873957) | about 5 months ago | (#46943829)

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 other thing that makes such a comparison fairly uninformative is that the vast majority of publicly accessible GitHub repos are surely small hobbyist/academic projects, so the stats are going to skew towards the tools likely to be used by hobbyist/academic developers. And since new languages arise all the time and old languages never die, it's not really very surprising that by the raw number of projects that GitHub would show increasing diversity on that front. If someone pushes a 3 line Brainfuck experiment, then the language diversity has increased, but I don't think that tells you much.

Simple explanation: (1)

Tablizer (95088) | about 5 months ago | (#46943395)

The Internet makes it easier to know about other choices and/or distribute other choices.

Point and drool over security... (2, Interesting)

Anonymous Coward | about 5 months ago | (#46943401)

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.

Re:Point and drool over security... (1)

rubycodez (864176) | about 5 months ago | (#46943533)

insecure and vulnerable code can be done in Ada, you are silly

Re:Point and drool over security... (0)

Anonymous Coward | about 5 months ago | (#46943867)

Could you please rephrase that in the form of a sentence?

Re:Point and drool over security... (0)

Anonymous Coward | about 5 months ago | (#46944771)

You aren't smart enough to interpret and contribute, so hush now.

Re:Point and drool over security... (1)

Anonymous Coward | about 5 months ago | (#46943749)

Cobble together something which works and can be sold means that you keep your job. Attempt to write the most perfect and secure software but run out of money because you've got nothing to sell means you lose your job.

Eh.. not really (5, Informative)

Anonymous Coward | about 5 months ago | (#46943413)

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

Re:Eh.. not really (1)

Anonymous Coward | about 5 months ago | (#46945103)

-1 Not enough jQuery [doxdesk.com]

Re:Eh.. not really (1)

phantomfive (622387) | about 5 months ago | (#46945715)

C# is the most popular language on StackOverflow.

Fragmentation == Diversity .. (1)

lippydude (3635849) | about 5 months ago | (#46943499)

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

Looks at CodePlex... (1)

ndykman (659315) | about 5 months ago | (#46943567)

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.

GitHub's language ID can be misleading (4, Informative)

Trepidity (597) | about 5 months ago | (#46943589)

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

Re:GitHub's language ID can be misleading (1)

Anonymous Coward | about 5 months ago | (#46943667)

git submodules fix that. But there's just so many morons who are afraid of reading git's documentation that this feature gets underused or incorrectly used at times. And yes, I use it correctly and don't have any problems with it. Or didn't you know you always have to clone with --recursive?

Re:GitHub's language ID can be misleading (1, Insightful)

Trepidity (597) | about 5 months ago | (#46943925)

Using a git submodule just to throw in jquery.min.js is a bit overkill. Especially since it has no real advantages besides fixing GitHub's statistics.

Re:GitHub's language ID can be misleading (0)

Anonymous Coward | about 5 months ago | (#46946951)

Overkill in what? In that it actually tracks "a different project with a different storyline" instead of mangling everything into a single tree? In that you can easily keep updating it to whatever version you want? Seriously, if adding a switch to your git clone command or default git preferences is overkill, please stop using computers. It's overkill for you, not for git, nor for your computer, neither for github.

JVM-based languages like Scala, Groovy, Clojure (2)

AlienSexist (686923) | about 5 months ago | (#46943655)

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

Drawing conclusions from github? (0)

Anonymous Coward | about 5 months ago | (#46943677)

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 told you so. (-1, Troll)

VortexCortex (1117377) | about 5 months ago | (#46943735)

I keep telling you how stupid you're being, but you damn dirty apes don't actually want to solve any problem. [slashdot.org]

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.

Yeah, I remember this idea. (1)

mbkennel (97636) | about 5 months ago | (#46944431)

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.

Programming, not programming in a language (1)

jgotts (2785) | about 5 months ago | (#46943943)

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.

Re:Programming, not programming in a language (2)

Kittenman (971447) | about 5 months ago | (#46944133)

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:

Why not use C# for large business App (-1)

Anonymous Coward | about 5 months ago | (#46944123)

Just check benchmarks, e.g. vs Java: [techempower.com]
- 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 .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).

Prefer the TIOBE index (1)

landoltjp (676315) | about 5 months ago | (#46944247)

I Prefer this broader index: http://www.tiobe.com/index.php... [tiobe.com]

Re:Prefer the TIOBE index (0)

Anonymous Coward | about 5 months ago | (#46944309)

I get this: TypeError: $(...).highcharts is not a function

Re:Prefer the TIOBE index (1)

Cesare Ferrari (667973) | about 5 months ago | (#46946835)

I always like the way that C, C++ and objective C are split out to give the others a chance.

How much of this is due to CLR/JVM flexibility (1)

rsborg (111459) | about 5 months ago | (#46944597)

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

translation (0)

Anonymous Coward | about 5 months ago | (#46945719)

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

"Diversity"? (2, Informative)

Anonymous Coward | about 5 months ago | (#46946273)

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've had a few (0)

Anonymous Coward | about 5 months ago | (#46946717)

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.

Load More Comments
Slashdot Login

Need an Account?

Forgot your password?