C/C++ Back On Top of the Programming Heap?
Drethon writes "On this day in 2008, a submission was posted that C/C++ was losing ground so I decided to check out its current state. It seems that C has returned to the top while Java has dropped by the same amount, VB and PHP have dropped drastically, C++ is holding fast but now in third place and Objective-C and C# have climbed quite a bit. 2008 data thanks to SatanicPuppy: 1. Java (20.5%); 2. C (.14.7%); 3. VB (11.6%); 4. PHP (10.3%); 5. C++ (9.9%); 6. Perl (5.9%); 7. Python (4.5%); 8. C# (.3.8%); 9. Ruby(2.9%); 10. Delphi (2.7%). The other 10 in the top 20 are: JavaScript, D, PL/SQL, SAS, Pascal, Lisp/Scheme, FoxPro/xBase, COBOL, Ada, and ColdFusion."
the whole OS is compiled in C++
How comes the summary list doesn't correlate at all with the list on the article?
And you know your language is dead when it's less popular than Lisp.
I would expect that a lot of companies are probably working on importing their legacy systems to work for the new 64 bit systems.
Now that most PC's are out with more then 4 gigs of RAM. Many OS's are going towards 64 bit OS's and a lot of those old 32 bit systems programmed in C for performance, needs to be upgraded.
A lot of those programs that seemed to run fine in windows 3.1 are finally stop working in windows 7 64 bit.
I am not saying C coding is just for legacy systems, but a good amount of legacy systems are written in C, and most of those C written programs are fairly optimized for their platform they were designed to run, and we are starting to switch to 64 bit and multi-core architecture.
If something is so important that you feel the need to post it on the internet... It probably isn't that important.
C and C++ are two separate and very different languages.
My two favorite languages aren't dying!
Whatever anyone else thinks, I think they're not only extremely solid languages that have stood the test of time, but they're both really fun to program in. I know it's at least somewhat subjective, and right tool for the job and all, but that doesn't mean you can't have preferences and it's good to see the "Yankees" of programming not headed into obscurity.
<xml><I><am><so><damn>Web 2.0</damn></so></am></I></xml>
Will Java drop even further because of the whole Oracle mess?
I guess I am surprised that Python is ahead of C#, and that Ruby is so low given its underground buzz.
My first Journal Entry ever, in 8 years! http://slashdot.org/journal/365947/aphelion-scifi-fantasy-horror-poetry-webzine
Is this the same C that is ignored by almost every developer in the field in lieu of more "business-friendly" languages that add bloat and inefficiency?
That's interesting to me that PHP is more popular than a language like C#. But I guess when you include VB and all of its legacy, then the whole ".NET" stack is quite a bit more popular.
I went to eat some animal crackers and the box said, "Do not eat if seal is broken." I opened the box and sure enough..
Of this list, C#, Ruby, and Python are clearly the best languages as far as I'm concerned.
;)
The C++ longevity is expected. Every engineer worth his weight in salt should be able to write C++ code. (get off my lawn etc.)
I am curious abobut where the C growth is coming from. Embedded stuff? Native libraries for the increasing volume other higher level languages?
The Tiobe index is a popularity contest - a pageant for programming languages - so, you get the trend on what's hot, but that is just part of the IT business.
I challenge you to find 5 banks whose core are not built with Cobol, for example.
My point is that real use != trending languages
The trend after the web became big in the mid-90s was to find specialized languages and try to code in those.
The trend has swung backward. People are now looking for general purpose languages. They want Swiss army knives, not specialized tools.
The Windows OS kernel is mostly in C with some assembly (just like Unix/Linux/BSD/OSX). The Windows GUI is mostly C++ (but so is KDE).
Support Right To Repair Legislation.
Can we please adopt languages that are not susceptible to buffer overflow/underrun errors? It's really pathetic that after all these years that's still a huge cause of security issues.
Because you NEVER have enough speed. Besides most useful libraries are written in C or C++
and lather binds are built for other languages. So, if you want or need to use the latest
version, or the library hasn't bindings, you must go for C or C++.
The 20th language is NXT-G. What the fuck is that? Is it really lego's programming language for robots as wikipedia indicates (http://en.wikipedia.org/wiki/NXT-G) ? And that is more popular than bash or matlab?
From the article: "Observe that the TIOBE index is not about the best programming language or the language in which most lines of code have been written." [Emphasis added]
It's a survey, no more, no less. Using it to make decisions about your career is foolhardy at best.
If I used a sig over again, would anyone notice?
C++ is the hard core, it must work, programming language of choice. The F-35's software is being developed in C++.
I thought they were counting actual use, and not vague childhood memories?
It's unbelievable that people still pay any attention whatsoever to it. Some company comes up with a ridiculous 'methodology' to gauge the popularity of languages, and people assume that it's actually related in any way to reality.
Further reading:
The best place to start is at TIOBE's own methodology description page: http://bit.ly/h3ftBa
No need to go much beyond that, to figure out that it's a meaningless index. To save you the reading, it more or less boils down to this:
---
The ratings are calculated by counting hits of the most popular search engines. The search query that is used is
+" programming"
---
That's all.
Still need some more convincing:
Why TIOBE isn't all that useful (mild): http://bit.ly/IeG0yA
The TIOBE index is being gamed: http://bit.ly/IeGnt1
It's no short of ridiculous. Time to stop paying attention to it, move along!
The whole survey looks odd to me. I work on MS sites and a decade or so ago, there was quite a lot of C around, but with today's hardware, I hardly see any of it now. Maybe I'm hanging around in the wrong sites or job boards, but most of the demand on places like Jobserve seems to be around .net, Java and php. Any chance that this survey is including a load of c# results in c?
What compiler are Pascal developers using that isn't Delphi. Aren't most Pascal compilers capable of handling Delphi's Object Pascal anyway?
Shouldn't the Pascal and Delphi be combined into one grouping the way that all the different C++ are combined?
A shout goes out to this site which actually does a pretty good job of comparing all the languages on 'subjective' attributes such as "I find it easy to write efficient code in this language" (C being top here), or "Code written in this language tends to be verbose" (Cobol and Assembler are worst here, but Java is 3rd place, and that's bad considering it's meant to be a modern higher level language).
You can even click each language and see what comment it is best for. For example, Haskell is top for "This language has a strong static type system" and "When I write code in this language I can be very sure it is correct". Meanwhile, something like PHP is top for "I am sometimes embarrassed to admit to my peers that I know this language" and "This language has many features which feel "tacked on"".
Why OpalCalc is the best Windows calc
Java floating point management is flawed by design. Using java for controlling anything serious opens up a Pandora box: just look at this (and look here if you don't know dr. Kahan)
Strange, Classic ASP doesn't seem to be on the list anywhere. Some people where I work seem to think that our "enterprise" processing system is just fine written in Classic ASP. Well, at least they migrated most of the Access crap to Classic ASP. Baby steps.
If you are not allowed to question your government then the government has answered your question.
JOSS?
* http://www.tiobe.com.nyud.net/content/paperinfo/tpci/images/tpci_trends.png
Join the Slashcott! Feb 10 thru Feb 17!
I find it endlessly amusing that the only "new" tool in that list is Ruby (and even that's been around a few years.)
Particularly in light of yesterday's Bloomberg article claiming that the income and job pressure on senior developers is because they weren't trained in the "new tools." It looks to me like marketshare demonstrates companies are more interested in stable technology than new technology.
I'm not surprised Java is sliding, though. It's really become a server-centric language over time, which means there are far fewer deployments per customer than there are for the client-side components of the whole system, such as C# and Objective C++ clients that access those Java servers.
Still, I'm quite comfortable continuing my Java development work. My focus in computing life has always been the server, though I did spend several years on client-side programming as well. While client-side GUI programming is fun, it's also far more time consuming and tedious. I find server-side coding and the performance tuning aspects of it are far more entertaining and challenging. (You can write shitty client code and get away with it because the load is distributed, but if you write shitty server code you have thousands of cranky users, not just a few who's devices are underpowered.)
I do not fail; I succeed at finding out what does not work.
Home Depot has reported that the hammer has moved up 2 places in the rankings overtaking the Phillips head screwdriver and pliers as the most widely used hand tool. Also moving up in the ranks were the flashlight and the crescent wrench, precipitating the further decline of the Allen wrench and the drill bit in the rankings.
Haha, who still uses the Allen wrench? Clearly the Phillips head screwdriver is superior. Newbs.
Here is their detailed method. It's far simpler than it claims to be, basically just summing up the search results for a particular language. I couldn't find any mention of the "number of skilled engineers world-wide, courses and third party vendors". Also, there are some shortcomings such as excluding AJAX hits from Javascript and Rails hits from Ruby, the reasoning behind that not being convincing. Still, this list is similar to other comparisons using search results, and i don't think we will invent a method better than that soon.
Github thinks my Python web projects are mostly Javascript because I stuck dependencies like JQuery in the repo.
Two separate languages to make a more impressive total I say java is still on top: Java/VB = 32%
C is awesome incarnate: lean, readable and full of low level goodness.
C can be readable .... if the programmer has kept to a reasonable kind of discipline and order in the coding, that is. (FTFY)
Obfuscating C can be as hard to read as old 'spaghetti Fortran', I think.
-wb-
64-bit hardware doesn't require reworking old apps, most 32-bit apps will run just fine as is. Unless you need more memory than your 32-bit environment can provide I doubt many 32-bit apps are being revisited.
Games are an area where C/C++ has always been strong, one needs the performance, except possibly for casual games.
iOS is another thing that may contribute to increased C/C++ usage. When you target iOS you have to use Objective C, this is what the iOS API uses. However there is no problem using C/C++ code in the non-user interface portions of your code. For example in an iOS calculator app (rpn, scientific, statistics, business, hex) the user interface code is all Objective C but all the handlers for the button presses and all the math is in C/C++. This makes porting and testing easier. With respect to testing I can build regression and fuzzing test apps for the Linux console that include the button handlers and math code, these test apps then simulate button presses and check "displayed" results and various calculator registers (stack, memory, special purpose, etc).
And of course there is the combination of the two. iOS games. The core of the game itself should be written in C/C++ for performance and portability.
The list in the article isn't the same as in the submission... there is no trace of cold fusion, but there is Logo(!... !!!!) in spot 19. Is there something that would explain why the moving turtle of my childhood can be found on such a list?
Based on the "number of skilled engineers" as evaluated by a scraper.
Tell me again about the tenths of a percent.
There is definitely movement away from Java and toward C/C++ for some types of software. Applications bottlenecked by memory performance, like databases and high-performance codes, will often be faster than a language like Java by integer factors. When people assert that Java is about as fast as C/C++ they are talking about code like tight, CPU-bound loops. However, Java is wasteful of memory and CPU cache lines in a way that C/C++ is not under normal circumstances which has a significant adverse impact on the performance of some codes.
On recent processors, memory performance is a bigger bottleneck than CPU performance for performance-sensitive codes. The throughput of CPUs has grown faster than our ability to keep those CPUs fed from memory. In the supercomputing world this started to become evident years ago; memory benchmarks like STREAM became more closely correlated with real-world performance than CPU benchmarks like LINPACK for a great many algorithms. The resurgence of C/C++ is partly driven by this reality since it makes memory optimization relatively straightforward and you can receive large gains relative to Java for modest effort.
A smaller but also important driver away from Java is the GC. The increasing focus on "real-time" and predictable latency for applications like analytics and database engines is complicated when Java's garbage collector is inserted in the middle. This is a chronic point of pain for some applications.
I developed Java for years but my latest project (a real-time analytical database engine) is being written in C++ for the above reasons, among others. Writing high-performance applications of this type is actually pretty painful in Java because you end up doing unnatural things in the language to even approach the efficiency of conventional C++. Anecdotally, many of our C++ developers were doing Java until recently so the statistic does not surprise me.
I think the trend is just beginning. I'll grant you that this is currently speculative and is based more on trends I've seen in a highly responsive section of the economy as far as technology is concerned.
As much as I am not a big fan of PHP, I'm going to stand up for it. No one with a computer science background seems to like it, but it's a good general purpose tool. If you're going to put up a web application and it just needs to work and do so quickly, PHP is how most people will do that, especially the self-taught.
I'm not in denial of its many problems, including slowness and security issues. I don't want to code in it ever again. But it's a good general purpose web templating language.
Can't an entire OS, including drivers and everything, be written completely in Java, w/o involving C or C++ at all?
the ratings are based on the number of skilled engineers world-wide, courses and third party vendors. The popular search engines Google, Bing, Yahoo!, Wikipedia, Amazon, YouTube and Baidu are used to calculate the ratings.
This doesn't give much to go on, but I suspect you could adjust the algorithm to give different results pretty easily.
Moving to 64-bit may be a recompile away *for perfectly written code*. In the real world, a lot of 32-bit code assumes you can store pointers in ints, assumes that alignment and packing rules of pointers and ints are the same, prints out pointers using int formatting, uses algorithms that don't scale beyond ~16GB of memory, etc.
There are many applications and games written in C/C++ that I love.
I also occasionally code in C - sometimes it is fun to use pointers and read/write files without chaining two or three objects.
There are however huge drawbacks to using C/C++.
There is surely a full list somewhere, but for me currently the not-buying-point is the preprocessor.
The preprocessor allows conditional compilation of any file. Sometimes the file might do that, sometimes something different.
This means that it isn't practical to have pre-compiled modules (although I guess you could go the route of splitting your project into dozens of libraries).
Thus, a very small file can require Gigabytes of memory to compile, because all the dependencies have to be pulled in, and represented in memory.
C is cool for learning how things work, but not good for making things work.
Hey don't blame me, IANAB
It is steadily going down in last 10 years. And I do not think these 0x and 11 ting will bring any good news to it.
C is very very stable...And do not mix C with C++. It DOES not make any sense.
TIOBE makes for an interesting toy measure. But for truly reliable conclusions, particularly those related to the health of our favorite technologies, we must instead ask: does NetCraft confirm it?
Comment removed based on user account deletion
Make the insecure code hard to write and make the secure code easy to write. Problem 99% solved.
HAND.
Actually 'C' is the "top dog" whereas 'C++' is #3 behind Java.
C recently had its standard updated and the uptick could be a reflection of this. Not to mention the increased exposure that C is getting from objective-C.
These comments are my own and do not necessarily reflect the views or opinions of my employer or colleagues...
Man, the good ol' days. I was able to crank out custom small-to-medium apps in FoxPro/xBase like nobody's mother. There was something magical about xBase that's hard to explain.
Part of it was the tight and seamless integration between the database language and the imperative language. One could do a lot in so few lines and commands. The API's between the database and app code used now are so damned bloated and verbose in comparison. The granularity of the query language was also better than SQL. It's difficult to break SQL into multiple smaller queries in most RDBMS.
Microsoft Access just doesn't quite cut it as a replacement. Apart from the fact MS keeps changing MS-Access, there is a disconnect between "mouse-based" design and the language (VBA). It's not very seamless to switch between them, and it takes almost 3 times as much VBA to code the same thing as xBase (at least non-GUI processing. xBase never quite got it's GUI act together, which is part of the reason for its shrinkage).
I realize that much of the xBase code in practice ended up being a maintenance headache, but that's only if you didn't follow certain "safety" conventions. The slop-heads gave it a bad rap.
People used to do things like put code expressions into tables, making it almost like a domain-specific spreadsheet or an instant Expert System. That's where my handle comes from.
I hope something like it is reborn with some modernizations and better "safety". I really miss it for quick-and-dirty apps especially.
Good Bye, my ol' friend.
Table-ized A.I.
err. freecode, lately, at least that's how it seems to me.
The oracle buyout is bad for java, but android is good for java.
Don't use either anymore except for the occasional hack of existing C code, but in the olden days (Borland) when you compiled a C++ program you actually were running a pre-compiler to turn the C++ into C and then that went through the C compiler. Is that two pass methodology still used today or are there C++ specific compilers now?
Average Intelligence is a Scary Thing
What no Groovy? Oh well, I should follow the masses mindlessly without considering the right tool for the job.
RosettaCode.com shows solutions for common programming task written by experts in each of the different languages http://rosettacode.org/wiki/Main_Page
I think over 400 languages are shown for hundreds of common problems.
Comment removed based on user account deletion
Without automatic cleanup, it was only a matter of time before C/C++ rose to the top of the heap.
Acording to their own documentation (http://www.tiobe.com/index.php/content/paperinfo/tpci/tpci_definition.htm) Tiobe index calculated by how many times the langauge is mentioned on top websites. Really, that has nothing to do with the number of lines of code written.
Fortran2000 is so cutting edge.
It's a shiitty insecure language that isn't even stongly typd.
Am I the only one surprised at the sudden spike in VB.NET's standings? http://www.tiobe.com/index.php/paperinfo/tpci/Visual_Basic__NET.html Don't get me wrong, I love VB.NET and would probably be working on it today if my employer didn't prefer C#, but that spike baffles me,
It was a best practice before C++ went bonkers... Maybe up to version 2; after that, why bother? The C++ code will eventually be thrown out, or if it is worth keeping, re-implemented in C anyways.
Poor up-mod by those that don't understand there are varied means of increasing of code performance. Also poor form to assume the parent post knows nothing of Big O. Also shows a lack of understanding real-time systems, embedded code, FPGA, DSP chips, etc, etc.
Abstractions carry a cost, it's as simple as that.
http://capecoder.wordpress.com/2012/04/09/language-popularity-its-not-about-search-engine-result-counts/
I don't really care. But it seems to me there would be not accurate way to measure this sort of thing.
I can't believe these people get press for doing web searches with the names of programming languages and counting hits. We all just lost the game for even wasting our time considering it.
I was crazy back when being crazy really meant something. (Charles Manson)
... such as the newer Java, which combines the clean, easy and manageable syntax of C with the blazing speed of Smalltalk.
*Tadum* *Crash* *Thud*
Thank you, thank you, I'm here all week. Try the fish and tip your waitor.
We suffer more in our imagination than in reality. - Seneca
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. The definition of the TIOBE index can be found here.
The chart would seem to indicate that because it's ranked higher those are the skills you should be concentrating on? I don't think so.
T-SQL is near the bottom, yet if you do any MS SQL development, it's just as important as any other language on that list. JavaScript? If you're doing web development, it's just as important to know as T-SQL or C# or what ever your language of choice is.
The statistics are meaningless for making any real decisions about what you should learn or be proficient at.
Visit the Arcade Restoration Workshop @ http://www.arcaderestoration.com
A long time ago I owned Borland C++ ( also the Lisp and Pascal compilers) but thats long gone and never really warmed to Java
I would like to get back into playing with C / C++ at home and Im happy to pay a reasonable amount for a home IDE to brush up and write stuff and play.... but not 000s
OH I run Linux Mint - on my main PC (although I have a Win XP VM)
What do people use to code in C / C++ - what are your recommendations these days ???
Why is it that when I search for jobs, I find a lot more C++ than C jobs, and when I do find a C job,
1) either the job is actually "C/C++", or
2) depending on the site or employer, some job postings mung punctuation, thus causing C# or C++ jobs to show up as C.
In x86 land the code/data bloat is somewhat offset by the doubling of the number of general purpose registers and other architectural improvements of 64-bit mode. 64-bit mode is not strictly a wider incarnation of 32-bit mode.
... your post reminded me of the Alpha we spent so much time studying in grad school in that mid 90s time frame. :-)
That said your point is very valid. Write portable code, build for both modes and measure is the way to go IMHO.
Now I have to go, depressed and sad
When did Micrsoft begin to specify - as a System Requirement for its software - the rotational speed of one's hard drive(s), ie, as it does - quite explicitly - here:
+ http://www.microsoft.com/visualstudio/en-us/products/2010-editions/visual-basic-express/system-requirements
?
If it's spinning a bit more slowly, the user waits a bit longer... Right?
And I fscking hate it.
Thanks for playing.
Others may have more experience or more general experience, but mine has been that language trends come and go but there will always be some constants. To me it seems like Perl is one of them; if you're doing anything short of application development, it's probably the fastest way to get it to work. Anything else would do well in the C++ or Java realm. I have never seen a need to move to Python. It's a fine language but doesn't offer any tangible improvements over Perl.
The ranking was done simply by "counting hits of the most popular search engines" for each language. A large number of hits might just imply that a language is more difficult to use and requires more on-line assistance.
C is very popular with embedded electronic devices, so it doesn't strike me odd that it is coming back.