Slashdot Mirror


C Beats Java As Number One Language According To TIOBE Index

mikejuk writes "Every January it is traditional to compare the state of the languages as indicated by the TIOBE index. So what's up and what's down this year? There have been headlines that C# is the language of the year, but this is based on a new language index. What the TIOBE index shows is that Java is no longer number one as it has been beaten by C — yes C not C++ or even Objective C."

535 comments

  1. Woohoo by Anonymous Coward · · Score: 2, Interesting

    Go C!

    1. Re:Woohoo by K.+S.+Kyosuke · · Score: 5, Funny

      Go C!

      Actually, Go has some catching up to do on C.

      --
      Ezekiel 23:20
    2. Re:Woohoo by Anonymous Coward · · Score: 0

      My college education is paying off!

    3. Re:Woohoo by Anonymous Coward · · Score: 5, Funny

      oh no you don't
      my friend told me to visit go c before
      i'm not falling for that one again

    4. Re:Woohoo by ByOhTek · · Score: 3, Interesting

      Not going to complain about that.

      It's depressing that Objective-C, Ruby and VB.Net have gone up, and see C# go down...
      But nice to see C and Bash go up, as well as Java go down. Then again, Java goes down on everything, that's how much it blows. I need a job that doesn't require me to program so much of that. Oh well, occasionally I can get to use C, Bash or Python...

      --
      Self proclaimed typo king, and inventor of the bear destroying coffee table (patent not pending).
    5. Re:Woohoo by Anonymous Coward · · Score: 0

      Premature celebration much?

      Well, it's partially due to summary linking to some shitty blog instead of actual TIOBE page which gives more than just places and up/down arrows.

      Trends show that it's just a random spike in C's index, which is pretty much gone now. I also suspect that Bash's sudden popularity boost is due to TIOBE's statistics shittiness - check how it suddenly jumps in one month of Feb 2012. I've got an inkling that it might have to do with bash.org-like quote sites, here's one coincidentally(?) getting new domain in the same timeframe - and it's pretty high in searches, what with it being one of top 500 popular sites in Russia and top 5000 worldwide.

    6. Re:Woohoo by smittyoneeach · · Score: 1

      Falling for, falling in. . .

      --
      Get thee glass eyes, and, like a scurvy politician, seem to see things thou dost not.--King Lear
    7. Re:Woohoo by Megane · · Score: 3, Insightful

      It's depressing that Objective-C, Ruby and VB.Net have gone up, and see C# go down...

      It's depressing to see a Microsoft-proprietary language, that they're not even supporting on one of their most recent platforms, go down in popularity? Really?

      --
      #naabhaprzrag, #sverubfr-000, #agi-fcbafberq, negvpyr[pynff*=' negvpyr-ary-'] { qvfcynl: abar !vzcbegnag; }
    8. Re:Woohoo by shutdown+-p+now · · Score: 1

      Well, it's TIOBE. It's basically an index of how many people write "raving" blog posts about some language. It has exactly zero relevance to real world. Why Slashdot keeps posting regular front page updates about every change that happens in the top 10 is beyond me.

      (Coincidentally, C was already on top a while ago, before Java overtaking it again.)

    9. Re:Woohoo by urdak · · Score: 1

      Premature celebration much?

      ....

      Trends show that it's just a random spike in C's index, which is pretty much gone now.

      It doesn't look like a "random spike to me" - quite the contrary - the trend graph appears to show that C's popularity has hardly changed in the last decade (going up and down between 15% and 20%), while Java's popularity sunk in the last decade (from 27% to 17%) and C++ also showing a steady decline (from 17% to 10%). Perhaps a "random spike" caused C to surpass Java this year, but the trend is obvious - Java will soon be dethroned.

    10. Re:Woohoo by aPoorBoy · · Score: 1

      Maybe did you mean "goto C!" ?? The goto is cool

    11. Re:Woohoo by TheRealMindChild · · Score: 1

      Have you ever experienced VB6?

      --

      "When life gives you lemons, don't make lemonade. Make life take the lemons back!" -- Cave Johnson
    12. Re:Woohoo by NotBorg · · Score: 2

      It's hard to take a vendor and OS locked language seriously. When so much is going cloud and so much of cloud is on Linux... Microsoft only languages just can't compete. There doesn't seem to be much hope for them in the mobile world either because WP isn't doing much but being laughed out of the market. (Is there even a VB for WP? Bah; it doesn't even matter.)

      While there may be some some killer features to VB, there's also some killer draw backs. There's no such thing as portable VB. If it's not a desktop application VB is kinda off in no man's land. If only Microsoft were a software company instead of a Windows company.

      --
      I want this account deleted.
    13. Re:Woohoo by RCL · · Score: 1

      It's refreshing to see a comeback of a language that doesn't require you to start with classifying your data.

      Program is a data-to-data mapping and language should be flexible enough to support this view. If a language requires you to classify your data (especially using such an unstable classifier as decision tree, which is essentially what class hierarchy in OO languages is) before you start to program, it's a wrong approach.

      Premature classification is the root of all evil.

    14. Re:Woohoo by lightknight · · Score: 1

      If you mean a proprietary language that is a standard under ISO, then yes, it is a proprietary language.

      And if install Mono on other platforms, you can even get C# code to run on it.

      --
      I am John Hurt.
    15. Re:Woohoo by Anonymous Coward · · Score: 0

      Which Microsoft-proprietary language are they not supporting on one of their most recent platforms? And what platform aren't they supporting it on?

    16. Re:Woohoo by Anonymous Coward · · Score: 0

      Exactly. That's why Objective C is doing so badly.

    17. Re:Woohoo by Door-opening+Fascist · · Score: 1

      As long as it's not GOTO. That's harmful.

    18. Re:Woohoo by SplashMyBandit · · Score: 2

      Yes, but the language is nothing. It's the libraries that matter and the Microsoft ones are proprietary and single-platform. The Mono libraries are cross-platform but are incomplete with respect to the Microsoft ones (and the Mono project indicates that some of these will never be implemented). Java kicks C#'s ass when you think about it in these terms (which are the only ones that actually matter). It is this that makes the C# *platform* proprietary. Hopefully that clears it up for you why the parent used the word "proprietary" - they had a wider perspective when they made that statement.

    19. Re:Woohoo by SplashMyBandit · · Score: 1

      Part of the decline seems to be due to the introduction of new languagess which mean even if the adoption of a particular language in absolute terms remains constant the relative proportion of the same language will decrease.

      Java's is used widely in the enterprise space. The economic recession resulted in a slowdown in corporate activity and it appears a deferral of Java projects. Looking at the Tiobe graph there is a recent *rise* is Java activity compared to earlier in the year and steady relative to the same time last year. Given the overall increase in languages and dodgy economy it looks like Java is doing as well as could be expected for a development platform mostly targeted to the *enterprise*.

    20. Re:Woohoo by AlphaBro · · Score: 1

      Microsoft only languages just can't compete. [...] Is there even a VB for WP?

      Maybe you should take the time to understand how these things work before you make sweeping generalizations like this. C#, VB et al compile into Common Intermediate Language (CIL) bytecode, which is platform independent. Windows Phone uses the Common Language Runtime (CLR) to execute said bytecode, so yes, there is "a VB for WP", just like there can be an any-other-language-you-want for WP, provided a compiler that emits CIL object code is available.

    21. Re:Woohoo by AlphaBro · · Score: 1

      You are referring to the .NET Base Class Library, which is completely independent from the language. Just because it is frequently used with C# does not make the language itself proprietary, nor are languages "nothing." If they were we wouldn't fight so much over which one to choose. While API is important, your statement that "It's the libraries that matter" makes me question your skill as a programmer.

    22. Re:Woohoo by NotBorg · · Score: 1

      Microsoft platform -> Microsoft platform... looks vendor locked to me. I'm not going to bother trying to understand much beyond that point because it's the reason the language is going nowhere.

      You probably can't understand this, but when every vendor besides Microsoft uses the words "cross platform" or "portable" they mean something far more reaching than Microsoft's definition. For example we don't consider Firefox portable because it on Ubuntu 11 and Ubuntu 12. We consider it portable because it runs on many Linux OS's, BSDs, Macs, many flavors of Windows even if some of those OSes happen to be running on ARM instead of x86. Only in the Microsoft camp is "cross platform" used to describe a program that runs on more than one revision of the same OS.

      And no, Mono doesn't really count since it can't do shit with most of that "platform independent" object code generated by Microsoft compilers. The compile once use everywhere dream often doesn't work even for the mighty Java. How can we expect a technology from a vendor bent on locking software to its OS to do any better?

      Yeah I might not know much about your wonderful CLR but I know what matters: it limits you to OSes made by Microsoft which makes it not portable by most standards.

      --
      I want this account deleted.
    23. Re:Woohoo by aethelrick · · Score: 1

      While API is important, your statement that "It's the libraries that matter" makes me question your skill as a programmer.

      OK, I'll bite

      I take it from your post that you would actually consider using a .NET language without the base class library? Without the base class library, any .NET language is simply syntax without any actual working bits. While the syntax of a language is important your urge to re-write the .NET base class library just to keep the syntax makes me question your sanity! Here... go read what you'll be missing without the BCL http://en.wikipedia.org/wiki/Base_Class_Library then come back and tell me you're still OK with your statement.

    24. Re:Woohoo by Anonymous Coward · · Score: 0

      Your momma blows.

    25. Re:Woohoo by RaceProUK · · Score: 1

      It's depressing that Objective-C, Ruby and VB.Net have gone up, and see C# go down...

      It's depressing to see a Microsoft-proprietary language, that they're not even supporting on one of their most recent platforms, go down in popularity? Really?

      You mean the language that was updated to version 5 in August, and can be used to write apps for Windows 8?

      --
      No colour or religion ever stopped the bullet from a gun
    26. Re:Woohoo by RaceProUK · · Score: 1

      If a language requires you to classify your data ... before you start to program, it's a wrong approach.

      I pray I never see any of your code.

      --
      No colour or religion ever stopped the bullet from a gun
    27. Re:Woohoo by Anonymous Coward · · Score: 0

      It could be worse. You could be programming in a language that is written in Java itself... like ColdFusion. *shudder*

    28. Re:Woohoo by RCL · · Score: 1

      Too hard to transcend the pattern of thought you got used to, eh? Fear not, I also code in OOP way - at the level at which it makes sense.

    29. Re:Woohoo by ByOhTek · · Score: 1

      No, they are adding (and promoting) a javascript option, but that does not mean C# isn't supported under the latest platform.

      --
      Self proclaimed typo king, and inventor of the bear destroying coffee table (patent not pending).
    30. Re:Woohoo by ByOhTek · · Score: 2

      No, the mono libraries are NOT incompatible.

      Most of the mono libraries are a compatible subset of the Microsoft libs (with what is/isn't compatible clearly defined).
      There is the "incompatible" GTK# library, but you can download GTK for Windows and fix that problem quickly enough.

      Yes, they won't implement some libraries (WPF... Which is garbage anyway, though enough people have drank that kool-aide, and parts the overly-convoluted entity framework), but those tend to be somewhat niche parts.

      Java tends to use divergent native platform implementations for things such as regular expressions (at least it has up to 1.4 or 1.5, I've avoided them since) and doesn't document it well, while sticking to their own crappy implementations of things like SSL (which has had a wonderful OpenSSL implementation on pretty much every platform).
      C#/Mono kicks java's ass in this regard.

      Hopefully this clears up why some of us disagree with the use of proprietary.

      --
      Self proclaimed typo king, and inventor of the bear destroying coffee table (patent not pending).
    31. Re:Woohoo by Bengie · · Score: 1

      Which platform is that? C# is supported on 2000, XP, Vista, 7, 8, and RT.

    32. Re:Woohoo by Bengie · · Score: 1

      A car without a road is useless. Until someone points the time into having some standard base libraries, you can't do much. Plus, with everyone re-inventing the wheel, there's bound to be a lot of bugs.

    33. Re:Woohoo by RaceProUK · · Score: 1

      Oh great Oracle, praythee tell of thy method, that we may follow thee to the Realm of Arrogance!

      --
      No colour or religion ever stopped the bullet from a gun
    34. Re:Woohoo by Anonymous Coward · · Score: 0

      You're just mad because MS won't port .NET and C# to Linux for you. You have to do it yourself. You've got all the docs. It's as "cross platform" as you want to make it.

    35. Re:Woohoo by SplashMyBandit · · Score: 1

      Yes, they won't implement some libraries

      Incomplete == incompatible
      That's why Mono's adoption is so much less than Java (even if C# does have nifty language features it simply can't make up the deficiency).

    36. Re:Woohoo by ByOhTek · · Score: 1

      only if you use/need the missing parts. Most don't.

      Ex: if you don't use Entity Framework, WPF, and one or two of the listed "not implemented" big libraries, which are not hard to do without, you are very unlikely to have issues with Mono running an app compiled in Visual Studios.

      --
      Self proclaimed typo king, and inventor of the bear destroying coffee table (patent not pending).
    37. Re:Woohoo by AlphaBro · · Score: 1

      Good job handwaving away Mono. I can see how you'd be forced to, since it undermines your entire argument. Mono supports most of the BCL, all the way up to .NET 4.5. Again, please take the time to understand what you're talking about. http://www.mono-project.com/Compatibility

    38. Re:Woohoo by SplashMyBandit · · Score: 1

      You are looking at it the wrong way, which is why you reach the wrong conclusion. Most C# apps are written in Visual Studio and then need to be ported elsewhere. The fact is they often won't when you then try and run them on Mono. Of course, the tiny number of folks starting from the Mono side can restrict themselves to the compatible subset and hope that it works on the MS runtime (which is continually evolving, yes?). Bugger that. I'd rather have Java where the *design intent* is for *everything* to be cross-platform and standardized. Then I can get on with real work rather than trying to figure out which bits are or are not going to work when deployed to each customer's site (they get to choose their tech, we don't, yes?). This is why Java is still preferred in the enterprise to C# (and Mono is still niche); despite some of the nice language features of C# this fundamental design limitation will always hold it back (if Mono was fully compatible so cross-platform was essentially a non-issue then C# would gain wider adoption for web-scale internet systems; but it ain't there yet and the trends in IT are away from such techs).

    39. Re:Woohoo by NotBorg · · Score: 1

      You go right on running that itsy bitsy percentile of .Net applications that actually work with Mono and I'll go right on ignoring the technology that's yet to make itself worthwhile on anything but Windows.

      --
      I want this account deleted.
    40. Re:Woohoo by AlphaBro · · Score: 1

      You go right on running that itsy bitsy percentile of .Net applications that actually work with Mono

      Oh look, an end-user. Pretty much everything I write except the WPF stuff is mono compatible, so yes, I will go right on.

    41. Re:Woohoo by ByOhTek · · Score: 1

      I write my C# apps in VS. I later run them in mono. Typically I don't have an issue.

      Oh, I see, I don't agree with you and my experiences differ from yours, therefore I'm wrong. Got it.

      Sad thing is, my experiences with C#/.NET is that they manage the design intent of Java, better than Java, even without that being the design intent. In part because MS actually freely contributes to the Mono project at times.

      Fortunately, the research if fairly simple...
      http://www.mono-project.com/Compatibility

      Outside of WPF, you tend to have to be working with stuff that is either fairly niche (code contracts / server side OData), or unlikely to be used in a non-windows platform (ASP, windows specific stuff from .NET 1.1) to run into problems, or be at the very cutting edge.

      So, yeah, not perfect, but at least, unlike java, where it fails will be fairly well documented, rather than running into some random garbage issue, then googling it only to find some poor SOB like yourself ran into it years before and it's just never been documented.

      --
      Self proclaimed typo king, and inventor of the bear destroying coffee table (patent not pending).
    42. Re:Woohoo by SplashMyBandit · · Score: 1

      Yes, I refer to the same Compatibility graph of the Mono project and am horrified at how many parts are not implemented or won't be implemented. Good for you that you are so determined to work with C# that you are prepared to work with partial compatibility, work around missing parts, and then advocate for others to do the same. You probably also choose to ignore the fact that while C# is still supported by Microsoft it is no longer the love child it once was, with Microsoft now concentrating on alternative technologies. Don't be surprised while the rest of world is skeptical of the nirvana you claim.

    43. Re:Woohoo by dreamchaser · · Score: 1

      GP said they were incomplete, not incompatible, and by your own admission that Mono implements a subset of the MS libs you are just confirming the statement.

    44. Re:Woohoo by Zordak · · Score: 1

      You are referring to the .NET Base Class Library, which is completely independent from the language.

      The Federal District Court for the Northern District of California disagrees with you. This was one of the major factors in holding for Google that the APIs are not copyrightable. Java isn't Java without core class libraries.

      --

      Today's Sesame Street was brought to you by the number e.
  2. Dying gasps by OrangeTide · · Score: 3, Funny

    Doesn't a dying star expand into giant before it dies?

    --
    “Common sense is not so common.” — Voltaire
    1. Re:Dying gasps by Anonymous Coward · · Score: 5, Informative

      You would be surprised how many mission critical embedded systems - are still being written in C

    2. Re:Dying gasps by yurtinus · · Score: 4, Funny

      ...I think you'd be more surprised at how many are written in C#

      --
      +1 Disagree
    3. Re:Dying gasps by Hentes · · Score: 5, Insightful

      Not really. While I agree that C is a bad language, it has no competition in low-level coding. With embedded systems gaining ground, more and more people will start to use it. Although C++ could take its role and it even fixes many of its shortcomings (e.g. namespaces), it's very easy to misuse, so most project leaders don't trust their collegues with it. What would people switch to? Forth, Pascal?

    4. Re:Dying gasps by Anonymous Coward · · Score: 1

      No, but loads of high level language based frameworks optimizing their backends lately.
      Also, as hardware hacking seem to be some kind of trend, C comes in handy.

    5. Re:Dying gasps by localman57 · · Score: 5, Insightful

      Exactly. When you are working in a resource constrained environment, and you want to be able to accurately predict what machine instructions will be generated from your source code, you use C. It's faster to code, and more portable than assembly language, with almost all of the control. Typically maybe 5% or less of your application needs to be really, really fast (interrupt handlers, DSP code, special communications or math or encryption libraries). You might code these in assembly, and the rest in C.

      But if you're starting new big applications for the PC in C, you're probably insane.

    6. Re:Dying gasps by Vanderhoth · · Score: 3, Funny

      If it's more than one, then I'm surprised!!!

      I kid.

    7. Re:Dying gasps by Anonymous Coward · · Score: 0

      Considering how many mission critical systems failures I've seen, no, I wouldn't.

    8. Re:Dying gasps by Anonymous Coward · · Score: 2, Insightful

      If you think the failures are due to the language being selected, you're the problem, not C#.

    9. Re: Dying gasps by Anonymous Coward · · Score: 0

      particularly as a growing army of hobbiests ( like me ) use for small systems like ardinio

    10. Re:Dying gasps by Anonymous Coward · · Score: 0

      Ada and Eiffel

    11. Re:Dying gasps by Synerg1y · · Score: 2

      You just answered my question on why C could even be considered :)

      Embedded systems would explain the growth, .NET FW is windows only pretty much, NOBODY, but MS is going to try to port it to an embedded machine. I'd still say 90% of businesses are .NET shops to varying degrees, but I didn't immediately understand what C was doing up there.

      Java though... makes me doubt the validity of TIOBE heavily, object-C doesn't help either, I get that there's a lot of android/iOS programming going on (I believe this is what object-C is used for mostly nowadays, but... more than 90% of businesses combined using .NET... doubtful). Maybe if TIOBE was based on +/- % changes I'd understanding, but as an overall popularity index, businesses have the $, and businesses use .NET unless they're web based... then something Linuxy is the overwhelming trend, which mostly equals something php, ruby, etc... I've got to call shenanigans on this :)

    12. Re:Dying gasps by Anonymous Coward · · Score: 0

      C is much better than Java but sadly given the comparison it is not really an accolade. I enjoy programming with C and detest touching anything written in Java. The creator of Java should be hanged by the neck until dead and then burned to ashes. All the pussy IT folks these days cannot programme worth a damn and the software developers cannot handle a language with sharp edges.

    13. Re:Dying gasps by Anonymous Coward · · Score: 0

      Not really. While I agree that C is a bad language, it has no competition in low-level coding. With embedded systems gaining ground, more and more people will start to use it. Although C++ could take its role and it even fixes many of its shortcomings (e.g. namespaces), it's very easy to misuse, so most project leaders don't trust their collegues with it. What would people switch to? Forth, Pascal?

      Why not Forth? It's been used for firmware:

      http://en.wikipedia.org/wiki/Open_Firmware

      We've had entire operating systems written in Lisp in the 1980s as well:

      http://en.wikipedia.org/wiki/Lisp_machine

      Many of those systems didn't have much more resources than many of the so-called embedded systems do now.

      It's just that most folks are used to ALGOL-like syntax (because of the popularity of C) that the visuals of coding in these languages is a big put off.

    14. Re:Dying gasps by Anonymous Coward · · Score: 0

      One also has to remember that Java is split into three languages on the index now as well where C is not; java is Scala, Groovy and Java. So that java stat isn't quite accurate in the truest since.

    15. Re:Dying gasps by mysidia · · Score: 1

      Critical systems written by vendors other than Microsoft?

    16. Re:Dying gasps by UnknownSoldier · · Score: 3, Interesting

      > While I agree that C is a bad language, it has no competition in low-level coding.
      Mostly agree. Although I prefer turning all the crap in C++ off to get better compiler support.

      > Although C++ could take its role and it even fixes many of its shortcomings (e.g. namespaces)
      Uh, you don't remembered "Embedded C++" back in the late 90's early 00's ?

      If you think namespaces are part of the problems you really don't understand the complexity of C++ at _run_time_ ...

      Namely:

      * Exception Handling
      * RTTI
      * dynamic memory allocation and the crappy way new/delete handle out of memory
      * dynamic casts
      * no _standard_ way to specify order of global constructors/destructors

      Embedded systems NEED to be deterministic, otherwise you are just gambling with a time-bomb.

      http://en.wikipedia.org/wiki/Embedded_C%2B%2B

      --
      There are 2 problems with C++. Its design and implementation.

    17. Re:Dying gasps by ByOhTek · · Score: 1, Interesting

      Seconded.

      Like Java, C# will be attractive to nubblecake coders due to the ease of use, but I'd have to say, in my experience, the documentation is way better, and, provided you follow what's listed on the Mono project as compatible, you get better cross platform compatibility as well.

      Anything can crash with an incompetent coder. If you think C# is bad, imagine what they'd do on a less well documented language like Java, or a much more skill-dependent language like C, C++ or assembler.

      --
      Self proclaimed typo king, and inventor of the bear destroying coffee table (patent not pending).
    18. Re:Dying gasps by marcosdumay · · Score: 3, Interesting

      After you accept the constraints of an embbebed environment and low level access, C is not a bad language anymore. Any language useable on that kind of environment is at least as bad as C.

    19. Re:Dying gasps by ByOhTek · · Score: 1

      You'll probably laugh, and it does need some polish and more effort, but what about D?

      That being said, while it lacks a lot of conveniences, C certainly isn't a bad language, just not the easiest to learn and write in.

      --
      Self proclaimed typo king, and inventor of the bear destroying coffee table (patent not pending).
    20. Re:Dying gasps by Anonymous Coward · · Score: 0

      Ada especially.

    21. Re:Dying gasps by ByOhTek · · Score: 1

      FUD. .NET is NOT windows only. There is an open source cross platform implementation that works quite well. Actually, in my experience, so long as it is on a supported platform, and the developers consider the Mono documentation, it is better than Java using the Sun (now Oracle) java implementation in terms of compatibility/reliability between platforms - though it does tend to be slightly slower on many platforms.

      Objective-C is mostly MacOS/iOS, I don't know of an Objective-C compiler for Android - it's typically Java or a translator from another language into java into the Dalvik bytecode (other languages such as C# and C, but maybe Objective-C is in that list).

      Where are you getting 90%? C#, which is much more popular than the second most popular .NET language (VB.NET) never got up to 9% according to TIOBE, let alone 90%...

      --
      Self proclaimed typo king, and inventor of the bear destroying coffee table (patent not pending).
    22. Re:Dying gasps by viperidaenz · · Score: 0

      Is that why they program extremely resource constrained smart cards with Java?

    23. Re:Dying gasps by disambiguated · · Score: 4, Interesting

      Maybe you're like me.

      I've been using C for so long that I think I've lost objectivity. C is the first language I learned (other than line numbered basic.) In my mind, C is the language all other languages are judged against.

      But if there's any truth to this (when did the TIOBE index become the official word?) it makes me wonder if it's not C itself that is making a comeback, but good old fashioned procedural style programming.

      All these fancy new languages with their polymorphism, encapsulation, templates and functional features have lost their sparkle. Programmers are rediscovering that there isn't anything you can't do (even runtime polymorphism) with just functions, structs, arrays and pointers. It can be easier to understand, and although it may be more typing, it has the virtue that you know exactly what the compiler is going to do with it.

    24. Re:Dying gasps by viperidaenz · · Score: 2

      Not really.
      They're different languages that happen to run on the JVM.
      You should then include JRuby and Jython under Java too.

      C# and VB.NET both run on the CLR. Should they be combined?

      Perhaps you should include everything under "x86" or "ARM".

    25. Re:Dying gasps by marcello_dl · · Score: 1

      The alternative is: a star becomes a brown dwarf when Oracle touches it...

      --
      ---- MISSING MISCELLANEOUS DATA SEGMENT --- [sigdash] trolololol
    26. Re:Dying gasps by viperidaenz · · Score: 2

      .NET Micro Framework? for systems with 64K of RAM and 256K of storage. That gives you C# and VB.
      As a bonus you get emulators and debugging built in and its open source under an Apache license.

    27. Re:Dying gasps by Anonymous Coward · · Score: 0

      How about NONE, since C# is nondeterministic.

    28. Re:Dying gasps by Anonymous Coward · · Score: 0

      real business run on COBOL/CISC and java

    29. Re:Dying gasps by Kergan · · Score: 2

      Java though... makes me doubt the validity of TIOBE heavily, object-C doesn't help either, I get that there's a lot of android/iOS programming going on (I believe this is what object-C is used for mostly nowadays, but... more than 90% of businesses combined using .NET... doubtful). Maybe if TIOBE was based on +/- % changes I'd understanding, but as an overall popularity index, businesses have the $, and businesses use .NET unless they're web based...

      And therein lies the rub in your argument. Many companies actually are web based. Many others are into mobile. And a shit ton of stuff is embedded or low level enough that .Net isn't even an option.

      In my own industry (telco/finance), hardly anyone I'm aware of uses C# or VB.Net. It's almost all C for the low level stuff, Java for the enterprisy stuff, and java/Obj-C for mobile stuff. Oh, and there's some COBOL for legacy stuff, too.

      In my brother's (automation/machine tools), it's mostly C for low level stuff, and C++ for higher level stuff.

      In my sister's (public administration/archives), it's mostly web-based intranets.

      And best I'm aware, games are mostly coded in C++ or (more recently) Obj-C++.

      Admittedly, I haven't touched a Windows box in years, and my sample is too small to be noteworthy. In each case, though, note that .Net is nowhere in sight except on desktop apps such as Office. That's arguably where the volume dollars are at -- even though I'd suggest that volume dollars currently are in mobile.

      At any rate, if TIOBE's metrics includes new lines of code produced per year, I for one am actually surprised that .Net came out on top last year.

    30. Re:Dying gasps by Tarlus · · Score: 2

      Yeah, I'm of the opinion that a person who cannot properly use C (and understand how memory management works) has no business writing mission-critical software in any language. JVM's garbage collector is for sissies. =P

      --
      /* No Comment */
    31. Re:Dying gasps by Jorl17 · · Score: 2

      That's not Java. It's a very strict and small subset of Java. You can't even have 2D arrays!

      --
      Have you heard about SoylentNews?
    32. Re:Dying gasps by HaZardman27 · · Score: 2

      Nice that you don't even mention how Java Card uses only a subset of the Java language and optimized bytecode compilation in order to reduce resource consumption.

      --
      Apparently wizard is not a legitimate career path, so I chose programmer instead.
    33. Re:Dying gasps by Bill_the_Engineer · · Score: 4, Insightful

      While I agree that C is a bad language...

      Just because the language doesn't hold your hand and make sure you don't mess up doesn't necessarily make it a "bad" language. C++ could never fully take C's role due to the name mangling that C++ requires. I use and like C++ but there are somethings that are best left to C. Especially if you're binding compiled code to some interpreted language (e.g. Perl, Python, or Ruby) to speed up some computationally intensive portion of an application.

      --
      These comments are my own and do not necessarily reflect the views or opinions of my employer or colleagues...
    34. Re:Dying gasps by Kjella · · Score: 1

      While I agree that C is a bad language, it has no competition in low-level coding. With embedded systems gaining ground, more and more people will start to use it.

      Except the "embedded" smart phones and tablets are approaching - if not gone way past - the performance levels where people started using high-level languages on traditional computers. A dual-core gigahertz processor and a gigabyte of RAM and a GPU to push many millions of polygons per second isn't a very resource constrained environment anymore. For sure, there's still some rather hardcore embedded development on controller chips in consumer electronics that have kilobytes of RAM and an 8 bit micro controller, but there's been no particular boom there.

      --
      Live today, because you never know what tomorrow brings
    35. Re:Dying gasps by serviscope_minor · · Score: 1

      Any language useable on that kind of environment is at least as bad as C.

      C++ is better and works on pretty resource constrained processors, like some of the quite small Atmel ones. There aren't many that are much smaller. I think the main reason noone's got C++ working on the tiny PICs is because of the bastardliness of the sideways paged memory.

      --
      SJW n. One who posts facts.
    36. Re:Dying gasps by TheRaven64 · · Score: 2

      I half agree. A good workman doesn't blame his tools, but that's partly because a good workman has access to, and selects, the correct tool for the job. You can implement any algorithm in any language, but any language that you choose, but certain language encourage certain formulations, and some impose restrictions on the underlying platform. It's just as much of a mistake to think that all languages are interchangeable as it is to think that one is the best tool for every job.

      --
      I am TheRaven on Soylent News
    37. Re:Dying gasps by serviscope_minor · · Score: 1

      That's quite resource constrianed. But there's a long way down from there. If you're interested, look up the datasheet for a PIC12F675 with a generous 64 bytes of RAM and 1Kword storage.

      --
      SJW n. One who posts facts.
    38. Re:Dying gasps by viperidaenz · · Score: 1

      It's still a variant of Java invented by Sun.

      It's about using the right tool for the job.

      C is good for building operating systems.

      Java is good for building applications that run on your operating system.

    39. Re:Dying gasps by fotoflojoe · · Score: 1

      The Netduino guys have implemented .NET in an embedded environement.

    40. Re:Dying gasps by Anonymous Coward · · Score: 0

      Typically maybe 5% or less of your application needs to be really, really fast (interrupt handlers, DSP code, special communications or math or encryption libraries). You might code these in assembly, and the rest in C.

      Don't forget VHDL or Verilog. FPGAs have taken over a lot of the embedded hardware market.

    41. Re:Dying gasps by Anonymous Coward · · Score: 0

      Java is good for building applications that run on your operating system.

      Hmmm. Java may be more suited to desktop application programming than it is to systems programming - but I have yet to use a desktop application written in Java that I would recommend to anyone.

    42. Re:Dying gasps by Synerg1y · · Score: 1

      90% of businesses, and I think you're right about Android using Java. So let's think about this then, C (embedded machines), Java (android), object-C (iOS) being the top 3? Trend wise... maybe... but... on a year to year comparison... hell no.

      C++ (games (maybe PC gaming isn't what it used to be) & .NET (business) followed by C... and I'd have to ask are there really THAT many android/iOS apps coming out daily that they eclipse business projects and needs? Highly doubtful.

    43. Re:Dying gasps by Anonymous Coward · · Score: 0

      Of course, C is good (and necessary) for Java. IIRC, much of the Java runtime is written in C.

      I am always amused at the Java fans who talk about how portable Java is, without even knowing that you need a working C compiler for the target before you can even think about running Java.

    44. Re:Dying gasps by angel'o'sphere · · Score: 1

      Buisiness coding is two things.
      Small business and/or desktop apps used by buisinesses. That might be done in C#
      However big iron always in our times runs Java. One reason is simple: mainframes and big computers like Suns (oops Oacles) simply don't have C# support. The othe reason is: somethingvlike google or amazon simply does not run on a 'cluster' of windows 7 machines, or is it 8 or is it XP?

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    45. Re:Dying gasps by Synerg1y · · Score: 1

      I'm mostly going off of what I see in the job market, which is .NET, .NET, & .NET and every once in a blue moon java. I know pbx's in telco are probably C based, that would make sense, but what would automotive have to do with C? What lang are the intranets in?

      Also, isn't .NET known for it's productivity factor of being able to churn out large volumes of code due to full OOP, architectural frameworks, & Visual Studio's 49798798 code producing features & such? :P

      I make no claim to the quality of that code btw.

    46. Re:Dying gasps by angel'o'sphere · · Score: 1

      FUD yourself.
      In 15 years Java programming I never encountered a cross platform issue. And certainly such issues are not in the documentation but in the CODE.
      Regarding .Net on other platforms (mono) ... can you meanwhile write GUI apss in it? I think even Mono 2.0 only supported console apps.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    47. Re:Dying gasps by K.+S.+Kyosuke · · Score: 1

      C# is pretty much deterministic, unlike, say, Dijkstra's Guarded Command Language, or Go, if you want something tangible and trendy...

      --
      Ezekiel 23:20
    48. Re:Dying gasps by hackula · · Score: 1

      ...Now get off his lawn!

    49. Re:Dying gasps by timeOday · · Score: 2

      Not really. While I agree that C is a bad language, it has no competition in low-level coding.

      The enduring popularity and success of C is a strong argument that there aren't any really bad languages - that language design just doesn't matter very much. That designing new languages is largely a waste of time. The only real requirement for a language is that it gives you enough control to do whatever you want; from there you can get anywhere, and you can also write progressively higher levels of APIs to make programming tolerable. Thus the more advanced a language is, the more likely to exclude itself from a given application, since the more likely it is to "take care of something" in a way other than what you wanted.

      At least C dominates assembler as the lingua franca - so compiling, in itself, is of value. But C is about the most primitive compiled language that could be devised, and here it still is, after all these years, and hundreds of almost infinitely more advanced languages have come and gone. Imagine if today's automobiles didn't offer enough advantages over the Model T to brush it aside.

    50. Re:Dying gasps by K.+S.+Kyosuke · · Score: 1

      Unless you're one of the many Ada users who are already switching to C... :)

      --
      Ezekiel 23:20
    51. Re:Dying gasps by treerex · · Score: 1

      Ha, if people think C is dangerous, then they should definitely switch to Forth.

    52. Re:Dying gasps by shutdown+-p+now · · Score: 1

      Regarding .Net on other platforms (mono) ... can you meanwhile write GUI apss in it? I think even Mono 2.0 only supported console apps.

      Mono has supported Gtk# for ages.

    53. Re:Dying gasps by Anonymous Coward · · Score: 0

      That's because 19 should be enough for anybody! (j/k)

    54. Re:Dying gasps by viperidaenz · · Score: 1

      It is still Java.
      There's JavaCard, Java ME, Java SE, Java EE.

      Mobile phones from 10 years ago ran Java.ME. Their SIM cards run JavaCard.

      Set top boxes run Java, the decoder cards run JavaCard

    55. Re:Dying gasps by Anonymous Coward · · Score: 0

      I write .NET for a living (for ~2 years now), and I've never heard of that...very cool, thanks for the info!

    56. Re:Dying gasps by TeknoHog · · Score: 5, Funny

      Not to mention the number fo songs written in C. In particular, C# is a real pain with all those black keys.

      --
      Escher was the first MC and Giger invented the HR department.
    57. Re:Dying gasps by viperidaenz · · Score: 1

      Like the PIC10F200 with 16 bytes or RAM and 256 words of Flash?

      I'm looking at a 12F629 for my next project, very similar to the 675.

    58. Re:Dying gasps by ByOhTek · · Score: 1

      Mono has GTK#, as well as a cross-platform implementation of GDI... So, yes, And the latter, at least has been around since the 1.x versions of Mono.

      I've had to write my java code to work with Linux, Windows and HPUX, all using the Sun (later oracle) Java implementation. At the time I ran into the issue, we were using 1.4 (we skipped 1.5 to 1.6, and I believe it went away in 1.5 or 1.6). Anyway, there was an issue with a string search function (indexOf?) that wasn't listed as using regexes, but actually was. I had some backslashes in my search string (hardcoded, not entered via GUI or command line). Anyway, it worked great on Linux, Windows (native and Cygwin), but the HPUX implementation failed, we found out they decided to use the native regex implementation (varies by system) rather than their own.

      Yet, they use their own (shitty) SSL implementation which had screwy key management until 1.5 or 1.6...

      --
      Self proclaimed typo king, and inventor of the bear destroying coffee table (patent not pending).
    59. Re:Dying gasps by Mahldcat · · Score: 2

      Background wise I'm similar background--I learned on Basic first (on a Commodore 128 and Apple IIgs), and then formal training in college was C++ for basic fundamentals, and then they migrated you into C ASAP, which is in and of itself important... Now....I don't use C in my day to job (one of the few that use both Java and C#), and would honestly hate having to work in C (or even C++), however I also have a LOT better understanding of what is going on under the hood (memory management and pointers (and the related topics like function pointers, pass by ref/pointer vs value)) versus if I were only taught in a high level language such as C# or Java. This is also becoming more and more clear since I'm mentoring a colleague who is also in a program that starts out in C#...Had a really horrendous time trying to explain to him what a delegate what since he had zero knowledge of a function pointer, nor did he know about the C# ref directive. Finally ended up telling him that he would be VERY wise to at least take an elective in how to code in C because of these knowledge gaps.....

    60. Re:Dying gasps by yurtinus · · Score: 2
      Good code and bad code transcends all languages, you're absolutely right about that. But my original post (fully meant to be humorous, surprised it generated some discussion!) is specifically regarding embedded mission critical systems.This generally would imply specialized hardware and a real-time operating system. Don't get me wrong - Java and C# are great and certainly have their uses, but the overhead of an interpreter throws an extra variable in the mix that you really don't want to account for in a precisely timed embedded system. Cross platform compatibility and nubblecake coders really don't factor into it.

      Your sibling poster put it best:

      It's just as much of a mistake to think that all languages are interchangeable as it is to think that one is the best tool for every job.

      So really, GP is correct as well. If you selected the wrong tool for the job, you're the problem - not the tool you selected.

      --
      +1 Disagree
    61. Re:Dying gasps by yurtinus · · Score: 1

      It all depends on how you spec your system. "Determinism" generally comes down to being able to say "It will take no longer than x time to perform y task." If x is suitably large and y is suitably simple, then pretty much anything can be called deterministic.

      --
      +1 Disagree
    62. Re:Dying gasps by yurtinus · · Score: 1

      No mod points, but this made me laugh.

      And also, I really do like The Black Keys....

      --
      +1 Disagree
    63. Re:Dying gasps by Pieroxy · · Score: 1

      So you're saying that Java is less documented than C# and that C is more cross platform than Java?

      So I'd say you either don't know Java very well or you don't know C# very well. I do both for a living and I'm telling you that their documentation is on par and their cross platform level is... well... One of them is cross platform.

    64. Re:Dying gasps by serviscope_minor · · Score: 1

      Oh yeah, I forgot about the EVEN MORE SPARTAN 10F series.

      The 12F675 is the smallest I've used, though I think the code for some of the projects would easily have fitted on a 10. It's easy just to buy a tube of one sort though with the kind of usage I have.

      --
      SJW n. One who posts facts.
    65. Re:Dying gasps by Anonymous Coward · · Score: 0

      Whoa, are you challenging a java developers ability to make a simple program run slow on a modern platform?

    66. Re:Dying gasps by Synerg1y · · Score: 1
      Lol, I was considering your point till you said...

      windows 7 machines, or is it 8 or is it XP

      If you don't know what windows server is you have no room to be talking about anything outside the desktop including "big iron" :)

      Also, buisinesses = businesses.

    67. Re:Dying gasps by Synerg1y · · Score: 1

      I would pass on any project that involved business and mono in the same doc. I think Mono is really cool, but from a reliability standpoint and from a support standpoint, it would be business suicide to use it. It's just not been proven in the sense.

    68. Re:Dying gasps by Anonymous Coward · · Score: 0

      Well to be fair, it's not like you use every feature of the C language in a constrained environment either.

    69. Re:Dying gasps by shutdown+-p+now · · Score: 1

      I agree on that. If I needed to write a cross-platform app with GUI, my first choice would be C++ and Qt. Barring that, or if a higher-level language was specifically requested, I'd take Python and PySide (and C++ for anything that needs the performance of native code, with Boost.Python to bridge it).

    70. Re:Dying gasps by thetoadwarrior · · Score: 1
      Mono isn't 100% compatible with everything you can do in .Net and it lags behind. It's not the worst solution but it's not perfect. I still don't think its wise to put faith in Mono if you want a cross platform development platform.

      Windows Forms 2.0 is also supported, but not actively developed, and as such its support on Mono is incomplete.

      Mono's aim is to achieve full support for the features in .NET 4.0 except Windows Presentation Foundation (WPF) (which the Mono team do not plan to support due to the amount of work it would need), Entity Framework and Windows Workflow Foundation (WF), limited Windows Communication Foundation (WCF). Some missing parts of the .NET Framework are under development in an experimental Mono subproject called Olive.

      http://en.wikipedia.org/wiki/Mono_(software)#Current_status_and_roadmap

      Not to mention if the current developers give up on it, what guarantee is there that anyone will even care to pick it up? With Java you have a far better guarantee it will stay cross-platform and it's a complete implementation across all platforms.

      If you think .Net/Mono is a viable solution then Objective-C certainly is. It's supported on Unix platforms and Windows. It may not be on Android but why would use want to use anything other than Java to make Android malware?

    71. Re:Dying gasps by Anonymous Coward · · Score: 0

      ...or visual basic.

      I'm not joking.

    72. Re:Dying gasps by steelfood · · Score: 2, Insightful

      Object-oriented is good for projects that need to be maintained. But it comes with additional complexity that programmers need to learn and track. It's only feasible for very large projects with multiple developers working on multiplel branches of development, and even then, it requires a very good maintainer, or it's too easy to fuck everything up. The infrastructure necessary to do good OO quickly gets as expensive and as complex as the problem the OO paradigm is trying to solve.

      Procedural is the simpliest. It's not the fanciest, but it works in most cases. It handles code reuse more than adequately, which is all that a programmer really is looking to minimize (less duplication means less typing). And it's quick.

      With Java now in Oracle's hands, it's not surprising C is making a comeback.

      --
      "If a nation expects to be ignorant and free in a state of civilization, it expects what never was and never will be."
    73. Re:Dying gasps by Anonymous Coward · · Score: 0

      I totally missed the "embedded" part because I wasn't following the original discussion.

      -#42508433

    74. Re:Dying gasps by Glock27 · · Score: 1

      His point has some validity in that Java interest is being diluted by newer (and many think improved) languages running on the JVM. In addition to the ones already mentioned, there are Clojure and Gosu as well, plus probably more I'm forgetting. Scala is the pick of the bunch, IMO.

      The other thing to keep in mind, is that the Tiobe index is based on web searches. So, it's really a combination of which language is popular, multiplied by its confusion factor. If C is used half as much, but is three times as confusing, it will score higher... ;-)

      --
      Galileo: "The Earth revolves around the Sun!"
      Score: -1 100% Flamebait
    75. Re:Dying gasps by Anonymous Coward · · Score: 0

      You're funny.

      First you say --

      and selects, the correct tool for the job...

      then you say --

      You can implement any algorithm in any language...

      Those statements are mutually exclusive.

    76. Re:Dying gasps by Anonymous Coward · · Score: 0

      What is Java writen in?

    77. Re:Dying gasps by RCL · · Score: 1

      Certainly C is more cross-platform. I can compile and run C program on my PowerPC-based MyBookLive NAS, on my ARM-based Raspberry Pi, on my MIPS-based Dingoo A320 and on my again PowerPC-based PlayStation 3. Building a GCC toolchain for all those platforms is a piece of cake with crosstool-ng. Now, can I build a Java runtime for all those devices? How much effort is that compared to building GCC?

      Not to mention that it's totally uninteresting to be writing software for someone's VM. You don't get to know the hardware, you could very well program in something like Javascript.

    78. Re:Dying gasps by RCL · · Score: 1

      Probably because that's what they were taught in school. I never could understand why academia are so fond of Java.

    79. Re:Dying gasps by Glock27 · · Score: 1

      You aren't forced to use a single item on your list, they are all avoidable for realtime/embedded programming.

      For hard real time, you shouldn't even do dynamic memory allocation as heap allocation is non-deterministic. That applies to both C and C++.

      I'm not a giant C++ fan, but facts are facts.

      --
      Galileo: "The Earth revolves around the Sun!"
      Score: -1 100% Flamebait
    80. Re:Dying gasps by Anonymous Coward · · Score: 0

      .NET Micro Framework? for systems with 64K of RAM and 256K of storage. That gives you C# and VB.
      As a bonus you get emulators and debugging built in and its open source under an Apache license.

      64k ram and 256k flash pretty much puts you in the 32bit microcontroller range.
      C works fine on embedded 8bit systems with 128 byte RAM and 2k flash. (Probably less but that is the lowest I have used it on.)

    81. Re:Dying gasps by RCL · · Score: 3, Insightful

      More importantly, OOP requires that you start with class hierarchy - wrong approach. Class hierarchy is de facto a decision tree, a very unstable classifier. If you build it on insufficient number of observations (which is nearly always the case when you start writing software from scratch), you will need to throw away your decision tree and rebuild it anew. That's what we call "refactoring" in OOP.

      Let me shout it loud: Premature classification is the root of all evil! :) Think about your program as of data-to-data mapping primarily, and then build the abstractions.

    82. Re:Dying gasps by lightknight · · Score: 1

      Actually, you can apparently get C# to compile down to machine instructions (no JIT) with the right compiler.

      --
      I am John Hurt.
    83. Re:Dying gasps by phantomfive · · Score: 1

      I think he was saying that namespaces are one of the ways C could be improved, not that namespaces are a problem with C++.....

      --
      "First they came for the slanderers and i said nothing."
    84. Re:Dying gasps by K.+S.+Kyosuke · · Score: 1

      "Determinism" generally comes down to being able to say "It will take no longer than x time to perform y task."

      That doesn't depend as much on the language, that's more about its implementation. But on a PC, you can't guarantee that for any language or implementation, AFAIK, stuff like SMM can break it even if you code it in assembly language - better use some custom hardware.

      Anyway, that's temporal determinism of a computing system, on the language level, determinism has usually means something slightly different, at least traditionally. For example, Go has a guaranteed non-deterministic select control construct, and it has nothing to do with time.

      --
      Ezekiel 23:20
    85. Re:Dying gasps by lightknight · · Score: 1

      Indeed. C# is a rapid prototype language; as such, if you need more performance than C# provides (which uses a pretty greased JIT), you'd write the components that needed it in C/C++/ASM, and just call them from higher-level functions.

      The point was to speed up development; what would take an eternity in C/C++, with mind-boggling errors, is now easy to debug and get running in a few hours / weeks. With DllImport and other fun things, it's easy to link to C/C++ dlls, which is where you would throw the code, once again, that needs that extra 10% performance boost. If you were doing a video transcode app, you'd write the majority of the UI / backend in C#, and link to the actual C/C++ dlls for the encoding.

      Let's be honest, UIs are painful for most programmers. C# makes them a hell of a lot easier to build, almost a joy to use. C#, however, is not limited to UIs; it's exceedingly useful everywhere else. Switch statements which support strings, and strings which are not insane!

      --
      I am John Hurt.
    86. Re:Dying gasps by lightknight · · Score: 1

      Agreed. The idea that someone would run a major website on the consumer OS, as opposed to the server OS, is a bit of a red flag here.

      --
      I am John Hurt.
    87. Re:Dying gasps by lightknight · · Score: 1

      Forgetting IronPython, F#, and whatever else we can run off the CLR.

      --
      I am John Hurt.
    88. Re:Dying gasps by Anonymous Coward · · Score: 0

      Can someone translate this to Ordinary Programmer?

    89. Re:Dying gasps by Anonymous Coward · · Score: 0

      Doesn't D primarily aim at x86, making it unsuitable for many embedded systems?

    90. Re:Dying gasps by Anonymous Coward · · Score: 0

      Ada - for children
      Pascal - for students
      PL/1 - for adults
      C - consenting adults

      I have forgotten where I heard this first but
      it still seems to apply.
      now where does Java fit in?

    91. Re:Dying gasps by Anonymous Coward · · Score: 0

      Not really. While I agree that C is a bad language,

      You might as well have said you are mentally incompetent. If you think C is so bad, why don't YOU come up with something better?

      Oh right, you can't.

      People like you make me and many others sick with your ignorant and pretentious attitude towards computing technology.

    92. Re:Dying gasps by RCL · · Score: 2

      Think about what your input and output data is, and what operations are needed to transform the former into the latter. Then choose the most suitable approach how to represent all that.

      E.g. you don't really want a single class of Image as a container of Pixel classes for each bit depth, that's rather wrong classification. It may make more sense to stop subdivision at image level and have a number of classes that represent images of different bit depth/ number of channels. Or, it may be even better to take data organization into account and treat bitmaps that hold uncompressed data as different entities than textures that hold e.g. S3TC-compressed pixels. Or, you may think about each image as of a set of independent channels (R, G, B) and turn your data from AoS into SoA. There are multiple ways to think about the same data, you need to pick one based on what transformations are needed.

    93. Re:Dying gasps by viperidaenz · · Score: 1

      Or because it's specifically designed for the task and does it well.

    94. Re:Dying gasps by RCL · · Score: 1

      Java is designed to be predictable? Can I have RAII with it? Can I know how memory I use at any given moment? Can I guarantee repeatable runtime behavior?

    95. Re:Dying gasps by rs79 · · Score: 4, Interesting

      Oh snap.

      See, displying "Yay! it fit in the memory they gave me!" can't be 7 megs.

      C was only ever a shorthand for PDP-11 machine language, (back when C was young we'd routinely look at the compiler output. At that point it was passing arguments in registers and Dave Conroy sat in the next cube over working on what has today morphed into* gcc. That's one long lived piece of code.) and in tight spaces and critical loops you want machine language.

      Romable node.js would be the only thing I'd consider other the C for embedded code. I don't mind paying that overhead for the inherent asynchronous I/O advantages;, you have to muck around in C a lot to do that so it's worth the trade-off. Anything else just didn't bring enough to the table to warrant the overhead IMO.

      Contemporary support for C outside of Bell labs was because of embedded code (a camera gantry project, later, the Halifax postal processing plant) - the RSX11M C compiler written for that became DECUS C which went public and then went everywhere, including replacing the Bell compiler.

      * Yeah I know the claim is gcc is a clean rewrite, but logging into toad.com in the early 90s I found DGC commented source in the mix. Jon wasn't aware of it apparently...

      --
      Need Mercedes parts ?
    96. Re:Dying gasps by viperidaenz · · Score: 1

      With JavaCard you can, since there is no dynamic memory allocation so memory use is known at compile time or garbage collection to introduce latency during runtime.

    97. Re:Dying gasps by CosaNostra+Pizza+Inc · · Score: 2

      a less well documented language like Java

      Are you serious? WTF are you smoking? Java is very well documented.

    98. Re:Dying gasps by RCL · · Score: 1

      So why base that language on Java at all?

    99. Re:Dying gasps by marcosdumay · · Score: 1

      There is quite a while that I don't write in C. My first language was MS Basic (the one that mutilates the mind of everyone who learns it - or so said Djigstra) and I migrated all the way into the newer languages. They are great, but they don't work on this domain, even if they technicaly run. Even C++ that somebody down in this thread cited is too complex, and environment complexity makes your life harder on the embbebed world, not easier.

      Now, that said, the embbebed world is getting smaller by the day. Everything is becomming a full computer.

    100. Re:Dying gasps by Anonymous Coward · · Score: 0

      Non-"nubblecake" coders will use the highest level of abstraction they can that still meets their projects requirements, as such languages are likely to require far less boilerplate code, be significantly more terse, and will likely reduce the opportunity for bugs.

      And C, C++, and ASM don't make a family of languages -- those 3 languages cross nearly the entire range of language abstractions.

      Also, What documentation does C# have that Java doesnt?

      The only thing i do agree with you about is that C# is a fine language (if you can accept that its slower and less portable than java c and c++)

    101. Re:Dying gasps by Jorl17 · · Score: 1

      And I loved those performances !
      I guess you're right. However, I still don't think Java is the right tool for ANY job. But that's just me, and I'm known for hating Java.

      --
      Have you heard about SoylentNews?
    102. Re:Dying gasps by Anonymous Coward · · Score: 0

      LOL C isn't hard to learn or write. It is amazingly straightforward. Especially when it is compare to C++ and other more cumbersome languages.

    103. Re:Dying gasps by Anonymous Coward · · Score: 1

      Exceptions and RTTI can typically be turned off. Malloc is still there and perfectly usable if new/delete (or make_shared/make_unique if you're using modern C++) don't satisfy your requirements. Dynamic casts are very rare and you also don't need to use them (turn off RTTI). You don't need to use global constructors/destructors, and I believe best practice is not to.

      On the other hand, even without these features, with C++ you get templates, much more type safety, RAII, and lightweight OO.

      As for determinism, you realize C is just as bad as C++ with undefined behavior, right? Suggest you read http://blog.llvm.org/2011/05/what-every-c-programmer-should-know.html

    104. Re:Dying gasps by mysidia · · Score: 1

      C# != Microsoft.

      Of course it is. The link you cited is just Microsoft's PR machine at work, to encourage .NET adoption.

      OOXML became a "standard" too; with lots of verbiage that says "Do things like word".

      In some cases, individual players own the standards bodies or the standardization process.

    105. Re:Dying gasps by VortexCortex · · Score: 4, Interesting

      Not really. While I agree that C is a bad language, it has no competition in low-level coding.

      Oh, there's competion, just not much because it's not wanted or needed. As a hobby I started building an x86 OS from scratch with only a hex editor. From there created an assembler in machine code, then used it to create a small text editor and then assemble a disassembler, then disassembled the assembler (to save me from re-entering ASM), then I began work on creating my own system level language from scratch to build the OS with. The thing is, if you want to make the leanest language just barely above the metal, but still be cross platform, guess what you get? You get C. Seriously.

      My syntax was different, but because the op-codes (eg: jmp, the movs and push, pop, call, ret, enter, leave, protected mode & architecture features like the MMU, restricting use of code & stack registers, etc. when you add any features (like functions) you end up creating something almost exactly like C in all but name. The architecture is responsible for C, it's a product of its environment. For instance, I wanted to use multiple stacks: a separate stack for the call stack and another one for parameters / local vars / etc -- In fact I wanted to extend that to support co-routines at the lowest levels possible, all while eliminating stack smashing as a direct exploit vector -- Ah, but because of the way Virtual Memory Addressing works, and because there are dedicated operations for doing single stack per thread function calling, there's a huge performance hit to doing things in other ways down at the low level (I figured out a few tricks, but it's still slower than C functions).

      Now, most folks wouldn't tolerate a system level language that was any more inefficient than it had to be, and slightly contrary to the way things want to work at the hardware level just to add features globally that many programs don't need (e.g. namespaces, call-stack security, co-routines, etc), so they'll follow the restrictions of the system and the language produced will come out to be just like C, maybe with slightly different syntax, but all the same idioms. Maybe function calling would be something other than CDECL (instead, for variadics, I pass the number of parameters in a register, and have the callee clean up the stack, reduces code size a bit -- and I have other reasons), but even this is possible to do now in C too at the compiler level. Even when you get to adding OOP to the language, you run into C++ and it's problem with diamond inheritance, and dynamic casting (if you do things the most efficient way possible) -- I allow virtual variables as well as functions to eliminate the diamond inheritance issue with shared bases having variables -- Just make them "virtual", like you would a function, it's slower, another layer of indirection, but if I did it the fast way I'd just be re-implementing C++!

      There's a fine line I'm walking, a little too far from the architecture / ASM and my language might as well run via VM, a little less and I might as well just use C/C++. So, the space we have to innovate in to squeeze more worth out of a compilable language isn't really that big. Indeed, when I take a look at GoLang disassembled I see all the same familiar C idioms -- They just give you a nicer API for some things like concurrency, and add a few (inefficient) layers of indirection to do things like duck-typing. Great for application level logic, but I'd still write an OS and its drivers in a C like language instead.

      There's a reason why C "has no competition in low-level coding" It's because we don't need a different syntax for low level coding, it's done. As a language designer / implementer when I hear folks say "C is a bad language" I chuckle under my breath and think they might be noobs. Maybe you meant the design by committee approach sucks, but probably not. The features C has it needs to have, the syntax it has, it needs to have, e.g., pointer to a pointer to a

    106. Re:Dying gasps by rs79 · · Score: 1

      It's amazing all those apps written in C ever managed to exist before Java. It must be some sort of a miracle.

      $1 says in 10 years java will be a faint and bad memory, having been replaced by JavaScript.

      --
      Need Mercedes parts ?
    107. Re:Dying gasps by Pieroxy · · Score: 1

      I meant (as the GP mentionned) C#, not C.

    108. Re:Dying gasps by rs79 · · Score: 1

      "But if you're starting new big applications for the PC in C, you're probably insane."

      Or you know how to use the langauge.

      Work with me here: C++ was a bunch of preprocessor directives tacked on to C.

      That and Macros can make C look like anything you want. It's not true extensibility but it's been
      getting the job done for decades and works fine.

      --
      Need Mercedes parts ?
    109. Re:Dying gasps by superwiz · · Score: 1

      You have more control over which parts to speed up in C++ than you do in C.

      --
      Any guest worker system is indistinguishable from indentured servitude.
    110. Re:Dying gasps by viperidaenz · · Score: 1

      Ask Sun, they invented it.

    111. Re:Dying gasps by superwiz · · Score: 1

      Exception Handling

      entirely optional. and can be turned off at compile time.

      RTTI

      only part of runtime if you want it to be.

      dynamic memory allocation and the crappy way new/delete handle out of memory

      utter unadulterated nonsense. you have multiple ways of handling memory allocation. you can have custom memory management schemes. C standard library pretty much is guaranteed to cause memory fragmentation.

      no _standard_ way to specify order of global constructors/destructors

      if it's an issue, than don't make them global. there are standard (ie, language guaranteed) ways to control their run order... they come directly from C, btw, so not sure if you know both languages as well as you think

      --
      Any guest worker system is indistinguishable from indentured servitude.
    112. Re:Dying gasps by viperidaenz · · Score: 1

      It's been consistently strong for the last 10 years, I'm glad you're not basing your wager on statistics.

    113. Re:Dying gasps by superwiz · · Score: 1

      Object-oriented is good for projects that need to be maintained

      Only if you think that a program "does" stuff. If you think of the actions in the program as secondary to what is being accomplished, OO reduces the attention span foot print.

      less duplication means less typing

      You are a bad person. I mean it. From the bottom of my heart. You think that 20 seconds of your typing is worth 20 minutes of my reading.

      --
      Any guest worker system is indistinguishable from indentured servitude.
    114. Re:Dying gasps by superwiz · · Score: 1

      Yeah, I'm of the opinion that a person who cannot properly use C (and understand how memory management works) has no business writing mission-critical software in any language. JVM's garbage collector is for sissies. =P

      You are an armature. Making mark-and-sweep mission critical actually requires a trick which DOES include keeping track of all memory you grab from the heap. Relying on gc is only something you can afford to do with low-frequency-creation-destruction objects. Just so you understand, I have written systems which relied on GC-based languages and which had to create and destroy objects faster than GC could handle them. And the way I did it did not make the system grow to the worst-case-scenario use pooling. Tell me I am a sissy to my face... cause my code will run circles around your code :P

      --
      Any guest worker system is indistinguishable from indentured servitude.
    115. Re:Dying gasps by SplashMyBandit · · Score: 2

      provided you follow what's listed on the Mono project as compatible, you get better cross platform compatibility as well.

      That proviso you listed is a *major flaw* in Mono. Cross-platform always was important but is becoming more important as time goes one - the computing environment is becoming more heterogeneous after a decade decrease in diversity. Java has its full set of libraries that work on *every* platform, which means it is a better strategic (long term) choice than C#/Mono.

      Like Java, C# will be attractive to nubblecake coders due to the ease of use,

      Ah! hubris and ego. You do know that with even a little critical analysis you'd come to the conclusion that you ought to choose as simple language as possible to get a problem solved (while trying to leverage common solutions across projects - which means you want a general purpose language). Only a muppet chooses a more complex solution if a simple one is available. Java is excellent not only for its extensive cross-platform support but also because it is designed to be as simple as possible, freeing your mental faculties to work on *complex domain problems* (and believe me, some domains are complex enough without trying to add additional complexity just for bragging rights about how l337 one is by unnecessarily choosing an obscure development language or platform).

      Aiming to Keep it Simple Stoopid (KISS) shows good *design* (which is a vastly more important skill than mere coding ability). Even Einstein is paraphrased as saying, "As Simple as Possible, but no Simpler". He certainly didn't look down on simple mathematical tools where the problems to be solved were hard - and perhaps neither should you. The simplicity (and cross-platform) design of Java is a very significant *feature*, and usually far more strategically useful than mere additional keyword or construct features in other languages (eg. C#).

    116. Re:Dying gasps by a_hanso · · Score: 1

      I went through the languages in the following order: Basic, Fortran, Pascal, Java, C/C++, Perl, PHP and a bit of C#. After a decade of programming, I find that C++, PHP and Perl can cater to most of my needs. It's just a matter of recognizing the appropriate language for the job and not becoming a religious fanatic. I'm very fond of C/C++, but I would never try to write a web app or text processing scripts with it.

    117. Re:Dying gasps by SplashMyBandit · · Score: 1

      Embedded systems are pretty niche. I've run plenty of soft real-time Java programs on embedded systems (where size was not a constraint, so the SBC was ok for Java). You can of course use Real Time Java if you have determinism and scheduling constraints. You know about Java RT, yes? Oh yeah, calling the virtual machines as "interpreters" shows a decade out-of-date view of things. The JIT compilers are awesome these days, and they can make fast profiling decisions based on information not available during static compilation, which usually results in better performance of a long running system (like embedded systems are).

    118. Re:Dying gasps by SplashMyBandit · · Score: 1

      Same with Java. You can use GCJ to compile just as you would with a C/C++ program (including statically linking everything you need for reliability). Although the Oracle JVM is so fast these days it actually runs faster than the statically compiled programs (since the JVM JIT can profile quickly at runtime using data not available to static compilers).

    119. Re:Dying gasps by SplashMyBandit · · Score: 1

      RAII is important in C++, not so important in Java (especially in a multi-threaded environment where the Garbage Collector frees you from worrying about the lifecycle of resources shared between threads - which is a hassle in C++ and why you end up having to obsess about RAII and/or stay single-threaded).

      Can I guarantee repeatable runtime behavior?

      In Standard Java you can't control when the GC will run or in what order resources will be freed, but that is not significant in most cases. With VisualVM (part of the standard JDK) you can profile both memory and CPU usage in real-time for any application (unlike C/C++ you don't have to build a special debugging/profiling version of the application since the instrumentation is in the JVM "operating system" hosting the app). If your application is single threaded the behaviour is deterministic (as in, repeatable). Multi-threaded systems are non-deterministic (not matter what language you use). You are using multiple threads aren't you. Almost all chips these days (except the extremely low end) have multiple cores, and if you are not using all cores you are wasting hardware resources. Java (and more importantly, its standard library) has much better support for multi-threaded programs than C++ (no surprise given their relative ages).

    120. Re:Dying gasps by TheRaven64 · · Score: 1

      You can hammer in a nail with the end of a screwdriver. You can hammer in the end of a nail with the handle of a drill or a plane. That doesn't alter the fact that a hammer is a better tool for the job than either.

      Just because you can implement the same algorithm in two languages doesn't mean that you can implement the same algorithm equally easily in both. In the real world, it is often significantly easier to implement any given approach in one language than another, especially if they are from different families. I would write quite different code to solve a problem in C, C++, or Objective-C, and they're all fairly closely related languages.

      --
      I am TheRaven on Soylent News
    121. Re:Dying gasps by angel'o'sphere · · Score: 1

      If you don't know what windows server is you have no room to be talking about anything outside the desktop including "big iron" :)
      You are mistaken, the fact that I work with big iron means: I do not need to know anything about windows. If I have to "use" a windows desktop for my work, it is usually only for Outlook or Lotus Notes, all real work is done on the hosts (via X-Windows or simple SSH shell log ins). In rare cases I have to use Eclipse on Windows ... but I prefer to have it run in the Sun via X ...

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    122. Re:Dying gasps by angel'o'sphere · · Score: 1

      Mono has GTK# ...
      I dont think that qualifies, as you have to program specifically for it.
      Interesting story about the indexOf-Method. Funny that something which looks so innocent makes such a trouble.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    123. Re:Dying gasps by angel'o'sphere · · Score: 1

      I should have been more clear:
      Mono has supported Gtk# for ages

      True, but does that run on Windows? Or Macs?
      Ofc I'm asking about the .Net frames library not about a third party helper library.

      No one is interested in using GTK ... except for hobbyists.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    124. Re:Dying gasps by shutdown+-p+now · · Score: 1

      True, but does that run on Windows? Or Macs?

      Yes, it does. Of course, it doesn't look quite perfect on Windows (although it tries to look native), and it looks like crap on Macs.

      Ofc I'm asking about the .Net frames library not about a third party helper library.

      There's no single standard .NET UI library. Back when Mono got started, it was Windows Forms, and they actually have a port of that. Problem is, WinForms API is chock full of Win32'isms (heck, it has an interface called IWin32Window!), and it deals in absolute sizes, so on Linux, they had to use bits and pieces of Wine and hand-draw the widgets to retain the same size as on Windows so as not to break layout.

      Then there's WPF, which could, in theory, be made cross-platform - there's nothing in its design precluding that - but Mono guys said it's too complicated an API, and never bothered.

      No one is interested in using GTK ... except for hobbyists

      And people running Linux.

      (no, not all of them are hobbyists - I've seen POS terminals running KDE and Gnome)

    125. Re:Dying gasps by RCL · · Score: 2

      RAII is not only C++'s concept, it's very important when dealing with open files, connections or memory on graphics card. You want to know *exactly* when these resources are released because you often have global limit on them and/or need to guarantee the order of operations. I understand the motivation to avoid explicit resource management, but the truth is that we run our software in a limited environment and often cannot - nor should not - abstract from much of its limitations.

      As for multiple threads, there still is some predictability. E.g. you separate work on multiple worker threads in a "wavefront" pattern, yet you still want to end it by the end of the video frame so you can guarantee fairly constant framerate.

    126. Re:Dying gasps by angel'o'sphere · · Score: 1

      I used GTK once, 15 or more years ago. Did not look like a mature "framework". It was just a huge set of functions to call ...not complicated but to much to type to be fun.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    127. Re:Dying gasps by chthon · · Score: 1

      After having not used C for more than eight years (I studied Lisp in the meantime, and got my Master degree in Electronics and Software Engineering, where I also learned C# and Java), I restarted a project that I had already done a couple of years ago in Perl, the implementation of a simple Lisp interpreter (base: the metacircular evaluator of SICP).

      C is low level, but that was exactly what I needed, because I want to use my knowledge to build the same project on an FPGA. So with C I could properly emulate a 64k byte space and manipulate the proper bits in every cell.

      What did I use from my experience in a whole lot of programming languages (been programming since 1984):

      • Functional decomposition, which has nothing to do with functional programming, but is based on the architecture of the system
      • Data driven evaluation
      • Test driven development, made easier by the functional decomposition

      The lessons of OO are not lost on me, but OO is the logical end point of functional decomposition. One needs to be able to know where to stop decomposing the problem into classes and objects. I think that was for me the most important lesson learned in the last eight years.

      For implementing the evaluator, it was enough to define a couple of different modules in different sources, which exported only what was needed. This is just the first layer of OO. No inheritance needed.

    128. Re:Dying gasps by Anonymous Coward · · Score: 0

      That's why I transpose them to D flat.

    129. Re:Dying gasps by dkf · · Score: 1

      Java is designed to be predictable? Can I have RAII with it?

      For memory? No. Not that that's really all that important when dealing with a garbage-collected system (and modern GC systems don't have to pause the world while they run).

      For other resources — the ones where it is really important to get it right — you've got the try-with-resources construct in Java 7 (a good idea basically borrowed from C#) which gives you predictable reclamation points. Older code used try-finally (or was buggy; ho hum).

      Can I know how memory I use at any given moment?

      Yes. There's good tools for that sort of thing, and they're actually easier to use than with C and C++.

      Can I guarantee repeatable runtime behavior?

      If you stick to deterministic constructs and software patterns, the behavior of the program will be repeatable. If you don't, it won't. That's true for all languages. In terms of memory management, generational garbage collection is the big thing that makes the difference: most allocated objects have very short lifespans (because Java doesn't use stack allocation at all) and so can be disposed of very rapidly.

      --
      "Little does he know, but there is no 'I' in 'Idiot'!"
    130. Re:Dying gasps by RCL · · Score: 1

      Can I know how memory I use at any given moment?

      Yes. There's good tools for that sort of thing, and they're actually easier to use than with C and C++.

      Can I use it from within a program or do I have to assume that memory allocation never returns NULL? How do I measure and control memory fragmentation? Can I have my own memory manager for certain classes whose allocation patterns I know of?

      Can I guarantee repeatable runtime behavior?

      If you stick to deterministic constructs and software patterns, the behavior of the program will be repeatable. If you don't, it won't. That's true for all languages. In terms of memory management, generational garbage collection is the big thing that makes the difference: most allocated objects have very short lifespans (because Java doesn't use stack allocation at all) and so can be disposed of very rapidly

      Is it possible to control VM behavior (JIT or no JIT) and its performance characteristics, like, forcing to compile all the code to native before the first run? And for JIT, can you coalesce the code so parts close to each other temporally are also close spatially and thus fit instruction cache? Can you issue cache prefetches when you are about to read spatially distant data?

    131. Re:Dying gasps by ultranova · · Score: 1

      RAII is not only C++'s concept, it's very important when dealing with open files, connections or memory on graphics card. You want to know *exactly* when these resources are released because you often have global limit on them and/or need to guarantee the order of operations.

      You can explicitly manage such external resources in Java by wrapping them in try - finally -blocks. It's simply less pretty than the C++ way.

      --

      Forget magic. Any technology distinguishable from divine power is insufficiently advanced.

    132. Re:Dying gasps by sproketboy · · Score: 1

      Really? What bubble do you live in. Any job search I do Java consistently has more results.

    133. Re:Dying gasps by ByOhTek · · Score: 1

      Yeah, and you have to program specifically for TK, QT, GTK in other languages...

      Do those not count? You have to program specifically for any GUI library you use.

      --
      Self proclaimed typo king, and inventor of the bear destroying coffee table (patent not pending).
    134. Re:Dying gasps by ByOhTek · · Score: 1

      I never said it was 100% compatible, that's why I said "supported platform" and "consider the mono documentation". They are very good about documenting what isn't available or will work 'irregularly'.

      If I were to drop C#, I'd go with C or C++ Java. However, I don't see it as likely that people will give up on Mono any time soon, it's not as popular as Java, but it's still to popular, and having programed a lot in Java, C#, Python and Perl, of the higher level languages, C# is the easiest to use IMO.

      I never said .Net/Mono is more viable than Objective-C, just has a different platform-space. Objective C will cover more big-iron style servers than Mono, and Mono will cover more personal-user space. Then again, if you think android is only about malware, then you've already shown yourself to be a Macinlemming/Macintroll.

      --
      Self proclaimed typo king, and inventor of the bear destroying coffee table (patent not pending).
    135. Re:Dying gasps by ByOhTek · · Score: 1

      More most developers it is harder than something like C#, Perl, Python or Java, because most people seem confused by pointers and memory management.

      To me it is more straight forward (especially compared to Python or Java), however I do not consider myself the normal case.

      --
      Self proclaimed typo king, and inventor of the bear destroying coffee table (patent not pending).
    136. Re:Dying gasps by ByOhTek · · Score: 1

      To my knowledge, it aims to be as generic as C, but with features you can find in Java, Python or C#

      --
      Self proclaimed typo king, and inventor of the bear destroying coffee table (patent not pending).
    137. Re:Dying gasps by ByOhTek · · Score: 1

      OK. I'll get behind the right tool for the job...

      People get confused, when I answer "What's the best language to learn" with...
      C, C# or Python, Bash, Javascript and SQL.

      Smallest set I can can cover that will have every base fairly well covered, though I could see swappin gin Java or Perl for C# or Python, and csh for bash...

      --
      Self proclaimed typo king, and inventor of the bear destroying coffee table (patent not pending).
    138. Re:Dying gasps by JasterBobaMereel · · Score: 1

      The JVM can be written in Java ... but is mostly written in C or C++ but this is a platform implementation ...

      --
      Puteulanus fenestra mortis
    139. Re:Dying gasps by julesh · · Score: 1

      I used GTK once, 15 or more years ago. Did not look like a mature "framework".

      Well, no. 15 years ago GTK was just a user-interface abstraction library designed to enable a single relatively-new C application (GIMP) to be ported away from Motif, which it had used up until that point. It has changed somewhat in the interim.

    140. Re:Dying gasps by rwiggers · · Score: 1

      I've made embedded programming in C++, in a rather efficient way. It makes a lot of things easier, but it's much harder to find someone that knows what that thing is doing. If you handle a task to an experienced C++ programmer and say no use of new, delete and exception handling are allowed, probably the task won't get accomplished unless it's very simple.
      I used to advocate the use o C++ on embedded, but gave up. In a larger environment with programmers of different experience levels, C is much easier to get running.

    141. Re:Dying gasps by Anonymous Coward · · Score: 0

      Slower than Java? Nothing is slower than Java. I would like to bring Open Office to the stand as a witness.

    142. Re:Dying gasps by terjeber · · Score: 1

      embedded mission critical systems

      No problem doing embedded mission critical in C# or Java, but I would not (often) consider them for Real Time systems. Lots of embedded and mission critical systems actually do not require RT features. For RT, I'd stick with C.

    143. Re:Dying gasps by Anonymous Coward · · Score: 0

      No they're not. Learn some basic English skills.

    144. Re:Dying gasps by Anonymous Coward · · Score: 0

      Then you'll find the answer is javascript.

    145. Re:Dying gasps by angel'o'sphere · · Score: 1

      No you haven't.
      Even your example is wrong. Qt is Qt on all platforms, no special coding.
      In Java I use Swing and it runs on all platforms where Java runs. OTOH if you are more an SWT lover you are restricted to Windows/Linux/Mac but still you only code once.
      The point is: on .NET/Windows you usually code with the .NET gui libraries (formerly WindowsForms, now they have something better). And I expect if I use C# (.NET/Mono) that I only have to code once. Claiming you have to code individually for every platform is just nonsense ... and the main reason why linux is not moving forward.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    146. Re:Dying gasps by TemporalBeing · · Score: 1

      Is that why they program extremely resource constrained smart cards with Java?

      I see 64KiB mentioned on there. Yet C and assembly are the only languages used for the PC 4K challenge - not Java, and no the Java 4K Contest doesn't count - that's 4KiB of data, where the real challenge is the whole program in 4KiB of memory (data and non-data) at run-time.

      --
      Truth is like the sun. You can shut it out for a time, but it ain't goin' away. - Elvis Presley (source: imdb.com)
    147. Re:Dying gasps by TemporalBeing · · Score: 1

      In embedded systems memory is often so low that the use of a VM - .Net or Java - is not an option. C++ may be an option if they can use a library big enough to support it, but typically a language like C, Ada, and a few others are the only alternatives to Assembly.

      This is still true even with RAM and Flash prices so depressed as many of those embedded systems opt for smaller with the same amount of RAM/Flash instead of adding more RAM/Flash capacity.

      --
      Truth is like the sun. You can shut it out for a time, but it ain't goin' away. - Elvis Presley (source: imdb.com)
    148. Re:Dying gasps by Anonymous Coward · · Score: 0

      Statistics only work when there's no disruption. If I used only statistics to predict anything, we'd still be using Win95 because statistically, it was very strong many years ago. Then that market got disrupted and Win95 was replaced.

    149. Re:Dying gasps by david_thornley · · Score: 1

      Technically, you can do anything with sequential processing, an IF construct, addressable memory, and a WHILE construct. You don't need structs or functions. Programming in this way would be an incredible pain, of course. Similarly, I've never seen an implementation of inheritance and polymorphism in C that wasn't ugly and awkward-looking. (Encapsulation is in C, at the file level. Declare all the publicly available stuff in the .h file, everything else is static in the .c file. I did that long before I learned C++. It's very useful, and is something you can't get with functions etc.)

      In other senses of "anything you can't do", you can't make C work like C++ in many ways. You can't have a max() function/macro that actually works in general. You can't get something to work like the C++ algorithms.

      Consider C's qsort() against C++'s std::sort. They have the same output, but std::sort is more compact. To call qsort(), you need to pass in a pointer to the array, element size, array size, and a pointer to a comparison function. Off the bat, it's clumsier than std::sort, and easier to get wrong, and harder to understand given a quick read. However, it also does more indirection than std::sort, which is very like writing the sort function in the code, right there. The C++ sort is inherently more efficient, since it uses templates, not whatever can be cobbled up out of functions, pointers, and function pointers.

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
    150. Re:Dying gasps by Tarlus · · Score: 1

      Well, I was getting more at the fact that Java encourages lazy habits in part because of its garbage collector. That is, just recklessly nulling out or re-referencing a pointer that may have previously referenced some gigantic data structure. That automated GC at runtime will save the day, but man, what a bad habit it is that people rely on it.

      That's not to say that garbage collection is bad, especially if you're already writing in your own solutions to destroy objects. The difference is, you're consciously aware of what you're doing, and more in tune with what exactly is going on inside your computer when the code is being executed.

      Your code probably could run circles around mine, but I'll only call you a sissy to your face if you call me an 'armature' to mine!

      --
      /* No Comment */
    151. Re:Dying gasps by shutdown+-p+now · · Score: 1

      Raw Gtk is a C library. Of course it's too much to type - it has to be explicit about a lot of things that are otherwise implied in most OO languages. Any proper OO wrapper hides that complexity. And, of course, 3 years ago is 3 major releases ago - and it changed a great deal from 1.x to 2.x.

      Here is what a simple program in Python and Gtk looks like today.

    152. Re:Dying gasps by Muad'Dave · · Score: 1

      Certainly C is more cross-platform.

      WHAT? With C you have to worry about memory alignment, endian issues, native register sizes, etc. From this link:

      short short signed integer type. At least 2 chars in size.
      int basic signed integer type. At least 2 chars in size.

      How many coders rely on an int being wider than a short? The language spec says that can both be as narrow as 2 bytes! These ambiguities, as well as the mess that different architectures make of structs and unions makes your assertion laughable.

      --
      Tiller's Rule: Never use a word in written form that you've only heard and never read. You will end up looking foolish.
    153. Re:Dying gasps by RCL · · Score: 1

      So what? Unless you are coding for 16-bit and smaller devices, those differences are negligible for getting your code to work. There are almost no devices left these days which would use fancy memory addressing model, and even those that remain offer no alternative for C other than assembler.

      With Java/C#, it's worse - you won't get your program running on hardware that Oracle/Microsoft or wider community does not want to support (see Raspberry Pi as a high profile example).

    154. Re:Dying gasps by Muad'Dave · · Score: 1

      I'm using the gargantuan 16LF1827 for my ZigBee(tm) mesh network node controller. I'm simply wallowing in the 384 bytes of RAM.

      --
      Tiller's Rule: Never use a word in written form that you've only heard and never read. You will end up looking foolish.
    155. Re:Dying gasps by Muad'Dave · · Score: 1

      Unless you are coding for 16-bit and smaller devices, those differences are negligible for getting your code to work.

      Incorrect. Endian-ness is always an issue when working with structs, unions, or bitfields. I recently worked on a chunk of code that dealt with bit fields in a structure. Naively one would define it like:

      typedef struct {
              unsigned short bitfield1 : 3;
              unsigned short bitfield2 : 5;
      etc...

      The behavior of bitfields with regard to endian-ness is UNDEFINED! You're probably too young to remember the mess that endianness caused with IP addresses stored in ints. Those tasty 4 octets fit perfectly into an int (everyone assumed) and they were always stored big-endian. NOT! When 386-based unix came along all of the networking structs and netmask routines had to be changed, and things like htons had to be created.

      Part of the portability problem is that C is so close to the bare metal. The other part is that the C language spec is horribly weak when it comes to handling architectural differences. The only reason code works at all across platforms of differing endianness is due to kludges and workarounds.

      Having said all that, I do like C a lot. Not as much as Java, though.

      --
      Tiller's Rule: Never use a word in written form that you've only heard and never read. You will end up looking foolish.
    156. Re:Dying gasps by RCL · · Score: 1

      Well, I actually code for big endian platforms (current gen - until recently still called "next-gen" :) - consoles) and I am aware of the issues. But I don't really think that accounting for this means introducing "kludges and workarounds". It's like accounting for network byte order or for platform-specific file format, something that you would probably do in Java as well if you needed to read files on that platform quickly (i.e. without any "parsing" stage, just loading chunks from disk into memory directly).

      Maybe I should have been more clear when talking why "C is more cross-platform than Java" - not because you need less changes in code in order to run it on any new platform, but because you have *way* better chances to get it to run at all :)

    157. Re:Dying gasps by leenks · · Score: 1

      You seriously find the .NET documentation on a par with the Java documentation? I find the .NET documentation really poor .

      However, none of it is as bad as Esri's, which seems to always follow the form "You can solve this problem like this. But you'll get this problem, so you should solve it like this. However, that causes this problem, so you should consider this instead. However, this approach will lead to your machine imploding and therefore you should always do it this way." Why not just tell me the right way to do it, rather than following the Oracle SCP (SCJP) approach of showing you examples of horrendous code at every opportunity?

    158. Re:Dying gasps by KC0A · · Score: 1

      The black keys aren't a problem, it's the white keys. There are lots of old songs that can be played only on the black keys. One example is the old "All In the Family" theme song: "Those Were the Days".

    159. Re:Dying gasps by Hentes · · Score: 1

      This is an interesting story, thanks for sharing it. But I find it hard to accept that C is the only possible way. While it's that modern hardware has its limitations, but is it really C that was designed to be close to hardware, or did modern architectures evolve to be close to C?
      And why is getting close to the metal an advantage in itself? Speed is an advantage, but the two aren't necessarily related. Wanting something to stay close to hardware yet at the same time be crossplatform is a contradiction. A crossplatform language should be able to abstract away the hardware underneath.
      Anyway, there still are many choices you can make. Typed or untyped? How to structure it? And the preprocessor can be anything.

      For instance, I wanted to use multiple stacks: a separate stack for the call stack and another one for parameters / local vars / etc -- In fact I wanted to extend that to support co-routines at the lowest levels possible, all while eliminating stack smashing as a direct exploit vector -- Ah, but because of the way Virtual Memory Addressing works, and because there are dedicated operations for doing single stack per thread function calling, there's a huge performance hit to doing things in other ways down at the low level (I figured out a few tricks, but it's still slower than C functions).

      Forth does use two stacks, although I don't think it's flexible enough for coroutines.

      Indeed, when I take a look at GoLang disassembled I see all the same familiar C idioms

      Maybe it's implemented in C?

      My problem with C is not the syntax, in fact I think that C got this far because of its nice syntax. One problem is its bad modularity: that I need a makefile or an IDE just to compile a project consiting of multiple files, that I need to use macros just so a file doesn't get imported twice. When most programming you do is gluing libraries together, modularity becomes important. But the really big problem is that C provides absolutely no way to organize code. I'm not saying it should be namespaces, classes or nested functions, just that without at least one of them any bigger C project is unmanageable. The C preprocessor is also weak for all the roles it's supposed to fill.

    160. Re:Dying gasps by metaforest · · Score: 1

      Here's what you sound like to me: "While I agree x86 Assembly is a bad language, it has no competition in x86 machine level coding." Or to use a car analogy: "While I agree Wheels are a bad design, they have no competition in axle mounted circular rolling systems."

      It is not just x86 architecture that sucks. There is very few truly innovative machine-level programming models that get beyond 'the ivory tower' state because commercial interests ask the question, "Do you have a C compiler for it?"

      We now have a situation where if the programming model does not conform to the C runtime model, you might as well give up. Processor designers have a rough time justifying radical new ideas in programming models because the SDK for the new CPU must include a C compiler, or the CPU will not be adopted in any meaningful volume.

      Some attempts are being made... Xmos.com for example and their rather interesting XC variant of C solves a lot of problems by adding concurrency and IPC constructs to C at the lowest level, while leaving the rest of the language largely unmolested. These changes would be useless if implemented on a CPU that did not have machine-codes and register support for them. However Xmos is still too focused on small footprint systems, and after 3 generations of the I/O ring have yet to tackle the problem of scaling their architecture even to where ARM was 10 years ago. Xmos has already shown better market survival than the Inmos Transputer, so I'm hoping there are better implementations on the way.

      6x0x and x86 approaches served us well for a long time. We need to rethink the general approach, and bend the language to the hardware rather than bending the hardware to the language. The tail needs to stop wagging the dog.

      If we can do that then -eventually- operating system kernels get more efficient and offer better determinism, and higher level constructs get easier to express in more compact notation... It will probably be worthwhile, at that point, to re-factor a lot of this crufty old C we have been dragging in our wake for 40+ years.
         

    161. Re:Dying gasps by lsatenstein · · Score: 1

      Maybe you're like me.

      I've been using C for so long that I think I've lost objectivity. C is the first language I learned (other than line numbered basic.) In my mind, C is the language all other languages are judged against.

      But if there's any truth to this (when did the TIOBE index become the official word?) it makes me wonder if it's not C itself that is making a comeback, but good old fashioned procedural style programming.

      All these fancy new languages with their polymorphism, encapsulation, templates and functional features have lost their sparkle. Programmers are rediscovering that there isn't anything you can't do (even runtime polymorphism) with just functions, structs, arrays and pointers. It can be easier to understand, and although it may be more typing, it has the virtue that you know exactly what the compiler is going to do with it.

      ===
      I do agree with your view if C as the language against which others are compared. I started with C in the 80's with DOS.

      C++ is relatively new to me. I do like it for GUI and Windows designing, It is in my toolbox, the only place it fits in.
      A data structure with C and with an experienced coder like myself, never encounter memory problems, (including leaks).

      We think like a home building project. First get the land, then permits, then architecture, then building permit, etc.
      We work with doing, not with objecting. Laying out a gui interface is in my view, objective functionality. Driving the car is a function. The car is an object. It can be represented by a structure, with functions to manage the vehicle. But my C++ object is the car, and driving it is not a car property, it is what I do to the car. My view is that I don't use a method to drive the car.

      --
      Leslie Satenstein Montreal Quebec Canada
    162. Re:Dying gasps by metaforest · · Score: 1

      As an after-thought.... How is it that we have all these great languages and HLLs and yet no one has really put any effort into writing a decent tool that takes a machine description (registers, machine codes, timings, RTL whatever) and uses that to build a verifiable C (varient) compiler from it? Such a tool might ease a lot of constraints on machine-level design in future processors and make it easier to add constructs to C that reflect it's one-step-above-the-Assembler philosophy that reflect the hardware model rather than the standard C runtime model.

    163. Re:Dying gasps by spongman · · Score: 1

      In that case you really should check out F# !

    164. Re:Dying gasps by spongman · · Score: 1

      It turns into something small and brown all right. But a dwarf? I'm not so sure...

    165. Re:Dying gasps by Anonymous Coward · · Score: 0

      How many coders rely on an int being wider than a short? The language spec says that can both be as narrow as 2 bytes!

      Yep. And every competent C programmer learns in the first week to find out what the size of an "int" is on the dev machine. If you find this a stumbling block, I suggest a different line of work.

    166. Re:Dying gasps by OrangeTide · · Score: 1

      You realize that the 1980s were 30 years ago right? Back when most of us still had to trade cassette tapes at school to get the latest games.

      And I'm going to guess that FORTH isn't super popular these days because apparently all these wimp programmers think that having data types is a necessary feature in a programming language.

      --
      “Common sense is not so common.” — Voltaire
    167. Re:Dying gasps by DrVxD · · Score: 1

      Forth is, in fact, an excellent language for writing embedded systems in (I did so for several years).

      It's relatively easy to learn, it's extremely space efficient, it's fast.

      What's not to like?

      --
      Not everything that can be measured matters; Not everything that matters can be measured.
    168. Re:Dying gasps by Anonymous Coward · · Score: 0

      Java is split into three languages

      Java for morons, Jave for idiots and Java for retards?

  3. ...Bash? by earlzdotnet · · Score: 5, Interesting

    Am I the only person seriously wondering how Bash went from position 72 to 20? Bash is in the top 20 programming languages... Something is wrong with the programming universe

    1. Re:...Bash? by Tridus · · Score: 5, Insightful

      More like something is wrong with the measuring system being used.

      --
      -- "So they told me that using the download page to download something was not something they anticipated." - Bill Gates
    2. Re:...Bash? by N!k0N · · Score: 1

      2013 is the year of the Linux Desktop? Alternatively, Raspberry Pi/Arduino/Android devices maybe?

    3. Re:...Bash? by Anonymous Coward · · Score: 0

      indeed

    4. Re:...Bash? by i+kan+reed · · Score: 4, Informative

      Yep, they use frequency of search on the internet for the language to estimate. Which means confusing, and easily broken languages like C, and infrequently used(and thus easily forgotten) languages like bash get a huge leg-up.

    5. Re:...Bash? by Anonymous Coward · · Score: 0

      I had to write a bash script the other day...that probably accounts for 5 of those 52 places...

    6. Re:...Bash? by nemasu · · Score: 1

      Bash can be very powerful, and it's easy to use. The entire (obviously minus sed,awk,dd,etc) packaging system for noop linux uses bash scripts. Works very good, and is easy to figure out or modify.

      --
      I made an app! Shoutium
    7. Re:...Bash? by Anonymous Coward · · Score: 0

      Maybe it is non-metric.

    8. Re:...Bash? by mysidia · · Score: 1

      Yep, they use frequency of search on the internet for the language to estimate. Which means confusing, and easily broken languages like C, and infrequently used(and thus easily forgotten) languages like bash get a huge leg-up.

      How come BATCH (.BAT) isn't on there, then?

    9. Re:...Bash? by i+kan+reed · · Score: 1

      How come BATCH (.BAT) isn't on there, then?

      Because even MSCEs are smart enough to know better.

    10. Re:...Bash? by nschubach · · Score: 1

      The difference between Bash and Batch is pretty significant... I grew up on Batch Scripts and when I learned Bash Scripting I was amazed at what one could do.

      --
      Every time I start to have faith in humanity, I ruin it by driving to work between 7 and 8 am.
    11. Re:...Bash? by Anonymous Coward · · Score: 0

      Correlation != causation, I know, but check these two graphs (and note popularity and top search word for second one).

    12. Re:...Bash? by Tablizer · · Score: 1

      Yep, they use frequency of search on the internet for the language to estimate.

      So every time somebody types, "You stupid [cuss-word], I'm going to bash your head in!", then Bash's count increments.

      Create a programming language called "Hitler" if you really want a high count score.
         

    13. Re:...Bash? by s.petry · · Score: 1, Insightful

      Yep, they use frequency of search on the internet for the language to estimate. Which means confusing, and easily broken languages like C, and infrequently used(and thus easily forgotten) languages like bash get a huge leg-up.

      I think C is less confusing than Java, so to each their own. At work, we do tons and tons of scripting. I can't agree with your sentiment that it's only infrequently used languages. Maybe _you_ don't use them frequently, but many others do.

      With that said, I do agree with your statement that their method for determining who is using what language is broken.

      --

      -The wise argue that there are few absolutes, the fool argues that there are no probabilities.

    14. Re:...Bash? by Anonymous Coward · · Score: 0

      Yeah, you're right; obviously people search for information about C and bash because they aren't using them.

    15. Re:...Bash? by Blakey+Rat · · Score: 1

      How come BATCH (.BAT) isn't on there, then?

      Presumably because it's been deprecated for like 15 years.

      VB comes in at number 7, and JavaScript comes in at number 10. Since this index doesn't list VBScript and JScript separately, you can assume that VBScript queries are some proportion of those VB queries, and JScript queries are some proportion of those JavaScript queries. But it's hard to be sure with the way the list is presented.

      Also they don't seem to be counting PowerShell at all.

    16. Re:...Bash? by Anonymous Coward · · Score: 0

      The whole TIOBE rating system is a joke to begin with.

    17. Re:...Bash? by Darinbob · · Score: 1

      And why bash but not sh?

    18. Re:...Bash? by paxcoder · · Score: 1

      You're going to LOVE this: There's this guy who's making a clone of rails in PHP. It's called phails, and has its own rake called phake. Guess what they're both written in? Bash. I'm not even kidding. Because I'm that guy.

    19. Re:...Bash? by psithurism · · Score: 1

      There is an easy explanation for that: Sorry, but I'm going to have to bash programming a bit here, but programming in general just sucks this year.

    20. Re:...Bash? by Anonymous Coward · · Score: 0

      Am I the only person seriously wondering how Bash went from position 72 to 20? Bash is in the top 20 programming languages... Something is wrong with the programming universe

      Something is wrong with the programming universe when people use php for shellscripting (and every other line is a system call). It seems many have now found out that bash can do what they want instead.

    21. Re:...Bash? by Anonymous Coward · · Score: 0

      It depends excatly on what you are trying to do. If you have a set of very useful programs (programs that accept inputs and outputs in detailed ways from the command line), and you wish to connect those programs to do something useful on your system, then bash is the thing to use. If you are creating one of those programs, use C. I wrote applications that build and configure software for a web site (one called "go-site" compiles 30 support programs, plus apache, mysql and php all from source and configures all to work with each other, and then also drupal). To run it, it type ./go-site and then wait 35 minutes for my corei7-920 to compile and configure my new site. I also made it all movable, and configurable but with defaults --in bash. I can also automatically update modules, do smart backups and restores (with snapshots) --in bash.

    22. Re:...Bash? by i+kan+reed · · Score: 1

      Could you not clearly see that I delineated C's attributes as completely different than bash's? Come on now. And I do use bash. Once in a while. As a small on top of real programs I write.

    23. Re:...Bash? by spongman · · Score: 1

      Batch is isn't really a language. More like speaking in tongues...

    24. Re:...Bash? by mysidia · · Score: 1

      OK. You win.

      Now why LOGO didn't make the list? :)

      11,450,000,000 search results for LOGO

      versus a measly 985,000,000 for Java.

    25. Re:...Bash? by DrVxD · · Score: 1

      What's confusing about C? It's one of the simplest languages there is.

      It does require developers to have a clue - but some may say that's not such a bad thing.

      --
      Not everything that can be measured matters; Not everything that matters can be measured.
    26. Re:...Bash? by DrVxD · · Score: 1

      How come BATCH (.BAT) isn't on there, then?

      Because people realise pretty quickly that trying to do anything with it is an exercise in futility, and they give up asking?

      --
      Not everything that can be measured matters; Not everything that matters can be measured.
  4. C? by Anonymous Coward · · Score: 1, Interesting

    That's insane. Exactly what are people writing in C these days???

    1. Re:C? by Rockoon · · Score: 4, Insightful

      ...libraries for all those managed languages and platforms.

      --
      "His name was James Damore."
    2. Re:C? by AwesomeMcgee · · Score: 5, Insightful

      Specifically the platforms. The boom in mobile devices all having varied hardware requires C glue for each one to let the managed stuff run. The mobile boom has ironically been a new hardware boom causing an old software boom.

    3. Re:C? by Joce640k · · Score: 4, Interesting

      And why not C++? It has a number of advantages over C...

      --
      No sig today...
    4. Re:C? by Old97 · · Score: 4, Insightful

      'C' is the lowest common denominator. With 'C' I can write code for anything and everything. Mainframes, embedded devices, mobile, etc. Objective-C just extends C so it is more "pure" than C++ which introduces additional notations with different semantics and implementations such as memory allocation. So I can code for iPhone mostly in 'C'. I can write 'C' libraries and link them in on applications for iOS, Android, mainframe COBOL, Mac OS/X, any *ix operating system, Windows (including .NET), etc. It's the one language that is highly performant, ubiquitous and interoperable with every platform and language I can think of. Its almost always available for free.

      --
      Very often, people confuse simple with simplistic. The nuance is lost on most. - Clement Mok
    5. Re:C? by Goaway · · Score: 1

      Uh, pretty much everything?

    6. Re:C? by javamann · · Score: 2, Interesting

      Name three

    7. Re:C? by Anonymous Coward · · Score: 1

      Inheritance, Namespaces, Templates

    8. Re:C? by Pinhedd · · Score: 2, Insightful

      Those aren't clear advantages. Rather, they're a shortcut toward writing shitty code.

    9. Re:C? by Jerslan · · Score: 2

      He meant name three advantages, not disadvantages and feature bloat ;)

    10. Re:C? by jjohnson · · Score: 3, Insightful

      The name of the fallacy you just demonstrated is "No True Scotsman".

      --
      Anyone who loves or hates any language, platform, or manufacturer, doesn't know what they're talking about.
    11. Re:C? by Anonymous Coward · · Score: 0

      Zero is a number. :p

      Comment syntax (the fact that C programmers stole the // because of it's obvious usefullness doesn't mean it wasn't a C++ feature)
      Operator overrides ( (a + b) / c, or divide_3d_vector_set(add_3d_vector_set(a,b),c) )
      Name Space Collision avoidance

      No one says you have to use "cout"

    12. Re:C? by EmperorOfCanada · · Score: 4, Interesting

      Your operating system, almost all shrink wrap applications such as MS Office or Photoshop, Your console's operating system, Your games, Your microwave's OS, Your car. C or C++ but even the C++ in most of the above systems is more C like than C++. Where people mistake the popularity of Java is that many of the jobs at hand such as the local phone company's new billing system will be in Java. But the code that makes the phones actually ring will be something more hardcore such as C or even erlang.

      So most of the public will go through their day probably using C or C++ based code 99% of the time and a bit will be say the timesheet software running Java that they access through their C based browser using C based network drivers on viewed through a video card with C based drivers on a C based OS with their packets going through C based routers and switches after using a C based security system to get into the building where they used a C based elevator system to get up to work. Of course many of the above systems use a smattering of other bits such as scripting libraries but those are being run by a C library. The only other language that the average person might encounter would be some Objective-C on their iPhone or some Java on their Android; but again those OS's are basically C.

      When they get home and browse the web they then get the full onslaught of servers running a dog's breakfast of PHP, Java, RoR, etc. But those servers are all programmed in.... you guessed it C.

    13. Re:C? by Nethead · · Score: 2

      Name three true Scotsmen!

      --
      -- I have a private email server in my basement.
    14. Re:C? by Cassini2 · · Score: 1

      Encapsulation - the ability to hide functions inside classes is a far bigger feature of C++ than any of the above.

      Additionally, C++ has the advantage that you can write one piece of code that can compile either in C++ or in C, which can be a huge advantage when doing communications code with embedded systems.

    15. Re:C? by narcc · · Score: 1

      C++ causes more problems than it solves.

      If you're using C++, you should probably be using C. If C isn't a good fit for your project, C++ isn't likely to be the answer.

    16. Re:C? by Anonymous Coward · · Score: 0

      I develop in C, BASH, and Perl to keep the knuckleheads from messing with my systems. When they see I am using only a terminal console they run crying to the manager but the mean man in the cubicle. ROFLMAO

    17. Re:C? by CanHasDIY · · Score: 4, Funny

      Sean Connery, Doctor Who, and the asshole who invented golf.

      Boo-ya.

      --
      An enigma, wrapped in a riddle, shrouded in bacon and cheese
    18. Re:C? by Anonymous Coward · · Score: 0

      the aqueduct, the sanitation and the roads

    19. That isn't a true "No True Scotsman"! *

      *Its truly not a true "no true Scotsman", and the irony of it is too much to avoid pointing out.

      --
      Well.. maybe. Or Maybe not. But Definitely not sort of.
    20. Re:C? by Anonymous Coward · · Score: 1

      cin, cout aren't that bad once you find the hidden "sync with cstdio switch". The speed gain once that is set to the only sane value (false) tends to surprise many, of course the c++ standard tried to be c compatible by making slow the default setting (apperently people might get surprised by weird behavior if they use two different libs to write to the same output at the same time).

      **Spoiler: Secret invocation**
      std::ios_base::sync_with_stdio(false)
      **End Spoiler***

    21. Re:C? by Anonymous Coward · · Score: 0

      Templates are the number 1 reason to avoid C++ (or just avoid templates)

    22. Re:C? by Punto · · Score: 2

      the virtual machine that runs your Java code?

      --

      --
      Stay tuned for some shock and awe coming right up after this messages!

    23. Re:C? by Anonymous Coward · · Score: 0

      Name three true Scotsmen!

      1) The guy yelling at "Laddie" to stand still at the end of that song on "The Wall".
      2) Groundskeeper Willie from "The Simpsons".
      3) Sean Connery.

    24. Re:C? by Anonymous Coward · · Score: 1

      That's only two. Everybody knows Dr Who invented golf.

    25. Re:C? by Anonymous Coward · · Score: 0

      Tim Glenmorangie
      John Glendronach
      Sam Glenfiddich

    26. Re:C? by dutchd00d · · Score: 4, Informative

      Encapsulation - the ability to hide functions inside classes is a far bigger feature of C++ than any of the above.

      And how do you hide functions? You put them behind a "private" or "protected" access specifier, but you still have to show them in the class definition in the header file. That's not hiding. That's saying "look at all my nifty functions, none of which you can use, neener neener neener".

      In C you prefix those functions with a "static" keyword, and they aren't visible anywhere outside the original source file. Once you compile them into a .o file it's as if they never existed. That is hiding.

    27. Re:C? by Anonymous Coward · · Score: 0

      I'm always wanting to run the same code on my phone, my desktop computer and a mainframe somewhere underground. I see what you mean.

    28. Re:C? by Anonymous Coward · · Score: 0

      > That's not hiding. That's saying "look at all my nifty functions, none of which you can use, neener neener neener".

      What the hell is that even supposed to mean?

      Private functions are not meant to protect your code against some other developer's envious glances, it's to protect programmers (including yourself) from their own stupidity, while still keeping your code neatly organized and debuggable. If you're anywhere near developer's job, especially in a team - resign right now and go back to college.

    29. Re:C? by Anonymous Coward · · Score: 0

      > It's the one language that is highly performant, ubiquitous and interoperable with every platform and language I can think of. Its almost always available for free.

      It is highly performant, and ubiquitous, but "interoperable with every platform" is not something I'd say in defense of C. Yes that's technically true of the language, but not true of any given program written in C . Some version of it is generally available on every platform, but the lack of standardization things like sizes of primitives, libraries for doing anything other than the programatic equivalent of navel gazing, and a well-followed standard for syntax make it a poor choice for cross-platform coding.

    30. Re:C? by John+Bresnahan · · Score: 2

      Labeling a C function "static" makes it invisible outside of the source file, and uncallable from anywhere else in the program.

      That's how we C programmers practiced encapsulation way back in the '70s.

    31. Re:C? by Anonymous Coward · · Score: 0

      90% of the things written at my previous place of employment were in C. And as a hobby I wrote a network binary patcher system in C recently.

      It's still a pretty common language.

    32. Re:C? by serviscope_minor · · Score: 2

      C++ causes more problems than it solves.

      Only if you are a poor programmer.

      C++ gives you much more power than C. That power gives much more opportunity for use or abuse. If you abuse it, that's your fault for being a bad programmer.

      And now I'm going to go back to writing very efficient progrmams using elegant, high level and efficient libraries in C++ of the sort that simply do not exist in C.

      --
      SJW n. One who posts facts.
    33. Re:C? by macbeth66 · · Score: 0

      I would have modded ya up, but I don't waste them on AC. Sorry...

    34. Re:C? by Anonymous Coward · · Score: 0

      No true Scotsman would be from Galifrey.

    35. Re:C? by GlassHeart · · Score: 1

      The advantages to being able to develop software for anything from phones to mainframes in one language are not limited to just porting the same code everywhere, although many libraries do port readily even if the application doesn't. It also has to do with the programmer's mastery of the language. If the programmer is actually writing (even very different) code on all these disparate platforms, he or she is probably still going to be a better programmer in the end than one who has to switch among four different languages.

    36. Re:C? by flimflammer · · Score: 0

      I would have modded you redundant, but I already wasted all my mod points in another article. Sorry...

    37. Re:C? by Lord+Crc · · Score: 1

      I'm no C/C++ expert, but I think I'd list RAII, operator overloading (especially for math-oriented code) and templates.

      Sure operator overloading and templates can be abused, but when used with moderation I find they make it much easier to write clear, concise code.

    38. Re:C? by Darinbob · · Score: 1

      Er, not really...

      I'd go with modularization, stricter type checking, and link-time function argument checking.

    39. Re:C? by Darinbob · · Score: 1

      By high level and efficient libraries, I assume you mean you're not using STL?

    40. Re:C? by narcc · · Score: 1

      C++ gives you much more power than C.

      Total nonsense.

    41. Re:C? by monkeykoder · · Score: 1

      C++ is no more powerful than C it's more expressive in certain circumstances but definitely not more powerful. There is a reason C is the de-facto standard for embedded systems in that it is lightweight and the second most powerful language there is (Assembly or Machine Code being the most powerful).

    42. Re:C? by serviscope_minor · · Score: 1

      Total nonsense.

      A very sound argument. Full of subelty.

      With a few very minor exceptions, C++ is a superset of C. Therefore, you can do exactly everything in C++ that you can do in C. In C++ you can also do more stuff. Hence, C++ is more powerful.

      --
      SJW n. One who posts facts.
    43. Re:C? by serviscope_minor · · Score: 1

      I mean the STL among others.

      What's wrong with the STL? It's the best algorithmic library out there bar none.

      But there are plenty of other good libraries too.

      --
      SJW n. One who posts facts.
    44. Re:C? by Darinbob · · Score: 1

      Algorithmicly, it's very generic. It is optimized for a generic case which is nice, but this means it fools some programmers into thinking it's always optimal. The other major drawback is that STL is template based, which means you lose out on having them be object oriented, templates makes them bloated, you can't pre-compile the libraries since so much of them are in the actual header files, etc.

    45. Re:C? by datsa · · Score: 1

      Not to mention that virtually every other language is implemented in C.

    46. Re:C? by serviscope_minor · · Score: 1

      The other major drawback is that STL is template based, which means you lose out on having them be object oriented

      I really dont know what that means. Generic programing and OO are orthogonal concepts. You can have both.

      templates makes them bloated,

      In what regard?

      --
      SJW n. One who posts facts.
    47. Re:C? by phantomfive · · Score: 1

      Encapsulation - the ability to hide functions inside classes is a far bigger feature of C++ than any of the above.

      Learn to use static.

      --
      "First they came for the slanderers and i said nothing."
    48. Re:C? by rbarreira · · Score: 1

      The base stations that your mobile phone uses to make calls and access the Internet.

      --

      The AACS key is NOT 0xF606EEFD628B1CA427BEA93A9CA9773F
    49. Re:C? by tjstork · · Score: 1

      What? template driven stuff is just another way of expressing the benefits of object oriented programming. Instead of having re-usable objects, you can have re-usable systems that you can plug objects into. C++'s templates deliver on the promise of object oriented programming, not compete with it. Besides, templates compile pretty damn efficiently.

      --
      This is my sig.
    50. Re:C? by Greyfox · · Score: 1
      C++ has type safety. Sure, technically C has this too, but C encourages you to circumvent it and takes a very relaxed view toward passing things as other things. C++ has none of such nonsense (Unless you REALLY want to.) I would actually read this as "C++ enables you to have a coding standard requiring use of correct types, correct casting and clear justification when you attempt to circumvent this rule."

      C++ has const. I think they finally did add that back into C a while back. So I can tell you you can look at this thing in my object, but you can't touch it! Even if it's a thing full of pointers! Ha ha! Those are const pointers! You no touchy! Again, unless you really want to...

      C++ has references. I forget if they ever added those to the C standard. I like C++ a lot better than java because I can clearly decide whether I want to pass something by copy, reference or pointer. The ability to do that, above anything else, elevates the language from "toy" or "thing that gets in my way" to "useful tool."

      C++ has incredibly well-defined scope. I can create a scope with a temporary variable inside a loop if I want to. C++ lets me decide if I want to allocate an object on the stack or on the heap, and either way I can precisely manage its lifetime and when it's destroyed. C++ has actual destructors, so I can actually deallocate resources that I allocated for an object, and I can be sure they'll be destroyed at the right time. C++ has the entire C standard library at its disposal, so I can still control the operating system as well as I can when working from C. And yeah, namespaces are kind of nice. I'm on the fence about templates. They're powerful as hell, but try explaining compile time versus run time to someone who's not used to thinking like that...

      Sure, you could emulate all of that in C. You can even emulate polymorphic objects, constructing structs with pointers to static functions which are local to the file they're defined in so nothing outside your object would have visibility to them. If you use static excessively and are very careful about naming your exposed API elements, you can mostly avoid polluting your namespace. You can use handle-body with pointers to simulate references. You can carefully manage resource lifetimes inside procedural code. I've never actually seen a programmer DO all that, but you sure could! It'd be a fair bit more work, but done correctly it would be very easy to maintain. That's why C is my second favorite language!

      C++ also lets you write bad code, as does C, Java, Pascal, Ruby, Python, Perl, BASIC, Fortran, COBOL and LISP (to name a few.) But the above features are why C++ (and C) are my go-to languages when someone discovers that brute force, ignorance and throwing hardware at a problem are no longer enough to get by. Sure I could just redesign the Java they crapped onto a page and dropped into a 40 gigabyte JVM, but then I'd have to write code in Java.

      --

      I'm trying to teach myself to set people on fire with my mind... Is it hot in here?

    51. Re:C? by Greyfox · · Score: 1

      Oh yeah and it's a lot easier to write "cppunit" than "cunit" without getting a talking to from HR every couple of weeks. "I'm just talking about UNIT TESTING god damn it!"

      --

      I'm trying to teach myself to set people on fire with my mind... Is it hot in here?

    52. Re:C? by jjohnson · · Score: 1

      I can appreciate the irony, but I dispute it: He was asked for three advantages, and on naming three, told "those aren't real advantages". Isn't that a 'no true scotsman'?

      --
      Anyone who loves or hates any language, platform, or manufacturer, doesn't know what they're talking about.
    53. Re:C? by jcfandino · · Score: 2

      Be thankful. If it weren't for C, we'd still be programming in OBOL, BASI, and PASAL

    54. Re:C? by Darinbob · · Score: 1

      It is difficult to subclass with templates, at least with the C++ style. Some libraries designed as classes make this a lot easier, if any still exist now that STL has been put in the standard.

      As for efficiency, what system currently has a linker smart enough to get rid of all the extra code that is essentially identical? It bulks up because when you do a sort or find on "std::vector" and "std::vector" you end up with two copies of the same algorithm with only trivial differences (a signed compare vs unsigned compare). I don't know of any compilers that do a good job eliminating duplicate code like that, much less something more complex like vectors of objects.

      That's the thing with C++ that's crucial to know as a programmer. In C if you have "func(a, b)" it is just a simple function call. In C++ though that may expand out into a very large inline algorithm, as well as several copy constructors. It may look like small simple code but it doesn't compile to small simple assembler.

      Templates to me feel like a kludge necessary to recreate ideas seen in dynamically typed systems but in a statically typed language. Where I've found them most useful is in very tiny pieces of code.

    55. Re:C? by Anonymous Coward · · Score: 0

      Actually C++ can do even better than C. C++ has static, so you can always hide functions. But even in classes, you can receive a class that has functions not in the class declaration: it could be an inherited class. And you can define even more inherited classes without recompiling the modules who use the base class!

      And there is PIMPL which completely hides the implementation of the class.

      Also note that private functions were deliberately chosen to be in the namespace, even though they can't be called. Otherwise, you could silently (ie. no compiler error) change the behavior of code switching a function from public to private, if another compatible function of the same name (ie. an overload) was available.

    56. Re:C? by narcc · · Score: 1

      With a few very minor exceptions

      Sorry, are you from the past?

      In C++ you can also do more stuff.

      No. You can't. Maybe you don't understand computer basics?

      There is nothing that you can do in C++ that can't also be done in C -- and usually done far more elegantly.

    57. Re:C? by superwiz · · Score: 1

      inline keyword

      ability to have functors (cludgy syntax and actually misnomer, but it is a huge functionality necessity which is missing from C and is present even in the earliest versions of C++)

      rich compile-time semantics

      you asked for 3....

      --
      Any guest worker system is indistinguishable from indentured servitude.
    58. Re:C? by SplashMyBandit · · Score: 1

      Operator overloading and templates were so problematic for users of C++ the designers of Java expressly removed them to remove common causes of problems (for new developers). RAII was superceded by the Java Garbage Collector. There are other ways of solving the same problem. Note: operator overloading is very problematic, eg. does * mean 'inner product', "outer product", "element-wise multiplication", or some other weird operation that some developer decided to put in. another example, does = do a deep-copy or a shallow copy? Operator overloading seems like a good idea but it is often shitty to maintain someone else's C++ who has used it.

    59. Re:C? by Anonymous Coward · · Score: 0

      "narcc" is either an idiot or is trolling.

    60. Re:C? by Anonymous Coward · · Score: 0

      I don't know about others, but one of the things that has always bugged me about C++ and the STL is that rather than making iterators a language feature (along with some nice syntactic sugar like for_each()), they shoved something that was almost, but not quite, iterators into the STL instead. Thus neatly making their use as ugly as sin, and by extension using almost any STL container class a pain in the ass.

    61. Re:C? by Pinhedd · · Score: 1

      Inheritance, templates, and namespaces are differences but that does not make them advantageous.

      One could just as easily say that the lack of namespaces in C forces programmers to be through and articulate in declaring their symbols and functions.

      Code that uses templates can be very hard to debug and compiler support is sometimes shoddy.

      I'll give you Inheritance though. I love classes

    62. Re:C? by JasterBobaMereel · · Score: 1

      ..What is the C++ compiler written in ... probably C

      what is C++ compiled via in this compiler, probably C

      i.e. C is very low level and can express any programming construct, but it might be simpler to express in C++

      C++ cannot be more efficient when compiled (unless you just have a better compiler) since it is just machine code

      There may be libraries for C++ that are better, more efficient, and do not currently exist for C, but this just means that they have not been written for C not that they cannot be (it may be very difficult to, or it may be pointless to implement, because it directly uses features that only exist in C++)

      Having said that I don't rate either ...

      --
      Puteulanus fenestra mortis
    63. Re:C? by TemporalBeing · · Score: 1

      > That's not hiding. That's saying "look at all my nifty functions, none of which you can use, neener neener neener".

      What the hell is that even supposed to mean?

      Private functions are not meant to protect your code against some other developer's envious glances, it's to protect programmers (including yourself) from their own stupidity, while still keeping your code neatly organized and debuggable. If you're anywhere near developer's job, especially in a team - resign right now and go back to college.

      You still have to declare the private section to outsiders so that they get the memory accesses correct - even if they derive from your class or do other things. Comparatively as the GP mentioned, C (and C++ by extension) has the ability to completely hide things by using proper file scoping - you don't even declare it to the outside work at all, it's 100% hidden within the implementation file.

      Now there are some advantages to having it in the class - namely that it is then associated with a specific instantiated instance; however, barring that association it is far better to have use the static functions/variables in the implementation file alone.

      --
      Truth is like the sun. You can shut it out for a time, but it ain't goin' away. - Elvis Presley (source: imdb.com)
    64. Re:C? by ThePhilips · · Score: 1

      Operator overloading seems like a good idea but it is often shitty to maintain someone else's C++ who has used it.

      I have a huge pile of financial Java code using arbitrary precision numbers. My whole team would strongly disagree with your assessment. Which is based solely on the "think of the children!" rhetoric.

      P.S. I haven't seen operator overload abuse for very very long time. Few bother with it today, since libraries do it already for them.

      --
      All hope abandon ye who enter here.
    65. Re:C? by david_thornley · · Score: 1

      The generic parts are optimized for a generic case. If there's something faster for a given type, you can write that specialization or partial specialization. To the limits of my knowledge, no more or less standard library is much more optimizable for given use cases.

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
    66. Re:C? by SplashMyBandit · · Score: 1

      It is good that operator overloading works for you. It used to work for me when doing scientific work too. However, my experience is whenever I tried to integrate a third-party library I had to go and check their source and documentation to see what their operations actually did. Sometimes neither source nor documentation were available and it was a matter of trial and error to see what the overloaded operators did both functionally and non-functionally.

      I'm not saying operator overloading can't work or can't be useful. It can be. All I was saying that the general case is that the experience of the community is that operator overloading is a fertile source of errors in large systems. This knowledge led Gosling et al. to the conclusion that the new language they would be building would be better off avoiding operator overloading to assist developers achieving correctness in their applications. They wanted to void the mistakes they considered that C++ had made. It turns out that in the enterprise their decision was correct, by trading off some of the power of C++ they got huge increases in simplicity, correctness and productivity in resulting Java applications (and that is why the enterprise adoption of Java is so high and displaced C++ in many areas). C++ has more power for sure, but the additional complexity/developer difficulties when integrating libraries was not a feature, it was an anti-feature as far as they (Gosling et al.) were concerned.

    67. Re:C? by ThePhilips · · Score: 1

      All I was saying that the general case is that the experience of the community is that operator overloading is a fertile source of errors in large systems. This knowledge led Gosling et al. to

      Man, I can't read the B.S. anymore. I'm surprised you haven't plainly named Gosling et al your gods and declared yourself to be a priest of their church. Amen. (Or change your "community" - because it sucks.)

      There was probably some time when operator overload was a "problem" - when it first became available in popular languages and people started experimenting. But the times are long over.

      The project I work on is not even large - it is f*cking huge. 1Mln of ELOC was exceeded long time ago and nobody's counting it anymore. And it is more than 80% in C++. There is precisely zero, zelch, nada of a problems related to the operator overload. My previous C++ projects were much much smaller - and also had zero problems.

      --
      All hope abandon ye who enter here.
    68. Re:C? by Lord+Crc · · Score: 1

      RAII was superceded by the Java Garbage Collector.

      Only for memory. There's a lot of other resources out there where the GC complicates things a lot. Files and mutexes to name some common ones. At least .Net has "using" which is a poor mans RAII, but it's still easy to mess up and have a lingering resource handle.

      Note: operator overloading is very problematic, eg. does * mean 'inner product', "outer product", "element-wise multiplication", or some other weird operation that some developer decided to put in.

      I admit I've only programmed in C++ for 6 years, so I'm a bit new. But I've not once come across any code which sounds like the mess you describe. On the other hand, the code which does use it is significantly more clear because of it.

      offsetTangentPos = LocalToTangentMatrix * GlobalToLocalMatrix * (globalPos + offset);

      is a lot clearer and closer to the math to me than

      offsetTangentPos = Matrix.multiply(LocalToTangentMatrix, GlobalToLocalMatrix).transform(globalPos.add(offset));

    69. Re:C? by SplashMyBandit · · Score: 1

      That's nice, but I think you might be missing the point. The problem is not operator overloading *in your own code* the issue is integrating a lot of third party code (re-use is the best way to do software development) where each library you integrate has different conventions for the meaning of the various operators. That was the problem that they tried to avoid.

      Man, I can't read the B.S. anymore. I'm surprised you haven't plainly named Gosling et al your gods and declared yourself to be a priest of their church. Amen. (Or change your "community" - because it sucks.)

      No need for the rant. I was merely explaining why those who chose to create a language that fixed the deficiencies of C++ did what they did. They noticed that operator overloading was problematic in the context of re-use (and they were aiming for productivity). So feel free to take a chill pill, k?

    70. Re:C? by SplashMyBandit · · Score: 1

      Only for memory. There's a lot of other resources out there where the GC complicates things a lot. Files and mutexes to name some common ones. At least .Net has "using" which is a poor mans RAII, but it's still easy to mess up and have a lingering resource handle.

      You can still write code to the RAII pattern in Java. In fact there are some cases in the libraries with such scarce resources that you need to do it manually, eg. AWT/Swing's createGraphics() and Graphics.dispose(). Generally doing this manually is not required because the Garbage Collector handles the deallocation of resources for you. Hence RAII is seen as unnecessary work and a source of many bugs in a multithreaded environment (if multiple threads share a resource RAII is not so good at deciding when to deallocate, and it is deallocation that is the problem, not allocation). The GC not only releases memory but can also schedule calling of the finalize() methods for resource cleanup - but there is no guarantee that finalize() will be called during the lifetime of the program (often, if a program never runs short of resources then the GC never has to run and finalize() is never called). Note that there is an equivalent of the 'using' keyword in Java 7 as part of JSR 334. You can write programs without this functionality, it is just much more compact when this keyword is available. So you see, Java has many ways of handling resources, RAII being one of them, but in almost all cases the Garbage Collector does a vastly better job than a human does in managing deallocation of shared resources in a non-deterministic multi-threaded environment.

      offsetTangentPos = LocalToTangentMatrix * GlobalToLocalMatrix * (globalPos + offset);

      So what are you doing here, an inner product?, an outer product? and element-wise product? a triple product? a cross product? diagonalization? or something else? you assume that the multiplication operator can do only one thing but the more you know about Linear Algebra the more possibilities there are (perhaps you are not aware of the possibilities?). Not only are there multiple possibilities but because you only have one * operator you then have to start using method names to handle all the 'multiplication-like' operations you can do (you are back to Java); and then you also have the case that * can mean different things when you incorporate different libraries in your program (one may use it to do element-wise multiplication, one may compute the inner product) which means your source code is not clear about what exactly will go on (which is a fertile source of bugs, so was something the Java designers sought to eliminate). The C++ pattern of RAII is merely trying to do a 'budget' Garbage Collector yourself.

      Yes, in simple cases operator overloading can be nice (as you point out). In complex libraries (eg. Linear Algebra) and large projects that re-use many libraries operator overloading has a great potential to cause bugs. Does that make sense now?

    71. Re:C? by Joce640k · · Score: 1

      ..What is the C++ compiler written in ... probably C

      what is C++ compiled via in this compiler, probably C

      Simply not true.

      (It's in Bjarne's FAQ....try reading it instead of regurgitating 1992's anti-C++ rant)

      --
      No sig today...
    72. Re:C? by Joce640k · · Score: 1

      C++ is no more powerful than C

      Rubbish

      it's more expressive in certain circumstances but definitely not more powerful. There is a reason C is the de-facto standard for embedded systems in that it is lightweight and the second most powerful language there is (Assembly or Machine Code being the most powerful).

      I use C++ on a daily basis to program Atmel Tiny85s. With virtual functions and everything...

      --
      No sig today...
    73. Re:C? by ThePhilips · · Score: 1

      That's nice, but I think you might be missing the point. The problem is not operator overloading *in your own code* the issue is integrating a lot of third party code (re-use is the best way to do software development) where each library you integrate has different conventions for the meaning of the various operators. That was the problem that they tried to avoid.

      And as I have said - the problem doesn't exist anymore. Probably never really existed. Not even with 3rd party libraries. There is no problem to avoid.

      Unwritten (and often written) rule of the operator overload is that operator should do what is expected in normal case of the operator: 'operator ==' compares, 'operator +' adds and so on. Over the past decade, with couple of exceptions, I haven't seen a single operator overload case deviating from the rule. And even the exceptions were generally justified and used to preserve familiar coding paradigms from other programming languages when moving to C++.

      Using your "logic," pretty much any feature or utility open to even slightest abuse supposedly should be banned. But I do not see for example exceptions or interfaces being removed and banned from the Java, despite the fact that in my experience those are among the most abused and/or improperly used features of the language.

      Operator overload is just a tool. The fact that some high-level languages still do not provide the widely popular tool is simply sad. And there is no need to say anything more, least excuses.

      --
      All hope abandon ye who enter here.
    74. Re:C? by monkeykoder · · Score: 1

      You say rubbish but can you tell me one thing you can do in C++ that you can't do in C?

    75. Re:C? by SplashMyBandit · · Score: 1

      You think that + is simple and obvious? well, it is clear you don't understand Linear Algebra then (the canonical case for operators is matrix and vector operations). For example: what does * do? elementwise multiplication? inner product? outer product? cross product? any of numerous decompositions (eg. LU, or SVD)? How do you make * work with a triple product? Just because *you* can't imagine the issues with operator overloading doesn't mean there aren't any.

      Using your "logic," pretty much any feature or utility open to even slightest abuse supposedly should be banned.

      Untrue. You are projecting a strawman argument onto me. Please desist. I was pointing out that when you have a better understand of what can go wrong with operator overloading (as language designers had) then you see that it can be useful but is also quite dangerous and the risks can be considered to outweigh the benefits. Especially when the canonical use for operator overloading (Linear Algebra) shows that operator overloading is inadequate to describe the breadth of operations that need to be performed. Since operator overloading is inadequate you are forced to go back to method calls, in which case you have to evaluate whether overloading is worth it (given the risk that someone will do something odd with it, except in the simple cases you work with).

      Over the past decade, with couple of exceptions, I haven't seen a single operator overload case deviating from the rule.

      Well, it appears you need to see more 3rd party code. Just because *you personally* haven't seen the fsck-ups doesn't mean they don't exist.

    76. Re:C? by jjohnson · · Score: 1

      I think the point is that, if you're asking for "advantages", you're implicitly accepting the respondent's subjective judgement on the matter. To dismiss his answers as wrong for failing to match your subjective judgement is, I'd say, pretty much the definition of No True Scotsman.

      Though I agree with you that whether or not those are real advantages is arguable :)

      --
      Anyone who loves or hates any language, platform, or manufacturer, doesn't know what they're talking about.
    77. Re:C? by Anonymous Coward · · Score: 0

      And in C++ you put those functions in an unnamed namespace.

    78. Re:C? by DrVxD · · Score: 1

      Only if you don't understand how to use them correctly.

      --
      Not everything that can be measured matters; Not everything that matters can be measured.
    79. Re:C? by DrVxD · · Score: 1

      C++ which introduces additional notations with different semantics and implementations such as memory allocation

      In what way does Objective-C not "introduce additional notations" over C?

      [[MyType alloc] init];
      or
      [MyType new];

      Those look very much like 'additional notations with different semantics and memory allocation' to me.

      I can write 'C' libraries and link them in on applications for iOS, Android, mainframe COBOL, Mac OS/X, any *ix operating system, Windows (including .NET), etc.

      You can do that with C++ (or at least, I can - I can't imagine what's preventing you from doing the same).

      --
      Not everything that can be measured matters; Not everything that matters can be measured.
    80. Re:C? by Old97 · · Score: 1

      When you do a malloc in C you are getting memory assigned to you differently than it is with a C++ new. The semantics of "return" in C do not clean up your C++ objects and vice versa. Read the link. http://www.codeproject.com/Articles/6555/To-new-is-C-To-malloc-is-C-To-mix-them-is-sin Not so in Objective-C as the following link discusses: http://stackoverflow.com/questions/1150650/is-it-ok-to-use-classic-malloc-free-in-objective-c-iphone-apps Similarly, fields in a struct in C are contiguous. In C++ there is no such guarantee though often it is true. C++ is also a more complex run-time than C. The point is that you can write C and use it anywhere. You can write an iPhone app almost exclusively in C syntax. You can't get a free C++ compiler on every platform.

      --
      Very often, people confuse simple with simplistic. The nuance is lost on most. - Clement Mok
    81. Re:C? by DrVxD · · Score: 1

      You haven't addressed the thrust of my post which was "how does Objective-C not introduce new notations".

      When you do a malloc in C you are getting memory assigned to you differently than it is with a C++ new

      When you do a malloc in C you are getting memory assigned to you differently than it is with an Objective-C new.

      --
      Not everything that can be measured matters; Not everything that matters can be measured.
    82. Re:C? by Old97 · · Score: 1

      And you haven't read. Did you notice the qualifier "with different semantics"? The difference between Objective C and C++ is that Objective C is a strict superset.. In Objective C both Malloc and New assign memory in the same way underneath and clean it up in the same way. Malloc and New in C++ don't. If you "return" in C without releasing your C++ object allocations you'll they will stay and you'll have a leak. Not so with Objective C. In any case you've missed the entire point that C code can be used everywhere and no other language is nearly as ubiquitous and free (as in beer). The point about Objective C is that you can do almost all of your IOS programming in C. Objective C doesn't add much and what it does add works that same way underneath the covers.

      --
      Very often, people confuse simple with simplistic. The nuance is lost on most. - Clement Mok
  5. a bit of latency by lorinc · · Score: 4, Interesting

    Java will come back to number 1 in a few years thanks to Android...

    1. Re:a bit of latency by Anonymous Coward · · Score: 1

      Nope. No need to rely on java for android development, and many (most?) dont.

      All your droid games, media streamers, gps, and other apps of note, are using straight C to do all the heavy lifting.

    2. Re:a bit of latency by Anonymous Coward · · Score: 0

      Java will come back to number 1 in a few years thanks to Android...

      Not if Google makes Go and Dart their default languages, which they should do to cut their dependencies with Oracle.

    3. Re:a bit of latency by Anonymous Coward · · Score: 0

      Not really, Android is moving away from Java because it's shit. Anything more complex than a todo list app is going to be written largely in C or C++ with some Java wrappers.

    4. Re:a bit of latency by culmor30 · · Score: 1

      They can't just "change the default language" of Android as easily as you suggest. The Dalvik VM is heavily integrated into the operating system. Perhaps they could write a compiler that compiles some other language to Dalvik bytecode, but library incompatibilities would make that a huge mess.

    5. Re:a bit of latency by EmperorOfCanada · · Score: 4, Informative

      Quite a few people are using the NDK and programming in C++ much to the chagrin of Google. So technically there might be 10-100 lines of Java loading 20,000 lines of C or C++. A great place to get started is: http://www.raywenderlich.com/11283/cocos2d-x-for-ios-and-android-getting-started

      Here they have the most popular iOS game development library ported for programming on android in C++.

    6. Re:a bit of latency by Jerslan · · Score: 1

      Except that Android, iOS, and probably even Windows Phone are what drove C to the top of the pile.... All those cross-platform game engines are written in C because that language is supported on all 3 platforms.

    7. Re:a bit of latency by tepples · · Score: 2

      In what way is Java "shit" for developing an Android application, as you claim?

    8. Re:a bit of latency by alannon · · Score: 1

      Why would you think that Google is unhappy that people are coding games on the Android using the NDK?

    9. Re:a bit of latency by Coward+Anonymous · · Score: 1

      And if it doesn't can we finally put the notion of the inevitable ascendency of Android to rest?

    10. Re:a bit of latency by Anonymous Coward · · Score: 0

      You mean Dalvik? I don't think that counts...

    11. Re:a bit of latency by ADRA · · Score: 1

      Don't feed trolls!

      --
      Bye!
    12. Re:a bit of latency by GodfatherofSoul · · Score: 1

      Probably because they've made it impossible to write purely native apps and the NDK is limited.

      --
      I swear to God...I swear to God! That is NOT how you treat your human!
    13. Re:a bit of latency by Anonymous Coward · · Score: 0

      http://developer.android.com/tools/sdk/ndk/1.5_r1/index.html

      There you go. Program on Android in C all you want.

      And you'll find that you have to use C if you want high performance anything.

    14. Re:a bit of latency by viperidaenz · · Score: 1

      Yes they can. That's half the point of using a VM and compiling to bytecode, not machine code.

      That's like saying Scala, Groovy and all the other JVM languages have nightmarish incompatibilities with 3rd party Java libraries and the entire Java Runtime, which is written in Java.

    15. Re:a bit of latency by viperidaenz · · Score: 1

      If you don't feed them, they'll die.

      They're fun to watch.

    16. Re:a bit of latency by shutdown+-p+now · · Score: 1

      Windows Phone did not support C until WP8, and that is only just out.

    17. Re:a bit of latency by Anonymous Coward · · Score: 1

      You mean Java. Game engines are all written in Java because it's cross platform. Many embedded systems are written Java too for the same reason.

    18. Re:a bit of latency by tepples · · Score: 1

      And if you do feed them, you can sometimes get them to drown in their own puke.

    19. Re:a bit of latency by viperidaenz · · Score: 1

      That's the best part

    20. Re:a bit of latency by SplashMyBandit · · Score: 1

      Once IcedRobot is implemented the economics will swing back to Java. For those writing C++ they have to port for each platform (including Android). With Java they write once, test everywhere, and each new target platform after the first is nearly all pure profit. The problem with Android at that moment is you can't use the standard Java libraries with it, fortunately there is a project in the works to rectify this. Write once, test everywhere, sell everywhere and run everywhere is both sane and profitable. Porting anew for each platform is madness.

    21. Re:a bit of latency by HaZardman27 · · Score: 1

      The heavy lifting stuff is typically packaged in libraries for the people doing the gameplay programming, and since those people will most likely be using Java, there will be Java wrappers over the C code.

      --
      Apparently wizard is not a legitimate career path, so I chose programmer instead.
    22. Re:a bit of latency by culmor30 · · Score: 1

      I didn't mean to imply that it was technically impossible. I should have specified: they would also alienate a lot of current developers. I can see many hobbyists in the midst of their independent programming projects hearing the news that the official language was changed... "I have to learn a totally new framework now and convert all my existing code? Screw this platform, I'm going to iOS/Winmo/BB!"

    23. Re:a bit of latency by DrVxD · · Score: 1

      Ah, I see what happened there. The GP's awkward sentence construction left you with an ambiguous parse, and you picked the wrong noun.

      --
      Not everything that can be measured matters; Not everything that matters can be measured.
    24. Re:a bit of latency by tepples · · Score: 1

      The following sentence "Anything more complex than a todo list app is going to be written largely in C or C++" sounds more like "...because Java is shit" than like "...because Android is shit".

    25. Re:a bit of latency by tepples · · Score: 1

      Once IcedRobot is implemented the economics will swing back to Java. [...] Write once, test everywhere, sell everywhere and run everywhere is both sane and profitable. Porting anew for each platform is madness.

      IcedRobot appears to be two projects: 1. Port Dalvik to GNU/Linux and Mac OS X, and 2. port Android to OpenJDK. But how will this work on platforms that can't use Java at all, such as Windows Phone 7 (only runs C#) and XNA (only runs C#)?

    26. Re:a bit of latency by SplashMyBandit · · Score: 1

      But how will this work on platforms that can't use Java at all, such as Windows Phone 7 (only runs C#) and XNA (only runs C#)?

      Unfortunately not. Microsoft have closed these platforms off, same with Apple and iOS. Fortunately, I don't care about Windows Phone or XNA and would much rather chase the enormous other markets eg. Android (which is the leader and continually growing), Windows, Mac OS X, even Linux. At the moment I'm developing a modern jet combat flight simulator using Java and OpenGL/GLSL. Where native per-platform libraries would need to be used there are platform-neutral wrappers (eg. JoGL, JOAL, JInput etc). Yes, you could use Mono to try reach the tiny markets of WinPhone7 and XNA, but I'd rather stick to Java (since the tooling is awesome, eg, JVisualVM, and the ecosystem is enormous).

    27. Re:a bit of latency by tepples · · Score: 1

      Yes, you could use Mono to try reach the tiny markets of WinPhone7 and XNA

      If your application is a game that plays best with one or more gamepads, XNA is the only way to reach a sizable market without being a sufficiently large company with "financial stability" and "relevant video game industry experience".

    28. Re:a bit of latency by SplashMyBandit · · Score: 1

      False. JInput lets me control my PS3 DualShock controller, Thrustmaster Warthog HOTAS, Thrustmaster Cougar HOTAS, Thrustmaster F-16 MFDs , all sorts of mice (wired, wireless, laptop touchpad) - and it does this on Windows, Linux and Mac (I test in all three environments). It also handles force-feedback 'rumblers'. It doesn't control my TrackIR head tracking device, but the linux-tracker library does that for me (and I'm about to port that from C++ to Java+libusb so it runs everywhere). The nice thing is that whatever a (Java) developer creates is not bound by the crappy XNA license. Not only do these Java gaming technologies work on multiple platforms, for zero cost, and for all kinds of hardware, you don't have to accept any licenses that restrict your ability to make (a lot of ) money. Still think XNA is the shizz? (hint: it's not, it is inferior in several ways).

    29. Re:a bit of latency by tepples · · Score: 1

      JInput lets me control my PS3 DualShock controller, Thrustmaster Warthog HOTAS, Thrustmaster Cougar HOTAS, Thrustmaster F-16 MFDs , all sorts of mice (wired, wireless, laptop touchpad)

      There's a difference between flight simulator joysticks, such as the Thrustmaster products you mention, and general-purpose gamepads such as the Xbox 360 Controller and PlayStation 3 DualShock controller. As I understand it, flight simulators are a niche product with one player per machine, but general-purpose gamepads are commonly used with games supporting same-screen multiplayer.

      and it does this on Windows, Linux and Mac (I test in all three environments). [...] Still think XNA is the shizz? (hint: it's not, it is inferior in several ways).

      XNA is inferior in several ways, as I've pointed out elsewhere, but I'm told it's superior in one key way: a larger market. The mass market prefers to use general-purpose gamepads with a console, not a PC. If FunkSoulBrother's numbers are accurate, there are probably far more Xbox 360 consoles connected to a TV than Windows PCs, Linux PCs, and Macs put together connected to a TV. The problem is that as kamapuaa put it, "Nobody wants to attach their PC to their TV" because of a widespread mental set against this. But if you're telling me the market of home theater PCs and other PCs with a monitor big enough for multiple players is big enough to support a developer, I'm willing to take a look at your evidence.

    30. Re:a bit of latency by SplashMyBandit · · Score: 1

      Please note gamepads *are* supported by JInput. I know, as I said I can control my flight simulator using mouse, PS3 Dualshock, or HOTAS - simultaneously if I want (eg. use HOTAS throttle with PS3 right analogue axis).

      Xbox 360 and PS3 are larger markets than the PC market for sure. However their hardware is unsuitable for my application, given they are so underpowered by modern standards (which is why the games you get on them are so similar, limited in scope, and IMHO underwhelming compared to some PC games). Note while Valve's Steam Box is still not specified it appears to be vastly superior to either of XBox 360/PS3 (no surprise, it is much newer) in hardware terms and it runs Linux - which means my GLSL code will definitely work and Java probably will too (perhaps even without any modification).

      The balkanization of development platforms does not suit developers, it only suits console vendors. So I choose to avoid 'silo' technologies like XNA (designed to keep you on Microsoft platforms) and recommend others do the same. I always like to post the example of Austin Meyer's experience with X-Plane where by using open technologies he was able to exploit the iPhone/iPad hype and personally net $3.5 million dollars. Choosing open technologies over closed ones is the sane strategic decision: http://techhaze.com/2010/03/interview-with-x-plane-creator-austin-meyer/

  6. As mobile device research take off... by eksith · · Score: 1

    This only makes sense. The sheer flexibility of low-level access is very powerful, especially with limited resources. Same reason older hardware is also C friendly.

    --
    If computers were people, I'd be a misanthrope.
    1. Re:As mobile device research take off... by Anonymous Coward · · Score: 0

      Is this anything to do with microcontrollers and the rise of arduino?

    2. Re:As mobile device research take off... by BasilBrush · · Score: 1

      The whole thing is notable for the effect of mobile.

      Objective C has jumped from 5th to 3rd place, almost entirely due to the success of iOS.

      And for those developers who want to code their app engines for portability with other mobile devices, C is the common language.

      I'm sure there must be more Dalvik programming going on too. But not enough to save Java from falling.

  7. definition by mapkinase · · Score: 5, Informative

    TIOBE programming community index is a measure of popularity of programming languages, calculated from number of search engine results for queries containing the name of the language. [1] The index covers searches in Google, Google Blogs, MSN, Yahoo!, Wikipedia and YouTube.

    thx, bye.

    --
    I do not believe in karma. "Funny"=-6. Do good and forbid evil. Yours, Oft-Offtopic Flamebaiting Troll.
    1. Re:definition by localman57 · · Score: 2

      This may be a leading edge indicator. C is sufficently simple that after your first few months you seldom need to consult documentation. I've got nearly 20 years experience, and I seldom or never have to google how to achieve something in C. Algorithms, maybe, but not C syntax. As opposed to very heavy library based languages, such as C# .Net, where I'm constantly googling, because I typically assume there's already a library that does "that" for me, whatever "that" happens to be.

    2. Re:definition by Anonymous Coward · · Score: 1, Informative

      So what this really means is that coding in C requires more searches than Java in order to remember how to use the language.

    3. Re:definition by erice · · Score: 1

      TIOBE programming community index is a measure of popularity of programming languages, calculated from number of search engine results for queries containing the name of the language. [1] The index covers searches in Google, Google Blogs, MSN, Yahoo!, Wikipedia and YouTube.

      So it isn't really about usage then.

      Bash gets a lot of hits because it is a popular shell, not because so many people want to program in it.

      C gets some lift because of so many C-like languages and C bindings used by people are not necessarily programming in C.

    4. Re:definition by Anonymous Coward · · Score: 0

      Okay, so all this means is that C is resurging and interest in it is growing faster than interest in Java. That doesn't mean that Java's usage in terms of number of systems and developers is not still dominant.

    5. Re:definition by SirGarlon · · Score: 1

      The index covers searches in Google, Google Blogs, MSN, Yahoo!, Wikipedia and YouTube.

      So its definition of "popularity" is: "I'm trying to use this language, but I don't know how." This may say more about the number of C programs whose original authors have left the field, than the number of new C programs being written.

      --
      [Sir Garlon] is the marvellest knight that is now living, for he destroyeth many good knights, for he goeth invisible.
    6. Re:definition by interval1066 · · Score: 1

      Well, experience is an interesting thing. As I grow older, YES, I find that I am able to leverage my over 20 years of C usage into less looking up and more valuable jobs... funny how that works.

      --
      Python: 'And then suddenly you have a language which says "we're all stuck with whatever the whiniest coder wants".'
    7. Re:definition by Anonymous Coward · · Score: 0

      >Bash gets a lot of hits because it is a popular shell, not because so many people want to program in it.

      That's may experience. When I'm programming in C, I seldom google anything about the language or the libraries. I'm mostly painfully debugging something, like a driver. With C#/net I'm googling library and API stuff all the time. With Bash I'm always going wtf? google? wtf? google? wtf?

    8. Re:definition by mapkinase · · Score: 1

      > This may be a leading edge indicator

      I weep for the industry if it is a leading edge indicator. Do they at least limit their search to PDF files containing the word "resume" on the front page?

      --
      I do not believe in karma. "Funny"=-6. Do good and forbid evil. Yours, Oft-Offtopic Flamebaiting Troll.
  8. Oh say can you C? by Anonymous Coward · · Score: 0

    When I first encountered C, back when I was 14 and I preferred assembly language, I could not see the point. But as I moved beyond simple programs I quickly got it and I've been a "native speaker" ever since.

  9. What a load by Anonymous Coward · · Score: 0

    http://www.tiobe.com/index.php/content/paperinfo/tpci/tpci_definition.htm

    This is a measure of search popularity of a single term. Hardly a definitive comparison of the state of languages.

  10. The other one by Tridus · · Score: 4, Informative

    Is called PYPL (PopularitY of Programming Languages), and it ranked C# as #1 and C down in #5 based on a different methadology. Honestly, they both sound pretty silly to me.

    https://sites.google.com/site/pydatalog/pypl/PyPL-PopularitY-of-Programming-Language

    --
    -- "So they told me that using the download page to download something was not something they anticipated." - Bill Gates
    1. Re:The other one by marcosdumay · · Score: 1

      C# is the one with biggest variation. It's ranked in #4, bellow C++ and above C.

  11. From a fan of bash... by Anonymous Coward · · Score: 0

    No, you aren't. I got distracted writing the same comment.

    When was the last time that you sat down to do an important project and the consensus of best language choice was "bash?"

    1. Re:From a fan of bash... by Anonymous Coward · · Score: 0

      When was the last time that you sat down to do an important project and the consensus of best language choice was "bash?"

      TIOBE isn't about the "best" language choice. It's about what is actually being used (or at least being inquired of in search engines.)

      The choice of Bash is implicit. You may indulge whatever tools you wish, but at the end of the day the system must boot, backups must be performed, builds must be automated, file systems must be assembled, artifacts must be deployed, maintenance tasks must occur. So we all end up writing a bunch of Bash regardless of whatever our consensus choice might be.

      The fact that Bash ranks that well says a lot about *nix generally. Where did PowerShell land?

    2. Re:From a fan of bash... by Bill,+Shooter+of+Bul · · Score: 1

      Yeah, I think it also has a lot to do with how much reference is needed for a particular language. Bash, perl and PHP are all odd ducks. Searching for things about them are more indicative of how messed up their syntax is, rather than a measure of their usage.

      --
      Well.. maybe. Or Maybe not. But Definitely not sort of.
    3. Re:From a fan of bash... by viperidaenz · · Score: 1

      TIOBE isn't about the languages actually used. It's about search results with arbitrary weighting applied.

  12. Using the TIOBE methodology by notknown86 · · Score: 5, Funny

    Using the TIOBE methodology, I deduce that the following activities are more popular that C Programming:

    - Abduction by alien
    - Going to prison
    - Dying

    1. Re:Using the TIOBE methodology by localman57 · · Score: 1

      Using the TIOBE methodology, I deduce that the following activities are more popular that C Programming: - Abduction by alien - Going to prison - Dying

      Yeah, I program in C a lot, and that sounds about right.

    2. Re:Using the TIOBE methodology by Nemyst · · Score: 3, Funny

      Well hey, dying is an activity practised at least once by the entire population of this planet.

    3. Re:Using the TIOBE methodology by dragonquest · · Score: 1

      And yet they procrastinate to no end about it.

      --
      "Never try to tell everything you know. It may take too short a time."
    4. Re:Using the TIOBE methodology by maxwell+demon · · Score: 1

      But it must be very demotivating, because it's generally the last thing they do.

      --
      The Tao of math: The numbers you can count are not the real numbers.
    5. Re:Using the TIOBE methodology by interval1066 · · Score: 1

      I must be an aberration; when a C/C++ job comes around I actually enjoy going to work. With my collection of canned solutions and libraries at my disposal, when the employer oks C/C++ in the project, I actually feel empowered instead of hindered. Like Frodo in the Fellowship of the Ring, I have the STL's "Axe", Boost's, "Bow", and GNU/C's "Sword". Sry for the homage to common geek imagery.

      --
      Python: 'And then suddenly you have a language which says "we're all stuck with whatever the whiniest coder wants".'
    6. Re:Using the TIOBE methodology by Stirling+Newberry · · Score: 1

      Programming compiler code is like being abducted by aliens. Programming application code is a great deal like going to prison.

    7. Re:Using the TIOBE methodology by HaZardman27 · · Score: 1

      I enjoy it too, and typically volunteer for those jobs. For me it's because most of my C/C++ experience comes from hobby projects, so I enjoy building the experience and getting into that low-level mindset (I'm no C expert, so I have to think about what I'm doing quite a bit harder than a seasoned vet).

      --
      Apparently wizard is not a legitimate career path, so I chose programmer instead.
    8. Re:Using the TIOBE methodology by AVee · · Score: 1

      Well hey, dying is an activity practised at least once by the entire population of this planet.

      Last time I checked there were about 7 billion people who never actually did it.

    9. Re:Using the TIOBE methodology by DrVxD · · Score: 1

      Not yet, it isn't

      --
      Not everything that can be measured matters; Not everything that matters can be measured.
  13. D still below top 20 by Anonymous Coward · · Score: 0

    I can't believe D (http://dlang.org) is still below the top 20, even below Ada or Bash.. I really expected it to rise up.
    According to
                http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
    it is number 35.

    1. Re:D still below top 20 by interval1066 · · Score: 1

      D is a solution in search of a problem. Hasn't been relevant since the STL, and libraries like boost put it into several orbits over D.

      --
      Python: 'And then suddenly you have a language which says "we're all stuck with whatever the whiniest coder wants".'
    2. Re:D still below top 20 by irenaeous · · Score: 1

      Yes. Just above RPG and well behind Logo at 29.

    3. Re:D still below top 20 by interval1066 · · Score: 1

      Put "C" into several orbits. Sry.

      --
      Python: 'And then suddenly you have a language which says "we're all stuck with whatever the whiniest coder wants".'
    4. Re:D still below top 20 by DrVxD · · Score: 1

      I really like D, but I expect it to remain niche; I doubt it'll ever become truly popular.

      --
      Not everything that can be measured matters; Not everything that matters can be measured.
  14. Not surprising by Murdoch5 · · Score: 3, Informative

    Is anyone really surprised by this? C is the best overall language, it spans every platform I can think of, it's the most standarized language and above all of that simple to learn and use. C is the language for real programmers, if you can't do it in C then you just can't program.

    1. Re:Not surprising by GlassHeart · · Score: 1

      It's strange that you would call C the "most standardized language". Lots of very basic things in C are implementation-defined or even undefined. For example, the C Standard allows int types to be implemented at least as sign-magnitude, one's-complement, and two's-complement formats. It doesn't specify the number of bits in a char type, allowing it to differ from implementation to implementation. It doesn't even specify if char is signed or unsigned by default. Real-world C programs often get by because they happen to run on similar CPU architectures, not because they actually comply with the Standard, compared to other languages that offer more hardware abstraction.

      I would also disagree with "simple to learn and use". I've been writing in C (and C-like languages) for about 20 years now, and it's a professional tool that can hurt unwary newbies. Features like its relatively terse syntax and manual memory management are obviously not impossible to learn, but not particularly "easy" either.

    2. Re:Not surprising by Anonymous Coward · · Score: 0

      Is anyone really surprised by this? C is the best overall language, it spans every platform I can think of, it's the most standarized language and above all of that simple to learn and use. C is the language for real programmers, if you can't do it in C then you just can't program.

      Basically, yes.

    3. Re:Not surprising by JasterBobaMereel · · Score: 1

      C is not a good language, but it is not a bad language, is very general, is very simple to implement on a new system, is very small (for the basic language), and brings huge amounts of code with it if you do ...so it is implemented on most systems

      C has multiple standards, not everything is implemented everywhere ...

      C has issues mainly because it is a very old language, this is what C++, Java, C# and many others were designed to address to varying levels of success ...

      There are a large number of other languages widely used and widely ported that are by many definitions better than C, but they are either domain specific, propitiatory, or not well known outside specific industries ....

      --
      Puteulanus fenestra mortis
    4. Re:Not surprising by Murdoch5 · · Score: 1
      I'm not saying your wrong as this is an area where every person can have there own belief.

      C is not a good language, but it is not a bad language, is very general, is very simple to implement on a new system, is very small (for the basic language), and brings huge amounts of code with it if you do ...so it is implemented on most systems

      I disagree with this, C has all the major structures in place to make it a complete power house on the desktop and the embedded side of systems. Sure C has a lot of pitfalls but if you become skilled with C those pitfalls become very powerful features. C does involve a lot of code and that can't be doubted but one of the powerful features of C is the ability that you can read it almost like a story. C is a very step by step language where you layout exactly what you want to do and it's easy to go back and see what you did, a good comment will allow you to know why you did that way.

      I contrast this with OO languages like Java, C++ and C# because personally something rubs me the wrong way when I start doing stuff like System.io.print() and never see the low level buffer access or when I have an object that can start life as a "car" and be morphed into a "dog", as an exampled. To me an object is clunky and hard to work with, I feel like i never really have the low level control I want, I'd rather access the structure seat, pick it's color through an integer or char and then continue and put it together. Again this is subjective to each programmer.

      About standards, C has many, ANSI, C99, C89, C01, C11, K&R, GNU, etc.... I think this is a power over a limit. Depending on what your trying to program and what platform your programming on, you can leverage features from the different standards, Where ANSI might work great in one area glib might work better in another. If your trying to stick to a strict standard then you can be safe knowning that ANSI will always leave you with fairly portable code.

      Thats just what I think, I'm not saying your wrong but each programmer keeps there own beliefs.

  15. Yes, unfortunately TIOBE is bollocks. by Anonymous Coward · · Score: 5, Informative

    Seriously, for the last fucking time, can we stop posting on Slashdot random shit picked up from TIOBE? The TIOBE index is so completely and utterly full of fail that I can't believe people are STILL clinging onto it as evidence of anything whatsoever.

    It shouldn't be traditional to do anything with TIOBE, except perhaps laugh at it or set it on fire.

    So once last time, one final fucking time I'll try and explain to the 'tards who think it has any merit whatsoever why it absolutely does not.

    We start here, with the TIOBE index definition, the horses mouth explanation of how they cludge together this table of bollocks they call and "index":

    http://www.tiobe.com/index.php/content/paperinfo/tpci/tpci_definition.htm

    First, there is their definition of programming language. They require two criteria, these are:

    1) That the language have an entry on Wikipedia

    2) That the language be Turing complete

    This means that if I go and delete the Wikipedia entry on C, right this moment, it is no longer a programming language, and hence no longer beating anything. Apparently.

    The next step, is to scroll past the big list of languages, to the ratings section, where we see that they state they take the top 9 sites on Alexa that have a search option, and they execute the search:

    +" programming"

    Then weight the results as follows:

    Google: 30%
    Blogger: 30%
    Wikipedia: 15%
    YouTube: 9%
    Baidu: 6%
    Yahoo!: 3%
    Bing: 3%
    Amazon: 3%

    The first problem here is with search engines like Google, I run this query against C++ and note the following:

    "About 21,500,000 results"

    In other words, Google's figure is hardly anything like a reasonable estimate because a) Most these results are fucking bollocks, and b) The number is at best a ballpark - this accounts for 30% of the weighting.

    The next problem is that Blogger, Wikipedia, and YouTube account for 54% of the weighting. These are all sites that have user generated content, as such you could literally, right now, pick one of the lowest languages on the list, and go create a bunch of fake accounts, talking about it, and turn it into the fastest growing language of the moment quite trivially.

    To cite an example, I just ran their query on English Wikipedia for the PILOT programming language and got one result. A few fake or modified Wikipedia entries later and tada, suddenly PILOT has grown massively in popularity.

    The next point is the following:

    "Possible false positives for a query are already filtered out in the definition of "hits(PL,SE)". This is done by using a manually determined confidence factor per query."

    In other words yes, they apply an utterly arbitrary decision to each language about what does and doesn't count. Or to put it simply, they apply a completely arbitrary factor in which you can have no confidence of being of any actual worth. I say this because further down they have a list of terms they filter out manually, they have a list of the confidence factors they use, and it takes little more than a second to realise massive gaps and failings in these confidence factors.

    For example, they have 100% confidence in the language "Scheme" with the exceptions "tv", and "channel" - I mean really? the word Scheme wouldn't possibly used for anything else? Seriously?

    So can we finally put to bed the idea that TIOBE tells us anything of any value whatsoever? As I've pointed out before a far better methodology would at least taken into account important programming sites like Stack Overflow, but ideally you'd simply refer to job advert listings on job sites across the globe - these will tell you far more about what languages are sought after, what languages are being used, and what languages are growing in popularity than any of this shit.

    Finally I do recall last year stumbling across a competitor to TIOBE that was at least slightly better but still not ap

    1. Re:Yes, unfortunately TIOBE is bollocks. by omnichad · · Score: 1

      I think someone should mod AC informative. This does sound like a worthless statistic.

    2. Re:Yes, unfortunately TIOBE is bollocks. by cod3r_ · · Score: 1

      The second they said Java WAS in #1 spot made me really question the validity of this.

    3. Re:Yes, unfortunately TIOBE is bollocks. by Anonymous Coward · · Score: 0

      I stopped reading it as soon as he used the phrase "full of fail". Thankfully, it was used early in the post, so I wasted a minimal amount of time.

    4. Re:Yes, unfortunately TIOBE is bollocks. by Forty+Two+Tenfold · · Score: 1

      a) Most these results are bloody bollocks.

      FTFY.

      --
      Upward mobility is a slippery slope - the higher you climb the more you show your ass.
    5. Re:Yes, unfortunately TIOBE is bollocks. by Jiro · · Score: 1

      Googling gives me the following results:

      "C programming" 11800000
      "objective c programming" 21100000 (note: greater than for "C programming", I think because Google accepts a hyphen before the C here)
      "c programming" -"objective c programming" 2010000 (less than a fifth the size of "C programming" without the exclusion)

      While these results are decidedly odd, it's clear that C is nowhere near on top (Java produces around 8 million hits which C is much less than) if you actually exclude objective C from the search.

    6. Re:Yes, unfortunately TIOBE is bollocks. by omnichad · · Score: 1

      FM? IDTS. IDWT.

    7. Re:Yes, unfortunately TIOBE is bollocks. by Kergan · · Score: 1
    8. Re:Yes, unfortunately TIOBE is bollocks. by Anonymous Coward · · Score: 0

      Thanks for that!! You saved me a lot of writing. Bile? I thought you were restrained.

    9. Re:Yes, unfortunately TIOBE is bollocks. by Anonymous Coward · · Score: 2, Insightful

      You keep using the word 'statistics', I don't think you know what it means.

      Statistics excels in exactly this situation, when you don't have perfect data, but do have enough data to produce a flawed but useful analysis.

      YANAS, IADAS (You are NOT a statistician, I AM definitely a statistician)

    10. Re:Yes, unfortunately TIOBE is bollocks. by Forty+Two+Tenfold · · Score: 1

      Don't abbrev.

      --
      Upward mobility is a slippery slope - the higher you climb the more you show your ass.
    11. Re:Yes, unfortunately TIOBE is bollocks. by serviscope_minor · · Score: 1


      1) That the language have an entry on Wikipedia

      2) That the language be Turing complete

      Actually, those sound pretty sensible. If a language dowsn't have a wikipedia page it's too small to be of interest. And can you delete language pages? Are you an editor? When was the last time a major language dropped off?

      And 2, if it's not turing complete, then it isn't a programming language.

      --
      SJW n. One who posts facts.
    12. Re:Yes, unfortunately TIOBE is bollocks. by omnichad · · Score: 1

      Replying to your single letter words.

      FM? IDTS. IDWT. = "For me? I don't think so. I didn't write that."

    13. Re:Yes, unfortunately TIOBE is bollocks. by Forty+Two+Tenfold · · Score: 1

      Yes, I understood that and my mistake. I just replied with what I hoped would be taken as a joke.

      --
      Upward mobility is a slippery slope - the higher you climb the more you show your ass.
    14. Re:Yes, unfortunately TIOBE is bollocks. by shutdown+-p+now · · Score: 2

      Thanks a lot for making this write-up. Now I can just post a link to it every time someone submits yet another TIOBE story.

    15. Re:Yes, unfortunately TIOBE is bollocks. by Blakey+Rat · · Score: 2

      But they don't seem to follow their own rules. PowerShell has a Wikipedia page, why isn't it listed?

      More confusingly, if you code in VBScript are you included in the classic VB bucket? What about JScript and JavaScript? If so, fine. But if not, than there's two other languages they're excluding despite their own rules.

      Since VBScript and JScript aren't listed individually, I assume that JScript queries are all counted as JavaScript. Ok fine. But wait... ActionScript does not! What's the difference between JScript and ActionScript? Both are based on the ECMAScript standard, but use their own unique API (not DOM, like JS in the browser world). Why does one have its own ranking when the other does not?

    16. Re:Yes, unfortunately TIOBE is bollocks. by Attila+the+Bun · · Score: 1

      ... fucking ... shit ... fucking ... 'tards ... bollocks ... fucking bollocks ... piss fucking ...

      Breathe into the paper bag, sir.

    17. Re:Yes, unfortunately TIOBE is bollocks. by ikaruga · · Score: 1

      Unfortunately I think it's the only estimation I think they got right. I'm yet to see a college curriculum that doesn't have at least an introductory course for Java. Most of the crappy universities only have java. And while it does not create the fastest and efficient binaries, the most beautiful code and it's advantages(in particular compile once, deploy everywhere) are exaggerated and not hold true always, it's not a bad option for lightweight apps, prototyping or SOME educational purposes.
      Personally, the obvious flaw in that list is objective-C. iOS programming is popular but there is just no way it is number 3. PHP and javascript are also too low, those languages run the freaking WWW.

    18. Re:Yes, unfortunately TIOBE is bollocks. by JasterBobaMereel · · Score: 1

      Powershell is on the list ...?

      (Visual) Basic Grouping: Basic, VB
      Visual Basic .NET Grouping: Visual Basic .NET, Visual Basic.NET, VB.NET
      ActionScript Grouping: ActionScript, AS1, AS2, AS3

      But the list is meaningless anyway ...

      --
      Puteulanus fenestra mortis
    19. Re:Yes, unfortunately TIOBE is bollocks. by AVee · · Score: 1

      And even if the numbers would be reliable it doesn't measure usage, but only the amount of 'chat' around a language. So it will favor languages which are badly documented, buggy, in the news somehow, controversial as well as educational languages and languages used by hobbyists. All of those are reasons to write blog posts, ask questions on forums or create youtube videos boasting the rating.

      For example the rating of C might actually be boosted by all the people writing about the death of Dennis Ritchie...

    20. Re:Yes, unfortunately TIOBE is bollocks. by Anonymous Coward · · Score: 0

      So your a professional statistician and he is not, yet you think that:

      1) His use of the term statistics is somehow incorrect (Hint: Go look up the definition of the term)

      2) That statistics can magically infer information from flawed data - it can't, you still need your underlying data to be of merit

      Don't lie about your profession, or if you really have blinkered someone into employing you as a statistician the do the world a favour and stop pretending you're competent. Keep milking your idiot boss if you can't get employment as anything else you may be more competent at, but stop pretending you know anything about the topic when you apparently don't even understand high school statistics, let alone anything much more advanced than that.

      Statistics is not a magic wand, you still need sound data underlying anything you wish to infer from that data, and GP is absolutely right here - the TIOBE data is worthless and absolutely does not provide a useful analysis, it's complete garbage, because the data is garbage and it tells us nothing of value by any measure.

    21. Re:Yes, unfortunately TIOBE is bollocks. by Anonymous Coward · · Score: 0

      I think someone should mod AC tl;dr.

  16. TIOBE algorithms by sl4shd0rk · · Score: 4, Insightful

    Clearly C is more popular as more people complain about it sucking.

    C sucks -- About 321,000,000 results
    bash sucks -- About 7,500,000 results
    Java sucks -- About 5,810,000 results
    c++ sucks -- About 898,000 results
    objective c sucks -- About 293,000 results

    --
    Join the Slashcott! Feb 10 thru Feb 17!
    1. Re:TIOBE algorithms by Anonymous Coward · · Score: 2, Informative

      Jets suck -- About 4,770,000 results
      Yankees suck -- About 1,430,000 results
      Knicks suck -- About 1,370,000 results
      Krypton sucks -- About 166,000 results

    2. Re:TIOBE algorithms by interval1066 · · Score: 1

      No no no... mod up. He/She has a point. Google isn't THAT precisely as relevant as Google, Inc, would have you believe.

      --
      Python: 'And then suddenly you have a language which says "we're all stuck with whatever the whiniest coder wants".'
    3. Re:TIOBE algorithms by Chemisor · · Score: 1

      How many of those 321 million results are teenagers complaining about getting a C on their homework?

    4. Re:TIOBE algorithms by DahGhostfacedFiddlah · · Score: 1

      Try using quotes.

      "c sucks" - About 21,200 results

      "objective c sucks" - About 26,500 results (how this can co-exist with the above result, no one knows)

      "java sucks" -- About 22,800 results

    5. Re:TIOBE algorithms by Anonymous Coward · · Score: 0

      C sucks -- About 321,000,000 results

      you suck -- About 13,700,000 results

      Hmm, it seems C is way more popular than you :D
      (I'm only getting 21,200 results for C though)

    6. Re:TIOBE algorithms by Kergan · · Score: 1

      You forgot a few:

      - php sucks: 47 million.
      - ruby sucks: 6.3 million
      - python sucks: 3.7 million
      - JavaScript sucks: 26.5 million

      And even though they're not Turing complete:

      - HTML sucks: 76.2 million
      - CSS sucks: 4.3 million

    7. Re:TIOBE algorithms by serviscope_minor · · Score: 4, Funny

      I think you mean:

      - php sucks: 500 Internal server error

      --
      SJW n. One who posts facts.
    8. Re:TIOBE algorithms by BlendieOfIndie · · Score: 1

      Another interesting one...

      Obama sucks - 70,300,000
      Romney sucks - 7,080,000

      Not a good predictor of the popular vote, either.

    9. Re:TIOBE algorithms by TeknoHog · · Score: 1

      vacuum cleaners suck -- 9 220 000
      black holes suck -- 6 510 000

      --
      Escher was the first MC and Giger invented the HR department.
    10. Re:TIOBE algorithms by Anonymous Coward · · Score: 0

      Interesting:

      C# sucks -- About 898,000 results
      F# sucks -- About 857,000 results

    11. Re:TIOBE algorithms by Anonymous Coward · · Score: 0

      "you suck"
      About 231,000,000 results (0.15 seconds) (google)

    12. Re:TIOBE algorithms by Anonymous Coward · · Score: 0

      Google sucks -- About 196,000,000 results

    13. Re:TIOBE algorithms by Anonymous Coward · · Score: 0

      Jets suck -- About 4,770,000 results
      Vacuums suck -- About 5,500,000 results
      sump pumps suck --About 3,750,000 results
      call girls suck --About 6,694,640,000,000 results (this is the internet)

    14. Re:TIOBE algorithms by Anonymous Coward · · Score: 0

      But java has it's own sucks page... http://www.java-sucks.com/

    15. Re:TIOBE algorithms by cavebison · · Score: 1

      I wonder where VB.NET sits, considering it's actually better than C#?

    16. Re:TIOBE algorithms by DrVxD · · Score: 1

      yo mama is more popular than C++ and Objective-C:

      yo mama sucks - About 2,340,000 results

      --
      Not everything that can be measured matters; Not everything that matters can be measured.
  17. C Just works by EmperorOfCanada · · Score: 4, Insightful

    The bulk of my recent programming has been in Objective C but once I leave API calls my code quickly becomes pretty classic C with elements of C++. Yes I love the simplicity of a foreach type structure where it is brain dead to iterate through some set/hash/array of objects with little or no thought about bounds but once I start to really hammer the data hard I often find my code "degenerating" into c. Instead of a class I will create a structure. Instead of vectors I use arrays. I find the debugging far simpler and the attitude to what can be done changes. In fairly raw C I start having thoughts like: I'll mathematically process 500,000 structures every time someone moves their mouse and then I literally giggle when it not only works but works smoothly. What you largely have in C is if the machine is theoretically able to do it then you can program it. Good mathematics can often optimize things significantly but sometimes you just have brute manipulations that need to be fast.

    But on a whole other level my claim with most higher level languages ranging from PHP to .net to Java is that they often make the first 90% of a large project go so very quickly. You seem to jump from prototype to 90% in a flash; but then you hit some roadblocks. The garbage collection is kicking in during animations causing stuttering and the library you are using won't let you entirely stop garbage collection. Or memory isn't being freed quickly enough resulting in the requirement that all the users' machines be upgraded to 16Gb. Then that remaining 10% ends up taking twice as long as the first 90%. Whereas I find with C (or C++) you start slow and end slow but the first 90% actually takes 90% of the final time.

    But where C is a project killer is the whole weakest link in the chain thing. If you have a large project with many programmers as is typically found in a large business system working on many different modules that basically work on the same data set that a safer language like Java is far far better. I am pretty sure that if the business programmers working on projects that I have seen were to have used C instead of Java that those server systems would crash more than once a minute. You can still program pretty badly in Java but a decent programmer shouldn't blow the system apart. Whereas a decent C programmer might not be good enough for a large project.

    So the story is not if C is better than say Java but what is the best language for any given problem set. I find broad systems, like those found in the typical business, with many programmers of various skill levels are idea for Java. But for deep system where you layer more and more difficulty on a single problem such as real-time robotic vision that C or C++ are far superior. A simple way to figure out what is the best language is to not compare strengths and weaknesses generally but how they apply to the problem at hand. In a large business system where horsepower is plentiful then garbage collection is good and pointers are only going to be a liability. But if you are pushing up to the limits of what the machine can do such as a game then a crazy pointer dance might be the only possible solution and thus demand C or even ASM.

    Lastly do you want your OS programmed in Java?

    1. Re:C Just works by Anonymous Coward · · Score: 0

      But where C is a project killer is the whole weakest link in the chain thing. If you have a large project with many programmers as is typically found in a large business system working on many different modules that basically work on the same data set that a safer language like Java is far far better. I am pretty sure that if the business programmers working on projects that I have seen were to have used C instead of Java that those server systems would crash more than once a minute. You can still program pretty badly in Java but a decent programmer shouldn't blow the system apart. Whereas a decent C programmer might not be good enough for a large project.

      I agree with your argument but disagree with your result. I've worked on large teams doing C and teams doing Java.

      If you have a weak programmer in C then the program crashes almost immediately and you can easily find Bob coded a pile of shit and fire him for gross incompetence. The team breathes a huge sigh of relief and progresses faster as they are not held up by Bob's negative contributions.

      If you have a weak programmer in Java then it almost works but behaves squirely every now and then. Jane gets to keep her job to pollute future projects even though she should never be allowed near a computer and the team can't work out why nothing works quite as it should.

  18. Apples to apples and peaches to peaches by Anonymous Coward · · Score: 0, Redundant

    One cannot compare C to Javascript because they serve very different purposes. That list should look more like this:

    Category A ("heavy duty"):

        First place: C and Java, with 25% each.
        Second place: Objective C and C++, with 15% each.
        Third place: C# and Visual Basic (incl .NET), with 7% each.
        Fourth place: Pascal and Delphi, with less than 3% each.

    Category B ("light weight"):

        First place: PHP and Python, with 35% each.
        Second place: Perl, with 15%.
        Third place: Javascript and Ruby, with 7% each.

    Languages such as Lisp, Matlab, Ada, and Lua are mostly used in specific fields/environments and probably should not be included on this list.

    1. Re:Apples to apples and peaches to peaches by dingen · · Score: 1

      Javascript is a special case because it is used almost exclusively for writing front-end code for websites. Not because front-end web developers love Javascript, but because browsers do not support any other language.

      So in one specific field (front-end web applications), Javascript is king because developers have no other choice. But next to nobody uses the language for anything else than that. It could be used for other stuff (node.js etc.), but that's not significant by a long shot.

      --
      Pretty good is actually pretty bad.
    2. Re:Apples to apples and peaches to peaches by interval1066 · · Score: 1

      Seriously. Isn't it about time we all came to grips with the fact that Javascript != Java?

      --
      Python: 'And then suddenly you have a language which says "we're all stuck with whatever the whiniest coder wants".'
  19. Redundant but it's pretty awesome. by Anonymous Coward · · Score: 0

    go go!

    1. Re:Redundant but it's pretty awesome. by Anonymous Coward · · Score: 1

      See C go, Go!

  20. Parallelism by loufoque · · Score: 1

    C and C++ are still the best languages for parallelism, in particular vectorization and shared memory systems.

    1. Re:Parallelism by serviscope_minor · · Score: 1

      Better than Fortran?

      --
      SJW n. One who posts facts.
    2. Re:Parallelism by loufoque · · Score: 1

      Yes. Fortran does not allow to program these at all.
      Automatic parallelization works slightly better with Fortran, but then good parallelization is a manual process anyway.

    3. Re:Parallelism by serviscope_minor · · Score: 1

      Fortran does not allow to program these at all.

      er, what?

      You *might* want to let the supercomputer guys know that.

      OpenMP (shared memory) and MPI (clusters) are vey well supported in Fortran. Fortran is still used for new supercomputer codes.

      --
      SJW n. One who posts facts.
    4. Re:Parallelism by loufoque · · Score: 1

      I work in supercomputing.
      The tools that Fortran has are not satisfying.

      For example, to program a modern computer effectively, you need to have control on memory placement. Only low-level programming languages allow this.

    5. Re:Parallelism by Bill_the_Engineer · · Score: 1

      C and C++ are still the best languages for parallelism, in particular vectorization and shared memory systems.

      That's hard to believe since parallelism isn't actually part of the language but tacked on as a library. C11 and C++11 have added some parallel features but these aren't implemented yet and much less mature.

      I'd be more inclined to believe you if you said Fortran or even Ada.

      --
      These comments are my own and do not necessarily reflect the views or opinions of my employer or colleagues...
    6. Re:Parallelism by loufoque · · Score: 1

      What is or isn't in the standard library is completely irrelevant.

    7. Re:Parallelism by Anonymous Coward · · Score: 0

      I guess you haven't really programmed in a massively parallelized environment? Language features trump library functions.

    8. Re:Parallelism by Anonymous Coward · · Score: 0

      Rubbish. Modern versions of FORTRAN are much easier to parallelize. Good luck optimizing C or C++ code as much as you can optimize modern FORTRAN's. If you do come up with a fullproof way you really need to implement it and sell it, because you'd make a bundle of dough.

    9. Re:Parallelism by Anonymous Coward · · Score: 0

      Try go.

    10. Re:Parallelism by Bengie · · Score: 1

      I'm assuming you're talking about stuff like data-locality, which a compiler can't make work correctly without understanding the design of the system.

  21. Xbox Live Indie Games and several others by tepples · · Score: 1

    C is the best overall language, it spans every platform I can think of

    I can think of several platforms that C doesn't easily span. Xbox Live Indie Games and Windows Phone 7 only support C#, the Web only supports JavaScript, Flash Player only supports ActionScript and other languages that compile to ActionScript bytecode, and the Java applet environment and MIDP phones only support Java and other languages that compile to JVM bytecode. Or are you counting Emscripten as "C support"?

    1. Re:Xbox Live Indie Games and several others by interval1066 · · Score: 1

      Xbox Live Indie Games and Windows Phone 7 only support C#...

      Ok, think about the statement. Then tell me how many XBox GAMES are written in C#...

      --
      Python: 'And then suddenly you have a language which says "we're all stuck with whatever the whiniest coder wants".'
    2. Re:Xbox Live Indie Games and several others by Murdoch5 · · Score: 1

      CGI works on the Web, Alchemy is a flash based c library and there is an exposed C API for the xbox. So again I have yet to find many or any platforms on which C won't work.

    3. Re:Xbox Live Indie Games and several others by SplashMyBandit · · Score: 1

      the Web only supports JavaScript

      it is not common but for really complex applications Java (applets or Webstart) do run in your browser (and kick the shit outta Javascript for functionality, performance and cross-browser compatibility).

  22. Experiment by Anonymous Coward · · Score: 2, Insightful

    Write "Hello World" or any other program you desire in C and in C++.

    Now look at the executable size.

    Run it through a profiler and see execution time.

    Now ask yourself, which language would you want to use on a system that has very limited resources without breaking out the assembler?

    1. Re:Experiment by Anonymous Coward · · Score: 1

      Write any user-facing project more sophisticated than "Hello world" in C and in C++.

      Now look at lines count.

      Run it through C preprocessor and see how it blows up into undebuggable mess after expansion of all the macros you'll need to make it halfway bearable to write high level programs in C.

      Now ask yourself, which language would you want to use on a system that has complex business rules and needs long-term maintainability without requirement of keeping the original developer on eternal employment?

    2. Re:Experiment by Megane · · Score: 1

      Then banish any use of cstdio, STL, and compile with -fno-exceptions -fno-rtti and check again. In other words, "C with classes" mode.

      C++ does have a few good features that can be useful in small embedded code if you know where C++'s bloat is and avoid it. Using classes as "structs with functions attached" helps encapsulate your code. And in particular, virtual methods are a significant improvement in readability over function pointers, and generally will have a smaller read-write segment footprint. For bonus points, learn how to use fixed allocation pools with placement new to avoid the problems you can get from having a heap.

      --
      #naabhaprzrag, #sverubfr-000, #agi-fcbafberq, negvpyr[pynff*=' negvpyr-ary-'] { qvfcynl: abar !vzcbegnag; }
    3. Re:Experiment by shutdown+-p+now · · Score: 1

      Write "Hello World" or any other program you desire in C and in C++.

      Here:

      #include <stdio.h>
      int main() { puts("Hello, world!"); }

      A hello world program in both C and C++.

      Now look at the executable size.

      Seems to be identical for the above.

      Run it through a profiler and see execution time.

      Ditto.

      Now ask yourself, which language would you want to use on a system that has very limited resources

      Given that such system is not unlikely to run something mission-critical, I think I'd prefer the language that doesn't let me implicitly and silently downcast pointers from void* to any arbitrary pointer type.

    4. Re:Experiment by shutdown+-p+now · · Score: 1

      Then banish any use of cstdio

      What's wrong with cstdio? It's just an alias for stdio.h.

      STL

      Quite often, STL will actually be faster compared to the equivalent C, especially if you're using runtime polymorphism for the latter (using void* pointers and function pointers, as qsort or bsearch in the C standard library do).

      If it's code size that you're after, then there's still nothing wrong with STL, you just have to make sure that you don't instantiate its containers and algorithms for random types. Typedefs help there - i.e. make it a policy to have a single header file in your project where you write things like "typedef std::vector int_vector", and then use int_vector only in the rest of your app.

    5. Re:Experiment by Darinbob · · Score: 1

      Hmm, how about the Linux kernel? Rewrite in C++ and compare.

    6. Re:Experiment by Megane · · Score: 1

      I was referring to whatever is cin/cout, which I never use, so I wasn't familiar with which header they are in. A quick check shows that what I meant was iostream. And anything which might use the heap is generally Right Out with small embedded stuff. Can you trust the STL to not use dynamic allocation?

      And seriously, you think sorting/searching efficiency is important when programming microcontrollers? It doesn't matter how efficient your sorting algorithm is if it is never used. Or searching is only used a few times per second on small data sets. They have so little memory and so much speed that you can get away with walking linked lists for the times when you can't just declare stuff as arrays.

      --
      #naabhaprzrag, #sverubfr-000, #agi-fcbafberq, negvpyr[pynff*=' negvpyr-ary-'] { qvfcynl: abar !vzcbegnag; }
    7. Re:Experiment by shutdown+-p+now · · Score: 1

      I was referring to whatever is cin/cout, which I never use, so I wasn't familiar with which header they are in. A quick check shows that what I meant was iostream.

      iostream is widely accepted to be a huge mess even among C++ developers (and even among C++ standard committee). Pretend it's just not there. Luckily, stdio.h didn't go anywhere.

      And anything which might use the heap is generally Right Out with small embedded stuff. Can you trust the STL to not use dynamic allocation?

      The use of dynamic allocation is always specified in the contract. Standard collections all use it, yes, except for std::array. But STL is not just collections - it's also e.g. generic algorithms, which can all operate on anything that can be described by a pair of begin/end iterators (or raw pointers), and do not do any allocations in the process.

      And seriously, you think sorting/searching efficiency is important when programming microcontrollers?

      It was just an example. More generally speaking, function templates will always be more efficient than manual void*-downcast-based polymorphism.

  23. C used in your favorite programming language by amejia1 · · Score: 2

    It should be noted that for most programming languages, it is highly likely that the compiler and other code used for most if not all programming languages are written in C. If you're using Java, you're using C code. If you're using Perl, you're using C code. If you're using Python, you're using C code. And so on.

    1. Re:C used in your favorite programming language by maxwell+demon · · Score: 1

      If it's a programming language compiling to native code, it's not unlikely that the compiler is written in the very programming language it compiles.

      --
      The Tao of math: The numbers you can count are not the real numbers.
    2. Re:C used in your favorite programming language by Anonymous Coward · · Score: 0

      Clang compiles C++. Clang is written in C++.

    3. Re:C used in your favorite programming language by serviscope_minor · · Score: 3, Informative

      It should be noted that for most programming languages, it is highly likely that the compiler and other code used for most if not all programming languages are written in C.

      And the C compilers are written in C++. LLVM has been C++ from the beginning, GCC is transitioning to C++ and is now being built with G++, not GCC, and allows C++ constructs in the code. I think many JVMs are written in C++, too.

      --
      SJW n. One who posts facts.
    4. Re:C used in your favorite programming language by Anonymous Coward · · Score: 0

      True, but any language that relies on a runtime VM (such as Java or C#) most likely relies on C for much of the VM.

    5. Re:C used in your favorite programming language by amejia1 · · Score: 1

      The HotSpot JVM is mainly written in C++, but there are a few places where C code is used.

    6. Re:C used in your favorite programming language by Anonymous Coward · · Score: 0

      Some notes about Java:

      The most widely used JVMs are written in C++. The most widely used Java compilers are written in Java. The most widely used Java runtimes are almost entirely written in Java. Part of this is enabled by building some core functionality using "unsafe" primtives that only trusted code can call. (See, for example, sun.misc.Unsafe). Some time ago, IBM developed a research JVM in Java (Jalapeno), which used a similar tactic, and IIRC, had comparable performance.

    7. Re:C used in your favorite programming language by Anonymous Coward · · Score: 0

      If you're using Python, you're using C code. And so on.

      But what if I'm using PyPy?

    8. Re:C used in your favorite programming language by JasterBobaMereel · · Score: 1

      The words Bootstrapping compiler spring to mind ...

      The GCC compiler was written in C, and is now being used to rewrite the GCC compiler in C++ and the C-GCC compiler will be used to compile it initially

      LLVM was compiled using a C based compiler then LLVM used to compile itself ...

      Almost all compilers were originally assembler, then C, then bootstrapped themselves ...GCC is unusual in that it (until recently) still compiled via C ...

      --
      Puteulanus fenestra mortis
  24. What would you use? by overshoot · · Score: 1

    What would people switch to? Forth, Pascal?

    About 25 years ago, working in an embedded product company, I had a friendly little argument with my software colleagues (me design hardware, UGH!) They insisted that there was nothing around that could compete with the C-compiler-that-later-became-Microsoft's for tight compiled code. So we had a little contest: they wrote a chunk of our kind of code in C, and I did it in Modula-2 (Logitech's compiler.) In both cases we were building reusable code with object methods.

    Quite enlightening.

    How the comparison would go today, given the advances in compiler optimization, I couldn't guess.

    --
    Lacking <sarcasm> tags, /. substitutes moderation as "Troll."
    1. Re:What would you use? by Christian+Smith · · Score: 1

      What would people switch to? Forth, Pascal?

      About 25 years ago, working in an embedded product company, I had a friendly little argument with my software colleagues (me design hardware, UGH!) They insisted that there was nothing around that could compete with the C-compiler-that-later-became-Microsoft's for tight compiled code. So we had a little contest: they wrote a chunk of our kind of code in C, and I did it in Modula-2 (Logitech's compiler.) In both cases we were building reusable code with object methods.

      Quite enlightening.

      How the comparison would go today, given the advances in compiler optimization, I couldn't guess.

      You gave no indication of how the comparison went all those years ago, so we couldn't guess that either. What was your point?

    2. Re:What would you use? by chthon · · Score: 1

      What were the results exactly?

    3. Re:What would you use? by overshoot · · Score: 1

      What were the results exactly?

      Tighter, faster code from the Modula-2 compiler. Which might well have been just a matter of Logitech having a better compiler than Lattice, so it's hardly generalizable to today (which is why I didn't mention the results of an N=1 experiment from 25 years ago.)

      Bottom line, to the extent that there is one: don't rely on "everyone knows" in situations like this.

      --
      Lacking <sarcasm> tags, /. substitutes moderation as "Troll."
    4. Re:What would you use? by overshoot · · Score: 1

      See below.

      --
      Lacking <sarcasm> tags, /. substitutes moderation as "Troll."
  25. As predicted by interval1066 · · Score: 2

    C haters: told ya so.

    --
    Python: 'And then suddenly you have a language which says "we're all stuck with whatever the whiniest coder wants".'
  26. ISHBWIC by Stirling+Newberry · · Score: 1

    It should have been written in C

  27. Java more popular than C...ever? by GodfatherofSoul · · Score: 1

    I find this hard to believe and I cut my teeth on Java. Must be serious problems with their polling methodology.

    --
    I swear to God...I swear to God! That is NOT how you treat your human!
  28. Analysis by Anonymous Coward · · Score: 0

    C is little more than a machine independent assembler with few modern features. If it appeals at all then it has to be because it is a simple, clean and elegant language.

    Or, perhaps, it's available in environments where the others are not? Or, perhaps, there's substantial legacy products still using C?

  29. XBL Arcade vs. Indie Games by tepples · · Score: 2

    Ok, think about the statement. Then tell me how many XBox GAMES are written in C#...

    Xbox Live Marketplace has two separate environments. The Arcade environment allows C but is open only to established studios. The XNA environment, called "Indie Games" in the menu, is open to any startup with $99 per year but requires that all applications be compiled to verifiably type-safe, Emit-free, P/Invoke-free CIL, which in effect requires C#.

  30. How did they rate them? by Anonymous Coward · · Score: 1
    I am looking for job and a recruiting agent told me that C is dead (and most of my of work experience is dead with it). Online job postings seem to confirm his statement. So, how did TIOBE measure this? Is it possible that they mistakenly rated all letters "C" as C in whatever online documents they were looking at?

    Oh, right:

    The ratings are calculated by counting hits of the most popular search engines. The search query that is used is +"[language] programming"

    So they counted desperate queries of unemployed C programmers as "popularity index".

    1. Re:How did they rate them? by Anonymous Coward · · Score: 0

      Well Recruiters don't know shit. Also, no one that programs in C is a 'C' programmer.

      Java Programmer... some human piece of earwax that writes business apps.
      PHP Programmer... throw away web monkey.
      Ruby Programmer... ditto

      A C programmer is a 'firmware guy' a language guy. A kernel developer, a cryto guy, etc etc. Other programming languages are similar. There are jobs that require Perl, Python, etc, but you're not a Perl or Python programmer. They are just tools you use.

  31. As usual, nobody cares what programmers think by gestalt_n_pepper · · Score: 1

    We argue endlessly, but in the end, you can purchase the services of a vb.net, C#, Java, or php programmer cheaply, and languages like this, for all their faults will usually get the job done easily and on budget. Are they elegant? Well designed? Maintainable? No. No. No!

    And it doesn't matter at all. Programming is about money or masturbation. Like cheap carpet in a rental unit, easy-to-use languages are more cost effective, even if you have to replace them often. You want art? Take up painting.

    --
    Please do not read this sig. Thank you.
  32. Startups don't have C API access on Xbox 360 by tepples · · Score: 1

    CGI works on the Web

    Not on the client side, which means everything is a page view or a form submission, not the dynamic DOM modification that web application users expect. How would you expect, say, an online mapping application or a real-time-updating feed to work if JavaScript is turned off?

    there is an exposed C API for the xbox

    Only for established studios, not startups using the "Xbox Live Indie Games" route to market. Please read my reply to interval1066.

  33. C a bad language? Compared to what? by kbdd · · Score: 5, Insightful
    I find it funny that people are claiming that C is a bad language, yet they use no such words to qualify assembly.

    C is a bad language to the extent that it lets do what you want, even if that means shooting yourself in the foot. A language that would marry C's strengths while providing safeguards against buffer overruns and other ills would be an oxymoron.

    If you have a section of code that is particularly time critical, you could write it in assembly as many people do. I prefer to actually write it in C but check the assembly output from the compiler, and optimize the C source until I am happy with the result. In all cases I have been able to achieve my objectives this way without actually having to insert a block of assembly (not all compilers let you do that in-line). The resulting code is still very easy to read (for me down the road or anyone else) while being efficient.

    C is not the Swiss army knife of software (even though if one language qualified, C would be the closest), but it has its areas of expertise. In the world of small embedded systems, there is simply no alternative worth considering (and few alternatives available.)

    For desktop applications, not so great (and I speak of experience.)

    1. Re:C a bad language? Compared to what? by shutdown+-p+now · · Score: 2

      C could be a better language if it got rid of some idiosyncrasies, like its weird declarator syntax (it's the only language I know of that had tools like cdecl written for it), or stillborn features like separate namespaces for structs/enums/unions (that everyone works around by using typedefs), or certain unsafeties in the language itself - e.g. implicit downcast from void* to any pointer type and from double to int, or mixed signed/unsigned arithmetic being perfectly a-ok but not doing what you expect half of the time.

      Thing is, it's just not worth the bother to fix. All of those issues are relatively minor, especially given the amount of attention you need when writing at in a low-level language like this in the first place, and when there are billions of lines of code written in it already, backwards compatibility is just far more important.

      So C is not a bad language. It's also not a good language. It's a "good enough" language.

    2. Re:C a bad language? Compared to what? by Anonymous Coward · · Score: 0

      If you have a section of code that is particularly time critical, you could write it in assembly as many people do. I prefer to actually write it in C but check the assembly output from the compiler, and optimize the C source until I am happy with the result.

      I tend to do this too but lately I have started to doubt if this really is a good method.
      While that section will be portable as long as it doesn't work too close to the hardware the optimization will not.
      C will make the function more readable but the optimization will be obfuscated and a compiler change/upgrade might break the optimization.
      In some ways it might be better to keep the time critical functions in assembly, not only to make sure that they remain optimized but also that it will be obvious that they are hand optimized whenever the software is ported to another CPU.

  34. Oracle partly to blame by Tablizer · · Score: 1

    Thanks to Oracle's slimy legal maneuvers, Java is now considered almost as big a proprietary tie-in risk as C-sharp.

    1. Re:Oracle partly to blame by SplashMyBandit · · Score: 1

      Wow, you missed a couple of years of court cases! The OpenJDK is under the GPL and Oracle's patent claims against Google for a non-OpenJDK implementation came to nothing. Furthermore the JDK has always allowed anyone to create compatible implementations (and explicit patent grant for compatible implementations is given). The only thing you could not do was call your implementation "Java" unless you passed the Java "TCK".

      In summary, there is nothing proprietary (or worth a patent fight over) with OpenJDK. The courts have already ruled on this so there is *zero* risk in using a solution based on OpenJDK. So I suggest you get your story straight and no need to persist with a FUD bogeyman about Java's legal status anymore. The C# language is standardized but its libraries are proprietary to Microsoft (and the Mono libraries are incomplete). So Java and C# are not comparable in terms of risk of proprietary claims.

    2. Re:Oracle partly to blame by ThePhilips · · Score: 1

      Your comment might become relevant - when I would see at least one enterprise system running OpenJDK.

      Oracle/Sun Java SDK and run-time are pretty much sole alternative for the businesses, since it is pretty much only Java implementation providing commercial support.

      When googling for 'openjdk commercial support' or 'java commercial support', first hit is from www.oracle.com. After filtering few pages of results, Oracle remains sole relevant hit.

      --
      All hope abandon ye who enter here.
    3. Re:Oracle partly to blame by SplashMyBandit · · Score: 1

      when I would see at least one enterprise system running OpenJDK.

      In my experience "The Cloud" usually comprises Linux boxes. Guess which version of Java they run? OpenJDK. Just in case you weren't sure, OpenJDK and Oracle JDK *are the same thing* in terms of technology (apart from some tiny library differences, eg. some graphics handling). It is the licenses that differ. Oracle also has some proprietary performance monitoring tools they sell with an enhanced JDK, but I've never seen any customers purchase them (although I'm sure some do).

      Oracle/Sun Java SDK and run-time are pretty much sole alternative for the businesses, since it is pretty much only Java implementation providing commercial support.

      The large number of customers I've deployed Java solutions for never worry about "commercial support" for the JDK. It is just never an issue. You need commercial support for your Operating System and LDAP and mailserver, and mission-critical stuff etc etc but no one cares about commerical support for their Java (they want the resulting *applications* to have support, but don't care about the JDK/JRE) just as no one cares about commercial support for their C/C++ compiler, or build tools, or dev environment, or test tools etc etc Please also note that besides Oracle providing commercial support for their JDK, IBM also provides support for the IBM Java stack. So you actually have a choice (for those dumb/unskilled enough to be a Java developer that couldn't use the source of OpenJDK to diagnose/fix your issue :) ). Free Libre and Open Source Software actually works - since access to the source code helps a great deal if you are a developer.

      So your statements are not actually correct - perhaps you're not a Java developer so don't quite understand that ecosystem to the same degree that a commercial Java dev does?

    4. Re:Oracle partly to blame by ThePhilips · · Score: 1

      Just in case you weren't sure, OpenJDK and Oracle JDK *are the same thing* in terms of technology (apart from some tiny library differences, eg. some graphics handling). It is the licenses that differ.

      Precisely. Now go back up in the comment tree and see that that was the original point: Java == Oracle.

      I can only attest that there is a growing negative sentiment in industry against Oracle. Though I haven't seen it impacting Java yet.

      --
      All hope abandon ye who enter here.
    5. Re:Oracle partly to blame by SplashMyBandit · · Score: 1

      OpenJDK == GNU Community Project != Oracle. Now Oracle may set the direction of Java but that does not mean OpenJDK == Oracle.

  35. SAS should probably be higher then 23. by Anonymous Coward · · Score: 0

    Interesting to see SAS coming close to the top 20, especially since the corporation continues to claim that it isn't a programming language at all. http://www.bailii.org/ew/cases/EWHC/Ch/2010/1829.html

    Moreover the non-search engine support for SAS is extensive and usually the first resort, so the TIOBE methodology is probably biased against SAS.

  36. Number One? by PPH · · Score: 3, Funny

    Yes but which one is number zero?

    --
    Have gnu, will travel.
  37. Dr. Who is usually English from BBC Wales by billstewart · · Score: 1

    Dr. Who has (at least usually) been recorded in Cardiff Wales, with a mostly-Welsh cast. The Seventh and Tenth Doctors were played by Scottish actors, but the other main-sequence and alternate doctors have almost all been played by Englishmen (some women, one British-Swazi, and a few who Wikipedia doesn't give enough information about.)

    --

    Bill Stewart
    New Fast-Compression-only CPR http://preview.tinyurl.com/dy575ks
  38. Not a surprise by gweihir · · Score: 2

    C programmers have an understanding of the machine they use that Java people will never be able to reach. The only advantage Java programmers have is that they are cheap. Or better, they look cheap to management. In fact they are hugely expensive because most will write code that sucks badly.

    --
    Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    1. Re:Not a surprise by JasterBobaMereel · · Score: 1

      Java programmers understand the machine just fine, it is just that the machine they understand the the JVM ...they have no access to the real machine

      A poor Java programmer is masked by the Java system, a poor C programmer gets memory leaks ...

      --
      Puteulanus fenestra mortis
  39. C/C++, of course by tjstork · · Score: 1

    It's the only way you can write a model that is portable to nearly every platform. Sure C# is ok, but its slow and only runs on Windows stuff and Linux (with whatever that portable C# implementation is). But C++ and C can talk to Objective C, which means you can use it as a model (logic layer) on iphone, build around it for your desktop apps, and even re-use it in a web service.

    --
    This is my sig.
    1. Re:C/C++, of course by Anonymous Coward · · Score: 0

      C# will also talk to C and C++

  40. Re:Dying gasps (Action!) by tjstork · · Score: 1

    64k of C#? I don't even think you could get system... well, anything in there. But I know that Action, a lightweight C derivative for Atari, fit nicely in a 16k cartridge and generated compiled code that hauled ass.

    --
    This is my sig.
  41. Musicians by Anonymous Coward · · Score: 0

    For us musicians, C has been music to our ears all along. As is this news!

  42. Stackoverflow better indicator? by Anonymous Coward · · Score: 0

    I think Stackoverflow is better indicator.
    http://stackoverflow.com/tags?tab=popular

  43. C reality check by segfault_0 · · Score: 1

    All the posters saying that C is just for embedded programming are high.

    Node.js's platform layer is written in C.
    Perl is written in C.
    Python is written in C.
    Ruby is written in C.
    The non-Erlang parts of Erlang are written in C.
    The non-bootstrapped parts of Haskell (GHC) are largely written in C.
    Some versions of Google go are written in C.
    Python, Ruby, Haskell, Java, Node, Rust, Go, Perl and Erlang all are natively extended via C code (some of these offer additional options, some dont)
    Most operating systems include healthy amounts of C code.
    The C ABI is the defacto standard for compatibility between compilers and languages.

    Your computers wouldn't be the same without modern C software.

    --

    I was crazy back when being crazy really meant something. (Charles Manson)
    1. Re:C reality check by JasterBobaMereel · · Score: 1

      C is very low level, very general, and very very portable, so it is almost always the first thing on any new system as it allows you to then implement many other systems

      Most languages allow you to bootstrap via C because of this, and it can be assumed that there is a C compiler for almost any system so it is used as the base of many systems, or to extend many systems ...

      This does not make it good, just popular ...

      --
      Puteulanus fenestra mortis
    2. Re:C reality check by Anonymous Coward · · Score: 0

      It's small, concise, and powerful. I think that makes it good.

  44. I don't miss Java at all. by rs79 · · Score: 1

    Follow the money.

    Doug Crockford has a pretty good talk on why Java is crap. It's online. And he's quite right.

    I found the damn thing so annoyingly bad I ended up blackholing java.com just to it never installs itself again. I was tired of deleting it. Funny how those odd freezes and crashes went away since I did this and i turns out I miss nothing. Maybe twice a year something goes "y u no have java?" and I close the window. Good riddance.

    --
    Need Mercedes parts ?
  45. C# can't; Anybody can interface to C by bussdriver · · Score: 1

    Objective-C++ is a COMBINED language with Objective-C and C++ and Objective-C itself is as much C as C++ is also C.

    Objective-C is not bridging with some API, module, or library to talk with C code-- it IS C code. C++ and Objective-C both were made to bring OOP to C while KEEPING the C language; but they made different design choices up front. Objective-C was bigger on SmallTalk than C++ which just couldn't let go of obsessions over issues like the cost of runtime binding or making compiler authors suffer for decades... (BTW, a nice read http://yosefk.com/c++fqa )

    Personally, I am still a fan of plain old C.

  46. See C? by Zaatxe · · Score: 1

    A friend told me to see beyond C. I misheard him and instead rented a DVD of Beyoncé...

    --
    So say we all
  47. Just to contrast this with the rest of the world by Casandro · · Score: 1

    C#, VB at all compile to some proprietary bytecode which is not only a bit slower than native code, but also requires a _huge_ .net runtime.... which is not even common on Windows systems. Huge systems also tend to break.

    On the other hand, there are systems like Lazarus where you have a component library compatible to Delphi made by the same guy who designed the library for C#. You write your program, and you simply compile it for just about any platform. At work we have Linux, MacOSX (Intel) and even Win32. We could just as well compile it for Android or Windows CE, it doesn't matter and you always get native code running on the bare system with native controls which always look like they are supposed to do.
    That is normal, write once compile everywhere. And it has been for decades now. (Outside of the Windows Fanboy community of course)

  48. Not a random spike by ranulf · · Score: 1

    Premature celebration much?

    ....

    Trends show that it's just a random spike in C's index, which is pretty much gone now.

    It doesn't look like a "random spike to me" - quite the contrary - the trend graph appears to show that C's popularity has hardly changed in the last decade

    I think it's significant that lower powered devices such as Arduinos are starting to become more popular, and C is the natural if not the only choice for a lot of these types of chips.

  49. Modern Pascal, probably... but... by Casandro · · Score: 1

    it all depends on the situation. C++ is kinda singled out by being to complex.

    Currently I'd go for this:
    bash (or whatever shell you like) for file/text table oriented tasks
    Assembler for small embedded systems (i.e. =ARM)
    Forth if you can use it instead of C
    C for simple network tasks without string processing
    node.js for complex network tasks with string processing
    Lazarus/Pascal for GUI software
    Lisp/Prolog for symbolic computations

    All of those are more or less platform independent.
    Beware of shops which are standardising on a single language in order to save costs or anything like that. The "perfect language" has not yet been invented and probably will never be. Languages trying that usually fail.

    The good thing about C is that it doesn't try to be a high level programming language. It tries to be "comfortable assembler". That's why you will so often find people implementing concepts from other languages in C. For example the Windows window message management (for things like mouse clicks and key presses) is just like Smalltalk. C doesn't try to be a full programming language, it tries to be a blank slate.

  50. sigh not again by sproketboy · · Score: 1

    *Sigh* do we have to go through this language war crap again?

  51. OOP fails vs. driver-powered rootkits... apk by Anonymous Coward · · Score: 0

    Not vs. a rootkit driven driver - As it can "penetrate" object protections via its privelege level of operations (ring 0/rpl 0/kernelmode).

    * Thus - Even OOP protections of object data & functions FAIL vs. that type of threat!

    (It's also why, on the 'flipside', for instance/example, KEYBOARDS WORK ON ALL YOUR PROGRAMS from 1 single polling driver too - it can "peer into" ALL usermode spaces!)

    APK

    P.S.=> Just some "Food 4 Thought" about a blatant FAILURE of OOP, whereas it is great in usermode/rpl 3/ring 3 against other usermode apps, but FAILS vs. a wide threat out there NOW, & for years/decades now...

    ... apk

  52. Java vs. JS by tepples · · Score: 1

    the Web only supports JavaScript [...] and the Java applet environment and MIDP phones only support Java

    it is not common but for really complex applications Java (applets or Webstart) do run in your browser

    Only in browsers that run on platforms to which the Java applet and Web Start environments are ported. The fastest growing platforms for web browsing (iOS and Android) notably do not support these environments as far as I can tell.

    and kick the shit outta Javascript for functionality

    A lot of Java APIs that interact with the local machine require applets to have been digitally signed with a code signing certificate. By the time analogous APIs were implemented in the HTML5 DOM for JS to use, developers found secure ways to sandbox them. One example is the File API. To read local files in a Java applet, for example, the developer needs to buy a code signing certificate and digitally sign the applet. To read local files in a web application running in a browser that supports the File API, an application is limited to those files that the user selected using the "open file" dialog or dragged in from the file manager, but no commercial certificate is needed.

    performance

    Java tends to have an annoying slow start-up time for the first applet that one runs in a particular browsing session, while the JVM reads the entire rt.jar from the disk. JS, on the other hand, is already loaded.

    and cross-browser compatibility

    Good luck getting a Java applet or a Java Web Start application to run on iOS, Android, Windows RT, or any other tablet operating system.

    1. Re:Java vs. JS by SplashMyBandit · · Score: 1

      the developer needs to buy a code signing certificate and digitally sign the applet.

      Incorrect. Applets may be self-signed, although with a self-signed certificate the user is prompted to accept it (unlike a CA-signed certificate which would be accepted without prompting provided the browser was configured to recognize the CA).

      Good luck getting a Java applet or a Java Web Start application to run on iOS, Android, Windows RT, or any other tablet operating system.

      Well, that is a delberate choice of the manufacturers of those platforms to silo themselves from the rest of the computing environment. The manufacturers do it while they do a power-play for marketshare, and don't give a shit about their users. Fortunately Android is the clear winner in adoption and IcedRobot is underway to bring standard Java to it (iOS gets shipped on a lot of units but market share is declining relative to Android; Windows RT is negligible at this stage and probably will always lag in adoption).

  53. Nice arguments by gtirloni · · Score: 1

    There have been headlines in other news items that C# is the language of the year, but this is based on a new language index that really doesn't have the history to be authoritative.

    So unless some index methodology is old, it is no good. I wonder how people get the motivation to create something better nowadays.

    The TIOBE index has a lot of problems, but it has been going for some time and it is reasonable to use it to compare gross trends in language popularity.

    So the TIOBE index has a LOT of problems but it's old enough AND the author thinks it's reasonable.

    Well, I'm satisfied.

    --
    none
  54. Scary warnings; no JIT on iOS by tepples · · Score: 1

    Applets may be self-signed, although with a self-signed certificate the user is prompted to accept it

    I was under the impression that trying to load an applet signed with an untrusted certificate would produce a big warning intended to scare off home users, just as Firefox does for web sites that use a self-signed SSL cert.

    Well, that is a delberate choice of the manufacturers of those platforms to silo themselves from the rest of the computing environment.

    That or a deliberate choice to extend battery life or to avoid threats to the integrity of the execution environment. Java, for instance, has ended up exploited fairly often. In fact, the strict W^X architecture of iOS doesn't allow any JIT compilation except in certain iOS components such as the program loader and the Safari JS runtime. A writable page can never be flipped from writable to executable.

    1. Re:Scary warnings; no JIT on iOS by SplashMyBandit · · Score: 1

      Java, for instance, has ended up exploited fairly often.

      Not nearly as much as C, C++ and presumably Objective-C. In fact, given the amount of remote facing Java code it is surprising how few exploits there have been for Java relative to the amount of web-facing code out there (and most of the exploits rely on holes on the underlying operating system when Java gives it access).

      I was under the impression that trying to load an applet signed with an untrusted certificate would produce a big warning intended to scare off home users

      That is correct, users are warned *for their own safety*. Users simply click through as they have been trained to do by Windows ("Next" > "Next" > "Next"). I've never had any of my users unable to click that one button and get going. Much better than colossal (and thankfully now repaired) security holes 1x1 pixel PNGs that get loaded without warning, yes?

  55. Re:Just to contrast this with the rest of the worl by AlphaBro · · Score: 1

    So I take it you have the same problems with Java, since it uses an even more inefficient virtual machine, right?

  56. No. Maybe. No. by Brannon · · Score: 1

    Try again.

  57. Re:Just to contrast this with the rest of the worl by Casandro · · Score: 1

    Yes, Java is bad in that regard. That does matter less however since Oracle has officially declared Java to be dead a few years ago. They claimed that "Java will not be the next Cobol", saying that it will not reach a stable version you can just run code on for decades.

    The problem with that sort of bytecode is that it has no advantages over native code. I mean I can understand Javascript which will now typically be compiled to native code at runtime. What you gain from that is platform independence (it's all text) and the source code.

  58. Re:Just to contrast this with the rest of the worl by AlphaBro · · Score: 1
    I frequently find myself writing native code, but bytecode does have its place.

    The problem with that sort of bytecode is that it has no advantages over native code.

    This is not entirely true. One advantage bytecode has is that it can be Just In Time compiled into native object code that is optimized for the specific architecture. This is less cumbersome than dealing with architecture specific blobs or recompiling source. Also, .NET assemblies contain pretty much all of the type metadata necessary to decompile them into extremely readable high level languages e.g. C# or VB.NET. Because of this, unless they're obfuscated, .NET assemblies are effectively open source.

  59. PIMPL by Prien715 · · Score: 1

    Or you could use the PIMPL design approach if you really want to "hide" things as seen here.

    Basically, create a pointer to another object and then put the actual private data there. And then, you have the added advantage that you don't have to compile every that includes the .h file every time you add something to the data structure.

    It's a bit of indirection, sure, but that's why C++ is so great: some of the stupidest things to do are easy (say calling a destructor explicitly), and the proper things to do are hard (oh, like trying to convert a number to a string. Frameworks make this easier, but this hasn't stopped every single large project I've ever seen from creating their own string class sometime in the distant past, which we keep using.)

    --
    -- Political fascism requires a Fuhrer.
  60. C haters by Anonymous Coward · · Score: 0

    hate the code, not the language

  61. The main reason Java isn't used in embedded by Anonymous Coward · · Score: 0

    Is that system engineers don't like dealing with idiot Java programmers.

  62. Musical language by fuzzy2k · · Score: 1

    Damn it! I had C# in the pool. I KNEW I should have gone FLAT!

    --
    --- Say something clever. Pretend it was me. Thanks.
  63. Multithread programs and programming languages by Anonymous Coward · · Score: 0

    Every programmer should agree in that there's no good computer languages, but some languages are good for some specific software block. I agree with this article since Java has survived almost intact since the Oracle's acquisition, moreover C++ with his new features remains out of the renaissance of the multicore hype.

    1. Re:Multithread programs and programming languages by Anonymous Coward · · Score: 0

      read more : http://abc.misproyectosenred.com/wordpress/on-the-use-of-computer-languages/