C Programming Language Hits a 15-Year Low On The TIOBE Index (businessinsider.com)
Gamoid writes: The venerable C programming language hit a 15-year low on the TIOBE Index, perhaps because more mobile- and web-friendly languages like Swift and Go are starting to eat its lunch. "The C programming language has a score of 11.303%, which is its lowest score ever since we started the TIOBE index back in 2001," writes Paul Jansen, manager of TIOBE Index. With that said, C is still the second most popular programming language in the world, behind only Java. Also worth noting as mentioned by Matt Weinberger via Business Insider, "C doesn't currently have a major corporate sponsor; Oracle makes a lot of money from Java; Apple pushes both Swift and Objective-C for building iPhone apps. But no big tech company is getting on stage and pushing C as the future of development. So C's problems could be marketing as much as anything."
Rust will be the new language everyone uses in 2020.
I don't need a corporate sponsor or a sexy advertising campaign to figure out that if I want something to run on most Linux distributions, as well as the BSDs with minor modifications, C is the obvious choice. Most of the languages being heavily promoted are garbage, that's why companies have to spend money to get anyone to use them. Robust languages don't need a marketing team.
From TFS, "c's problems": c doesn't have "problems"; programmers who don't use c have problems. Such as their code is slow, overweight, wasteful of resources, and uses only a fraction of the potential available at the low level.
But you keep holding that warm, safe hand. Momma will lead you right to the rubber room. :)
Or, you know. You could actually learn how to write good code at the most powerful level. That's a radical thought.
... C is running a hell of a lot more important applications, is the driving force behind nearly every operating system, and is undeniably the most used programming language in the history of life as we know it.
But, y'know, numbers, I suppose.
The more I can charge.
C is great - love it and if somebody shits on it, even more so!
This really is a moronic article. Programming language choice is not about "popular" or "cool" - it's whatever tool gets the job done. The article also takes a whack at COBOL and Fortran. They might be old but they have been around a long time and are still in heavy use in many areas. The article also ignores things like microcontrollers, arduinos etc whose development tooling invariably uses C. The whole thing reads like it was written by a newly minted graduate.
C has what problem? Lack of social media popularity with hipster morons? It's a programming language, not a popularity contest. This kind of shit lately on slashdot really starts getting old. Who runs this place?
Us C programmers have already written everything there is to write.
Feel free to reinvent the wheel in various toy languages if that is what makes you happy, I soon will retire and won't care.
“Common sense is not so common.” — Voltaire
Basically the calculation comes down to counting hits for the search query "language programming"
It doesn't matter if those results are positive or negative. All that matters is the number. If you make a language and get ten billion people to post on indexed sites about how badly your language sucks, your language would take the top spot on the TIOBE Index.
So... yeah. This is about as lame of an index as you could possibly come up with.
Why will Rust succeed where D has failed? Why not Go, Nim(rod), Scala, or Haxe?
(I think I already know why not Erlang, Haskell, or OCaml)
PS - omitting of python, ruby, js, and groovy is intentional
“Common sense is not so common.” — Voltaire
Yeah, it sucks, but, then, C not an easy programming environment.
Pointer arithmetic aside, I remember the days when you had to run a preprocessor to be able have a C program to query a database. As bad as the code we wrote had looked for consumption by the preprocessor, the code coming out the other end of it was barely readable and nearly impossible to debug and profile.
So we had to write stubs that return baked database data structures during development to keep our sanity and be able to even debug the thing. We'd defer the embedded SQL part until later in the implementation phase, and that mess introduces problems of its own, like stack overflows, buffer overruns, and mutual exclusion deadlocks (along with other multi-threaded problems which are another can of worms).
It was a cold, wet, hairy ball of pain and panic that I'm glad to see has gone away.
C++ is kind of better, Java and C# are simply amazing, and the newest scripting languages (am I still allowed to call them that?) are just phenomenal.
Kriston
Not everything needs to be written in C, of course. But being fluent in C before starting other projects in less demanding languages (memory management, pointers, ....) like Java offers some guarantees regarding the developer competences.
Slashdot, fix the reply notifications... You won't get away with it...
From TFS, "c's problems": c doesn't have "problems"; programmers who don't use c have problems.
That is actually what TIOBE measures. It counts Google searches. C programmers are smart enough that they don't need to search for answers on Google, or they use a better website, such as Stackoverflow.
We use neither google nor stack overflow, we have K&R on PDF.
Java is the new COBOL. Given we need a language for that role, I actually think Java's pretty good.
As one of my professors once argued, its usually the accompanying libraries that make or break a language in more recent years. Java's advantage is simply a "more capable" "standard library".
Also we went recently through a phase in computer science education where people were really only taught java. Its the only tool in their toolbox.
Old FORTRAN code lives on behind the GUI or web interface. I once ported some old mainframe computational chemistry code for a very large international corporation. They wanted their legacy code moved from mainframes to MS Windows. At startup their legacy FORTAN code interactively queried for six parameters. I created a Windows front end in C that had a dialog box with six entry fields. After the user pressed the OK button and the six parameters passed verification in the C code they were plugged into the expected input variables in the legacy FORTRAN code and the computation went on its merry way.
Except for the interactive queries the FORTRAN code needed zero modifications. The port needed a few days, most of that testing before handing it off to the chemists. From their perspective it was just a native windows app.
Yeah, if it just works why re-invent.
It's not like C is going away anytime soon, but if there are fewer new C programmers coming online, maybe I don't have to worry about being put out to pasture?
"The index can be used to check whether your programming skills are still up to date or to make a strategic decision about what programming language should be adopted when starting to build a new software system."
While I think TIOBE is interesting, I'd never advise anyone to either take it too seriously, or base any of the above quoted decisions on it. Deciding on used languages based on search engine results - if you do that, I'd bet you don't advertise it during your interviews.
I am putting myself to the fullest possible use, which is all I can think that any conscious entity can ever hope to do.
The problem is not C's fault.
Some macro packages are indeed horrid. That's not C's fault. Its absolutely possible to beautiful APIs in C. The UNIX file descriptor API is probably one of the first examples of object oriented programming and polymorphism, yet nobody ever gives it credit.
You do have to be able to manage pointers and memory in C, and if you use threads you have to be able to deal with currency. This is not rocket science, but it requires diligence.
I am particularly fond of Golang's C "flavor", while freeing the programmer from worrying about those things. If you have to solve a problem that Python or Perl would be your tool of choice for, I'd reach for Go instead.
If you have to be in a kernel, or performance critical code, then C is your choice.
And if you think your code isn't performance critical, you should double check your assumptions. Outside of administrative UIs, almost all code (IMO) is performance sensitive and critical. Programmer inability to understand this is responsible for a lot of the carelessness and bloat that has resulted in UIs that struggle to run in gigabytes of memory, when we had perfectly functional programs in the past that ran in tiny fractions of that. (Yes, there is a cost to features, but I still see a *lot* of pointless bloat and programmer carelessness...)
Rust allows programming "closer to the metal" than those languages. For example, Go, Nim, Scala and Haxe all require a garbage collector in practice for significantly complex programs. This makes it difficult (or at least heavyweight) to embed components in those languages into other languages and makes memory usage more difficult to reason about. This makes it easier to use Rust as a drop-in replacement for C or C++.
(Rust has other advantages over each of those other languages too.)
2017 will be the year of Snobol!
Sent from my ASR33 using ASCII
I think you will find Java software is widely abused - usually with a wide variety of unprintable expletives.
"Some people swear by Java - the rest of us swear at it."
Sent from my ASR33 using ASCII
The IEEE seems to have a much better methodology and ways to look at the data based on web, mobile, enterprise and embedded markets.
http://spectrum.ieee.org/stati...
It just seems that the TIOBE results are much easier to bias by things like universities using a language as a teaching language. There are far more online courses on things like java and languages commonly used for web work but that does not make them more commonly used just more common to have webpages written about them.
Computer modeling for biotech drug manufacturing is HARD!
If you asked Richie back in the early 70s whether he thought it would be a major language in 40 years time, I wonder what he'd say?
John_Chalisque
I don't know if rust will succeed. It's the only one capable, really.
Rust basically has the same machine model as C and C++, but with a different syntax. There's nothing you can do in a more efficient and economical (e.g. memory, cycles) way in C compared to Rust.
The rest have garbage collection which basically rules them out and in addition do not have proper zero cost abstractions. They're prepared to burn cycles to make the programmer's life easier.
The exception to that is D. D can sort of run perfectly fine without the garbage collector and basically has the same machine model as C too. D's biggest win is it's unparalleled metaprogramming ability in this space. The problem with D is how the whole thing is run. There are two incompatible language versions (D1 and D2), which is something which will never happen with C++ or C, and I strongly suspect not Rust either. Also, they built the standard library to rely on garbage collection, so you can't escape the collector without doing a lot of work. Do you need to? Maybe, maybe not, but it means you won't get the standard library printf on a tiny MCU. Also stack allocation in D is a bit discouraged because it's unsafe (like C and C++), but it's really important for efficient or embedded code. That makes D less nice to use there. Also it's garbage collector is not that great speed wise.
SJW n. One who posts facts.
Not worth much since I'm new to programming but when I began researching which language to start with it seems almost every language refers back to C or a variant of C. It just made sense to me to start with C and that it would be a valuable skill.
Snobol 4 forevers!
The hammer just passed the screwdriver again on the Household Tools Popularity List. Is it because the hammer has the venerable backing of large companies like Lowe's and Home Depot while the lowly screwdriver is still seen to be a hobbyist's tool unfit for enterprise adoption?
Stay tuned for next month's exciting random statistical variations and the inane commentary from bloggers desperate for clicks!
This TIOBE index relies on web queries for each programming language. Frankly, C programmers don't need to ask questions about the language itself since it is so simple.
I'm not questioning the popularity of the various languages but it seems to me that this metric favours the more complex languages.
Finally, in the embedded real-time space, there is still no real substitute for C.
>> more mobile- and web-friendly languages like Swift and Go are starting to eat its lunch.
Clearly you have no clue about how much embedded/realtime software programming is also going on out there, where using any garbage-collected language is simply not an option.
Whether Rust will succeed remains to be seen however it's already built up a substantial number of libraries and support on crates.io and has proven itself popular with developers. I think it will find its way into a lot of IoT devices, drones, server farms etc. I doubt it will ever become a popular high-level programming language though because the compiler is brutally strict and will kick a dev's ass if there are any problems with lifetimes, borrowing, thread sync etc. Things that are trivial in other language can be quite hard to do in Rust to the satisfaction of the compiler.
It's still #2. And twice the index score of #3.
mobile app development. ... The constraint that C object code should remain small and fast doesn't help here.
Huh? That seems like exactly the sort of area where small and fast would help immensely.
I still find it infuriating when I want to have half a second for this clunky program on my phone to do it's thing.
Moreover the C programming language doesn't evolve like the other big languages such as Java, C++ and C#. There is a "new" C11 standard available but this contains only minor changes.
The language being stable is a good thing. A shining feature. Unless you enjoy all your skills turning to dust as you have to adapt to an ever changing platform. Who likes to build a house on shifting sand?
Yet another reason why C is getting into trouble is that there is no big company promoting the language. Oracle supports Java, Microsoft supports C++, C# and TypeScript, Google supports Java, Python, Go, Dart and JavaScript, Apple promotes Swift and Objective-C, etc. but none of them supports C publicly.
Also kind of a good thing. Because it's "Oracle, where tech goes to die". And Microsoft, where they keep bloody changing everything because some minor boss somewhere gets a bonus if he can convince 9% of the MS developer base to register with SilverLight tools, or how Sharepoint is "the next big thing". And frankly, I was surprised that every Go project wasn't mandated to direct their users to go sign up for google+.
C is punk. Fuck corporate.
It's portable as all fucking get-out. Low enough that you can make it smokin' fast. And it doesn't play any games with magical crap you can't see. The code is truth in advertising (unless you fuck around with macros like an idiot), and that makes it easier to debug. And everything as C APIs, so if there's a library out there you want you can typically go hook into it. Every bloody language has weird quirks and nuances you just have to be aware of. The tools that help you use the language are where it's at. MVS, while run by Satan, is actually pretty decent. But the classic C tools of makefiles, gcc or clang, and vim are powerhouses of usability that have been refined for decades. It's not the best if you want to talk to browsers. Javascript is the defacto standard there. And it's not the best if you just want to make yet another GUI button clicker for clueless suit. And Bash or whatever script of choice glues together the solutions of yesterday. But C is what you whip out for the hard cases for real meaningful programming. And certainly for anything critical like life support, satellites, weapon platforms, or kernels.
Most performance-critical code should be written in C++, not C. It allows a programmer to be more productive, and reduces or eliminates several major causes of bugs in C programs.
"When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
C is the first turtle. Most languages today have their implementations written in C.
Coder's Stone: The programming language quick ref for iPad
That's a fair answer, although it makes me wonder why Modula-2 or Oberon didn't take off if that's some desirable core feature.
“Common sense is not so common.” — Voltaire
To me having a system that can be proven is more important than if it uses cycles for garbage collection or bounds checking or whatever. Minimizing software faults will contribute greater to your average performance on a cluster than a few percentage points performance improvement. Recovering from faults is very expensive in terms of system time and human resources. ex: if you can encode 1 movie in T time, then encoding 100 movies should take 100*T, but if you have a fault 5% of the time, then it's more like 100*T+k, and k can be significantly close to T. so now you're more like 105*T, you effectively lost some performance. It gets worse in situations where faults are require a job to start from the beginning (so a little more than 110*T if encoding must always start from the beginning)
I predict that formal verification (like SPIN model checker) will become more important to languages in the future than their ability to access the low-level raw potential. (I'm a professional linux kernel developer for a cpu vendor, so I do realize there is some need for low-level access)
“Common sense is not so common.” — Voltaire
Depends on the platform, but regardless, that's kind of the point of Rust, to have the best of both worlds. Same machine model of C, whole classes of errors are impossible in non unsafe blocks. You never have to worry about use-after-free since the type checker proves you didn't do it for example.
In terms of correctness proofs vs performance, it's a tradeoff as always.
SJW n. One who posts facts.