Slashdot Mirror


Are C and C++ Losing Ground?

Pickens writes "Dr. Dobbs has an interesting interview with Paul Jansen, the managing director of TIOBE Software, about the Programming Community Index, which measures the popularity of programming languages by monitoring their web presence. Since the TIOBE index has been published now for more than 6 years, it gives an interesting picture about trends in the usage of programming languages. Jansen says not much has affected the top ten programming languages in the last five years, with only Python entering the top 10 (replacing COBOL), but C and C++ are definitely losing ground. 'Languages without automated garbage collection are getting out of fashion,' says Jansen. 'The chance of running into all kinds of memory problems is gradually outweighing the performance penalty you have to pay for garbage collection.'"

961 comments

  1. C/C++ is dying! by KillerCow · · Score: 5, Funny

    But does Netcraft confirm it?

    1. Re:C/C++ is dying! by omeomi · · Score: 1

      Since the site is Slashdotted, could somebody post the top-10 language list?

    2. Re:C/C++ is dying! by Tackhead · · Score: 5, Funny

      But does Netcraft confirm it?

      No, but Stroustrup himself is reputed to have apologized for C++ as far back as 1998.

      "It was only supposed to be a joke, I never thought people would take the book seriously."
      - From the lost tapes of the legendary IEEE interview of 1998 :)

    3. Re:C/C++ is dying! by SatanicPuppy · · Score: 5, Informative

      1. Java.....20.5%
      2. C........14.7%
      3. VB.......11.6%
      4. PHP......10.3%
      5. C++.......9.9%
      6. Perl......5.9%
      7. Python....4.5%
      8. C#........3.8%
      9. Ruby......2.9%
      10. Delphi...2.7%

      The other 10 in the top 20 are:
      JavaScript, D, PL/SQL, SAS, Pascal, Lisp/Scheme, FoxPro/xBase, COBOL, Ada, and ColdFusion

      --
      ad logicam Claiming a proposition is false because it was presented as the conclusion of a fallacious argument.
    4. Re:C/C++ is dying! by LabRat007 · · Score: 5, Funny

      For those of you who can't open the page...

      1. Java
      2. C
      4. PHP
      5. C++
      6. Perl
      7. Python
      8. C#
      9. Ruby
      10.Delphi

      Please note, there is no language in the 3rd position this year. Seriously.

      --
      "Capital punishment makes the state into a murderer. Imprisonment makes the state into a gay dungeon-master"
    5. Re:C/C++ is dying! by harry666t · · Score: 1

      If they really are dying... I'd say only one thing:

      FINALLY!

    6. Re:C/C++ is dying! by AshtangiMan · · Score: 1

      Thank you for validating one of my core beliefs.

    7. Re:C/C++ is dying! by dfiguero · · Score: 3, Interesting

      Funny that, according to the site, Javascript is losing ground. I was thinking the opposite should be happening now that Ajax is so popular.

      --
      My penguin ate my sig
    8. Re:C/C++ is dying! by leuk_he · · Score: 1

      I was supprised D was in the top 20. I did have to check if this was not a joke.

      As for the number 3 "visual" entry, not being a language. well, other ones in the list can be critisized as well.

      Java strenght is not the language, but the platform, perl is more a scriping languge than a programmers tool. Deplhi is more pascal than delphi, unless you count the platform.

      Well, maybe we can get "brainfuck"(yes it really is a language) in that list next year }->

    9. Re:C/C++ is dying! by lgw · · Score: 4, Interesting

      Do they somewhere discriminate between VB and VB.Net? Claiming that VB is not even a programming language is ... probably reasonable. VB.Net is just C# without curly braces, however.

      --
      Socialism: a lie told by totalitarians and believed by fools.
    10. Re:C/C++ is dying! by romland · · Score: 1

      But does Netcraft confirm it? I can reply with the tags that will inevitably mark this story. So let's do it in the famous words of /.: Yes, No, Maybe.
    11. Re:C/C++ is dying! by gbjbaanb · · Score: 1

      VB not a programming language? You can claim that about a lot of others to. The simple fact is that, just like guns, its not the tool that is at fault, its the person who wields it badly.

    12. Re:C/C++ is dying! by intangible · · Score: 3, Insightful

      A musket isn't as useful or respectable when everyone else has M1A2s though.

    13. Re:C/C++ is dying! by Anonymous Coward · · Score: 0, Redundant

      Yes there is; Visual Basic is in third.

    14. Re:C/C++ is dying! by Anonymous+Brave+Guy · · Score: 4, Insightful

      Popular as in people using it, or popular as in lots of people writing about it?

      Personally, I'm not convinced AJAX is that popular on the people-using-it count. It's a very useful technique for a particular niche, but it is only a niche.

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    15. Re:C/C++ is dying! by neokushan · · Score: 5, Insightful

      Surely it's not really a fair indication just because it's web presence is dropping? I could easily argue that Java is only so "popular" because more people are posting with problems they're having using the language and that C\C++ are only loosing ground because better information on using the language is already out there.

      --
      +1 IDisagreeSoHeMustBeATrollOrAnAstroturferOrAShill
    16. Re:C/C++ is dying! by hummassa · · Score: 1

      perl is more a scriping languge than a programmers tool I would agree with you if you hadn't written the ... "pearl" above. Very good joke. Specially the "scriping" (sic) part.

      --
      It's better to be the foot on the boot than the face on the pavement. ~~ tkx Kadin2048
    17. Re:C/C++ is dying! by Anonymous Coward · · Score: 1, Funny

      Perhaps, but when the guy with the Musket has the most kills, you better damn well give him the respect he deserves.

    18. Re:C/C++ is dying! by Anonymous Coward · · Score: 0

      1. Java
      2. C
      3. Ron Paul
      4. PHP
      5. C++
      6. Perl
      7. Python
      8. C#
      9. Ruby
      10.Delphi

      ... this table NOT brought to you by Fox News.

    19. Re:C/C++ is dying! by jd · · Score: 4, Interesting
      ColdFusion should be shot with a silver bullet, stabbed through the heart with a stake, be stuffed with garlic, and be buried at a crossroads at midnight in a holy water-filled lead coffin with elder signs on all sides, inside and out. Other than that, I have no idea why it ranks in the top 20.

      Delphi and Pascal are other puzzlers. Pascal is great as a teaching language, but there are later iterations of that family of languages - Modula-2 and Modula-3 - that arguably provide better rigor if rigor is what you are after. And I see no obvious reason to use Pascal or related languages if you're not after truly rigorous code.

      C seems to be holding ground, the slight loss seems to be within the fluctuations other languages that are holding steady are seeing. It's too powerful, too close to bare-metal programming and too close to the actual machine architecture to fade for some time yet. C++ might genuinely be losing ground - C# and D provide a lot of the power and object-orientedness of C++ but make an effort to learn from the complexity of C++. Personally, I suspect D might stand a better chance as C# is still very much tied to a single vendor in people's minds. I don't see C++ vanishing, rather I see them reaching some common point and staying there.

      VB is quick-n-dirty, and it's popular because it's so easy to write something in it. If it ever became unlawful to have a website that was dangerously insecure or a hazard to Internet traffic (in much the same way cars have to be inspected every so often in some places to ensure it meets certain minimum safety standards) I imagine Visual Basic would lose appeal. Well, that or the EU eventually raising the fines to the point of driving Microsoft out of international competition.

      Given that so much new scientific code is still produced in Fortran, whereas not much is really written in COBOL although a lot of legacy code is maintained in it, I'm surprised COBOL is there and Fortran is not. (Fortran is popular enough that there are TWO competing front-ends for GCC for it. There are open-source COBOL compilers, but as far as I know, all work has stopped on all of them. To me, that says something about the level of interest and serious usage.)

      --
      It's a small world and it smells funny; I'd buy another if it wasn't for the money; Take back what I paid (SoM)
    20. Re:C/C++ is dying! by ATMD · · Score: 3, Interesting

      I wouldn't say it's a niche. I recently got around to learning AJAX and proper DOM scripting and now I want to use it for everything. It makes the UI so much nicer not having to reload the entire page every time you have anything dynamic.

      --
      Nobody else has this sig.
    21. Re:C/C++ is dying! by Kingrames · · Score: 1

      I find it hard to believe that C is more popular than C++, unless you're counting most usage of C++ (which doesn't take advantage of what it offers over C) as usage of C and not C++.

      which is understandable, but it's a bit like not counting a ferrari as a convertible unless you've let the top down in the past week or so.

      Beat you to the punch, BadAnalogyGuy.

      --
      If you can read this, I forgot to post anonymously.
    22. Re:C/C++ is dying! by Ethan+Allison · · Score: 1

      Everyone benefits from not having to reload all the sidebars, etc. on a page when they click a link. It's less bandwidth too.

    23. Re:C/C++ is dying! by Bozdune · · Score: 5, Funny

      VB not a programming language?

      Yes, because:

      1) Only noobs and losers use VB.
      2) It's not object-oriented and I took an OO class and they said everything should be OO or it sucks, so VB sucks.
      3) I have to create global variables sometimes and I was taught that I should never use global variables for anything because they're bad.
      4) Only noobs and losers use VB.
      5) VB lets me create classes but they don't work the way classes are supposed to so I hate them.
      6) I don't like VB controls, they're ugly, I like to make little hexagonal corners and stuff and piss away weeks of development on cute little clickable thingies.
      7) Only noobs and losers use VB.
      8) I don't like VB because writing Windows applications should be really hard.
      9) "Hello, world" only takes one line, and that can't be right, because I learned in Java class that it should take pages and pages of setup code and stuff.
      10) Only noobs and losers use VB.
      11) Some idiot can build a simple windows app in about 30 seconds and it's not fair, that same app took me two weeks in C++ class.
      12) The dweebs in Accounting are building VB apps and they shouldn't be programming, they don't know what they're doing.
      13) Only noobs and losers use VB.
      14) I heard Ruby is where it's at, I only want Ruby jobs now because it's kewl.
      15) I heard that VB is wicked slow, but then I found out it compiles and stuff which totally isn't fair.
      16) Only noobs and losers use VB.

    24. Re:C/C++ is dying! by Anonymous Coward · · Score: 0

      I don't think half the languages on that list wouldn't be there if it were the "people using it" count.

      Case in point: I work for a large defense contractor and have yet to meet a person who's done Ada in the last 10 years. I know there are projects written in it that are still being maintained, but I'm very skeptical it's enough to get Ada in the top 20.

    25. Re:C/C++ is dying! by leenks · · Score: 4, Informative

      Lots of us (in enterprises at least) are realising (or rather, we are able to convince the project managers now) that webapps aren't the solution for everything, and that overall development time is often increased by the difficulties when developing in javascript / html.

    26. Re:C/C++ is dying! by Anonymous Coward · · Score: 2, Insightful

      I know your troll is a mockery of the groupthink, and I don't want to spoil your momentum, but I think this bares saying. Visual Basic, before .NET style, was as turing complete as any other language I have had to use. Meaning, I CAN solve any solvable computational problem. Classes might NOT be like C++ or Java or whatever... but it isn't an inferior way of doing it. It is the COM way, which just about no one is comfortable with. Sure, error handling sucks, but seriously, do you REALLY think that try/catch is any prettier? I can call any DLL function with only half of my brain.

    27. Re:C/C++ is dying! by utopianfiat · · Score: 3, Insightful

      I was convinced that in the scientific programming world, people were still into Fortran as it grants a slight increase in speed over C for certain algorithms. Of course, this wouldn't have a broad _web presence_ due to the fact that realtime and mission critical applications aren't posted on the web. I think the limit of the fortran that still exists publicly would be the open source ATLASes and MATLAB clones (ie:matplotlib), as well as, of course, Linux itself.

      --
      +5, Truth
    28. Re:C/C++ is dying! by grahamd0 · · Score: 1

      Yeah, right!

      Next thing you're going to tell us is that Highlander had a bunch of sequels.

    29. Re:C/C++ is dying! by Wiseleo · · Score: 1

      ColdFusion should be shot with a silver bullet, stabbed through the heart with a stake, be stuffed with garlic, and be buried at a crossroads at midnight in a holy water-filled lead coffin with elder signs on all sides, inside and out. Other than that, I have no idea why it ranks in the top 20.
      Answer to Coldfusion's longevity - MySpace.

      Make your own conclusions ;-)
      --
      Leonid S. Knyshov
      Find me on Quora :)
    30. Re:C/C++ is dying! by PCMX · · Score: 1

      Honestly... I have NEVER commented on /. - but FFS are high school students and people majoring in BIT such a large web presence for VB to be up that high? How many people do you consider good programmers (this is probably a bad way to put things since for most /. readers that narrows it to themselves and the one code guru they idolize) actually use VB, post VB code online or worse have online VB projects? On another note, all development for non-pc chip sets usually on support assembly and c (some modern ones c++) - so no, with the amount of embedded systems we use now days I don't see them going away any time soon.

    31. Re:C/C++ is dying! by smellotron · · Score: 5, Funny

      If they really are dying... I'd say only one thing:

      FINALLY!

      There is no finally! That's what destructors and the RAII idiom are for, duh.

    32. Re:C/C++ is dying! by Viceroy+Potatohead · · Score: 1

      That's a good point. Maybe newer versions of Dreamweaver have some serious bugs, or something. :P

    33. Re:C/C++ is dying! by jd · · Score: 4, Funny
      Answer to Coldfusion's longevity - MySpace.

      Ok, build crossroads at the bottom of a deep oceanic trench, bury ColdFusion as specified there along with MySpace, plate the bottom of the trench with Osmium before filling it with molten rock from the planet Mercury. You gotta take these menaces seriously.

      --
      It's a small world and it smells funny; I'd buy another if it wasn't for the money; Take back what I paid (SoM)
    34. Re:C/C++ is dying! by lar3ry · · Score: 1

      Actually, this is a stupid question.

      Do you see any Carpenter forums where they ask a silly question like, "Are vise grips dying? Channel-lock pliers are much more popular! And a recent poll found that torque wrenches are making a comeback!"

      If you are a good programmer, you will simply choose from among the tools at your disposal and use the one that is best suited for the job. If you aren't very good with a particular tool and can make do with another, you will either have to learn to use the better tool or work harder with the less effective one. One of those will increase your knowledge for the future; the other will get the job done, but perhaps at a lower quality.

      There is an old saying that "when all you have is a hammer, every problem resembles a nail." The same is true with programming languages. Each of them have their strengths and weaknesses. A craftsman will be able to identify the right tool for a given task and will be less likely to try to drive a spike into concrete with a screwdriver. Concentrate on being a craftsman or a software engineer or whatever the current term is, and stop worrying that C or C++ is no longer popular with the masses.

      --
      "May I have ten thousand marbles, please?"
    35. Re:C/C++ is dying! by Anonymous Coward · · Score: 0

      After a brief shuffle the order of the deck was rearranged correctly. Slight of hand...
      -- David Copperfield in Are Illusions Reality

      1. D
      2. C#
      3. C
      4. C++
      5. Perl
      6. Python
      7. Ruby
      8. PHP
      9. Delphi
      10. Cobol
      :
      :

      After a momentary pause.

      100. Java

    36. Re:C/C++ is dying! by ibbie · · Score: 2, Insightful

      I was surprised D was in the top 20. I did have to check if this was not a joke. D is pretty spiffy though, especially with the tango package. I'm not surprised that it's gaining in popularity.
      --
      The wise follow a damned path, for to know is to be forsaken.
    37. Re:C/C++ is dying! by GileadGreene · · Score: 1

      C seems to be holding ground, the slight loss seems to be within the fluctuations other languages that are holding steady are seeing. It's too powerful, too close to bare-metal programming and too close to the actual machine architecture to fade for some time yet.
      Not to mention that it's still the lingua franca of embedded development. Other languages have made some inroads, but C seems to have lion's share of the embedded market.
    38. Re:C/C++ is dying! by Anonymous Coward · · Score: 0

      What C++ Dying?

      My Stroustrup.

    39. Re:C/C++ is dying! by rabbit994 · · Score: 1

      I've known a few that did, more did in C#. Remember, VB.Net and C#.Net can be used in same project and I've known several projects where that was case.

    40. Re:C/C++ is dying! by billcopc · · Score: 5, Insightful

      I agree with you on Coldfusion, simply because I'm forced to work with it on a daily basis. As a longtime "real" programmer, CF is an insult to my skill and experience, but sadly I need to eat.

      Delphi though, slow down! Everyone keeps repeating how Pascal is a teaching language, yet it was my official language for many years. Back in the 90's I was developing commercial games with little more than Borland Pascal 7 and Turbo Assembler. I did the speedy bits in assembler, and the logic in Pascal. My development time was extremely short and my code was very reliable and reusable.

      When Delphi happened, well honestly the first few versions stank, but I remember writing all sorts of apps in Delphi 4 (yes, even DirectX games). Delphi today has turned into a schizophrenic marketing clusterfuck thanks to Borland/Inprise/Codegear/TrendyNameOfTheMomentInc, but I think Delphi as language is just right for a large number of situations.

      It's right in the sweet spot between useless VB and painful C, plus it compiles crazy fast and performs very respectably, given how easy it is to develop. In fact, its qualities closely resemble those of C#, only Delphi did it over 12 years ago. It's no coincidence, Microsoft hired the creator of Turbo Pascal, Anders Hejlsberg, to create C#, J++ and many key architectural features of .NET. If Borland hadn't gone mental in the mid-90s, .NET would not exist today, instead we'd have Borland's equivalent and people would be praising Delphi, just as they praise C# in today's reality. It would probably run a helluva lot faster too!

      --
      -Billco, Fnarg.com
    41. Re:C/C++ is dying! by Machtyn · · Score: 1

      I wish VB would die a painful death. It seems to me to be a scripting language that went haywire. And for scripting languages/interpreted languages, I'd go for Tcl/Tk. It has a nice complete package for quick gui creation and efficient stream handling that can be used on any platform. Plus, imho, it is easy to read.

    42. Re:C/C++ is dying! by Anonymous Coward · · Score: 1, Insightful

      9) "Hello, world" only takes one line, and that can't be right, because I learned in Java class that it should take pages and pages of setup code and stuff. System.out.println("Hello world");

    43. Re:C/C++ is dying! by Anonymous Coward · · Score: 0

      Bitter, some?

    44. Re:C/C++ is dying! by Anonymous Coward · · Score: 0

      It's important to know whether "VB" means VB6 or VB.NET. I doubt many people are sitting down to write new apps in VB6 these days, since .NET has been around for over 6 years.

      VB.NET is no more "quick-n-dirty" than C#. They compile to the exactly same MSIL code, and with the exception of a very few nonessential/rarely-needed syntactical differences, like not providing true anonymous delegates, VB.NET provides the exact same functionality and programming model. This is especially true if we're talking about web programming, including the EXACT same level of OOP semantics.

      And all of the visual, hand-holding tools that are available in VB.NET are available in C#. If you're arguing that the .NET framework and Visual Studio's graphic designers are somehow "dangerously insecure," well, I disagree, but at least that's an argument we could have. To criticize VB.NET while (very mildly) praising C# just makes you look ridiculous.

    45. Re:C/C++ is dying! by MBGMorden · · Score: 3, Interesting

      I agree. My educational background was in C/C++ programming (command line on Unix systems) and during and immediately following school most of my hobby programming was in Borland C++ Builder. About 2 years ago I discovered PHP and went wild with that. It was fun, but that old saying started becoming true: "When all you have is a hammer, everything starts looking like a nail.".

      Web apps are nice and quick to develop, but I'm definitely starting to come back around to the idea that there is definately a place for local apps, and most certainly for fast compiled code over interpreted.

      --
      "People who think they know everything are very annoying to those of us who do."-Mark Twain
    46. Re:C/C++ is dying! by goatpunch · · Score: 1

      No-one else in this discussion seems to have noticed that fact. They both compile to identical CIL (Common Intermediate Language). Curly braces however, like Macs and smoking, will always be cooler.

    47. Re:C/C++ is dying! by Anonymous+Brave+Guy · · Score: 2, Insightful

      Everyone benefits from not having to reload all the sidebars, etc. on a page when they click a link.

      Not if they're writing the firmware for a washing machine, the operating system for a telephone switching system, the back-end of a corporate database application, the latest FPS blockbuster, the drivers for a new Linux file system...

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    48. Re:C/C++ is dying! by goatpunch · · Score: 1

      I think your confusing the VB.NET of the past 5 or 6 years (which is essentially the same thing as C# and J# with slightly different syntax) with the crappy old-style Visual Basic 1.0 to 6.0 which I doubt that anyone uses anymore.

    49. Re:C/C++ is dying! by xenocide2 · · Score: 1

      The difference is that people are inventing new hammers daily, with no sign of slowing down, and using them correctly and efficiently can take years of investment. Carpentry is a very old profession, so there's been plenty of time to identify the right tools. But today, with a historically large population, new tools are invented all the time in this profession in it's infancy. These sorts of popularity measurements can justify an institution using a new language over an older one. "See, plenty of people use it. It's not something we'll have to hire a PhD to use and fix!"

      --
      I Browse at +4 Flamebait

      Open Source Sysadmin

    50. Re:C/C++ is dying! by CastrTroy · · Score: 4, Interesting

      Well, as a VB developer, you have to remember that when people talk about VB now, they are talking about VB.Net. Which is exactly the same as C#, with a different syntax. Comparing VB.Net to VBScript or even VB6 is like comparing Java with Javascript. VB gets a bad name because it used to be pretty bad, and there's a lot of non-programmers using it to do a lot of stuff they aren't qualified to do, and messing it up royally. But that doesn't mean VB.Net is a terrible language. I wouldn't fault PHP for all the insecure newbie websites created with PHP.

      --

      Anthropic principle: We see the universe the way it is because if it were different we would not be here to see it.
    51. Re:C/C++ is dying! by Anonymous Coward · · Score: 0

      VB gets a lot of flask because it used to be crippled and amateurish. This is not really the case since .NET.

      Any coder who works in both C# and VB now knows that the two languages have been pretty much interchangeable since 2003. In fact, they were actually pretty much interchangeable as far back as 2001, but you probably should have still been using C++.

    52. Re:C/C++ is dying! by Anonymous Coward · · Score: 0

      With .NET, VB is the exact same as C# except for syntactial differences

    53. Re:C/C++ is dying! by putaro · · Score: 1

      Well, lots of embedded systems work is done in C and there is a *lot* of embedded code running around in the world.

    54. Re:C/C++ is dying! by CastrTroy · · Score: 1

      I like my code to look like pseudocode. Thank you very much. I also quite enjoy ending my while loops with "wend". I only with VS.Net would quit changing them to "end while".

      --

      Anthropic principle: We see the universe the way it is because if it were different we would not be here to see it.
    55. Re:C/C++ is dying! by phantomfive · · Score: 1

      Personally, I suspect D might stand a better chance as C# is still very much tied to a single vendor in people's minds. I have to disagree with you on that one, although I like you're argumnent, because Visual Basic is number 3 on the list. Kind of indicates people don't mind being tied to a single platform too much.

      Personally, I'd like to see objective-C go up in that list (as it will, with the rising Mac market share). That is one sweet language that is everything I wish C++ were.
      --
      Qxe4
    56. Re:C/C++ is dying! by Alex+Belits · · Score: 1

      You forgot about a layer of crushed bones of Microsoft employees, soaked with blood drained from Fox News and Clear Channel personnel. Without it ColdFusion can rise again.

      --
      Contrary to the popular belief, there indeed is no God.
    57. Re:C/C++ is dying! by Hal_Porter · · Score: 1

      That's the problem with the whole Web 2.0 thing. Everyone writes about Ajax, Perl, and web technologies. And reading it it's easy to lose track of the fact that the majority of programmers are probably writing embedded code. Certainly the majority of processors are embedded.

      --
      echo -e 'global _start\n _start:\n mov eax, 2\n int 80h\n jmp _start' > a.asm; nasm a.asm -f elf; ld a.o -o a;
    58. Re:C/C++ is dying! by PocketPick · · Score: 4, Interesting

      I completely agree - You know why I like C or C++? Because I only need to know one thing to do 90% of everything - C or C++. In the world of web development, I must no only be proficient in an equivilant amount of libraries found on a desktop platform, but also any number of scripting languages (PHP/JavaScript/Ruby/etc), HTML/XHTML/XML/SGL/DTD/RelaxNG/XMLSchema, perhaps ColdFusion, or maybe Adobe Flex/SilverLight - And I'm probably only scrapping the complexity of this odd little world.

      Why the pain? Why not keep it simple? In spite of our advancement, it's amazing how much more practicality and common sense some software academics had 20 years ago compared to today.

      When are web standards comittees or intellectuals going to quit trying to one up each other and start consolidating some of their standardizations?

    59. Re:C/C++ is dying! by Evil+Pete · · Score: 1

      Where I work we have a mix of languages: C/C++, Delphi, Java, C#. Delphi exists because it is a nice language where UI dev is as easy as VB but with a nice programming language. When you see the compile time on Delphi ... well, it makes a C++ programmer like me weep. Compile time for my stuff: around 15 minutes, on Delphi (serious apps) about the time it takes to press the compile key.

      As a matter of interest the push is to go to C/C++, Java eventually and give the boot to C# and Delphi.

      --
      Bitter and proud of it.
    60. Re:C/C++ is dying! by Planesdragon · · Score: 2, Interesting

      A musket isn't as useful or respectable when everyone else has M1A2s though. It is when all you've got is gunpowder and lead. The average soldier can't make bullets for his M1A2 in the field. The musketeer... can.

      Which is exactly why VB has the staying power it does.
    61. Re:C/C++ is dying! by pwizard2 · · Score: 1

      My educational background was in C/C++ programming (command line on Unix systems) and during and immediately following school most of my hobby programming was in Borland C++ Builder. About 2 years ago I discovered PHP and went wild with that.
      My story is very similar, only I learned PHP first and then moved on to C++. (Like you, I started with Linux command line apps) Before I learned how to use Eclipse, I used Kate for my C++ work (and even Vim once or twice!)

      For PHP coding, I've grown quite accustomed to Bluefish.
      --
      "It is a denial of justice not to stretch out a helping hand to the fallen; that is the common right of humanity."
    62. Re:C/C++ is dying! by Grishnakh · · Score: 1

      While the majority of processors are certainly embedded, speaking as an embedded programmer, I don't think the majority of programmers are writing embedded code. In the embedded world, it only takes one programmer to program a small embedded processor (such as an 8-bit Microchip PIC CPU) for some appliance, when then has several hundred thousand copies manufactured. There's tons of places where embedded CPUs are in use, ranging from tiny 8-bit CPUs with 256 bytes of memory, to more powerful 32-bit CPUs for things like automotive ECUs or printers, to regular AMD/Intel CPUs used in an embedded application, but I think the majority of actual CPUs are the smaller kind, and as I pointed out before, it takes far fewer programmers to develop the code for these than typical corporate web applications and other things that run on regular PCs or servers, and they're used in far greater numbers.

    63. Re:C/C++ is dying! by Anonymous Coward · · Score: 0

      But classic VB classes are very comfortable when you do want COM. I don't think we'll ever see a language better for desktop integration than the old MS stack including VB6.

      Of course it sucked for everything else.

    64. Re:C/C++ is dying! by thekm · · Score: 1

      Lots of us (in enterprises at least) are realising (or rather, we are able to convince the project managers now) that webapps aren't the solution for everything, and that overall development time is often increased by the difficulties when developing in javascript / html. ya... because writing systems that output text are *really* hard.

      Most complex webapps are still more easy to understand than complex client applications. Client applications take more extensive use of patterns and restraint than modern web applications where patterns are now very well extracted making the overall architecture improved.

      In general... peanut coders can split up, understand and maintain web application far easier than a moderately complex client application.
    65. Re:C/C++ is dying! by Tanktalus · · Score: 1

      The problem with C/C++ is that to do anything "interesting" (at least to management), you need to learn another "language" to write the GUI. X vs Windows API ... neither are trivial. More (mini-)languages to learn. That's easy - just pick a cross-platform library - but if you pick the wrong one, you'll have to learn another one for your next job.

      Java's not a lot better - Swing still is its own mini-language compared to the rest of Java.

      It's not entirely unlike learning HTML when doing PHP or Perl or whatever. Not as drastically different, but still different enough to be distracting from the real problem being solved.

      Our team takes it the other direction altogether. Our engine is in C++. Our GUI is in Swing. As long as they're going to be different, may as well really make them different.

    66. Re:C/C++ is dying! by Hal_Porter · · Score: 1

      Hmm, I dunno about that. I'm in Taiwan at the moment and the sheer volume of embedded stuff produced is absolutely unbelievable. They crank out stuff at an amazing rate, probably millions of products per year. Most of it will sink without trace of course, a tiny minority will end up being sold very cheaply globally in hardware stores. And a very, very small minority will be OEMd for a global company which knows how to do marketing and will sell for a fortune.

      But I'd guess that Asia is full of people knocking out embedded code mostly by doing a brutal cut and paste job on a previous product or a reference design. Sometimes they forget to update the USB VID and PID from the reference design for example or ship completely untested firmware for example, so the amount of time spent on it must be very low.

      --
      echo -e 'global _start\n _start:\n mov eax, 2\n int 80h\n jmp _start' > a.asm; nasm a.asm -f elf; ld a.o -o a;
    67. Re:C/C++ is dying! by whimmel · · Score: 0, Troll

      Does this list consider how important Java developers think they are?

      --
      Does the name Pavlov ring a bell?
    68. Re:C/C++ is dying! by The+Master+Control+P · · Score: 4, Funny

      I know that I'm not the only one who read that link as "Dalek Scientific."

      Which would be the most goddamn awesome name for a scientific supply company ever.

    69. Re:C/C++ is dying! by Anonymous Coward · · Score: 0

      Where are your header includes? entry point (main)? And don't be silly by not using any carriage returns. VB, if any lines were written, could do the same with colons. Also, in VB a "Hello World" doesn't take any lines of code; it's a simple drop of a label on a form and changing the caption.

    70. Re:C/C++ is dying! by Mr2001 · · Score: 1

      Delphi and Pascal are other puzzlers. Pascal is great as a teaching language, but there are later iterations of that family of languages - Modula-2 and Modula-3 - that arguably provide better rigor if rigor is what you are after. And I see no obvious reason to use Pascal or related languages if you're not after truly rigorous code. Delphi's advantage isn't the Object Pascal language. Think of Delphi as Visual Basic done right (well, mostly right).

      Unlike VB, Delphi is a straightforward compiled language with nothing very magical going on. There's a big class library, but the source code is all available. There's a form designer, but it edits human-readable files, and you can look through the library code to see exactly how those files work. You don't need a runtime; it can statically link the parts of the library you need and strip the rest. And you don't have to buy a separate set of grown-up tools when you want to make your own components or IDE plugins; you can do it all from Delphi.

      Unlike "Visual" C++, Delphi gives you the same rapid development environment as VB. You don't have to switch back and forth between 3 or 4 editors, or tread lightly when editing your code for fear of deleting some magical comment that the IDE needs. You don't have to go through a multi-page wizard to add a new method. You don't have to design a whole model-view-controller architecture for a simple application with one or two forms. You just drag pieces together and they work.

      Nowadays, many of Delphi's benefits are available in .NET -- thanks perhaps to the fact that the designer of Object Pascal went on to design C# -- as well as Java and other systems with the right IDE and library support. But Delphi was there in the early 90s, and all the Delphi apps that have been written over the years still work and still need maintenance.
      --
      Visual IRC: Fast. Powerful. Free.
    71. Re:C/C++ is dying! by Count+Fenring · · Score: 2, Insightful

      How is a scripting language not a programmer's tool?

      And how, in that case, does PHP not have the same caveat attached, since (in capability) it resembles a sped-up but limited subset of Perl?

    72. Re:C/C++ is dying! by Anonymous Coward · · Score: 0

      What what? In the butt, what what? In the butt. You like it in the butt.

    73. Re:C/C++ is dying! by joggle · · Score: 4, Insightful

      It really comes down to different tools for different jobs. Having a vast number of tools at your disposal for free is not a bad thing, just get a cursory knowledge of each tool and what it's good for so that when your next project comes up you can make an informed decision on which one(s) to use.

      Also, you make it seem like only knowing the C/C++ languages is sufficient to accomplish anything. That's really not true--at a minimum you need to know the STL for C++ related stuff, some GUI library for doing graphics, an XML library for doing XML manipulation, a database library for interacting with the database of your choice, a cross-platform library to write portable code, etc. Even if you're using something that does all of that (such as Qt) you still need to learn about XML, XMLSchema and DTD if you are using those technologies (just as you would for web programming).

    74. Re:C/C++ is dying! by Anonymous Coward · · Score: 1, Insightful

      Visual Basic, before .NET style, was as turing complete as any other language I have had to use. Meaning, I CAN solve any solvable computational problem. Classes might NOT be like C++ or Java or whatever... but it isn't an inferior way of doing it.

      The Whitespace language is also Turing complete, as is LOLCODE. You CAN solve any solvable problem with either of them.

      The comparison tdoesn't prove anything one way or the other about VB-- but neither does it Necessarily follow from the fact that it is "Turing complete" that it "isn't an inferior way of doing it" (I know I wouldn't want to get stuck with the job of maintaining, editing, or debugging someone elses Whitespace program...

    75. Re:C/C++ is dying! by asc99c · · Score: 2, Insightful

      For most apps of any size, having a 'separate' GUI is no bad thing. It encourages you to simplify the back end processing and keep if efficient and easy to understand, with a limited number of hooks for a GUI to hook into.

      The stuff I write at work has multiple user interfaces possible. Little has to change to swap our Windows only C++ / Visual Studio GUI to a multi-platform web based GUI.

    76. Re:C/C++ is dying! by TapeCutter · · Score: 2, Insightful

      "Our team takes it the other direction altogether. Our engine is in C++. Our GUI is in Swing. As long as they're going to be different, may as well really make them different."

      Conceptually that's exactly how it should be, decouple the engine from the display as much as possible. Many enterprise projects learnt this lesson the hard way when they spread the engine across a multitude of MFC dialogs and widgets under Win31, many of the same enterprises are still learning the same lesson with web apps.

      --
      And did you exchange a walk on part in the war for a lead role in a cage? - Pink Floyd.
    77. Re:C/C++ is dying! by pimpimpim · · Score: 1
      Yes but unless you start using new libraries and learning its quirks, you'd also have to write _every_ little function yourself, include all the error handling etc. Recently I needed to speed up my Perl program (I do numerics with perl :p) and it was such a pain to get C to read in my input files and be able to handle erroneous input, reallocate the arrays without leaking memory, etc.

      Also, I was recently at the DIY store to buy a hammer, guess what, there is no hammer that is really good for everything,

      --
      molmod.com - computing tips from a molecular modeling
    78. Re:C/C++ is dying! by clang_jangle · · Score: 1

      Everyone benefits from not having to reload all the sidebars, etc. on a page when they click a link.


      Except those of us who prefer unique URLs for quicker reference...

      --
      Caveat Utilitor
    79. Re:C/C++ is dying! by gbjbaanb · · Score: 1

      I find your analogy remarkably true.

      Java/C#/etc do remind me of a huge, slow, bulky battle tank that requires a huge amount of support and resources to keep in the field.

      They're not much use against a light infantry squad too, against another tank they perform relatively well though.

    80. Re:C/C++ is dying! by Anonymous Coward · · Score: 0

      So you use an Operating System written in what? Java? Python?

      Thought so.

    81. Re:C/C++ is dying! by TheRaven64 · · Score: 1
      90% of all software is in-house code for business-specific uses, and a lot of this is written in VB or similar, often with an Access back end. If you were to start such a project now, you would do it as a simple web-app and use and old machine in the office as a terminal for it, but most of the time these apps have accumulated cruft for a decade or so and need to be maintained. VB is so far up the list for the same reason that COBOL only just slipped off the top ten.

      As to embedded systems, the borders are always moving. Embedded used to mean 8-bit (or even 4-bit) microcontroller with a few KB of RAM (maybe less). Now it often means a 16-bit microcontroller and can mean a slowish ARM chip with several MBs of RAM. A lot of modern embedded systems have more power than the old Xerox machines which ran an entire object-oriented GUI and set of applications written in Smalltalk, or than the old Lisp machines. It's increasingly tempting in these situations to get a more powerful chip for a small amount of money and save a large amount on developer time.

      --
      I am TheRaven on Soylent News
    82. Re:C/C++ is dying! by Anonymous Coward · · Score: 0

      So... how do you intend to dispose of the myspace users?

    83. Re:C/C++ is dying! by Metorical · · Score: 1
      You make very valid points but I feel I must jump in when you say:

      Also, you make it seem like only knowing the C/C++ languages is sufficient to accomplish anything. That's really not true--at a minimum you need to know the STL for C++ related stuff. STL is the *Standard* Template Library... you need to know the standard libary functions for pretty much all programming languages so it's a bit of a moot point.

      Trying to make up a car analogy in 5 seconds: It's like saying to be able to drive the car you also need to know how to turn the ignition key?

      But otherwise very good point.
    84. Re:C/C++ is dying! by hairyfeet · · Score: 1

      Damn, my old friend VB is number 3! I figured after MSFT tried killing it good old VB would have been a lot further down the list. IMHO you still can't beat good old VB6 when it comes to whipping off a little program or database front end for a small business that needs it done yesterday. VB6 may no longer be supported by MSFT but it looks like I'm not the only one who refuses to let it die.Go VB6!

      --
      ACs don't waste your time replying, your posts are never seen by me.
    85. Re:C/C++ is dying! by Anonymous Coward · · Score: 0

      PHP [...] (in capability) [...] resembles a sped-up but limited subset of Perl
      If it's "sped-up", how come Perl thrashes PHP in all but two of the tests in the programming-language shootout?

      And, no, PHP does not resemble Perl very much at all. Perl has the best regex implementation of any scripting language (join first with Ruby); PHP has hands-down the worst. Perl has proper variable scoping (your choice of lexical or dynamic); PHP has stupid and arbitrarily limited scoping rules. Perl has fast linear arrays and slow associative arrays; PHP pretends that associative arrays are enough for anyone. Perl has a confusing and idiosyncratic system of sigils with a logical basis; PHP has confusing sigils with no functional purpose at all, because it was built by a bunch of cargo cultists who didn't understand what $ is for in Perl or in shell scripts. Perl has langauge features like first-class functions, higher-order functions, anonymous functions, namespaces, operator overloading, and so forth; PHP has none of these.

      Perl is a scripting language. PHP is a website templating toolkit that is occasionally abused for scripting by people too lazy to learn a real language.
    86. Re:C/C++ is dying! by Haeleth · · Score: 2, Informative

      $ cat > hello.java
      System.out.println("Hello world");
      $ javac hello.java
      hello.java:1: class, interface, or enum expected
      System.out.println("Hello world");
      ^
      1 error
    87. Re:C/C++ is dying! by ioshhdflwuegfh · · Score: 1

      Only noobs and losers use VB. I think you got that right.
    88. Re:C/C++ is dying! by fbjon · · Score: 1
      Bad analogy. This is the same as carpenters discussing the best, or most popular shape of hammers. All programming is like driving in a nail, sometimes you need a hammer, sometimes a mallet, sometimes a sledgehammer. But you don't need three different hammers. Okay, this analogy isn't much better, but anyway...


      Programming languages are tools, but some tools are worse than others for any task.

      --
      True confidence comes not from realising you are as good as your peers, but that your peers are as bad as you are.
    89. Re:C/C++ is dying! by farker+haiku · · Score: 1

      well...

      you can do it in groovy like so and still use the jvm:

      println "Hello world"

      --
      Your sig(k) has been stolen. There is a puff of smoke!
    90. Re:C/C++ is dying! by GeckoX · · Score: 3, Interesting

      Agreed. VB.Net is not VB. Still a tad behind C# for language features, but barely. Worked in C# for the last 4 years at my last job, and dreaded having to use VB.Net at my new place of work. But now that I have been for a year, other than syntax, there's really zero difference between the two. Catch is to turn off the 'features' that let you write more vb6ish bastardized code. Make sure Option Strict and Option Explicit are on, and throwout the Microsoft.VisualBasic namespace, and you're good to go. One great benefit over it is that the 'perceived' challenge for a VB6 developer in switching to .Net is greatly removed when they can be introduced to VB.Net rather than C#. I've mentored people that would never have attempted anything in C# in moving to VB.Net with great success.

      I still prefer the syntax of C#, but that's mostly just personal preference.

      --
      No Comment.
    91. Re:C/C++ is dying! by marcosdumay · · Score: 1

      Ditto for when the guns explode ;p

    92. Re:C/C++ is dying! by multipartmixed · · Score: 1

      > PHP [....] (in capability) it resembles a sped-up but limited subset of Perl?

      It's interesting to note what people think of other languages depends on what they know.

      To me, PHP looks like a JSP-style markup/SSI language with a wierd syntax, with APIs based on the standard C / UNIX libraries.

      But then again, I don't know perl.

      --

      Do daemons dream of electric sleep()?
    93. Re:C/C++ is dying! by marcosdumay · · Score: 1

      "The dweebs in Accounting are building VB apps and they shouldn't be programming, they don't know what they're doing."

      That hits the nail on the head. You know, a sarcatic post shouldn't state real resons.

      Two years latter, those dweebs in Accounting will see the problems they've caused and ask for a real system. By them, they'll already have 5 other VB systems.

    94. Re:C/C++ is dying! by PalmKiller · · Score: 1

      I agree, I really like AJAX, it keeps my floors squeaky clean, and leaves a faint lemony scent.

    95. Re:C/C++ is dying! by SatanicPuppy · · Score: 1

      Just as an aside, this sort of thing is where Python shines; it's very C friendly, and it has all the tools and ease of development to make excellent GUIs.

      --
      ad logicam Claiming a proposition is false because it was presented as the conclusion of a fallacious argument.
    96. Re:C/C++ is dying! by clintp · · Score: 1

      Tactical nuclear weapons from space. It's the only way to be sure.

      --
      Get off my lawn.
    97. Re:C/C++ is dying! by Acer500 · · Score: 1

      Delphi and Pascal are other puzzlers. Pascal is great as a teaching language, but there are later iterations of that family of languages - Modula-2 and Modula-3 - that arguably provide better rigor if rigor is what you are after. And I see no obvious reason to use Pascal or related languages if you're not after truly rigorous code. At the local public university (Universidad de la República, Uruguay), the 1st programming course used Pascal (you don't need much for the basics, pseudocode would do just as well), and the second used Modula-2 (no idea if they switched to Modula-3 or whatever by now).
      --
      There are three kinds of lies: lies, damned lies, and statistics.
    98. Re:C/C++ is dying! by somersault · · Score: 2, Interesting

      I think Delphi is great for a 'do anything' language - I use it basically for any non web based app requiring a GUI. I'm not sure how cross platform compatible it is as I haven't ever tried out Kylix or anything like that. I've used C/C++ for doing command line code, DLLs and OpenGL apps, but I've never actually used it for GUIs as it just looks like a royal pain in the ass compared to Delphi. For web based stuff I used to use PHP as that is what I learned at Uni, but I've moved to perl now, it's a lot more pleasant to work with, and encourages more secure practices IMO (I submitted an Ask Slashdot question about PHP security ages ago and the answers convinced me to girl Perl a go :) ). Knowing Perl will also be useful for doing any random scripting I may want to do in future too, I highly recommend it to anyone who hasn't tried it yet..

      --
      which is totally what she said
    99. Re:C/C++ is dying! by mcvos · · Score: 1

      Popular as in people using it, or popular as in lots of people writing about it?

      The number of ajax frameworks has grown significantly over the last couple of years. Just about every modern web framework supports ajax nowadays, and with proper support, ajax is very easy to use in a website. If people don't talk about it so much, then it's most likely because it's becoming more transparantly integrated into their web frameworks. Using ajax used to be hard, now it's easy. That's the best explanation for the drop in ajax that I can think of.

      Personally, I'm not convinced AJAX is that popular on the people-using-it count. It's a very useful technique for a particular niche, but it is only a niche.

      What niche exactly? Just about any site with complex forms can benefit from ajax. You don't have to build the new Google Maps to justify using ajax.
    100. Re:C/C++ is dying! by T.E.D. · · Score: 1

      I was convinced that in the scientific programming world, people were still into Fortran as it grants a slight increase in speed over C for certain algorithms


      Mostly its because there's a gazillion lines of perfectly working Fortran code already running in that world. It doesn't make a lot of sense to trash all that simply because some other language happens to be cooler this week.

      There are some high-end number crunching apps where the parallel computation constructs in Fortran speed things up a bit, but that has more to do with Fortran compilers optimizing the stuff their customers need, rather than any inherent superiority of Fortran for this.
    101. Re:C/C++ is dying! by mcvos · · Score: 1

      Lots of us (in enterprises at least) are realising (or rather, we are able to convince the project managers now) that webapps aren't the solution for everything, and that overall development time is often increased by the difficulties when developing in javascript / html. The reason webapps are so popular isn't because it solves a development problem (it doesn't, and indeed makes it even worse), but because it solves a distribution problem.

      It's the headaches of supporting an aplication on 1000s of desktops that makes many companies choose web applications whenever possible.

    102. Re:C/C++ is dying! by Grishnakh · · Score: 1

      Your remark about "millions of products per year" is exactly my point: the sheer volume of embedded devices is incredible, but each of those millions of products only requires one person, typically, to write the code (esp. if they're doing a crappy cut-n-paste job). When you look at typical computer applications, web applications, etc., the amount of programming time, and number of programmers, required for each product is much higher, and they're not reproduced in such volume.

      I'm sure there's no easy way to actually get any stats on the number of embedded vs. non-embedded programmers in the world, but I still highly suspect that there's a lot more non-embedded ones.

    103. Re:C/C++ is dying! by KDR_11k · · Score: 1

      That's only on PCs though. C is used on embedded systems of all sizes too, you won't need a GUI toolkit when implementing a new electronic helper for a vehicle. I don't think Java will really replace C for firmware programming, it doesn't seem designed for dealing with hardware directly.

      --
      Justice is the sheep getting arrested while an impartial judge declares the vote void.
    104. Re:C/C++ is dying! by Rycross · · Score: 1

      Programming languages benefit from the network affect. Popular languages have more libraries written, more resources available online, and more skilled job applicants to work on the software. I would think that while some carpenters tools are better than others, it doesn't really benefit a carpenter if 1000 people are using his particular tool rather than 1 million.

    105. Re:C/C++ is dying! by joggle · · Score: 1

      You should try doing GUI programming with C++ using Qt. It's a piece of cake (but not free for commercial development unless your code is open source).

      PHP has come a long ways in terms of security and good practices thanks to the Zend framework. You should check them out. I use Perl and PHP all the time, but haven't used mod_perl in years. I use PHP for all dynamic pages and Perl for tasks I run from the shell.

    106. Re:C/C++ is dying! by Anonymous Coward · · Score: 0

      It's a common misconception that, other then the syntax, vb and c# are the same. However this is incorrect. There are many things in .net that can *only* be done in vb.net and not in c# - late binding for example.

    107. Re:C/C++ is dying! by mcvos · · Score: 1

      VB.Net is just C# without curly braces, however. Then shouldn't VB.Net be counted as C#, instead of VB or an entry of its own?
    108. Re:C/C++ is dying! by Devv · · Score: 1

      Say no to VB on your lawn!

      --
      +1 Agree -1 Disagree
    109. Re:C/C++ is dying! by KDR_11k · · Score: 1

      Yeah but when you're so busy making ammo from scratch it's probably easier to just use the tank to run 'em over.

      --
      Justice is the sheep getting arrested while an impartial judge declares the vote void.
    110. Re:C/C++ is dying! by KDR_11k · · Score: 1

      > get ye flask
      Ye can't get ye flask!

      --
      Justice is the sheep getting arrested while an impartial judge declares the vote void.
    111. Re:C/C++ is dying! by yoyhed · · Score: 1

      VB gets a lot of flask because it used to be crippled
      I know I would probably be driven to drinking if I was crippled..
      --
      WHO NEEDS SHIFT WHEN YOU HAVE CAPSLOCK/ DAMN1
    112. Re:C/C++ is dying! by immcintosh · · Score: 1

      Except that the search query they use seems designed to identify people writing about languages, rather than using them. Specifically, they query for "+' programming'" This seems specifically designed to favor people-writing-about-it hits far and away above people-using-it. I mean, I don't know about you, but I don't see many actual project web pages mentioning "C programming" if they use the C language. They tend to talk about the actual project.

      IMO, totally, utterly worthless survey on account of such a poorly chosen search term.

    113. Re:C/C++ is dying! by immcintosh · · Score: 1

      Woops, it /. ate my query string example. Here is where they show what they search for.

    114. Re:C/C++ is dying! by bigman2003 · · Score: 1

      You're a tool.

      If you don't like ColdFusion, don't use it.

      But I would challenge you- or most other people here on Slashdot- to create a new web application in the language of your choice faster than I (or any good ColdFusion programmer) can in ColdFusion.

      I've been working with ColdFusion for almost 10 years. I can do everything 'from scratch', but at the same time I love using all of the new features they have been adding. With functionality for ZIP files, great image functions, PDF functions, charting, etc. etc. etc. I can do what I need to without using any 3rd party add-ons.

      The new AJAX functionality is also awesome and so is the XML/RSS support.

      Sorry I enjoy using a language that is designed for exactly what I do, and does it well. It just makes sense to me.

      --
      No reason to lie.
    115. Re:C/C++ is dying! by legonis · · Score: 1

      I am totally with you on all you said about Delphi, except the version from since you started seeing the decline. I refused upgrading to anything newer than Delphi 2.0 and IMO Delphi 2.0 has been one of the nicest, most productive IDEs ever created. As you pointed out the programs compiled scarily fast, and the generated code has always been amazingly compact and succinct, even compared to Borland's own CPP builder. I still have no idea how Borland could screw this up as there was a time period in 95-96 that Delphi was THE language to program in. Your alternatives were VB which even naming it would cost you some street cred., Java, an immature slow as F&&% language back then, and VC++ with MFC which was the sign of masochism.

    116. Re:C/C++ is dying! by Anonymous Coward · · Score: 0

      1) Only noobs and losers use VB.
      ...
      4) Only noobs and losers use VB.
      ...
      7) Only noobs and losers use VB.
      ...
      10) Only noobs and losers use VB.
      ...
      13) Only noobs and losers use VB.
      ...
      16) Only noobs and losers use VB.

      I hope you realize that you keep misspelling "loosers".

    117. Re:C/C++ is dying! by legonis · · Score: 1

      that interview is fake, Stroustrup denied it himself.

    118. Re:C/C++ is dying! by Discoflamingo13 · · Score: 1

      Lest we forget the lessons of the Philadelphia COBOL rituals of 1987, one must defile a programming language completely, otherwise it will always return from beyond the grave.

    119. Re:C/C++ is dying! by thetoadwarrior · · Score: 1

      VBscript does have a lot of clueless people behind it but the language itself is faulty because it lacks so many obvious methods and why should I have to write:

      if(something) then do something end if

      No semi colons make it looks messy, 9 characters rather than two {} and it doesn't do multi line comments.

      Maybe VB net has fixed some of these issues but the language is just asking to be used by newbies with little regard for security because it teaches bad habits imo.

    120. Re:C/C++ is dying! by thetoadwarrior · · Score: 1

      THe cases against Java and C++ sound like they come from someone with no experience....like a vbscript "programmer". ;)

    121. Re:C/C++ is dying! by Frizzle+Fry · · Score: 1

      VB is dying a painful death. "Classic VB" doesn't even exist in Visual Studio anymore. MS wants everyone moving over to .Net .

      --
      I'd rather be lucky than good.
    122. Re:C/C++ is dying! by leenks · · Score: 1

      There are plenty of good methods of deploying and updating applications on desktops these days. The distribution problem was definitely why web apps became popular. They stay popular because people think they can standardise on a single UI framework for everything, even where it doesn't fit.

    123. Re:C/C++ is dying! by Bozdune · · Score: 1

      Let me tell you a story. So, a number of years ago I'm running a UI project for a small company, a team of hackers churning out lots of good stuff relatively quickly. After a couple months of work we show what we have to a customer. He's not impressed. He shows us a similar UI that his jokebag loser accounting programmer has cooked up in about a day using Powerbuilder. It's got some rough edges, it's not that pretty, but my blood turns to ice. It blows our doors off functionally.

      My guys spend 3 hours on the ride back criticizing what the accounting guy has built in order to make themselves feel better. It doesn't matter, we can't change our approach this late in the game anyway, so we forge on. We end up selling $30M worth of product, which was pretty good for that vertical. So we were successful.

      But I never forgot that moment. I had guys working with me who were spectacular coders, and this doofus cleans our clock -- makes us look like idiots, quite frankly -- using a productivity tool that a junior high school kid can pick up in about 5 minutes.

      This is a hard lesson to internalize when you think you're a big programming stud -- hell, after 30 years in the business I've forgotten more languages than I remember -- but if you ignore VB and its ilk, you do so at your peril.

    124. Re:C/C++ is dying! by Nicolay77 · · Score: 1

      That's why I use C++ with wxWidgets.

      --
      We are Turing O-Machines. The Oracle is out there.
    125. Re:C/C++ is dying! by ioshhdflwuegfh · · Score: 1

      perl is more a scriping languge than a programmers tool the next thing you'll tell me is that scripting languages are not programmer's tools.
    126. Re:C/C++ is dying! by Anonymous Coward · · Score: 0

      Or maybe people are tired of coping with problems related to C/C++ memory management and dangling pointers, and they skip to Java / C# / etc... ;-)

      Hmm, just kidding, C is still the must for system programming. Maybe not for so long, who knows ?

    127. Re:C/C++ is dying! by thetoadwarrior · · Score: 1

      Just because he can write one program himself doesn't mean the code is optimal or written well. It doesn't mean he understands OOP, MVC, UML or could work well within a team.

      While I believe most people with any real level of intelligence can program if they really want to there is a lot more to programming than point and clicking through a few visual studio menus.

      From my experience a lot of VB users don't think they need that because in their minds if they haven't needed those skills yet then why should they ever need them? It breeds laziness.

      That, of course, doesn't mean everyone is like that. Like with anything there are expections but I think the real determining factor is the fact that someone can be a Java, Python, etc programmer and easily pick up VB for a project but rarely will it happen the other way around.

    128. Re:C/C++ is dying! by 16K+Ram+Pack · · Score: 1
      good point.

      If you go to sites like Jobserve, you won't see many Python and Ruby jobs. It's mostly C#, Java and C++.

    129. Re:C/C++ is dying! by harry666t · · Score: 1

      In intercal, you insensitive clod...

    130. Re:C/C++ is dying! by mollymoo · · Score: 1

      Why C/C++ with all those language features and libraries to learn? With assembly you only need to know 50-100 commands to do everything a computer can possibly do. That's much simpler than learning all those standard library and API calls, isn't it?

      --
      Chernobyl 'not a wildlife haven' - BBC News
    131. Re:C/C++ is dying! by mollymoo · · Score: 1

      Everyone benefits from not having to reload all the sidebars, etc. on a page when they click a link.
      Except those of us who prefer unique URLs for quicker reference...

      It is possible to make AJAX "pages" bookmarkable, but I don't think I've seen it in the wild. The trick is to stuff state into the anchor part of the URL (the bit after the #). Of course that means you then have to script to get the equivalent functionality of anchors, but that's not too hard. A much better idea is to only use AJAX for truly dynamic things and, where there is a choice, err in the direction of simple HTML and complex CSS (which gets cached) to keep the pages small.

      --
      Chernobyl 'not a wildlife haven' - BBC News
    132. Re:C/C++ is dying! by billcopc · · Score: 1

      True, Delphi 2.0 was very decent at the time, as it was clean and efficient, but for me it's 4.0 that represented a leap forward as it introduced many language constructs that I learned to love (and abuse). Overloading, (fake) 64-bit ints, dynamic arrays and a bunch of tweaks to component development that embraced my cryptic, hoop-jumping style.

      In the later years, I was developing apps with very little coding, I had built up a bunch of "smart" components that self-configured and played nice together, and IDE addons that did much of the heavy lifting. I did with Delphi what a lot of people are doing today with Eclipse, which is how I think software development should be. We're friggin' programmers, we write apps to make everyone else's job quick and easy, we should take the time to write apps that make our own jobs pleasant.

      --
      -Billco, Fnarg.com
    133. Re:C/C++ is dying! by sr180 · · Score: 1

      I'll agree here. For simple and even moderately complex sites, Coldfusion will allow you to create them quicker than any other language. Development is very easy and very quick. However, as the projects get bigger, coldfusion will eventually just start to get in your way. Logic gets thrown into every page, cant be easily abstracted out and just becomes one big mess thrown all over different pages, all over the shop.

      --
      In Soviet Russia the insensitive clod is YOU!
  2. Always be there by ohxten · · Score: 5, Insightful

    C/C++ will always be there. Period. Just look at all of the C/C++ projects on SourceForge. New languages will come and go, but C/C++ are just too stable to go so quickly.

    --
    Need an automatic screenshot taker? Try here.
    1. Re:Always be there by KlomDark · · Score: 3, Insightful

      Yep, it'll be right out there with all the Cobol projects on Sourceforge...

    2. Re:Always be there by fyngyrz · · Score: 4, Insightful

      C is perfectly capable of extremely high-quality memory management with significant ease-of-use. However, you get to create that facility, or of course you can utilize someone else's design if you can locate one that fits your API needs, budget and time frame.

      For instance, years ago I faced this issue and wrote a module that ensures there are no leaks in any part of an application I write; I also get over-run and under-run detection, named segments, dual-free attempt capture, memory usage reporting, and more. I have debug and end-user levels for the code so that during development, I get enormous detail, while the end user doesn't see that unless I specifically turn it on for them.

      I have both pool and chunk level management; I have both pool and individual "free" levels; all of this in very few K indeed.

      C is the perfect language to implement memory management in, in fact, because it has perfect fine-grained control over memory.

      That goes for other things as well; C is highly capable if you need to build in certain types of OO; objects with built-in methods and variables can be crafted in seconds, with no waste at all; uniform list handling can be crafted (and is an interesting and useful programming exercise.)

      C *could* go away as a result of a generation of programmers who really don't know how to deal with such things, but I think it would be a real loss if it happened. The up side is that it'll take a while. There's a whole generation of us who know C quite well, and we're nowhere near dead yet. ;-)

      --
      I've fallen off your lawn, and I can't get up.
    3. Re:Always be there by SanityInAnarchy · · Score: 4, Insightful

      Assembly will always be there. Period.

      That doesn't mean it will be particularly popular, or very likely that you can get a job in doing nothing but assembly programming.

      Really, with C especially, just about every advantage it has over more modern languages are advantages that C itself has over assembly. Assembly is still needed, but no one in their right mind would, say, write an entire OS in assembly.

      The day is coming when no one in their right mind will write an entire OS in C or C++, or even an entire OS kernel -- depending on your definition of "kernel".

      --
      Don't thank God, thank a doctor!
    4. Re:Always be there by Hatta · · Score: 1, Insightful

      Already you'll find that no one writes an entire OS in C/C++. Look at the BSD init system, written in shell script for instance.

      --
      Give me Classic Slashdot or give me death!
    5. Re:Always be there by rishistar · · Score: 4, Funny

      C/C++ will always be there. Semi-Colon. There fixed that for you.

      --
      Professor Karmadillo Songs of Science
    6. Re:Always be there by afabbro · · Score: 4, Insightful

      However, you get to create that facility

      s/get to/must/

      Seriously, most people want to sit down and write the logic for their application, not invent (or even copy-paste) memory management schemes.

      --
      Advice: on VPS providers
    7. Re:Always be there by wkring · · Score: 5, Funny

      Cobol projects go on the Share tape.

    8. Re:Always be there by abradsn · · Score: 1

      Operating systems used to be written in Assembly all the time, and small embedded OS are still written in Assembly.

    9. Re:Always be there by JakeD409 · · Score: 1

      Assembly is still needed, but no one in their right mind would, say, write an entire OS in assembly. http://www.menuetos.net/
    10. Re:Always be there by Chris+Burke · · Score: 1

      Assembly will always be there. Period.

      Well, Assembly isn't so much a "language" as a human-readable representation of the bits that will be read by the computer, i.e. the computer's interface, and thus it changes depending on what processor you are using. I guess you could call it a class or family of languages. Regardless of what you call it, assembly can't go away until the processor interface changes to something completely different and we no longer have ISAs... Yeah I don't even know what that would possibly look like. So it's definitely sticking around for a while.

      Really, with C especially, just about every advantage it has over more modern languages are advantages that C itself has over assembly. Assembly is still needed, but no one in their right mind would, say, write an entire OS in assembly.

      C's big advantage and strength is that it's essentially a thin wrapper over assembly to 1) make porting it to different processors easy and 2) make the programmers life easier by not having to do manual register management. It gives you nearly all the power and control over the hardware that assembly does, but at a higher-level.

      C++ just adds syntactic sugar on top of that to make OOP easier, but it's still essentially the same bare-to-them-metal kind of wrapper over assembly.

      The day is coming when no one in their right mind will write an entire OS in C or C++, or even an entire OS kernel -- depending on your definition of "kernel".

      No, I think it's pretty safe to say that people will still write OS kernels in C, and I think the definition of "kernel" will track very nicely with those parts that nobody in their right mind would code with anything but C. You can't use Java or C# to write a memory manager; they already assume you have one as part of the runtime. If once you've written the MMU and the couple other parts that absolutely need bare-metal access you want to write the rest of the OS in Java or C#, you can, but they will be separate from the parts written in C, and you'll have a "microkernel" OS. And if we're assuming that we can afford the overhead of Java in basic OS services, then I think it's safe to assume we can afford the overhead of a microkernel too and so going that route makes a lot of sense.

      --

      The enemies of Democracy are
    11. Re:Always be there by Anonymous Coward · · Score: 0

      some one did that for us, so we can all use the same type of thing. its in python, and very likely in many other languages that i dont know.

    12. Re:Always be there by fyngyrz · · Score: 5, Insightful

      Seriously, most people want to sit down and write the logic for their application, not invent (or even copy-paste) memory management schemes.

      Yes, I understand that perfectly. I'm a huge fan of Python for that very reason.

      However, in C, writing memory management only needs to be done once; while writing the "logic for the[ir] application" is done many times. Consequently, the apparent load of writing memory management is much lighter than one might initially recognize. Or to put it another way, once it's done, it's done and represents no load at all.

      Further, there are huge advantages to having 100% control over the memory management of your application; speed advantages, fewer wasted/tied-up resources, and all the downhill consequences of those things -- if you don't waste resources, they're available for the user, or for other aspects of your programs. Likewise, if you get things done faster, more CPU is available elsewhere.

      Another thing: Depending on an external agency to manage your resources is a two-edged sword. If there are bugs in *your* code, you can fix them as fast as you are competent to do so. Considering you wrote it in the first place, the presumption that you are competent to fix it is usually on target.

      If there are bugs in an external agency, you typically get to report them... and wait, bugs happily chewing on the users of your applications, until said external agency gets around to fixing whatever it was. If indeed they ever do.

      Same thing goes for list management, etc. Write it once, learn all about it (which is interesting AND increases your Leet Skillz) and now you have a generally useful tool that is as fast as you can make it, totally amenable to fixes and updates, and invulnerable to the ass-draggery of outside influences. I have used my list management module in AI apps, ray tracers, image processing, file management, and even in dialogs to control layer types in various (what I think are) clever ways. I have huge confidence in it, but, should it turn out to be broken... I could fix it in minutes. At which point every app I've written gains ground, all my customers win, etc.

      There's something else that has always remained in the back of my mind. As languages get more sophisticated, there is a trend for them to generate much larger and much slower resulting applications. It isn't uniform, and it depends on what you're doing, compilers as compared to interpreters, etc., but the trend itself is pretty clear. For instance, a Python app seems small, until you realize that the Python interpreter is loaded for your one-liner. C++ apps tend to be huge compared to C apps. And so on.

      This trend - basically - tracks the increasing availability of memory and CPU power. Seems reasonable enough. But the funny thing is, if you take an app that was designed to run at adequate speed on hardware from, say, 1992, keep the technology behind the app the same if you update it - that is, keep writing efficient C and so on - then the increase in memory and CPU resources serve to turn the app into some kind of blistering miracle implementation instead of the run of the mill performance you get from depending on the latest and greatest HLL with garbage collection, the implicit inclusion of module after module of object-oriented processing and modeling, data hiding, etc., etc.

      Directly related to this is the fact that if you attempt a modern task - such as an image manipulation system - in a modern language, you, as the programmer, can be significantly enabled by the language; that is, you can be done sooner, and you can have a lot of things done, too, many coming along for the ride, for "free." Garbage collection / memory management being one such thing. But if you approach the task using C, which is basically capable of creating as fast an application as you are capable of writing, it is so close to assembly, while we can certainly agree up front it'll take you longer, the end result coul

      --
      I've fallen off your lawn, and I can't get up.
    13. Re:Always be there by b100dian · · Score: 1

      Yes, the next logical step is to wire the garbage collector and virtual method resolver in the CPU.
      Java FTW!
      (err.. then it gets AOP and dependency injection hardwired, right??)

      --
      gtkaml.org
    14. Re:Always be there by lgw · · Score: 1

      C++ just adds syntactic sugar on top of that to make OOP easier, but it's still essentially the same bare-to-them-metal kind of wrapper over assembly. C++ lets you easily and transparantly handle resource management, because you get to control what happens to an object when it goes out of scope. C does not - you have to manually pair allocs and frees, or opens and closes, and like all manual processes you'll eventually make a mistake.

      That is the critical difference between C and C++. OOP be damned, C++ is C without leaks!
      --
      Socialism: a lie told by totalitarians and believed by fools.
    15. Re:Always be there by Anonymous Coward · · Score: 0

      Yeah,the people at http://www.menuetos.net/ are completely out of their minds.

    16. Re:Always be there by Tumbleweed · · Score: 1

      Really, with C especially, just about every advantage it has over more modern languages are advantages that C itself has over assembly. Assembly is still needed, but no one in their right mind would, say, write an entire OS in assembly.

      Yikes, that old myth again, and on Slashdot of all places. Get with it son, it's all ball-bearings now...errr, sorry, slipped into Fletch mode there.

      To see the benefit of doing an OS and applications in assembly to PROVE you just spouted a myth, please to check out MenuetOS . C'mon, Slashnerds, let's kill this myth off already!

    17. Re:Always be there by osu-neko · · Score: 2, Insightful

      There are libraries out there available to just install and link to. But it certainly would be nice if some of this stuff got into the Standard C libs, so that all you needed was something like:

      #include <stdgcmem.h>

      ... and off you go on your merry way.

      The argument against would be that not everyone has the same needs from such a library, but it's a spurious one. Not everyone has the same needs from an I/O library, which is why there are a million alternatives to <stdio.h>, that doesn't mean you can't provide at least one standard library, and let those with other needs link to something else instead.

      --
      "Convictions are more dangerous enemies of truth than lies."
    18. Re:Always be there by gbjbaanb · · Score: 1

      s/invent/use pre-written libraries/.

      Don't forget that all languages do relatively little, and all of them have huge libraries that provide the features (like, for example, memory management). The benefit of having the language with the fine-grained control is that you get to choose the best or most appropriate library for your needs. Languages that give you a one-size-fits-all library end up splitting into several flavours of that language (eg a simple example: Java, Enterprise Java, Mobile Java, Real-Time Java)

      As for your assertion that most people want to write business logic, I'm not sure that's true. Most code I've seen is full of re-invented stuff, whether its another caching, threading, comms, DB wrapper or GUI feature.

    19. Re:Always be there by Chris+Burke · · Score: 3, Insightful

      That makes C++ a lot better for application writing, but not necessarily for OS writing. The kinds of resources being managed in a kernel usually aren't the kind that are easily managed through "scope".

      One criticism of C++ is that by automatically handling the destruction of objects when they go out of scope, it can lead to a feeling of false security to programmers who assume that because their objects are destroyed, that all resources are properly freed. The possibility for leaks is quite significantly there, in the design of constructors and destructors and anything that uses a pointer. Though while not always easy, having to make no mistakes in any of your destructors for any class is a heck of a lot easier than never making a mistake on any individual object's deallocation as in C.

      By the same token, it's quite possible to have "leaks" in Java or C#, simply by having extraneous references to no-longer needed objects laying around in objects that are themselves still referenced.

      I'd still take C++ any day over C for a big application.

      --

      The enemies of Democracy are
    20. Re:Always be there by Schraegstrichpunkt · · Score: 1

      Regardless of what you call it, assembly can't go away until the processor interface changes to something completely different and we no longer have ISAs... Yeah I don't even know what that would possibly look like. So it's definitely sticking around for a while.

      It would probably look like a hardware description language, e.g. VHDL or Verilog. On the other hand, people tend to build mini-CPUs (which have instruction sets) with them.

    21. Re:Always be there by osu-neko · · Score: 1

      Assembly is still needed, but no one in their right mind would, say, write an entire OS in assembly. http://www.menuetos.net/

      Okay, is that link supposed to be an illustration of the truth of that statement, or a counter-example intended to disprove it? It could be read either way...

      For the record, I consider it a given that in modern times, no one in their right mind would write an entire OS (regardless of language). And I this as someone who's written one. I certainly know I'm nuts...

      --
      "Convictions are more dangerous enemies of truth than lies."
    22. Re:Always be there by fyngyrz · · Score: 2, Insightful

      some one did that for us, so we can all use the same type of thing.

      No. They didn't. They implemented something else entirely, something that works outside the paradigm of what you're doing, attempting to track memory use by indirect means (such as counting references.) And this is precisely the problem with such memory management; by taking the programmer out of the management loop and abstracting it into irrelevance, the programmer no longer has either the means or the incentive to keep tight control of resources. The mindset leads to thinking nothing of bringing the entire Python interpreter into memory in order to evaluate a line or two of trivial logic, because its trivially easy to do. Consequently, huge system loads are incurred for relatively small tasks. Write that same logic in C, and you have a dedicated executable that (a) is tiny by comparison, (b) runs orders of magnitude faster, (c) you actually understand on every level. Presuming you don't drag in some huge library you didn't really need or do a really bad job. :-)

      Don't get me wrong - I am *not* a Python hater, in fact, it is one of my favorite languages. But I don't use it for everything just because it is easy. I always think about resources used, whose resources they are, whether I have the implicit right to consume them if I don't have to, and if I do have such a right, do I *want* to consume them? After all, they may be mine, and if I'm trying to do something else, some interpreter clumping around in the background consuming large chunks of resources may not be in my best interests. If it is true for me, it's probably true for my customers, so in the end, I have to do the same evaluation for them as well.

      --
      I've fallen off your lawn, and I can't get up.
    23. Re:Always be there by jsebrech · · Score: 4, Insightful

      But if you approach the task using C, which is basically capable of creating as fast an application as you are capable of writing, it is so close to assembly, while we can certainly agree up front it'll take you longer, the end result could be a lot faster and a lot more capable of efficiently managing the user's resources than that which you might create using a modern HLL.

      Agreed 100 percent. If you write it in C, you can make it run faster with lower resources, but you will spend a lot more time creating, debugging and maintaining it.

      Most software simply doesn't need to be that fast. The performance sensitive pieces of code are in database queries (C code), or disk operations (C code), or math operations (C code). Modern garbage collectors also are proven, they're fast, they're reliable. It doesn't make sense for the majority of classes of software, from a cost vs. gain perspective, to use C for the job.

    24. Re:Always be there by lgw · · Score: 1

      That makes C++ a lot better for application writing, but not necessarily for OS writing. The kinds of resources being managed in a kernel usually aren't the kind that are easily managed through "scope". Good point, though a slim percentage of modern kernel-mode C actually falls into this category in my experience. The majority of "OS code" these days could comfortably be written in C++ (with C++-style resource management), but isn't because that's simply not the skillset that skilled kernel hackers have.

      One criticism of C++ is that by automatically handling the destruction of objects when they go out of scope, it can lead to a feeling of false security to programmers who assume that because their objects are destroyed, that all resources are properly freed. The possibility for leaks is quite significantly there, in the design of constructors and destructors and anything that uses a pointer. True, but this was a much more important criticism of C++ ten years ago than C++ today. The language hasn't changed, but the best practices have: explicitly freeing resources in your C++ destructor is now a Bad Thing, for exactly the reasons you mention. Explicit resource freeing belongs in library code, and in just a few carefully-reviewed and much-reused library classes (or generics), at that.

      By the same token, it's quite possible to have "leaks" in Java or C#, simply by having extraneous references to no-longer needed objects laying around in objects that are themselves still referenced. Indeed - it's a real-world problem, especially if those resources are exclusively-held resources needed in many places! I wouldn't feel comfortable writing multi-threaded code in C# for this specific reason: if you accidentally forget to use a 'using' block, you're hosed.
      --
      Socialism: a lie told by totalitarians and believed by fools.
    25. Re:Always be there by fyngyrz · · Score: 3, Interesting

      ...but you will spend a lot more time creating, debugging and maintaining it.

      Hmm. Creating, probably so. You're writing smaller steps on a per-keystroke basis, so it's pretty much a given.

      Debugging and maintaining, however, are issues more predicated upon design skills than the language used. From things entirely outside the code's executing domain (like comments and other documentation) to things inside (structures and algorithms), correctness (from which depends debugging), reliability (from which depends maintainance) and completeness / applicability (from which also depend maintainance), all these things are independent of the language, except in very minor and essentially irrelevant ways.

      I would argue that coding in an HLL does not improve these latter things. However, coding in C brings you extremely close to both the problem(s), and the solution(s) you decide to implement without taking you that last troublesome step down into assembler, where you lose platform independence. I think that is a uniformly positive set of consequences to enjoy as a result of spending that extra time.

      It doesn't make sense for the majority of classes of software, from a cost vs. gain perspective, to use C for the job.

      Well, we'll have to agree to disagree here. Wasting resources can have unpredictably large effects, such as pushing a system over the edge between running in memory and beginning to swap. The more you waste, the more likely you are to cause such problems.

      The fact is, running the user out of resources for no reason other than saving small amounts of my time up front is outside the bounds I am willing to go. The gains at the user's end, especially when multiplied by many users across many invocations, are likely to be substantial. Consequently, the investment on my end is almost certain to be small by comparison, even if it is actually many of my hours.

      As a user, I run into this all the time. If I start a certain application, it typically takes quite some time to start. It's the "industry standard", but frankly, it runs like a pig in hip deep dung on every startup. And it eats memory like crazy, even the executable is 4x larger than other apps that do the same thing, but which -- notably -- aren't the "industry standard." So I make the choice, as a user, to use the other apps for all tasks that are achievable either way (and as it turns out, I *very* rarely have to start the industry standard program.) I want my memory to be used for data, not for a bloated application; and I want my time used in working on that data, not waiting to count and register every plugin or aux feature in the system every time the application starts.

      The problem is that from the programmer's perspective, "time and effort" are not even slightly the same as they are from the user's perspective. For my part, I consider it an ethical "must-do" to consider the user's perspective as the primary one driving the design. Both from the viewpoint that their resources are not "mine to waste" just because they have extended me the courtesy of allowing my software to run in their machine, but also from the viewpoint that any supposedly "extra" time I spend, I spend once; any time I cost the users unnecessarily, I extract that cost from every user, and every time the software is run.

      --
      I've fallen off your lawn, and I can't get up.
    26. Re:Always be there by HeronBlademaster · · Score: 1

      I think, to an extent, when you pick a language you're trading developer time for user time.

      Write a quick five-liner in python, it might take 100ms to run. Spend a few hours writing equivalent code in C, it might take 10ms to run. Scale this up to million-line (in C code) applications.

      Yes, I pulled those numbers out of my ear, and I've never actually seen Python code, but you get what I mean.

    27. Re:Always be there by LostInTaiwan · · Score: 1

      I think the increase in hardware performance has made it possible for people to use less efficient but higher abstraction programming language or application frame works without learning more fundamental languages like C. Currently I'm setting up a simple database interface system with RoR and I don't think I will be able to accomplish the same task under the same time frame if I had to learn C from scratch. However, decrease in hardware cost also means I am also heading in the opposite directing exploring microcontroller. With AVR, C and assembly are the only two available options. As long if there are tinkers around I don't think C will be gone.

    28. Re:Always be there by Lisandro · · Score: 1

      Good point, though a slim percentage of modern kernel-mode C actually falls into this category in my experience. The majority of "OS code" these days could comfortably be written in C++ (with C++-style resource management), but isn't because that's simply not the skillset that skilled kernel hackers have.

      I disagree. Couldn't it be that it's not written in C++ because it's not necesary?

    29. Re:Always be there by Zironic · · Score: 2, Funny

      Are you trying to claim that the authors of the MenuetOS are in their right minds?

    30. Re:Always be there by phliar · · Score: 1

      Anyone who says C is assembly has obviously never used assembly.

      There are some applications where you need predictability. Any "magic behind the scenes" is unacceptable. For those cases there is nothing better than C.

      As the grand-poster said, there is a generation of programmers who know and love C, and we are not dead yet. For us, C is a very pleasant language, obviously designed by (a very small group of) smart people for smart people without the usual "design by committee" compromises. If you just need to dash off a quick little program there's nothing better. Beauty in simplicity.

      --
      Unlimited growth == Cancer.
    31. Re:Always be there by Namlak · · Score: 3, Insightful

      It seems logical that the best approach is to write the speed critical portions in C and the (G)UI in a HLL - each is best suited for the task.

      As a VB.NET programmer building business automation apps for a living, I can't imagine building a (G)UI in a LLL. Not that I wouldn't appreciate the exercise, but the demands of the business environment won't allow it. Not just for the initial build but for the inevitable stream of change requests that will follow. Drag/Drop/Done is the name of the game.

      But as a hobbyist microcontroller programmer, well, there's no such thing as bloat in that space - you can't do it!

      If I was writing some image manipulation software, all the actual processing would most certainly be in C if not straight assembly for the very most critical parts. But the Load/Save/View/whatever parts, I'll do in VB!

    32. Re:Always be there by Perf · · Score: 1

      C++ is C without leaks!

      Considering all the crummy apps written in C++, don't you have it backwards?

    33. Re:Always be there by fyngyrz · · Score: 1

      I can't imagine building a (G)UI in a LLL.

      I suspect that's mostly because you've not done it. Even in MSVC's ancient development system, building (and modifying) a GUI with menus, widgets, etc is a matter of just a few minutes work, most of which simply generates trivially handled resources. Petzold's books lay it all out for you, among others.

      Custom widgetry is more work, but again, you only have to write it once if you write it well, so I've never felt like it was a big deal. For instance, we did our own toolbars long before Windows had toolbar support. That's another reason to do it -- to get functionality that isn't otherwise available.

      The vast majority of UI nastiness (that is, the complexity that is the same for everything, as opposed to the stuff you want it to do that's unique to your application) was long ago abstracted into Windows and OS X. Linux... well, Linux not so much. You have to go up a level from Linux into someone's custom widgetry or you *will* be dealing with some low level nastiness.

      If I was writing some image manipulation software... ...the Load/Save/View/whatever parts, I'll do in VB!

      Speaking as one of the primary authors (and the system architect) of one of the most powerful of the image manipulation systems presently out there, I think you may have underestimated the need for high speed when drawing, loading and saving image data, particularly compressed image data and layered image data. But best of luck with that, anyway. :-)

      --
      I've fallen off your lawn, and I can't get up.
    34. Re:Always be there by Anonymous Coward · · Score: 1, Insightful

      Blah blah blah, C is great for writing your own programming language runtime in, blah blah blah.

      You seem to be suffering from Not-Invented-Here syndrome. Sure, all of the theoretical advantages you cite are real, but look at all the time you end up spending developing this framework. You say it's a small, one-time cost... but what if your application requirements change? What if you need to keep up with changing technology (what if you suddenly want to adapt your code to be cache-aware? distributed network shared memory? multiprocessor safe? something that hasn't even been thought of yet?) What if there are subtle memory model bugs you haven't anticipated because you're not an expert in machine architecture X?

      The big advantage of shoving all this work off to a third party, even if it's a suboptimal solution, is that they get to worry about all that stuff. Furthermore, if it's fundamental to the language, you can be assured all the libraries you might want to use will also take advantage of it. That's unlikely in the case of a framework you roll yourself.

      It's the open source model of sharing, instead of re-inventing the wheel. While I'm sure it's a very beautiful thing to build all this infrastructure, 99.9% of the time it's also completely unnecessary for you, personally, to do it. This is where languages like C/C++ fall down.

      (To be honest: I code lots of infrastructure-type stuff in C, too. Systems programming, we used to call it. But I do it as a hobby, not to get stuff done.)

    35. Re:Always be there by Jaime2 · · Score: 1

      I've written lots of image manipulation code in VB.Net. I wrote a 3of9 bar code recognizer and an app that overlays barcodes on a TIFF in VB.Net. It was fast enough to keep up with a $50,000 scanner.

      System.Runtime.InteropServices.Marshal is your friend.

    36. Re:Always be there by MemoryDragon · · Score: 1

      Factlook outside of the ivory tower. In reality what counts is development time in most cases ultimate speed is secondary. If you can slash down the development time to 1/10th by eliminating manual memory management schemes you have won! There always will be usecases for ultimate speed, but most of the times it is simply business algorithms and data shoveling.

    37. Re:Always be there by lena_10326 · · Score: 4, Insightful

      However, in C, writing memory management only needs to be done once; while writing the "logic for the[ir] application" is done many times. Consequently, the apparent load of writing memory management is much lighter than one might initially recognize. Or to put it another way, once it's done, it's done and represents no load at all.
      I don't believe that is true at all. One huge reason for building a memory management scheme is to tailor it to a specific algorithm, which is bound to a particular application. Optimization for allocating small chunks (bytes to kilobytes) can be very different compared to allocating extremely large chunks (megabytes to gigabytes), or variable sized versus fixed size, or read/writes with sequential access versus random access, or low access frequency versus high access frequency, or multi-threaded versus serial. These are all intricately bound to the overall application algorithm and can yield extremely different solutions given a particular problem. It's simply not possible to write a general allocation scheme that is fully optimized for every type of problem. I've experienced this in real world projects.

      Another thing: Depending on an external agency to manage your resources is a two-edged sword. If there are bugs in *your* code, you can fix them as fast as you are competent to do so. Considering you wrote it in the first place, the presumption that you are competent to fix it is usually on target.
      It's rare that the original developer stays on the project for its lifetime of usage. In fact, I've never seen that happen. People quit, get fired, get promoted, or move onto new projects. When the sole hot-shot in the organization writes a complex codebase, it places a future burden on the lesser experienced team that may inherit it. Maintenance is always more expensive than original development.

      If there are bugs in *your* code, you can fix them as fast as you are competent to do so. Considering you wrote it in the first place, the presumption that you are competent to fix it is usually on target... [CUT]... I have huge confidence in it, but, should it turn out to be broken... I could fix it in minutes
      I don't believe that for a second. I've seen sneaky bugs in C code plague development teams for days and on a few occasions a week. You're either vastly underestimating or are totally unaware of very well hidden bugs in your code.

      But the funny thing is, if you take an app that was designed to run at adequate speed on hardware from, say, 1992, keep the technology behind the app the same if you update it - that is, keep writing efficient C and so on - then the increase in memory and CPU resources serve to turn the app into some kind of blistering miracle implementation instead of the run of the mill performance you get from depending on the latest and greatest HLL with garbage collection
      99+% of the time with general problems, I/O is the bottleneck. For those cases, a C application might run 1% faster on newer hardware, given equivalent I/O hardware (same model/make of drive or network). In the vast majority of cases, the effort is simply not worth it. It's far more expensive to pay your salary to build and maintain that codebase than it is to simply purchase a beefier machine. The former is a repeating expense, the latter is a one time expense. Business managers love the latter, not the former.

      I do agree that if your domain consists of highly CPU bound computational algorithms that don't require frequent HD or network access, then your approach will scale well with the faster hardware.; however, I don't think advocating it as a baseline approach for all or most projects makes any sense. It is far more work and causes more maintenance headaches than you're describing.
      --
      Camping on quad since 1996.
    38. Re:Always be there by MemoryDragon · · Score: 1

      The issue comes how much user time can you trade if the user needs an action within one second it does not matter if it taks 100ms or 10ms. The main issue simply is some systems have become so big that it would be a nightmare to maintain that on a C base. I have seen those issues in the mid 90s when myriads of C and C++ projects have failed which tried to implement the average server business ap like we do them nowadays sucessfully in java. Sometimes it simply is not feasable anymore to go as low as possible down to the hardware. Look at how much code is written nowasays in assembly language or even deeper in direct hex coding. Almost none! There always will be purists, but times have moved on you cannot use a hammer on every screw you encounter!

    39. Re:Always be there by jadavis · · Score: 1

      Further, there are huge advantages to having 100% control over the memory management of your application

      malloc()/free() are memory managers as well. So I suppose you must use brk()/sbrk() instead, right?

      --
      Social scientists are inspired by theories; scientists are humbled by facts.
    40. Re:Always be there by Anonymous Coward · · Score: 0

      However, in C, writing memory management only needs to be done once; while writing the "logic for the[ir] application" is done many times. Consequently, the apparent load of writing memory management is much lighter than one might initially recognize. Or to put it another way, once it's done, it's done and represents no load at all.

      Except that you have to fine-tune the memory management for each new logic layer, precisely to take the most advantages of each situation. If you don't, then you fail into the same choice between tweaking the memory management to get most performances out of it, against making it generic enough to not have to further modify it.

      Further, there are huge advantages to having 100% control over the memory management of your application; speed advantages, fewer wasted/tied-up resources, and all the downhill consequences of those things -- if you don't waste resources, they're available for the user, or for other aspects of your programs. Likewise, if you get things done faster, more CPU is available elsewhere.

      This is based on the implicit hypothesis that (1)the resources consumption is critical, and (2) that the automated memory management does a poor job at managing it. But in a growing number of cases, the AMM is a good enough compromise. Few people would spend time optimizing parts of the code whose influence is barely noticeable, or not noticeable at all.

      Another thing: Depending on an external agency to manage your resources is a two-edged sword. If there are bugs in *your* code, you can fix them as fast as you are competent to do so. Considering you wrote it in the first place, the presumption that you are competent to fix it is usually on target.

      First, this makes the implicit assumption that you are the only coder - most of the time, this is not true, and you have to learn what the other coder(s) did. And more importantly, a given HLL got only *one* AMM. Which means that it has endured a lot more stress-testing, and is likely to have gotten a wider community of coders able to debug it than any "individualistic" development.

      Same thing goes for list management, etc. Write it once, learn all about it (which is interesting AND increases your Leet Skillz) and now you have a generally useful tool that is as fast as you can make it, totally amenable to fixes and updates, and invulnerable to the ass-draggery of outside influences. I have used my list management module in AI apps, ray tracers, image processing, file management, and even in dialogs to control layer types in various (what I think are) clever ways. I have huge confidence in it, but, should it turn out to be broken... I could fix it in minutes. At which point every app I've written gains ground, all my customers win, etc.

      But you would probably be the only one to be able to "fix them in minutes". This is a terrible choice when dealing with larger-scale projects, as not only you're loosing development time reinventing the wheel, but also have to rely to single-man written libs. What if the developer who coded those leaves ? You have to train somebody else.

      Moreover, "increasing your leet skillz" is not what is at stake there - the primary goal is to write an application following definite critera, not having a programming course.

      Finally, what if the ways *you* think are so clever are in fact not so clever, or if somebody did a better job somewhere else ? What you are suggesting is that coding things alone leads to more efficient results than something done cooperatively. In most cases, this is simply not true.

      This trend - basically - tracks the increasing availability of memory and CPU power. Seems reasonable enough. But the funny thing is, if you take an app that was designed to run at adequate speed on hardware from, say, 1992, keep the technology behind the app the same if you update it - that is, keep writing efficient C and so on - then the increase in memory and CPU resources serve to turn the app into some k

    41. Re:Always be there by smellotron · · Score: 2, Interesting

      Write a quick five-liner in python, it might take 100ms to run. Spend a few hours writing equivalent code in C, it might take 10ms to run. Scale this up to million-line (in C code) applications.

      To give you some perspective, I did perform an experiment along these lines. I wrote a Python script to measure the entropy, cross entropy, and KL-divergence of words in a text file with some basic smoothing models applied. It was about 250 lines of code. I rewrote it in C++ mostly out of curiosity. My naive implementation was about 10% more code, and ran at about the same speed (mostly it's disk I/O and comparing std::map<std::string,int> to Dict()). I spent a bit more effort and ended up with a 450-line solution using better data structures. The end result (as I look back and run timings) is that it's about 8 times faster when examining a 12k file.

      If I didn't already have the design figured out in Python, it would have taken much longer to write the C++ solution... but having a prototype right there really helped. For performance-critical code (like performing anything more complex than O(n) on a large dataset), it was definitely worth it to spend the extra time on a better implementation. Honestly, the biggest benefit was using both languages in order to end up with a good design and a good implementation in a reasonable amount of time.

      If you're interested, I can provide the source for comparison (I just don't want to put up a public link to my private svn repo).

    42. Re:Always be there by HeronBlademaster · · Score: 1

      so my 10x figure wasn't too far off? ;)

      Prototyping is always useful, and doubly so when the prototype itself is a functional implementation. The trick is to decide whether it matters to the end-user if it's eight times faster. In the case of the sub-100-ms range, it probably doesn't matter; but if you're dealing with a difference between 30 seconds and four seconds, it's something to give you pause.

    43. Re:Always be there by Anonymous Coward · · Score: 0

      Another thing: Depending on an external agency to manage your resources is a two-edged sword. If there are bugs in *your* code, you can fix them as fast as you are competent to do so. Considering you wrote it in the first place, the presumption that you are competent to fix it is usually on target.

      If there are bugs in an external agency, you typically get to report them... and wait, bugs happily chewing on the users of your applications, until said external agency gets around to fixing whatever it was. If indeed they ever do. Or you fix them yourself and distribute the "fixed" Python with your app. Last I checked, Python was still written in C. You'd need to read the amply code comments and PEPs to understand it, but that still should be quicker than writing it from scratch.
    44. Re:Always be there by smellotron · · Score: 1

      My particular example was a homework assignment, and I happened to be at a friend's place rewriting it in C++ while I verbally assisted him in his implementation, so my time wasn't at a premium. However, the example of text processing is one of those good examples where performance matters. If I wanted to use this program to look for cheating on student essays, that 10x performance difference looks like the difference between 5 minutes and an hour.

      But I suppose if I had to integrate all of this into a larger application (or a web-frontend, or an interactive GUI), I'd probably write it as a C++ shared library with a very thin "extern C" API for binding into Python/Perl/...

    45. Re:Always be there by Anonymous Coward · · Score: 0

      Speaking as one of the primary authors (and the system architect) of one of the most powerful of the image manipulation systems presently out there Are you referring to that WinImages turd that your homepage links to? I don't think really counts. I love to see web pages like yours where the term 'our' is used all over the place, when it's obvious that you're a 1-man shop running out of your mom's basement :)
    46. Re:Always be there by JakeD409 · · Score: 1

      The link brings you to an entire OS written in assembly, and is being actively developed. It was intended to disprove it.

    47. Re:Always be there by lgw · · Score: 1

      What does 'necessary' mean? Forget C or even assembler, I've written code with disk sector editor, and by directly editing memory of a running process. Neither activity is particularly productive. Writing leak-free code in C when you could be using C++ is fine, it just takes 3x as long (or 10x as long if that inevitable leak was hard to track down). But necessary? No language is necessary.

      --
      Socialism: a lie told by totalitarians and believed by fools.
    48. Re:Always be there by Lisandro · · Score: 1

      Meaning that the abstractions offered by C++ (objects) are not needed, or offer no real benefits. C is as close as a portable assembler you'll get in that sense, and while understanding how a C++ program compiles to asm is no rocket science it introduces a layer of separation that might not be desired in an operative system kernel.

      There's a lot of OS written (at least partially) in C++, don't get me wrong, but i don't think the lazyness or lack of knowledge of developers has much to do here.

    49. Re:Always be there by benhattman · · Score: 1

      Assembly will always be there. Period.
      Why do these programming language discussions always end with people professing their unhealthy obsession with assembly?

      Machine language will always be there. That's an actual fact. I don't see any justifiable reason for assembly to stick around except for the part where you C/C++ application switches to it when displaying disassembly code. If assembly is nothing more than a debugging tool, that hardly counts for anything.
    50. Re:Always be there by Anonymous Coward · · Score: 0

      C/C++ will always be there. Period. Just look at all of the C/C++ projects on SourceForge.

      New languages will come and go, but C/C++ are just too stable to go so quickly. True. I love Java but it abstracts the hardware so you can't write hardware drivers with it.

    51. Re:Always be there by lgw · · Score: 1

      As I've said elsewhere: OOP be damned, the point of C++ is that you have a hook that the compiler calls when an object goes out of scope. You simply cannot automate object cleanup without that, and are forced to rely on manually matching opens and closes in each function, which means that human error creeps in and you get leaks. For user-mode programming, C++ also has these handy variable-length strings and arrays so that you don't have a chance to accidentally miss that buffer overrun. OOP is minor compared to those wins.

      --
      Socialism: a lie told by totalitarians and believed by fools.
    52. Re:Always be there by mapkinase · · Score: 1
      I hope everyone looked at their methods before going into in-depth analysis.

      Ratings

      The ratings are calculated by counting hits of the most popular search engines. The search query that is used is

              +" programming"

      The search query is executed for the regular Google, Google Blogs, MSN, Yahoo!, and YouTube web search for the last 12 months. The web site Alexa.com has been used to determine the most popular search engines.


      --
      I do not believe in karma. "Funny"=-6. Do good and forbid evil. Yours, Oft-Offtopic Flamebaiting Troll.
    53. Re:Always be there by Anonymous Coward · · Score: 0

      yes because nobody gives a shit

    54. Re:Always be there by MichaelSmith · · Score: 1
      Umm thats very interesting

      Fits on a single floppy But I can't even buy floppies now!

      Let me show you my house made only with hand tools (in about 10 years).
    55. Re:Always be there by chthonicdaemon · · Score: 1

      Your argument for efficiency is worth hearing, but if it was that important to people to have the efficiency you talk about, why aren't high level assemblers used more often? If speed is so important on tasks like image manipulation, why not use Fortran instead of C? Fortran compilers are usually amazingly efficient. Similarly, does every program have to be written in only one language? If not, why not use the languages with efficient compilers for the parts that have to be fast and the languages with powerful constructs for the parts that have to be written fast.

      As a bit of an aside -- remember that languages aren't efficient, compilers are. It may be that some languages lend themselves more to the development of efficient compilers, but there is no theoretical reason why a java compiler can't generate code that is as efficient as c code (given that they are doing the same thing).

      --
      Languages aren't inherently fast -- implementations are efficient
    56. Re:Always be there by nebosuke · · Score: 1

      It was intended to disprove it. You have yet to establish that the developers are 'in their right minds'.
    57. Re:Always be there by pclminion · · Score: 2, Interesting

      Wow. I thought I was reading one of my own posts. I also use Python as a prototyping language for projects which will ultimately be done in C++, and I do it with exactly the same kinds of problems you are solving: statistical NLP.

      I've found that most NLP algorithms are easily expressed in Python, but it is too slow to apply to realistic corpora. On the other hand, Python can easily translate to C++ (once you've built up some experience and the kit to go along with it) and the time it takes to write Python + C++ probably ends up shorter than trying to begin right away in C++.

    58. Re:Always be there by mabinogi · · Score: 1

      Will someone please tell me what this mythical language "C/C++" is?

      They're two very different languages with entirely different programing paradigms and best-practices.
      The syntax of C++ may happen to include that of C, but that doesn't mean the two languages are equivalent, or that skill in one has any bearing on skill in the other, any more than general programing skill usually applies across all languages.

      I've interviewed too many C++ programmers who thought they were suitable for a C position to believe that, and I know that even with 15 years of C experience, plus experience in Smalltalk and Java that I'm not qualified to apply for a C++ job.

      Otherwise, I agree that C at least will be around, and popular for a long time to come.
      C++ has less of a certain future though.

      --
      Advanced users are users too!
    59. Re:Always be there by Tumbleweed · · Score: 1

      Umm thats very interesting

      > Fits on a single floppy

      But I can't even buy floppies now!

      Let me show you my house made only with hand tools (in about 10 years).


      That's a funny way of dismissing a pretty amazing project. Plus you seem to have missed the point.

      There is a common belief that optimizing compilers negate the speed advantages of hand-coded assembly language. The MenuetOS project demonstrates quite clearly that this is not only false, but VERY false. When you further consider that it's a very small team of developers who have created that in a relatively short time, when compared to Linux, this becomes even more impressive. Now think about how comparatively crude assembly language development tools are to the state of C development tools, and you should really be shaking your head in amazement.

      Let's also consider that anything you can do in any other language, you can, by definition, do in assembly language. What do I mean by that? Simple: things like object oriented programming and code reuse. With the proper tools, assembly language could become VASTLY easier and quicker to code in than it is now. It will never be a high level language, to be sure, but the barriers to entry and more widespread use could be lowered substantially.

      The examples of optimizing compiler output vs hand-coded assembly is usually along the lines of INCREDIBLY simple examples like moving a bit of info or a simple loop. Sure, when you get to that level of simplicity, an optimizing compiler will output very similar, if not identical, code to hand-coded asm. The differences start to show up when you code more complex programs -- you know, like actual software. Plus, that super-optimized compiler code? Not many people do that, anyway. If it compiles cleanly, they're already way ahead of the game in C-land, and that's usually where it ends. Occasionally you'll see a bit of asm code used for a particularly bottlenecked bit of code, but that's about it.

      In essence: show a little respect to the asm folks. It may not be your cup of tea, but most of what you've heard about assembly language programming (and C programming in comparison), is really very wrong, even when discussed by otherwise extremely bright, talented and experienced C/C++ programmers. Experienced in C/C++ is *not* experienced in assembly language.

    60. Re:Always be there by SanityInAnarchy · · Score: 1

      The majority of "OS code" these days could comfortably be written in C++ I'm going to argue that the majority of "OS code" doesn't need to be in the kernel, and we'd be better off if it was written in, well, anything but C. (Except C++, which is almost worse...)

      This isn't a microkernel vs * debate, as that implies Unix-like concepts of processes vs threads, and shared vs protected memory -- the first might be irrelevant in other OSes, the second is a false dichotomy.
      --
      Don't thank God, thank a doctor!
    61. Re:Always be there by SanityInAnarchy · · Score: 1

      Regardless of what you call it, assembly can't go away until the processor interface changes to something completely different It could, however, be relegated entirely to compliers. But people do use it elsewhere -- a tightest-of-the-tight-loops in your C++ app (probably a game), which you rewrite in assembly for performance reasons.

      I was presenting assembly as an example of a low-level language that is considered pointless for 99.9% of software development, and really only has a few niche uses. C and C++ should be the same way, but instead, people still write whole apps in C++.

      You can't use Java or C# to write a memory manager; they already assume you have one as part of the runtime. Nothing stopping the runtime from containing a memory manager -- which makes it a kernel of sorts, depending on how you define it. And, for that matter, it does contain a garbage collector, and I assume it maintains a heap such that it isn't calling malloc/free all the time -- maybe you could just tell it that it has all of RAM allocated to itself?

      But there are things which are put in OS kernels today which really don't belong there. There's no reason you couldn't write a filesystem in Java -- or in Python, for that matter. But right now, just about all filesystems are in the kernel.

      Given current kernel implementations and concepts, filesystems go in the kernel for performance reasons. But that's about it -- and many special-purpose filesystems end up being written for Fuse instead.
      --
      Don't thank God, thank a doctor!
    62. Re:Always be there by dargaud · · Score: 1

      I gave up C++ in 1995 and never looked back. I even wonder at what it is good for except messing with your brains in light of things like Python or Java. C is here to stay and I use it every day for low level stuff. But the C++ mess, yuck!

      --
      Non-Linux Penguins ?
    63. Re:Always be there by SanityInAnarchy · · Score: 1

      There is a common belief that optimizing compilers negate the speed advantages of hand-coded assembly language. The MenuetOS project demonstrates quite clearly that this is not only false, but VERY false. Benchmarks, please.

      Perhaps it's because it's such a small project, and hasn't yet built up years worth of cruft, inefficiency, and bad code?

      When you further consider that it's a very small team of developers who have created that in a relatively short time, when compared to Linux, this becomes even more impressive. When you also consider that Linux was developed at a time when many of the concepts in that OS didn't exist, it also becomes irrelevant.

      Yes, I am amazed at the project. I also think it is rather a pointless waste of time, somewhat akin to the hanoimania project.

      Find a similar group of developers. Give them C, and allow assembly only where needed. See what they can come up with in a similar amount of time. Comparing to Linux is like comparing any modern OS to Vista -- how does it stack up against, oh, BeOS?

      Let's also consider that anything you can do in any other language, you can, by definition, do in assembly language.... With the proper tools What kind of tools? A macro handler? A preprocessor? A little regex for better syntax, especially for commonly used patterns?

      I know! I'll call it a "compiler"!

      The differences start to show up when you code more complex programs -- you know, like actual software. At which point, the difficulty, verbosity, and fragility of hand-coded assembly might start to become prohibitive.

      Simplest example: Remember that old discussion "GOTO considered harmful"? There are actually a few niche cases, in languages which can handle a GOTO cleanly, where it's cleaner and more efficient than structured code. But in the vast majority of cases, GOTO is more trouble than it's worth.

      Plus, that super-optimized compiler code? Not many people do that, anyway. They've discovered the joy that is "fast enough".

      most of what you've heard about assembly language programming (and C programming in comparison), is really very wrong So far, everything you've said has really only convinced me of how right it is -- at the very least, that whatever performance benefit I might gain from hand-coded ASM is not at all worth the development time versus C, let alone the complete non-portability of the code.

      If you really want to argue it, give me some benchmarks of complex programs. Something reasonably complex, but standard enough that a benchmark might work -- I imagine a codec might work. Oh, and include development time, when possible.
      --
      Don't thank God, thank a doctor!
    64. Re:Always be there by SanityInAnarchy · · Score: 1

      If you just need to dash off a quick little program there's nothing better. You've obviously never used Python.

      Seriously, if I just need to dash off a quick little program, C is about the last thing I would use. Think Bash.
      --
      Don't thank God, thank a doctor!
    65. Re:Always be there by SanityInAnarchy · · Score: 1

      Why do these programming language discussions always end with people professing their unhealthy obsession with assembly? I'm not sure, but if it bothers you, why not reply to one of them?

      That was sarcasm. Read great-grandparent.

      I don't see any justifiable reason for assembly to stick around except for the part where you C/C++ application switches to it when displaying disassembly code. There are things which C/C++ can't actually generate -- I believe chunks of bootloader code, and certain drivers. OS-level stuff.

      And there are places where it makes sense to use inline assembly in an otherwise C/C++ program, just as there are places where it makes sense to compile a C/C++ extension for a language like Ruby, Python, or Perl. It's just not what you should be doing for most of the application.
      --
      Don't thank God, thank a doctor!
    66. Re:Always be there by MichaelSmith · · Score: 2, Insightful

      Believe me I have done my share of machine code and assembly programming in my time and I understand exactly what the people on this project have achieved.

      Good on them, but I believe the right tool should be used for the job. Many very high level tools such as UML get overused these days. Thats a shame and it is good that people are working to keep their assembler skills alive.

    67. Re:Always be there by tkw954 · · Score: 1

      Agreed 100 percent. If you write it in C, you can make it run faster with lower resources, but you will spend a lot more time creating, debugging and maintaining it.

      Most software simply doesn't need to be that fast. The performance sensitive pieces of code are in database queries (C code), or disk operations (C code), or math operations (C code). Modern garbage collectors also are proven, they're fast, they're reliable. It doesn't make sense for the majority of classes of software, from a cost vs. gain perspective, to use C for the job.

      You're forgetting embedded applications. I don't have any data to back this up, but I'd imagine there are currently more total instructions being executed every day on embedded processors than Pentium and up CPUs. And embedded programmers *care* about resources.

      This may be off-topic, though, as there seems to be a bigger and bigger divide between embedded and non-embedded software and hardware every year.

    68. Re:Always be there by Anonymous Coward · · Score: 0

      so basically you spent 3/4 of your time writting memory leak detections and only 1/4 of your time was used to actually develop the real application, interesting....

    69. Re:Always be there by dave1791 · · Score: 1

      As I read your posts (parent and great grandparent), I recalled the old saying; the perfect is the enemy of the good. If you want to improve the performance and only want to fixate on raw performance, then the logical conclusion is not to stop with software, but to start customizing the hardware to fit your needs. Design your own motherboard. Design your old chips so that they do your tasks more efficiently, rather than bothering with cumbersome and slow general purpose CPUs.

      * Aside from the time expenditure, it is a safe bet that you are not an expert at all of these things and you'll do at least some of them badly; imperiling your project.

      * Aside from the inherent risk in working outside of your domain of expertise, each of those steps can increase the required time by one or more orders of magnitude; imperiling your project.

      As for me, I studied Physics, not EE or comp sci. I know that there are many others who are better at hardware design than me and many others who can build better mechanisms than me for things like memory management. I can re-invent the wheel and spend all my time building memory managers, OR I can solve the problem at hand. Chances are, I don't have time to do both and in an era of $25/gb RAM I wonâ(TM)t lose any sleep over it either.

    70. Re:Always be there by Carewolf · · Score: 3, Interesting

      C/C++ might give you 1% CPU speed-up, but by fine-tuning the memory allocations, the block allocations on the disk and the way you communicate with the I/O devices it can give you a speed-up on I/O operations that is not available in any of the modern toy languages.

    71. Re:Always be there by Nicolay77 · · Score: 1

      I think you hit the nail in the head.

      The reason for C/C++ to exist is as a competitive advantage for any company that uses it to implement some software where performance is important.

      I use Opera since 2000 and performance has been a significant part of the reason I do. Opera is written in C++.

      --
      We are Turing O-Machines. The Oracle is out there.
    72. Re:Always be there by Nicolay77 · · Score: 1

      The day is coming when no one in their right mind will write an entire OS in C or C++, or even an entire OS kernel -- depending on your definition of "kernel". I think this is the mindset behind a big part of the Vista delay. "We will write the OS in .NET. We will deliver it much faster that way". Yeah sure.
      --
      We are Turing O-Machines. The Oracle is out there.
    73. Re:Always be there by Nicolay77 · · Score: 1

      One criticism of C++ is that by automatically handling the destruction of objects when they go out of scope, it can lead to a feeling of false security to programmers who assume that because their objects are destroyed, that all resources are properly freed. If the resource is memory, that only happens when they confuse the stack with the heap.
      --
      We are Turing O-Machines. The Oracle is out there.
    74. Re:Always be there by Nicolay77 · · Score: 1

      I think the real reason is that C has a stable ABI, while C++ changes the ABI from time to time.

      Also, several C compilers can share the same ABI, the same can not be said of C++ compilers.

      --
      We are Turing O-Machines. The Oracle is out there.
    75. Re:Always be there by krog · · Score: 1

      I stand by my HHOS statement that C is a really nice assembly language. What I meant by that is that C, like asm, gives the programmer a very strong direction of a system, down to the last bit. In my experience, C is best used where asm is also a good choice: when you need raw speed or total control.

      And for the record, I cut my teeth on 6502 asm on the Apple II; by now I have created embedded systems using 8088 asm, PIC asm, PIC C, and BASIC (and VHDL if you count FPGA's).

    76. Re:Always be there by benhattman · · Score: 1

      There are things which C/C++ can't actually generate -- I believe chunks of bootloader code, and certain drivers. OS-level stuff.
      I've never heard this before, and I don't quite understand why C couldn't generate bootloader code or particular drivers. But if it's true, I concede the point.

      And there are places where it makes sense to use inline assembly in an otherwise C/C++ program, just as there are places where it makes sense to compile a C/C++ extension for a language like Ruby, Python, or Perl. It's just not what you should be doing for most of the application.
      This is the part I oppose. It's not a fair comparison. In higher level languages, the only 100% justifiable reason to implement features in a lower level language is to access hardware you can't get to from the language your in. If you've got some new USB device, you won't be able to interface with it in Ruby.

      But this problem doesn't really exist in C/C++, because you can always get to the hardware. Shoot, you can touch every port on the chip if you want to (and know what chip you'll be running on). The rest of the time, when people implement C/C++ code for a higher level language, they are using a heuristic approach. Something like "I think function X will be important, so I'll implement in C to make it faster." In my experience this behavior is overdone (as uncommon as it is) and falls into the category of "premature optimization is the root of all evil."

      Queue the angry responses from all 3 people in the world who truly have justifiable reasons for writing C functions in assembly.
    77. Re:Always be there by swillden · · Score: 1

      However, in C, writing memory management only needs to be done once; while writing the "logic for the[ir] application" is done many times. Consequently, the apparent load of writing memory management is much lighter than one might initially recognize. Or to put it another way, once it's done, it's done and represents no load at all.

      Bullshit.

      Yes, I've written my own memory management systems in C and C++. And lists, and trees, and tries and ...

      Your argument here presumes that:

      1. It's possible to write a memory management system that is both optimal and general; and
      2. No library implementing this solution exists, so you must create it yourself.

      I dispute both individually and in any case the two assumptions are mutually contradictory. If such an optimal and general manager exists, then surely it's been implemented and is widely used (unless you are the only one capable of implementing it, in which case you should sell it and become wealthy, rather than suggesting that everyone else re-create it -- particularly given that we've already assumed that you're the only one that can do so).

      The fact of the matter is that most applications don't require customized memory management and can be implemented perfectly well with any of the common management tools. For those that do require special-purpose management, there's absolutely no guarantee that the management system you built for application A is at all suitable for application B.

      Another thing: Depending on an external agency to manage your resources is a two-edged sword. If there are bugs in *your* code, you can fix them as fast as you are competent to do so. Considering you wrote it in the first place, the presumption that you are competent to fix it is usually on target.

      Yes, but you're ignoring the fact that a widely used library has already had more careful design and thorough debugging work than you will have time to lavish on it. The probability that you're going to find any bugs in, for example, the GNU libc malloc/free implementation is vanishingly small. And all of the nice debugging tools you described in your implementation EXIST FOR THAT AS WELL! And are much more polished than yours will ever have time to be.

      Similarly, there are plenty of excellent, thoroughly-proven, highly-efficient management libraries out there that support pooled allocation and any other specific approach you care to mention.

      Again, the hidden premise underlying your argument is that you are far smarter and far more skilled than the guys who've invested whole careers in building and polishing memory management solutions. So much smarter and so much more skilled that you can effectively improve on their work as a sideline to doing your own.

      I'll go ahead and ignore the obvious maintenance issues that your approach raises. Others will address them, I'm sure.

      I understand where you're coming from. I really do. I also think that it's much, much more fun to write cool low-level, computer-sciency libraries than to implement boring business logic. Partly because those are the kinds of things I find fun and partly because it gives me an opportunity to show how fiendishly clever I am compared to the rest of my team (and they're no slouches).

      Ten years ago, I also spent a lot of time building memory managers, lists, trees, sort algorithms, etc., and I used arguments identical to yours to justify why it made sense. I was fooling myself then, and you're fooling yourself now.

      Since then, I've come to accept that the kind of work I most LIKE doing isn't necessarily the kind of work that most benefits the project, and that the rationalizations about transparency, fixability, performance tuning, etc., are just that -- rationalizations. It's much wiser and much more effective to choose good tools with fast and thoroughly-debugged libraries than to reinvent the wheel.

      Here's a tip, though: If yo

      --
      Note to ACs: I usually delete AC replies without reading them. If you want to talk to me, log in.
    78. Re:Always be there by cmburns69 · · Score: 2, Interesting

      This is an interesting discussion for me because I've experienced the whole thing in real life. My cousin has run a large, free, web-statistics tracking site. When he started it, it was running on PHP+apache-- He was just to the point when he was able to start making money off it, and I gave him some bad advice. I told him that if he was having performance issues, he should re-engineer the entire thing himself.

      After 2 years building a web-server from scratch, he's in beta now. But during those 2 years that he wasn't improving (or maintaining) the existing code base, he lost all his thousands of free customers. He has no regrets, and his code behind it is awesome! It's fast, efficient, and modular. As far as code is concerned, it's like Michelangelo's David. From a purely coding perspective, it was the right decision. From a business perspective, it was a very poor decision. He could have a thriving business right now, but unfortunately for him, all he has now are a few prospective customers in beta.

      I (on the other hand) have built a technology to enable certain kinds of web-apps for my personal site. It's in java so it's slower, and eats memory a bit. I could spend a year or 2 re-writing it in C, and know for certain there were no memory or performance issues. But that's not worth it to me. I can start getting paying customers now. From a business perspective it's more than enough. As my business grows, I simply need to upgrade my hardware.

      My cousin spent a total of 3 man-years getting to where he is now (1 year for the original code-base, and 2 years for the current code-base). I've spent 1 man year for my current code-base. Assuming our time is worth only $30/hr, and that these part time, off hours man years are only 500 hours each, his cost was $60k more than mine was. I can buy a lot of hardware with that difference, and I'm collecting money at the same time.

      From a coding perspective, it makes sense to spend an infinite amount of time to make your code-base perfect. In the real world, the right language is often what is most practical.

      Note: This post was heavily influenced by Joel Spolsky's article Things you should never do

      --
      Online Starcraft RPG? At
      Dietary fiber is like asynchronous IO-- Non-blocking!
    79. Re:Always be there by jsebrech · · Score: 1

      You're right, embedded software is currently one of the few classes of software for which C still makes sense. But give it a decade or two, and we'll see garbage collection and scripting languages there too. Hardware is cheap, programmer time expensive. If you can save programmer time at the expense of hardware cost, it usually pays off.

    80. Re:Always be there by Anonymous Coward · · Score: 0


      C is perfectly capable of extremely high-quality memory management with significant ease-of-use. However, you get to create that facility, or of course you can utilize someone else's design if you can locate one that fits your API needs, budget and time frame.



      For instance, years ago I faced this issue and wrote a module that ensures there are no leaks in any part of an application I write; I also get over-run and under-run detection, named segments, dual-free attempt capture, memory usage reporting, and more. I have debug and end-user levels for the code so that during development, I get enormous detail, while the end user doesn't see that unless I specifically turn it on for them.



      I have both pool and chunk level management; I have both pool and individual "free" levels; all of this in very few K indeed.



      C is the perfect language to implement memory management in, in fact, because it has perfect fine-grained control over memory.



      That goes for other things as well; C is highly capable if you need to build in certain types of OO; objects with built-in methods and variables can be crafted in seconds, with no waste at all; uniform list handling can be crafted (and is an interesting and useful programming exercise.)



      C *could* go away as a result of a generation of programmers who really don't know how to deal with such things, but I think it would be a real loss if it happened. The up side is that it'll take a while. There's a whole generation of us who know C quite well, and we're nowhere near dead yet. ;-)


      C is perfectly capable of extremely high-quality memory management with significant ease-of-use. However, you get to create that facility, or of course you can utilize someone else's design if you can locate one that fits your API needs, budget and time frame.



      For instance, years ago I faced this issue and wrote a module that ensures there are no leaks in any part of an application I write; I also get over-run and under-run detection, named segments, dual-free attempt capture, memory usage reporting, and more. I have debug and end-user levels for the code so that during development, I get enormous detail, while the end user doesn't see that unless I specifically turn it on for them.



      I have both pool and chunk level management; I have both pool and individual "free" levels; all of this in very few K indeed.



      C is the perfect language to implement memory management in, in fact, because it has perfect fine-grained control over memory.



      That goes for other things as well; C is highly capable if you need to build in certain types of OO; objects with built-in methods and variables can be crafted in seconds, with no waste at all; uniform list handling can be crafted (and is an interesting and useful programming exercise.)



      C *could* go away as a result of a generation of programmers who really don't know how to deal with such things, but I think it would be a real loss if it happened. The up side is that it'll take a while. There's a whole generation of us who know C quite well, and we're nowhere near dead yet. ;-)

      Would you share your memory tricks with us: do you have any link to some code we could study? Thanks a lot! chris
    81. Re:Always be there by jsebrech · · Score: 1

      Debugging and maintaining, however, are issues more predicated upon design skills than the language used.

      My experience is that debugging and maintenance is a factor of two things: programmer quality, and number of lines of code. The more lines of code, the longer you'll be debugging, and the slower you'll be able to make changes on your codebase (presupposing that your design is equally sound in both cases). C's verbosity means it will take longer to debug and maintain. This is my experience anyway, as I've written parsers in C and PHP, and the PHP parser was easier to debug and maintain, despite equal complexity, because it was much less verbose.

      The problem is that from the programmer's perspective, "time and effort" are not even slightly the same as they are from the user's perspective.

      I agree with what you say, that putting user satisfaction first should be the key driving force behind your coding decisions. For me this translates a little differently. I have more requested functionality than I have time to program. If a feature is slow but usable, it is preferable for my userbase over a feature that is fast but absent.

      My ideal system is a mixed platform, something like Adobe Air, or Firefox's XUL architecture, with simple high-level scripting languages to get the GUI coding done quickly, but lower-level native code libraries to do the heavy lifting with graphics and data. I've written flash-based web apps that outperformed native code desktop apps by making judicial use of the optimized native code libraries in flash. This way you get the best of both worlds.

    82. Re:Always be there by SanityInAnarchy · · Score: 1

      I've never heard this before, and I don't quite understand why C couldn't generate bootloader code or particular drivers. In the sense that C is turing-complete, you could always write a bit of custom C code that outputs assembly and then runs it. But from what I understand, this is the kind of thing that it makes sense to do in assembly, the first time.

      If you've got some new USB device, you won't be able to interface with it in Ruby. Well, in the sense that Ruby is written in C, there's no reason to believe this will always be the case. But it's also a case where you'd do it once -- you implement your USB library for Ruby, and you do that in C. Then you write the actual driver in Ruby.

      But this problem doesn't really exist in C/C++, because you can always get to the hardware. In exactly the same sense that you can in Ruby. Unless I'm missing something, you're doing this with functions -- standard library functions, maybe, but functions nonetheless, some of which will be assembly.

      The rest of the time, when people implement C/C++ code for a higher level language, they are using a heuristic approach. Something like "I think function X will be important, so I'll implement in C to make it faster." That is pretty obviously the wrong way to do it, yes. What you'd do instead is write it in Ruby, profile it, and rewrite the slowest parts in C -- assuming you even need that performance. But in standard libraries, I think it makes sense -- it mostly bothers me that Ruby is slow enough that C can be a significant improvement. I don't think this always has to be the case.
      --
      Don't thank God, thank a doctor!
    83. Re:Always be there by SanityInAnarchy · · Score: 1

      Do you have anything to back that up, or is it pure speculation?

      Microsoft does, in fact, have a very interesting project to write everything in .NET -- but that's in their research labs. I very much doubt it was used at all in Vista.

      --
      Don't thank God, thank a doctor!
    84. Re:Always be there by Brandybuck · · Score: 1

      Sometimes programmers want control over their programs. C and C++ give you that. An example is garbage collection. If something else manages your deletions, you're not in control. If you slap together a web front end to a database, then garbage collection is fine. But when you write a video driver you want absolute control over your memory.

      C and C++ are "on the honor system". If you don't have the moral fibre to properly manage the memory you allocate, then find a 12-step program, and stop blaming the language.

      --
      Don't blame me, I didn't vote for either of them!
    85. Re:Always be there by Beefpatrol · · Score: 1

      Agreed. Using a "scripting" or "rapid prototyping" language to figure out what you need to write is definitely the way to go. If then, you need a substantial performance improvement, rewriting the important parts in something like C is a good solution. One of the reasons that I prefer Unix-like OSs to others is that the whole shell/pipe thing makes doing this sort of stuff really easy. For instance, it is easy to write a Ruby script that parses a file, makes a data set, feeds it to a C program to crunch via a pipe and then returns the results via a pipe.

      Simple data partitioning multiprocessing is easy to do as well this way; just divide up the data set and feed it to multiple instances of the C program.

      I am aware that a great majority of parallel operations cannot really be done this way, but when they can, the "divide and pipe" method leaves little to screw up. One also loses little efficiency if the amount of computation done by the C program is large compared to the cost of spawning another process. Parsing the file in Ruby is usually relatively computationally cheap since Ruby mostly does this kind of thing using C libraries anyway. (depends on the format of the file, of course, but most of the common ones are done with C libraries).

      As some others have previously mentioned, dealing with formatted data is one of the things that Fortran is good at, and so I would imagine that this technique could work quite well using Fortran instead of C for a data-crunching subprogram. I haven't tried Fortran in that capacity however.

    86. Re:Always be there by phliar · · Score: 1

      Son, I've been writing C for 25 years (and getting paid for it), no way I'm going to switch to your "whitespace is significant" toy language now!

      If I want to use a VHLL, I'll take Unicon (and yes, bash (or ksh)) over Python/Ruby/PHP (or whatever today's HOT!!! language is).

      In other words, "Your Favourite Programming Language Sucks(tm)".

      --
      Unlimited growth == Cancer.
    87. Re:Always be there by smellotron · · Score: 1

      One of the reasons that I prefer Unix-like OSs to others is that the whole shell/pipe thing makes doing this sort of stuff really easy.

      No kidding. I find that the easiest way to run functional/system tests on my C++ code at work is to write small command-line apps that integrate well with the shell, and then put all of the testing functionality into bash scripts and regular expressions.

      It also has the side effect of making my software much easier to maintain by application support guys, because it's designed with scriptability in mind.

    88. Re:Always be there by Nicolay77 · · Score: 1

      I remember reading about it in some blog about a year ago, or perhaps more.

      I'm sorry because I don't have the link right now. There's too much noise in google for the string "Vista C#"

      --
      We are Turing O-Machines. The Oracle is out there.
    89. Re:Always be there by SanityInAnarchy · · Score: 1

      Fine. At least that's saner than claiming C is a good language to "dash off a quick little program".

      And your pet language doesn't seem to have any code samples on its page, so it fails.

      Let me put it this way:

      find . -name '*.svn' -exec rm -rf '{}' \;

      Not really going to beat a shell for one-liners, and I've written 100-line ruby code that does what I want. You could not pay me enough to rewrite most of those in C.

      --
      Don't thank God, thank a doctor!
    90. Re:Always be there by Anonymous Coward · · Score: 0

      no one in their right mind would, say, write an entire OS in assembly. How about MenuetOS?
    91. Re:Always be there by Raenex · · Score: 1

      Which brings us to the Story of Mel.

    92. Re:Always be there by Anonymous Coward · · Score: 0

      Assembly is still needed, but no one in their right mind would, say, write an entire OS in assembly. Then these guys must be crazy.

      http://www.menuetos.net/

  3. Visual Basic at #3? by eldavojohn · · Score: 5, Funny
    I can handle C and C++ losing ground.

    But did anyone else find Visual Basic rising two spots to #3 past PHP & C++ to be a sure sign of the apocalypse?

    (Visual) Basic 11.699% +3.42% A Could someone reassure me that's a mistake before I go home to sit down with a bottle of Jack Daniels and a revolver with a single bullet in it?
    --
    My work here is dung.
    1. Re:Visual Basic at #3? by SatanicPuppy · · Score: 1

      I did actually. WTF? I imagine its due to a certain amount of outsourcing, and possibly the maintenance of legacy apps.

      --
      ad logicam Claiming a proposition is false because it was presented as the conclusion of a fallacious argument.
    2. Re:Visual Basic at #3? by kitgerrits · · Score: 3, Informative


      This might have something to do with this PowerShell thing: ccontrolling the O/S through the use of VB scripts.
      It's not exactly the Bourne Shell, but it does show promise.
      As Windows admins look at scripting the boring stuff, they will need to learn VB...

      --
      "I was in love with a beautiful blonde once, dear. She drove me to drink. It's the one thing I am indebted to her for."
    3. Re:Visual Basic at #3? by bigman2003 · · Score: 1

      As someone who uses ColdFusion all the time...I have to say, YES! On the chart! Whoo-Hoo!

      No worry that it is below ADA, the important thing is that it is ON THE CHART!

      Okay, have your laugh now. But I still think it is good.

      --
      No reason to lie.
    4. Re:Visual Basic at #3? by Hoplite3 · · Score: 5, Funny

      Not a mistake. But if I could make a suggestion, it would be to upgrade your burbon to Booker's. You won't need that money later.

      --
      Use the Firehose to mod down Second Life stories!
    5. Re:Visual Basic at #3? by QRDeNameland · · Score: 1

      I have another question...with the significant differences between VB6 and VB.Net, shouldn't some distinction be made? In fact, the "(Visual) Basic" heading leads me to think that all versions of Basic might be included.

      I always find programming language popularity statistics to be dubious at best.

      --
      Momentarily, the need for the construction of new light will no longer exist.
    6. Re:Visual Basic at #3? by Anonymous Coward · · Score: 0

      The question is if that includes VB.NET. VB.NET removes most of the brain dead design decisions that were made for VB. It's not enough to keep people from still making utter crap, but if you know what you're doing you'll have less urge to bash your head in with a hammer if you have to use VB.

    7. Re:Visual Basic at #3? by AKAImBatman · · Score: 1

      But did anyone else find Visual Basic rising two spots to #3 past PHP & C++ to be a sure sign of the apocalypse?

      I dunno, there seems to be something seriously wrong with their methodology. According to the current chart, Javascript (which is finally coming into its own) is less popular than Delphi, a language that's all but walking dead. (No offense to our Pascal friends around here.)

      I find this to be a highly suspicious turn of events. Especially when you consider that 70-80% of those Java programmers at #1 in the list, have to work with Javascript in order to perform their job correctly. In comparison, Delphi is completely divorced from any other platform or language. Yet Delphi is more popular? I don't think so...
    8. Re:Visual Basic at #3? by thermian · · Score: 4, Insightful

      I've been C coding for years, and I have to say, even though I like it, the number of things that I can do more easily with, say, Python, is getting larger.

      I suspect that soon all I will use C for is writing shared libraries that I can call from some other language.

      I wish people would stop banging on about C's memory problems. C has *no* memory management problem. It has no memory management at all, um, I mean, you just have to be careful when writing your code.

      C is fast, seriously fast even. For that reason alone it will always have a place. I shouldn't think there will be many coders who only use C left soon though, because the job market for pure C programmers is pretty small these days.

      --
      A learning experience is one of those things that say, 'You know that thing you just did? Don't do that.' - D. Adams
    9. Re:Visual Basic at #3? by Chris+Burke · · Score: 1

      Could someone reassure me that's a mistake before I go home to sit down with a bottle of Jack Daniels and a revolver with a single bullet in it?

      That depends... are you using a silver bullet only for the sake of poetry, or because you a werewolf or other creature vulnerable only to silver?

      Because, being a Hunter like I am, if you are a werewolf or such I'd have to say that Visual Basic is in fact on a steady course to overtaking all other languages, and in fact will likely supplant all other languages in the next few years. There's no hope, end it now.

      --

      The enemies of Democracy are
    10. Re:Visual Basic at #3? by Anonymous Coward · · Score: 0

      revolver with a single bullet in it?
      Single, not silver.
    11. Re:Visual Basic at #3? by Chris+Burke · · Score: 2, Funny

      Single, not silver.

      Gah, damnit!

      I guess now you know why I'm such a terrible werewolf hunter that I have to try to do it by tricking them into committing suicide over the internet.

      --

      The enemies of Democracy are
    12. Re:Visual Basic at #3? by afabbro · · Score: 1

      It's not exactly the Bourne Shell

      Talk about your back-handed compliments ;-)

      --
      Advice: on VPS providers
    13. Re:Visual Basic at #3? by fyngyrz · · Score: 1

      Hunter you may be; reader, you are not. "single", not "silver."

      --
      I've fallen off your lawn, and I can't get up.
    14. Re:Visual Basic at #3? by Lobster+Quadrille · · Score: 1

      Yeah, it's off topic, but I haven't tried Booker's.

      Maker's Mark is so far my bourbon of choice, but sampling others means more drinking, and that can only be a Good Thing.

      --
      "The cup is in turn designed for holding hot or cold liquids, and has an open rim and closed base." --US Patent #5425497
    15. Re:Visual Basic at #3? by SatanicPuppy · · Score: 1

      Heh. Well not to rain on your raining on your parade, but it was the only language in the 11-20 group that was gaining ground over last year, and in fact it increased it's position by 10 spots from 2007.

      VB made huge gains as well. Wonder what was special about last year?

      --
      ad logicam Claiming a proposition is false because it was presented as the conclusion of a fallacious argument.
    16. Re:Visual Basic at #3? by Lobster+Quadrille · · Score: 1

      I admit I don't know Java as well as I perhaps should, but I know Javascript quite well and don't see why it is required for Java development (beyond the UI and presentation layer, which has nothing to do with the Java backend).

      I did wonder WTF Delphi was doing on there, when Javascript is being used (and required) on just about every site I visit.

      --
      "The cup is in turn designed for holding hot or cold liquids, and has an open rim and closed base." --US Patent #5425497
    17. Re:Visual Basic at #3? by Anonymous Coward · · Score: 0

      worse than that, fortran isn't in the top 20 at all! Programming is going down the swanny, we're all doomed! Scientific computing now to be done in logo O.o

    18. Re:Visual Basic at #3? by SatanicPuppy · · Score: 3, Informative

      The methodology page is here.

      I don't know. A lot of it depends on what applications businesses are using; a few big companies pushing large Delphi projects could make a big difference.

      I think Javascript is also hampered by the fact that there aren't all that many different apps, and that a lot of people do view it as a semi-essential skill, so it gets less play. You don't see HTML up there anywhere.

      --
      ad logicam Claiming a proposition is false because it was presented as the conclusion of a fallacious argument.
    19. Re:Visual Basic at #3? by Chris+Burke · · Score: 1

      I don't have to take that from a vampire!

      Hey Mr. Werewolf Eldavojohn, this vampire says your mom codes in VB!

      --

      The enemies of Democracy are
    20. Re:Visual Basic at #3? by BRSQUIRRL · · Score: 1

      I know your comment is tongue-in-cheek...and if "VB" in the results means "pre-.NET, ActiveX-based Visual Basic", then I would be loading up my handgun as well. But Visual Basic.NET, by virtue of having been built on top of the .NET CLR, is actually a much-improved language.

    21. Re:Visual Basic at #3? by Anonymous Coward · · Score: 0

      He said single bullet. Not silver bullet.

    22. Re:Visual Basic at #3? by Anonymous Coward · · Score: 0

      yep, and logo is more widespread than actionscript...

    23. Re:Visual Basic at #3? by SatanicPuppy · · Score: 1

      VB includes the following according to their methodology page:

      Basic, VB.NET, Visual Basic.NET, Visual Basic .NET, Visual Basic 2005, VB 2005, Visual Basic 2003, VB 2003, Visual Basic 2002, VB 2002, VB

      --
      ad logicam Claiming a proposition is false because it was presented as the conclusion of a fallacious argument.
    24. Re:Visual Basic at #3? by Anonymous Coward · · Score: 0

      How about "they're full of sh*t"? Is that reassuring?

      I code, I know several people who code, we all make a living at it, and I've never heard of this TIOBE or Paul Jansen and I even had to think for a minute to remember who Dr. Dobbs was. Didn't he go out with BBSs and TRS-80s?

      Also, they base their results on Google search hits. Big deal. So every time somebody says "Visual Basic sucks!" that counts as a vote for Visual Basic.

    25. Re:Visual Basic at #3? by AKAImBatman · · Score: 1

      I know Javascript quite well and don't see why it is required for Java development (beyond the UI and presentation layer, which has nothing to do with the Java backend).

      I didn't say they needed Javascript to write Java, I said they needed it to do their job correctly. The implication being that the majority of Java programmers do web programming. (Which is a fairly safe bet.) :-)

      Though now that you mention it, Sun is trying to make Javascript a more prominent part of the Java language in 1.6. Which should be another factor putting pressure on its popularity.
    26. Re:Visual Basic at #3? by Fulcrum+of+Evil · · Score: 1

      VB.net would be my guess. Really, .Net should be its own thing, since it all uses the same runtime and differs only in syntax.

      --
      "We returned the General to El Salvador, or maybe Guatemala, it's difficult to tell from 10,000 feet"
    27. Re:Visual Basic at #3? by Anonymous Coward · · Score: 0

      Powershell is a scripting language that uses the .NET framework. PowerShell can certainly run VBScript, and knowing VB.NET or any other .NET language would help you pick it up faster, but it isn't VB.

      I think the new in line XML feature that came out with .NET 3.5 is part of the push

    28. Re:Visual Basic at #3? by Anonymous Coward · · Score: 0

      PowerShell is unrelated to VB. It has its own syntax, completely separate, and can natively (well "managedly"?) use .NET components written in VB or C# and event COM components, typically written in C.

      Admins do not need to learn VB. Particularly not if they want to keep their sanity!

    29. Re:Visual Basic at #3? by AKAImBatman · · Score: 1

      I think Javascript is also hampered by the fact that there aren't all that many different apps, and that a lot of people do view it as a semi-essential skill, so it gets less play.
      I find "not all that many apps" to be a hard pill to swallow. There are very few sites on the internet that don't make use of Javascript in some form or another. On top of that, the number of AJAX/DHTML frameworks has exploded in the last year, with Google GWT leading the charge.

      You don't see HTML up there anywhere.
      HTML is not a programming language. It is a document format. Thus the concept of an HTML "programmer" was always a bit of a misnomer. :-)
    30. Re:Visual Basic at #3? by VGPowerlord · · Score: 2, Funny

      Elton John is a werewolf?!

      --
      GLaDOS for President 2016! "Well here we are again. It's always such a pleasure." -- GLaDOS, 2011
    31. Re:Visual Basic at #3? by wagr · · Score: 1

      If by improved you mean the improved readability of:

      NewStatusPosition = 1 + Reflection.MethodBase.DeclaringType.Name.Info.Version.SelectSingleNode(CType(Cmo.Object("Top10List_8"), EnvDTE.ToString)).Value

      over:

      ++StatusPosition;

    32. Re:Visual Basic at #3? by SatanicPuppy · · Score: 1

      I agree that most sites use javascript, but what do they use it for? The same types of apps; in some cases the same apps.

      Anyway it may just be a statistical bump...Last year was a huge year, maybe this year is seeing a fall off.

      --
      ad logicam Claiming a proposition is false because it was presented as the conclusion of a fallacious argument.
    33. Re:Visual Basic at #3? by cdrudge · · Score: 1

      Have you just tried StatusPosition += 1? Every language has obscure ways of doing things. Just because you can doesn't mean that people use it that way.

    34. Re:Visual Basic at #3? by Anonymous Coward · · Score: 0

      They're probably including VB.Net in that number. VB.Net is as powerful as C#, but much friendlier. Intellisense works much better with the syntax of the VB language, plus there are no semicolons at the end of every programming line like C-based languages.

    35. Re:Visual Basic at #3? by kitgerrits · · Score: 3, Insightful

      Shows what I know about PowerShell...
      Being a UN*X admin and a reasonably-competent scripter, I tried looking into it and my brain had trouble grasping how this is supposed to be a shell.

      From what I can see, Bourne and other UN*X shells are stream-oriented and PS seems object-oriented.
      I see LDAP as a flat text-based database with Organizational Units, not as a magical forest with trees, domains and groups.

      This is, most likely, because UN*X admins are used to modifying and/or generating configuration files,
          whilst Windows admins have spent the last 13 years ticking tickboxes and, lately, dragging objects.

      (does knowing win.ini and system.ini make me l33t or simply a dinosaur? I fled the Windows scene when 2003 came out...)

      --
      "I was in love with a beautiful blonde once, dear. She drove me to drink. It's the one thing I am indebted to her for."
    36. Re:Visual Basic at #3? by lgw · · Score: 1

      It looks like they're lumping togehter VB and VB.net. VB.net is a completely different language: it's C# without curly braces. It would make more sense to combine VB.net and C# than to combine VB.net and VB.

      --
      Socialism: a lie told by totalitarians and believed by fools.
    37. Re:Visual Basic at #3? by metamatic · · Score: 2, Funny

      I wish people would stop banging on about C's memory problems. C has *no* memory management problem. It has no memory management at all [...]

      And Heather Mills has no left leg problems, right?
      --
      GCHQ Quantum Insert installed. If only our tongues were made of glass, how much more careful we would be when we speak
    38. Re:Visual Basic at #3? by gbjbaanb · · Score: 1

      joke ----->  .

      you ------>  o
                  -|-
                  / \

      :-)

    39. Re:Visual Basic at #3? by Jugalator · · Score: 2, Informative

      This might have something to do with this PowerShell thing: ccontrolling the O/S through the use of VB scripts. Please correct me if I'm wrong, but isn't VBScript (or JScript at the user's choice) used for the Windows Script Host whereas PowerShell uses its own scripting language that integrates with the .NET platform?

      You can also write "cmdlets" for PowerShell in any .NET language such as C# or Visual Basic, but that's seems more about writing commands for the shell than writing shell scripts.
      --
      Beware: In C++, your friends can see your privates!
    40. Re:Visual Basic at #3? by ajs · · Score: 2, Interesting

      1. The Web is 90% noise
      2. 99% of statistics are lies
      3. This is a case of statistics based on the Web

      Thus we have a 99.9% certainty that this article is a noisy lie.

    41. Re:Visual Basic at #3? by Anonymous Coward · · Score: 0
      I imagine that it's actually due to this being a really shitty way to measure the actual popularity or relevance of a language.

      It's kind of like the book count method. C is popular, we know it, most MS apps are written in C and C++, most Linux apps are written in it. I suspect that not that many books are written about C every year. I would never say that every thing there is to say has been said about C but if I was some hack for Pragmatic Programmers or O'Reilly, I don't know if I'd be churning out a C book this year to make some spare bucks. If you write a C book, you're going to compete with some pretty special books, like the K and R book, if you churn out some book on Ruby, it's green field.. Maybe your book will be the "K and R" book for Ruby.

    42. Re:Visual Basic at #3? by Sancho · · Score: 1

      Staying off-topic.

      I've tried a number of bourbon-like whiskeys, and I have to say that one of my favorites is Japanese: Suntory 18 year. After that is Noah's Mill. Neither of these do I consider staples, though. I found some stuff that's quite a bit smoother than Maker's Mark, about the same price, but long out of production :( I stocked up and drink it when I'm in the mood for something excellent.

    43. Re:Visual Basic at #3? by fyngyrz · · Score: 1

      What? Where's a wolf?

      --
      I've fallen off your lawn, and I can't get up.
    44. Re:Visual Basic at #3? by molarmass192 · · Score: 1

      I'm willing to bet they're grouping MS Office macros into that pile, that's the only way I can explain that level of popularity. It'll be a particularly cold day in hell before I code anything in VB again.

      --

      Good people do not need laws to tell them to act responsibly, while bad people will find a way around the laws-Plato
    45. Re:Visual Basic at #3? by Chris+Burke · · Score: 1

      Werewolf? There wolf.

      --

      The enemies of Democracy are
    46. Re:Visual Basic at #3? by Jugalator · · Score: 1

      I think it's because VB .NET is maturing and people seeing it being superior to VB 6 as a language in most applications. VB .NET is only similar to VB 6 in the syntax, not very much so otherwise. It should really have had a more different name to not confuse. It's about two different languages, with two entirely different object models. The older is barely even object-oriented, the latter supports everything you can expect from inheritance to interfaces and even lambda expressions and delegates.

      VB .NET was born in 2002 as part of a quite early and bugged first release of Visual Studio .NET. Visual Studio .NET 2003 made it slightly better, and IMHO, with 2005 and especially 2008 things have finally started to settle a bit.

      But that's just a theory... And it doesn't explain the sudden burst in 2004 (??) to drop down again even during the very same year. *shrug*

      --
      Beware: In C++, your friends can see your privates!
    47. Re:Visual Basic at #3? by Mr_eX9 · · Score: 1

      HTML wouldn't be on there because it's not a programming language--it's code translated by your browser to make a web page. A program is translated by a compiler/VM/linker/etc into asm/binary.

    48. Re:Visual Basic at #3? by AKAImBatman · · Score: 1

      Anyway it may just be a statistical bump...Last year was a huge year, maybe this year is seeing a fall off.

      Delphi or Javascript? Delphi I could see. Javascript, not so much. They should not be recording a reduction of interest in Javascript when more frameworks appeared in the last year than ever before. I have seen no signs of the Javascript engine waning. In fact, it's continuing to pick up speed as customers demand web applications with greater interactivity and responsiveness.

      What seems to be true to me is that their methodology is flawed. What they are doing is effectively a Google Fight on a professional scale. Which can lead to all sorts of problems due to the way the english language works. For example, take these two Google Fights:

      Delphi vs. Javascript - 6.62:1 in favor of Javascript
      Delphi programming vs. Javascript programming - 2:1 in favor of Javascript

      Yet if we follow their methodology and search Google with +"Delphi programming" and +"Javascript programming" we get 260,000 vs. 341,000 results, respectively. Does that mean that Javascript is only slightly more popular for programming than Delphi? No, it means that people don't use the term "Javascript programming" a whole lot. (Or the search engine doesn't find that combination of words very appetizing. Either way.)

      A more interesting search is to check Sourceforge. 1842 results for Javascript, 1359 results for AJAX, and 889 results for Delphi. That tells me that Javascript is WAY more popular than Delphi.
    49. Re:Visual Basic at #3? by Anonymous Coward · · Score: 0

      Only because it's a language with so many different versions and implementations in so many applications, plus many applications and APIs can be maniplated by VB without much work. In Windows at least it's pretty universal, which is probably why. I guess we might as well count bash scripting in that chart then.

    50. Re:Visual Basic at #3? by fyngyrz · · Score: 1

      O. S M R wolf. C M P N?

      --
      I've fallen off your lawn, and I can't get up.
    51. Re:Visual Basic at #3? by Anonymous Coward · · Score: 0

      This isn't a list of the best languages, or even (necessarily) the most popular. The list measures "skilled professionals" or to put that another way, "the number of people who put this on their resume."

      I'm not really sure how useful this is. If you really wanted to know how many people actually know each language, you should probably select 100 or 1000 at random and ask them to perform some task in each language. Then have a qualified judge throw out any responses that look like they were coded by a monkey banging on a typewriter.

      That might actually be an interesting list. "what languages are people actually proficient in?" vs. "what languages to people put on their resume because they figure it's so simple they can fake it in an interview"

    52. Re:Visual Basic at #3? by HeronBlademaster · · Score: 1

      His point was that you can't really call the lack of automatic garbage collection a "memory management problem". It's a different programming paradigm - in C, you just have to keep track of things. Just because it's hard sometimes doesn't mean it's a problem.

    53. Re:Visual Basic at #3? by Anonymous Coward · · Score: 0

      Back in the days, different languages had different features that you could exploit depending on the application needs. With the advent of .Net architecture those differences between VB, C#, and C++ .Net (does J# count?) have been blurred. only the syntactical difference remains. what you see up there is not VB gaining ground but .Net gaining ground.

    54. Re:Visual Basic at #3? by smithtodda · · Score: 1

      Booker's is good, but a bit strong for my everyday taste. Also from the Beam family is Baker's, which I prefer to any other bourbon right now. When I can't afford that, I drink their Knob Creek. I'd switch outside the Beam family before I'd drink Basil Hayden, however. I just don't dig it.

      Bourbon drinkers of the world unite!

      --
      Why Vegan? No other food choice has a farther-reaching and more profoundly positive impact on all of life on Earth.
    55. Re:Visual Basic at #3? by grahamd0 · · Score: 1

      I think Javascript is also hampered by the fact that ... a lot of people do view it as a semi-essential skill

      I've never seen that in practice, and if you're working on the web in any capacity and you view Javascript as a semi-essential skill then I can say from experience that you're dedicated to building terrible websites.

      Even if you don't write javascript, you need to understand it (Unfortunately, too few do. *Surprise! It's a functional lanaguage!*) if you're doing anything of any significance on the web.

      You'll need it to incorporate any decent analytics solution, just about any 3rd party front-end product or to understand some of the many ways ASP.NET is destroying your users' experiences.

      (I'm using "you" generally, from the context of your post, I don't think you specifically view javascript as less-than-essential.)

    56. Re:Visual Basic at #3? by ancientt · · Score: 1

      I was discussing this with another administrator just the other day. The shell, actually mostly the Bourne Again SHell and sometimes the Korn SHell and occasionally the Bourne shell, is something I've used regularly for the last five years or so. (I'll be lumping them together for this reference as "the shell" and referring to PowerShell as "PSH." ) I like and know the shell, but don't know PowerShell well yet, and as a result can usually do what I set out to do with the shell fairly well and rapidly, but I'm slow and sometimes frustrated by PSH. When I was comparing what I can do with each, however, I realized that most of what I'm accomplishing through the use of the shell isn't really the shell itself, but the dozens of small programs I expect to always be able to rely on such as sed, awk, cut, paste, diff, wc, wget, dd and grep. If I were more familiar with PSH and had my usual tools, through something like Unix Utils or sysinternals, I suspect that my preferences would not be nearly so pronounced.

      When I first started with the shell I had come from the MS Windows world where there were check boxes and buttons or honest to goodness programming languages and the distinction was clear. As I transitioned over the years, the shell seemed to offer much better control and flexibility at the cost of just a little learning, one small step at a time. I recognize the attitude I feel toward PSH as being similar and at an intellectual, if not a gut level, I think the two are similar. Yes, it will take a while for PSH to get the comfort of use and widespread adoption that the shell has earned, but I think it will come. With it I think will come the same blurring of programming and administration that occurs with the shell now.

      It may not be exactly the Bourne shell, but it would be more fair to say it isn't Bash... yet.

      --
      B) Eliminate all the stupid users. This is frowned upon by society.
    57. Re:Visual Basic at #3? by Deanalator · · Score: 1

      I would put to you that C is only fast because the compiler makes it fast. As hardware architectures change, and compiler theory advances, people who use C for everything will start to realize that better options exist.

      I do believe that C will be around for a long time though, and the only reason it is losing popularity is that few companies need to hire programmers to write low level code. Hardware companies will hire C programmers, but software has moved far beyond that, into domains that other languages are just better at addressing.

    58. Re:Visual Basic at #3? by DavidNWelton · · Score: 1

      I think my own project has a little bit better methodology:

      http://www.langpop.com/

      However, all of these things have to be taken with a grain of salt.

    59. Re:Visual Basic at #3? by Anonymous Coward · · Score: 0

      Yeh but Jack Daniels is a whiskey not a bourbon! Read the label. Also distilled twice, bourbon is distilled once!

    60. Re:Visual Basic at #3? by Anonymous Coward · · Score: 0

      Thanks to the winblows world we live in and the fact that their promotion of incompetency is gaining not only ground, but momentum. VB has truly hit #3

    61. Re:Visual Basic at #3? by dubz · · Score: 1

      For those who are not very familiar with the evolution of VB:
      VB.NET was a whole new chapter in VB history. Many of those who liked VB syntax (e.g. old BASIC/VB coders) yet required OO capabilities to go with it were more than happy to adopt VB.NET. As an added advantage, they could be a part of a mainstream development platform and get goodies like .NET libraries, etc.
      So I don't really find it surprising that VB has gained the footing it has. I use C#.NET a lot, but everything I can do in C#.NET I can do in VB.NET (as opposed to classic VB vs. classic C++ for example).

    62. Re:Visual Basic at #3? by TheRaven64 · · Score: 1

      I would put to you that C is only fast because the compiler makes it fast Close. C is only fast because the categories of optimisations that make C code fast on current hardware are easy. There are whole categories of optimisations that are important for parallel / NUMA systems which are very hard to do to C and much easier to do on (some) high-level languages.
      --
      I am TheRaven on Soylent News
    63. Re:Visual Basic at #3? by Tellarin · · Score: 1


      You forgot to say that 91.72% of all statistics are created on the fly and out of thin air.

    64. Re:Visual Basic at #3? by geminidomino · · Score: 1

      There castle.

    65. Re:Visual Basic at #3? by geminidomino · · Score: 1

      You forgot to say that 91.72% of all statistics are created on the fly and out of thin air. So? The same percentage holds for visual basic variables!

      *Ba-dum-shh*
    66. Re:Visual Basic at #3? by ajs · · Score: 1

      Ah... no, that would be item #2.

    67. Re:Visual Basic at #3? by Hythlodaeus · · Score: 1

      Taking a look at the graphs, it looks like VB's motion is a mirror image of C++'s. My hypothesis is that a deluge of windows GUI development abandoned C++/MFC for VB.NET. C# might have been a better choice, but you really can't blame anyone for getting away from MFC by any means.

      --
      For great justice.
    68. Re:Visual Basic at #3? by prestomation · · Score: 1

      Did you make up those statistics?

    69. Re:Visual Basic at #3? by VENONA · · Score: 1

      Actually, they have bash at #35. One spot above PowerShell. While awk is at #20.

      Those three assignments tell me all I need to know about their methodology.

      --
      What you do with a computer does not constitute the whole of computing.
    70. Re:Visual Basic at #3? by VENONA · · Score: 1

      Oh, man. I haven't heard that in *forever*. Somebody mod parent funny.

      --
      What you do with a computer does not constitute the whole of computing.
  4. Managed code is the way to go by KlomDark · · Score: 4, Interesting

    I haven't written a line of code in C or C++ since I started with C# - C/C++ syntax with no tracking of memory (I detest tracking memory!!) except in the more obscure situations. Both .NET and Mono allow for C#, so you're not stuck on one platform.

    1. Re:Managed code is the way to go by CogDissident · · Score: 1

      I agree, C# is a miracle compaired to those two previous versions.

      Yes, I actually code in C# at my job, so I do deal with it 8 hours a day.

    2. Re:Managed code is the way to go by QuantumG · · Score: 2, Interesting

      Lately I've found the biggest advantage of using C# over C++ is compile time. If I change a header file in C++, that's it, I'm off to make coffee, but with C# you can change just about anything and the code is recompiled in seconds.

      Now if only the native code generation for C# wasn't so pitiful and unsupported.

      --
      How we know is more important than what we know.
    3. Re:Managed code is the way to go by Yold · · Score: 1

      You can still create a memory leak in C# if a reference to an object is still in scope (and it shouldn't be), as seen in a certain University's UAV project.

    4. Re:Managed code is the way to go by Ai+Olor-Wile · · Score: 1

      I hate to troll on your parade, but the existence of Mono seems pretty token at times, as if it were allowed to live only as a way to trick Linux folks into believing that C# isn't going to lock them inside of Gates' magic glass box, which MS would have no fear of revoking via lawsuits if their almighty patentpocalypse against Linux came to be (and wasn't just FUD, fate of Novell notwithstanding.) How sturdy/complete *is* Mono? How much does stuff have to be reworked in order to fly on it? See, 'cause, if it's not 100% compatible, everyone can gawk in horror at how many languages Microsoft has squeezed onto the top 10, and just how firmly entrenched they are in the souls of programmers. (That being said, yay for Python and PHP for combating them.)

    5. Re:Managed code is the way to go by ucblockhead · · Score: 1

      Not to minimize the problem, because it is quite real, but this sort of behavior is often the result of poor design. There are ways to code (like pimpl) that move most actual implementation changes into cpp files, or at worst headers that are only included in a few places that minimize this. Of course, this does take discipline that is not necessary in other languages.

      --
      The cake is a pie
    6. Re:Managed code is the way to go by pclminion · · Score: 5, Insightful

      I'm not sure why you feel you need to "track memory" in C++. I did an analysis of all the code I've written a year or so ago, and I found that there is approximately one usage of a pointer in every 5700 lines of code (the way I write it, at least).

      We have this great stuff called containers and RAII. And for when you absolutely must, must use a pointer, you have boost::scoped_ptr and boost::shared_ptr. I have not coded a memory leak or buffer overrun in C++ in over six years.

      The best way to not leak memory is to never allocate it in the first place. The best way to avoid overflowing raw buffers is to not use raw buffers. Use the containers. When you think you can't, think harder.

    7. Re:Managed code is the way to go by Chris+Burke · · Score: 1

      Now if only the native code generation for C# wasn't so pitiful and unsupported. ...

      Yeah, my Python compiles are pretty damn fast too. All I need to do is hit Save in my editor, and my program is ready to run!

      I see what you're saying, but yeah, if you aren't getting native code out of the deal then compile time shouldn't be an issue in any case.

      --

      The enemies of Democracy are
    8. Re:Managed code is the way to go by Anonymous Coward · · Score: 0

      Too bad the ISO standard Common Language Infrastructure is part of the Microsoft-patented Base Class Library. There's a reason no serious C# development occurs in Linux. I think a few Gnome games are developed with Mono.

      That said, with C# forcing object-oriented programming, it does make a better starting point for learning C++ than straight C in my opinion.

    9. Re:Managed code is the way to go by Anonymous Coward · · Score: 0

      Not exactly speaking for everyone, but I develop for the Second Life server emulator project OpenSim (opensimulator.org) and we have a code base that handles physics (multiple engines), networking, database storage (again, multiple databases), scripting, and more via modules. So far, most of the time it will compile and run just fine on both .NET and Mono. There are some times where it will fail on Mono, however, since our userbase and developers use both Windows and Linux environments, such events are tracked down quite quickly.

      Again, we don't touch any of the 3D graphics or GUI libraries, though, so... YMMV.

      I have to say, though, it was a much better experience than trying to get Java applications to run on Linux a while back.

    10. Re:Managed code is the way to go by sconeu · · Score: 2, Informative

      Not to mention that scoped_ptr and shared_ptr are in the next iteration of the Standard (well, shared_ptr for sure, can't remember about scoped_ptr).

      --
      General Relativity: Space-time tells matter where to go; Matter tells space-time what shape to be.
    11. Re:Managed code is the way to go by Anonymous Coward · · Score: 2, Insightful

      Programmers that have trouble tracking memory typically show themselves to also have trouble correctly managing other resources properly, especially in the presence of non-obvious control structures such as exceptions. If exceptions are present, then your code must run correctly forward and backward. Thinking that "everything is OK as long as I throw a call to close() in after I retrieve the results," is hopeful thinking. So long as the flow is not impacted by an exception, you are fine. Once an exception is thrown and your frame is unwound, then you may have leaked the database connection until the GC decides to come along and pick it up for you.

      Most managed languages use exceptions in some form, so the task of resource management is certainly not 'fixed' like proponents of GC would like to think. Languages need good constructs to help the programmer specify the lifetime of an object accurately. One example of this is C#'s using construct, similar to Python's with statement.

      While I do not miss manual memory management, I do appreciate being able to have direct control over memory if need be. Unfortunately many languages do not allow manual memory allocation for the rare cases it is needed.

    12. Re:Managed code is the way to go by Anonymous Coward · · Score: 0

      I'd never dream of using .NET or mono. Vala OTOH, is beginning to rock!

    13. Re:Managed code is the way to go by QuantumG · · Score: 1

      The difference is that C# actually gives you code that is remotely close to native performance.. and if you do the extra jumping through hoops, you can actually generate (crappy) native code.

      --
      How we know is more important than what we know.
    14. Re:Managed code is the way to go by PhrostyMcByte · · Score: 3, Insightful

      Garbage collection is surely a factor in them losing ground, but I think the main reason is simple: library support.

      Java and .NET have huge well-designed frameworks behind them. You can get things done really fast. What does C have? A bunch of separate libraries all with different conventions. C++ is a little better with a more useful standard library and Boost, but it still doesn't have anywhere near the infrastructure Java and .NET have.

    15. Re:Managed code is the way to go by Yokaze · · Score: 1

      > If I change a header file in C++, that's it, I'm off to make coffee, but with C# you can change just about anything and the code is recompiled in seconds.

      I usually take that as a sign, that there is too much dependencies among the classes. This is a problem in any language, in C++, it just becomes more immediately apparent through compile times.

      Secondly, changing a header usually means, I'm going to change the interface of the class (adding functions, changing signatures). If I'm going to do that, it means that I made a mistake in the design of the interface, and I have to take the punishment :).

      That said, I can't deny that I liked the next to zero compile time of Java.

      --
      "Between strong and weak, between rich and poor [...], it is freedom which oppresses and the law which sets free"
    16. Re:Managed code is the way to go by QuantumG · · Score: 1

      Linking is the big killer in C++ compilation - especially with modern name mangling, all those string compares! It's about time name mangling was dropped all-together and some dynamic linking support for C++ would be nice.. but with all the baggage of C++ it's easier just to go the other way and try to make C# into a proper compiled language.

      --
      How we know is more important than what we know.
    17. Re:Managed code is the way to go by Anonymous Coward · · Score: 1, Insightful

      >> ways to code (like pimpl)

      pimpl is not a way to code. Is a way to abuse a language feature in order to avoid a language issue.

    18. Re:Managed code is the way to go by Billly+Gates · · Score: 1

      "Both .NET and Mono allow for C#, so you're not stuck on one platform."

      About as elegant as using Open XML in ms word because its cross compatible and its an iso standard so its not on one platform.

    19. Re:Managed code is the way to go by VGPowerlord · · Score: 1

      What editor are you using that creates .pyc files on save?

      That was a rhetorical question, by the way.

      --
      GLaDOS for President 2016! "Well here we are again. It's always such a pleasure." -- GLaDOS, 2011
    20. Re:Managed code is the way to go by ari_j · · Score: 1

      You're moving a step closer to incremental development, from the sounds of it. Soon enough, you'll be using Common Lisp and wondering what you liked so much about C syntax in the first place.

      I will, however, admit that C# has some of the best syntactic sugar of any language. Ruby has the same thing going for it, among others.

    21. Re:Managed code is the way to go by Anonymous Coward · · Score: 0

      I agree: I worked in few hard real time
      image processing softwares (processing milion
      of items a day across the world) and I did
      probably used two or three new/delete pairs.

      Ther were no memory leak, no crashes (under no
      circumstances) and all worked flawless.

    22. Re:Managed code is the way to go by Yokaze · · Score: 2, Insightful

      That is hardly a conceptual problem of the language C++, but more one of the toolchain and/or ABI, and can be improved on by rewriting the old GNU linker in C++ :). And maybe someday the GNU binutils will gain incremental linking.

      More critical is that the grammar of C++ is undecidable.

      --
      "Between strong and weak, between rich and poor [...], it is freedom which oppresses and the law which sets free"
    23. Re:Managed code is the way to go by Chris+Burke · · Score: 2, Funny

      That was a rhetorical question, by the way. Of course, because we both know the answer is emacs.

      --

      The enemies of Democracy are
    24. Re:Managed code is the way to go by Anonymous Coward · · Score: 0

      Amen!

    25. Re:Managed code is the way to go by b100dian · · Score: 1
      --
      gtkaml.org
    26. Re:Managed code is the way to go by Panaflex · · Score: 1

      I love C# as well... and C, and C++. C# is great for one-off apps, large web app servers... game servers... incredible stuff.

      But my day job is beating performance out of hardware. SAN, Encryption, CPU management, network drivers. And for that - I can only depend on C (and sometimes Assembly).

      I've had great success with intermixing C and C# though, utilizing message passing and queus I can make great stuff. For anyone who hasn't looked into embedding the mono runtime into your app - I'd suggest looking into it for your projects. You get the ability to intermix high performance code with C# ease.

      --
      I said no... but I missed and it came out yes.
    27. Re:Managed code is the way to go by lgw · · Score: 1

      I detest tracking memory

      C# is a miracle If you spend any effort tracking memory in C++, then you need to actually learn C++, instead of typing C code into a cpp file. Any C++ program that explicitly frees an object (other than deep in some library code somewhere) is Doing It Wrong.

      Meanwhile, C# makes it quite hard to release resources other than memory when you need to. For objects like files you have to take the extra step of using a 'using' block, which is pretty minor, but to reserve and release your own resources you have to really understand how 'finalize', 'IDospose', and class destructors work together. That's significantly more complicated than C++ destructors.

      I've been doing a lot of hiring for C++ and C# jobs over the last year, and have interviewed several dozen candidates for jobs in each language. I've yet to find one person who really understands C# resource management, but about half of the C++ candidates "got" C++ resource management. People say that the learning curve is easier for C#, and maybe it is, but today it's still harder to hire a C# programmer to do something technically complicated than to hire a C++ programmer to do the same task.

      Of course, if you want to write CRUD apps, then of course Java is for you - and as evidenced by it's #1 spot, there are many jobs writing CRUD apps.
      --
      Socialism: a lie told by totalitarians and believed by fools.
    28. Re:Managed code is the way to go by cdrudge · · Score: 1

      I don't think that's really the definition of a memory leak. If the reference to an object is still in scope, then it's not really a leak, is it? A leak would be the memory was allocated, used, and then no longer needed (went out of scope, set to null, etc, but the original allocation was never released back into the heap or marked for GC.

    29. Re:Managed code is the way to go by osu-neko · · Score: 1

      How sturdy/complete *is* Mono? How much does stuff have to be reworked in order to fly on it?

      In my experience, hardly anything ever needs to be reworked, but that's because I code in the other direction -- develop under Mono, then make sure it runs under M$ stuff too.

      Although, TBH, I only do this for a couple of projects where Mono/.NET is a requirement. If it were entirely up to me, the whole project in question would be Perl/PHP/Ruby/Python/C++/oh-my-gods-anything-but-Mono-halp!!!

      --
      "Convictions are more dangerous enemies of truth than lies."
    30. Re:Managed code is the way to go by Kevin+Stevens · · Score: 3, Insightful

      If you use the facilities provided by the STL and BOOST (most notably shared_ptr), C++ is not a whole lot different than Java these days. Java went a little too far in my opinion on being nice to the programmers while giving up performance. Modern C++ hits the sweet spot in my opinion.

      If only the standards committee could get off its arse and progress as quickly as BOOST does....

    31. Re:Managed code is the way to go by QuantumG · · Score: 1

      Soon enough, you'll be using Common Lisp and wondering what you liked so much about [..] syntax in the first place. There, fixed that for you.
      --
      How we know is more important than what we know.
    32. Re:Managed code is the way to go by molarmass192 · · Score: 1

      C# is in no way shape or form a subsequent version of C/C++. C# is merely MS's botched attempt at taking out Java, minus the cross platform portability and enterprise class reliability. If anything is the next iteration of C/C++ it's Objective-C, even then, it's not ratified by ANSI and it's hardly used outside of Apple.

      --

      Good people do not need laws to tell them to act responsibly, while bad people will find a way around the laws-Plato
    33. Re:Managed code is the way to go by Anonymous Coward · · Score: 0

      If you aren't going to use pointers in C++ and you have no memory leaks or buffer overruns then you might as well be using Java.

    34. Re:Managed code is the way to go by Anonymous Coward · · Score: 0

      The people at Google were also told that the minimal performance gain will be worthless... I'll let you ponder on that.

      P.S. no tracking of memory eh? What do you call variables/registers/pointers then? holders? :P

      P.S.S. What do you mean stuck on one platform? You mean you don't know about portable code?

    35. Re:Managed code is the way to go by pclminion · · Score: 1

      This argument is a non sequitur. You seem to be saying that "If you can use A to do X, and you can use B to do X, you should just use B." Uh, okay. Let's flip "A" for "B" in that statement and see what the difference is.

    36. Re:Managed code is the way to go by Anonymous Coward · · Score: 0

      I'm not sure why you feel you need to "track memory" in C++. I did an analysis of all the code I've written a year or so ago, and I found that there is approximately one usage of a pointer in every 5700 lines of code (the way I write it, at least).
      So, you only use inheritance or polymorphism once every 5700 lines of code? Why are you even bothering with an object-oriented language?
    37. Re:Managed code is the way to go by ari_j · · Score: 1

      Thanks. I forgot to "omit [] words." =)

    38. Re:Managed code is the way to go by HeronBlademaster · · Score: 1

      So you're saying that any C++ program that finds a need to use the 'delete' operator is Doing It Wrong?

      There are ways to avoid using the delete operator, such as the standard library's auto_ptr or boost's shared_ptr, but it's often not necessary (or not wanted). To claim these types of things are necessary and should always be used is blind ignorance.

    39. Re:Managed code is the way to go by neutralstone · · Score: 1

      If only the standards committee could get off its arse and progress as quickly as BOOST does....

      If the committee progressed as quickly as Boost, you would see a lot more core language and standard library defects in each release. (Bugs in a non-Standard library are much more tolerable than bugs in a language.)

      Besides, the committee is rushing to meet a "feature complete" deadline this year. They *have* been getting off of their collective volunteer asses many times over during the past few years in order to make that happen.

      Also note, the current Working Paper for C++0x has a lot of handy new features that are fully specified *right now*. So don't forget that some burden is now shared by the implementors of your compiler and its accompanying standard library implementation.
    40. Re:Managed code is the way to go by Anonymous Coward · · Score: 0

      If I change a header file in C++, that's it, I'm off to make coffee, but with C# you can change just about anything and the code is recompiled in seconds.

      So when you code C# you never get to drink coffee, well I hardly think that's a good reason to start bashing it.

    41. Re:Managed code is the way to go by Ktulu_03 · · Score: 1

      I agree with this as well. With Boost + STL, you can have a very clean memory management strategy for C++-based software. I've also used the RAII pattern for locks, which cuts down on the potential for deadlocks.

      boost::scoped_array and boost::shared_array work great for memory buffers, as well as std::vector vs. raw arrays. It's great to write a new set of classes without giving much thought to memory leaks, because everything cleans itself up automatically.

    42. Re:Managed code is the way to go by Tweenk · · Score: 1

      C# is not a new version of C++. It is something completely different with a familiar name slapped on it to confuse the unwary.

      * C# is compiled to bytecode while C++ is compiled to native code.
      * C# has no multiple inheritance.
      * C# has no global functions or variables, everything must be in some class like in Java.
      * C# has no explicit memory management, though it has deterministic finalization, so RAII is possible.
      * C# has rather limited operator overloading.
      * C# distinguishes between reference types and value types. C++ has no such distinction, though the difference between an object and a pointer to an object is similar.
      * C#'s preprocessor is very limited (no macros).
      * C# has generics which are a dumbed-down version of C++ templates.
      etc., etc...
      * C# has switch on strings, while C++ has switch only on integer types.
      * In C#, code like int bar = 1; if(bar) {...} is invalid because there is no coercion of integers to booleans.
      * C# requires special gymnastics to use pointers.
      etc., etc...

      So C# is actually more an extension of Java than a new version of C++.

      --
      Those who would give up liberty to obtain working drivers, deserve neither liberty nor working drivers.
    43. Re:Managed code is the way to go by Sentry21 · · Score: 1

      The best way to not leak memory is to never allocate it in the first place This contrasts with the Microsoft philosophy of 'If we never deallocate memory, it won't ever leak!'
    44. Re:Managed code is the way to go by MemoryDragon · · Score: 1

      I have to say, though, it was a much better experience than trying to get Java applications to run on Linux a while back. Actually that does not really resembly my experience with java. I do a lot of java development usually it is mixed teams, some use Linux some use Windows and Macs usually the programs, which are mostly server programs deploy on any java supported platform without any hitch. The biggest problem I see with portability of java is often some hardcoded paths somewhere in the codebase, besides that the portability of that language is excellent. I will give a small example, in 2001 I wrote a program which used several hundreds of thousand LOCs of third party code under Windows, then tested it against Windows and deployed it under AIX, the AIX had one single line of code which caused problems that hat to be bypassed. (AIX jdk bug) that was 2001 now 7 years later the unit tests against every jdk have multiplied by 10 or 20 and the apis are way more stable and widely used. I am not sure why you ran into those problems with Java I dont have them simply. And for real cross platform I would not opt for .Net for exactly those portability reasons!
    45. Re:Managed code is the way to go by MemoryDragon · · Score: 1

      The main issue where C++ really is loosing the ground nowadays besides memory is that the standards body never could get their collective asses of their grounds regarding other standard libs, just look at what java provides out of the box and what is in the entire ecosystem. C++ never will have a chance to achieve that ever!

    46. Re:Managed code is the way to go by pla · · Score: 1

      I did an analysis of all the code I've written a year or so ago, and I found that there is approximately one usage of a pointer in every 5700 lines of code (the way I write it, at least).

      If you ignore the fact that arrays exist as pointers, you could probably say the same for plain ol' vanilla C. 99% of code doesn't need anything more than a few KB in stack variables; 99% of the remainder doesn't actually need dynamic allocation, it just needs a big chunk o' statically-allocated heap.

      And what remains? Yes, boys and girls, computers can and do use memory in messy, potentially dangerous, ways. If you can't actually cook when the package doesn't come with microwave directions, get the hell out of the kitchen.

    47. Re:Managed code is the way to go by Anonymous Coward · · Score: 0

      I agree. By writing proper C++ (i.e. not just compiling C code with a C++ compiler) it is very easy to ensure there are no memory leaks, segfaults or buffer overflows.

      This is easily achieved through the use of STL classes, encapsulation of memory management (reference counting, etc), and data hiding.

      Glad to see D is in the top 20. Looks like a good language to me that fixes many of C++'s deficiencies.

    48. Re:Managed code is the way to go by Anonymous Coward · · Score: 0

      Hey, full of shit bastard #19354678, guess what?

      No C/C++ programmer *ever* coded a memory leak, a buffer overrun, or anything. *I* certainly didn't ;-)

      That kind of holier than thou '*I* don't make mistakes' attitude is the reason why we get so many "not mistakes" in the real world. So get off the high horse and start thinking, will you?

    49. Re:Managed code is the way to go by pclminion · · Score: 1

      That kind of holier than thou '*I* don't make mistakes' attitude is the reason why we get so many "not mistakes" in the real world. So get off the high horse and start thinking, will you?

      Wow. I don't know where the hell this attitude is coming from. I certainly make mistakes. They simply are not of the memory leak or buffer overrun kind. This is not because I'm a genius, it's because I am disciplined enough to adhere to a set of design principles which make these sorts of errors practically impossible.

    50. Re:Managed code is the way to go by Anonymous Coward · · Score: 0

      Also, don't forget that RAII applies to every type of resource, not just memory. In GC languages you usually have to do non-memory resource management yourself, with leads to all those handle leaks people are getting used to see these days.

      IMO, C++ has the best resource management of all the popular languages used today, the only problem with it is the huge amount of time required to be proficient with the language. Which, unfortunately, also leads to a lot of unfair criticism from people who think that they do know the language, when they really don't.

    51. Re:Managed code is the way to go by Anonymous Coward · · Score: 0

      I think this logic is backwards. If you find yourself making heavy use of "high level" C++ library features (aka the STL) for everything and never doing your own memory management or bit twiddling, then performance probably isn't that critical. In that case, C++ is not likely the best language choice. Instead you could go with a language that was designed from the core to work at a higher level of abstraction.

      If performance is critical, then C or C++ with light library usage are the likely choices. And you will be doing plenty of this: *x++ = *y++;

      I really liked C++ years ago, but these days when evaluating a new project I find that it sits in an uncomfortable position between fast and easy that is not often called for.

    52. Re:Managed code is the way to go by Anonymous Coward · · Score: 0

      1990 called: it wants it's coding style back.

    53. Re:Managed code is the way to go by Anonymous Coward · · Score: 0

      I found that there is approximately one usage of a pointer in every 5700 lines of code (the way I write it, at least).

      I've been programming in C and C++ for over a decade (professionally and on personal projects ranging from trivial GUI apps to a full blow compiler). My C and C++ code has a pointer operation every few lines. I don't meant to flame, but rather to state the obvious: If you're only using pointers every 5700 lines, YOU'RE NOT DOING IT RIGHT. C and C++ programming is all about pointers.

      p.s. Personally I don't even consider it real C if you're not using pointers frequently.

    54. Re:Managed code is the way to go by pclminion · · Score: 1

      p.s. Personally I don't even consider it real C if you're not using pointers frequently.

      What I said certainly does not apply to C. :)

      However, w.r.t. C++ I'd like to hear of an example that requires a pointer to be floating around anywhere other than the bottom-most level of code. I am not claiming that real applications can be programmed without pointers, merely that the pointer manipulation can always be relegated to a container layer (e.g. shared_ptr or otherwise) at the very bottom layer of the code. Once you get the fundamental pointer containers right, you never have to write them again.

    55. Re:Managed code is the way to go by HeronBlademaster · · Score: 1

      Grammar school called. You missed class again.

    56. Re:Managed code is the way to go by Anonymous Coward · · Score: 0

      You should look into using forward declarations in header files.

    57. Re:Managed code is the way to go by MichaelSmith · · Score: 1

      I don't think that's really the definition of a memory leak. If the reference to an object is still in scope, then it's not really a leak, is it? A leak would be the memory was allocated, used, and then no longer needed (went out of scope, set to null, etc, but the original allocation was never released back into the heap or marked for GC. If your application runs along happily but eventually runs out of memory then you have a memory leak.

      In java I can create two objects which point to each other, but with nothing else pointing to each object, and that memory will be lost for ever, but the garbage collector won't free them because it works by counting references.
    58. Re:Managed code is the way to go by shird · · Score: 1

      While I have my doubts about your flawless code, I do agree the STL provides sufficient facilities to write 'good', easy to write code, as much as any other high level language. The trouble is it isn't as obvious how to use it. Java has the whole 'everything is a object' which forces you to use such containers and object design. C++ has the ability, but doesn't enforce it. The problem is uneducated C++ coders, not necessarily a deficiency in the language.

      In other words, both Java and C++ allow good design and code, but Java enforces it whereas C++ lets you shoot yourself in the foot.

      --
      I.O.U One Sig.
    59. Re:Managed code is the way to go by Snoboo · · Score: 1

      C# ist fine for UIs and for programming standard applications. If you need full control over what the program is doing or if you need the optimal speed without using assembler, then C# is not an option. And don't give me the "CIL code is as fast as C code" - it is not. I tried and came back to good old C.

      And yes, the memory management in C or C++ is not as carefree as in C#, but e.g. all the new reference pointer templates in Boost help you a lot to make this as easy and as carefree as in C#.

    60. Re:Managed code is the way to go by ardor · · Score: 1

      There are ways to avoid using the delete operator, such as the standard library's auto_ptr or boost's shared_ptr, but it's often not necessary (or not wanted). To claim these types of things are necessary and should always be used is blind ignorance. No, its wise. Without them, you have to make sure your stuff is RAII-compliant and exception-safe. It is so easy to forget about delete, or to overlook a memory leak.... shared_ptr takes care of this for you, and should be preferred over auto_ptr (since unlike the latter, the former CAN be used inside an STL container).

      So your sentence is wrong. It should go:

      Its often not necessary (or not wanted) to use delete manually.
      --
      This sig does not contain any SCO code.
    61. Re:Managed code is the way to go by ardor · · Score: 1

      The main issue where C++ really is loosing the ground nowadays besides memory is that the standards body never could get their collective asses of their grounds regarding other standard libs, just look at what java provides out of the box and what is in the entire ecosystem. C++ never will have a chance to achieve that ever! The Java Standard Library has nice features, yes. Unfortunately, the language itself is complete crap; a totally featureless underpowered C++ bastard child, without C++'s disadvantages and advantages. Java has maybe 10% of C++'s power, which is a shame - they had the chance to refactor 100% of C++'s power in a language that doesn't bite you all the time.

      About chance of achieving that:

      I want to see something like Boost, Loki, Adobe's GIL, Blitz++ in Java.
      --
      This sig does not contain any SCO code.
    62. Re:Managed code is the way to go by tanveer1979 · · Score: 1

      The best way to not leak memory is to never allocate it in the first place. The best way to avoid overflowing raw buffers is to not use raw buffers. Use the containers. When you think you can't, think harder.

      I have a better way. Do not write any code. This will ensure that no memory, disk space or processor cycles are wasted
      --
      My Aurora : http://www.youtube.com/watch?v=o91ZsGwJYyg
      FB : https://www.facebook.com/TanveersPhotography
    63. Re:Managed code is the way to go by jrumney · · Score: 2, Informative

      In java I can create two objects which point to each other, but with nothing else pointing to each object, and that memory will be lost for ever, but the garbage collector won't free them because it works by counting references.

      Nonsense. GC in Java has never worked by counting references, and bugs due to circular references have been a thing of the past since Java 1.3 or so. Perhaps you're thinking of some of the psuedo garbage collection libraries available for C++.

    64. Re:Managed code is the way to go by tuomoks · · Score: 1

      You are right - as I have said many times over, I'm not a C (derivates) fan and don't know much about C# but wasting my and company time to find the memory problems (as the lead - i.e. the problem solver) and then teaching C# "specialists" how to code was painful. And yes, in C++, you have to really understand what's happening behind your back, sometimes you get lucky but sometimes.. These languages are made for simple, straight information / data management, not for writing anything where you have to control the system so they have their places. Another problem they have common, when a vendor library changes (gets fixed?), you may have problems - not pointing fingers but Java versions, .NET versions, etc are responsible of a couple of my gray hairs. None of core C in these systems hasn't changed a long time except some inefficiencies corrected.

    65. Re:Managed code is the way to go by MemoryDragon · · Score: 1

      The issue for trimming down massively on the C++ syntax is that C++ was so overly complex that no one except excellent programmers even could copy with the language syntax. The Syntax of C++ alone was reason enough that a lot of projects went down the drain. Java is a sane subset of the syntax suitable for real world teams combined of mediocre to good programmers doing really stable huge projects. Dont get me wrong, but if someone counts the featuritis of C++ as a strength then I must say, this is the wrong horse to follow. It took the compiler vendors almost 10 years to support the standard and to support it bugfree. If you want to see a sane C object extension language then have a serious look at objective C. There is a reason why the first successful object models for operating systems came from the objective C side while most C++ operating system object models went down the drain, until Qt came. Aos for your examples, GIL, java has that integrated it is called Java2d (and the code is from adobe as well in huge parts) As for boost, the apache commons codehaus etc.. additonally to what you get from the extensive core lib already provides most of it. Only the number crunch and low level OS area is left out, due to Java being used mainly on the server side but you get much more in many areas from the java corelibs and apache libs than boost covers at all in server, language etc... areas. But I agree boost looks almost like the jdk lib from its coverage. But back to the language, what I have seen on server side programming, what you can achieve with the Crippled C++ Java in a time and a stability I have yet to see a C++ program doing the same in the same development time with the same uptimes upfront usually the development time in C++ is 10 times longer and the stability 10 times worse.

    66. Re:Managed code is the way to go by ardor · · Score: 1

      If you only NEED a very small subset of C++, and this subset happens to be the one Java covers, then yes, its ok.

      But your point about featuris is invalid. In you opinion, powerful language = hard to write a compiler for & hard to program for. Untrue. C++ requires good programmers, this is true. But Java is the WRONG solution. Dumbing down a programming language is just plain wrong. Recast C++ into something sane, without throwing stuff like generic and metaprogramming out. I too have seen server-side code, and I agree that most C++ code there is unstable. Its also enormously crappy. However, using modern C++ with tr1, boost, asio etc. I can for example write a stable http server with a fraction of the amount of code necessary in a Java implementation while keeping everything sane and stable. However, this requires lots of skill. But once you are there, Java feels quite limitating.

      My main problem with Java is that it forces every problem to be a nail so it can be beaten with the Java-OOP hammer (Java-OOP, since for example Objective-C has different OO). For business stuff, this may be fine. But physics simulations, finite element/volume calculations, meshing, etc. cannot be cast into one paradigm only - here is where C++'s multiparadigmatic nature shines.

      To summarize: is C++ a suboptimal language? Yes. Is it bad to support multiple paradigms in one language? No. Python, Lisp, OCaml prove this. D is a much better C++ replacement attempt than Java while being relatively simple to code for. Unfortunately, its still immature. Time will tell what it becomes.

      --
      This sig does not contain any SCO code.
    67. Re:Managed code is the way to go by Anonymous Coward · · Score: 0

      Ever heard of references?

    68. Re:Managed code is the way to go by HeronBlademaster · · Score: 1

      I meant that to claim you should always, without fail, use a boost::shared_ptr or whatever, rather than managing memory by yourself, is incorrect. Your point is a good one, of course, but it would be a mistake to claim "good programmers never use delete". There are always instances where direct memory management is needed (especially when speed is paramount).

    69. Re:Managed code is the way to go by pclminion · · Score: 1

      While I have my doubts about your flawless code

      I suppose I should have been explicitly more humble. I am not claiming that the STL makes me a god. It does, however, eliminate an entire class of bugs. It's not like the only kind of bug in the world is a memory leak. I most definitely still code bugs. Everybody does.

    70. Re:Managed code is the way to go by MrBlue+VT · · Score: 1

      In java I can create two objects which point to each other, but with nothing else pointing to each object, and that memory will be lost for ever, but the garbage collector won't free them because it works by counting references. That is absolutely not true. Any objects that are not reachable from the root set are not considered alive and are free for garbage collection.

      Look here for some more info on the garbage collector in Java (also applies to C#'s generational GC as well).
    71. Re:Managed code is the way to go by KlomDark · · Score: 1

      Curious what development environment you use for your Mono development? Monodev? Eclipse? Or just a text editor? Or some weird use of Visual Studio?

    72. Re:Managed code is the way to go by MemoryDragon · · Score: 1

      However, using modern C++ with tr1, boost, asio etc. I can for example write a stable http server with a fraction of the amount of code necessary in a Java. Wronge example listening to incoming connections and handling the http protocol is part of the java core api, making a java http server is just a few lines of code from the standardized core lib. Getting a fast http server out of the box is a different issue however, then you have to deal with java nio, threading etc.... I just wonder how many locs it takes in C++ to imp lement it without having to rely on a load of third party libraries.

  5. um.... by bennomatic · · Score: 0, Flamebait

    C-what-what?

    --
    The CB App. What's your 20?
    1. Re:um.... by Entanglebit · · Score: 0

      What-plus-plus?

    2. Re:um.... by AshtangiMan · · Score: 1

      what what what?

  6. Finally by m50d · · Score: 0, Flamebait

    I realize companies can't be jumping to the next big thing overnight, but really, the tradeoff was in favour of garbage collection 10 years ago.

    --
    I am trolling
    1. Re:Finally by SatanicPuppy · · Score: 1

      Well Java proves that by sitting solidly at number 1.

      C's greatest strength is speed, and it's clear from the fact that Java (which is slow as hell) ranks higher that speed is not the primary consideration. Neither one of them are exactly a joy to develop in.

      Just as well; I don't trust most people to program in C. It's great if can do it well, but for every person who CAN do it well there are 3 who only think they can.

      --
      ad logicam Claiming a proposition is false because it was presented as the conclusion of a fallacious argument.
    2. Re:Finally by AKAImBatman · · Score: 1, Informative

      Java (which is slow as hell)
      Stop repeating this. If you want to say that Java is slower than C/C++, that's at least a defensible position. (Though not by much. All the benchmarks are showing Java exceeding C++ performance and giving C a run for its money.) But anyone who states that Java is "slow as hell" is painting a big, fat target on his forehead.

      Just a friendly bit of advice.
    3. Re:Finally by osu-neko · · Score: 1

      All the benchmarks are showing Java exceeding C++ performance and giving C a run for its money.

      Bwahahahaha! Good one... thanks.

      On a related note: people still take benchmarks seriously? Seriously?! After all this time? Do we never learn? *sigh*

      --
      "Convictions are more dangerous enemies of truth than lies."
    4. Re:Finally by AKAImBatman · · Score: 1

      On a related note: people still take benchmarks seriously? Seriously?! After all this time? Do we never learn?

      Actually, I do. But it's hard to explain to people that Java performs BETTER than C and C++ in the real world because Real-World Programmers(TM) suck. Even the best programmer lacks the time to write his code as efficiently as he wants unless the difference makes a huge impact on performance. As a result, both Java and C programmers write inefficient code. The key is that the Virtual Machine makes inefficient code fast through runtime analysis and optimization, while the C compiler just takes a best-guess up front.
    5. Re:Finally by ardor · · Score: 1

      Well, since Java has absolutely no support for true generic programming or template metaprogramming, there is zero chance of writing a library that outperforms C++ stuff like Blitz++. People are quick to mention run-time analysis, but fail to recognize C++'s true power, which are the above two. Hell, I can write domain-specific languages in C++ whose expressions are computed at compile-time and the result applied lazily at run-time.... try to do THAT in Java. Try to mimic expression templates in Java.

      Java's main performance problem is that there is a lot of stuff that shouldn't be done at runtime at all. Polymorphism fully known and determined at compile-time is a good example; in C++, I can use specialization here. In Java, the VM has to figure out somehow that this one object is NEVER recast as one of its bases. Note that C++ without generic&metaprograms has the same problem, but the key difference is that in C++, I can SOLVE this.

      Also, it is appaling to see how often the type system is erroneously used to do concept-checking. "Does type X fulfill the requirements of concept Y" is reduced to "is X of type Y or a derivative of Y". An example where this is bad:

      struct vector { float x, y; } // used in library A

      struct Vec2f { float x, y; } // used in library B

      I can't simply use a vector given by library A for API calls used in B, even though the semantics are identical. In C++, this IS possible without dangerous casting.

      If Java >=7 gets true generics (and not this sad joke that internally casts to Object, or the bound type in case of bound generics), then it will be much more interesting. Until then...

      --
      This sig does not contain any SCO code.
    6. Re:Finally by Nicolay77 · · Score: 1

      Java beats C++ only if you have to create every single object in C++ with the new operator. I have to concede that the JVM memory allocator is amazing, and the new operator in C++ is not as good as it should be. But I also have to note that the benchmarks I have seen use C++ like if the stack was not there.

      If you can put all those objects in the stack, C++ easily outperforms Java by a factor of 20-60.

      So it actually depends on how many objects you need to create in the heap and how many can reside in the stack. In other words it depends on the program you're writing.

      --
      We are Turing O-Machines. The Oracle is out there.
  7. not really for me by stokessd · · Score: 1

    For simple tasks that I used to do in C I'm now doing in python... But I did start programming more in Objective-C so in my world C have morphed not necessarily gone away.

    Sheldon

  8. so what? by rastoboy29 · · Score: 2, Interesting

    Of course C++ is losing ground.  But does it matter?  No.

    If you still need optimum performance at any cost--like for OS's, many games, simulations, etc.--you must use the C's.  If you don't, then your Java or favorite scripting language will give you faster development time and easier deployment.

    So it just doesn't matter.  I still don't consider someone a proper coder unless they know C++, though.

    1. Re:so what? by dreamchaser · · Score: 4, Insightful

      I consider a proper coder to be anyone who can write a proper flowchart and the pseudo-code/logic for their target application. It has nothing to do with the language they finally use to implement.

      That being said, I agree with you otherwise. The first thing I thought of when I read the summary was 'lazy coders' when garbage collection was cited as a driving factor. That's the sad fact; many of the kids being cranked out of schools today can't code their way out of a paper bag without a compiler/interpreter that does most of the dirty work for them.

      Yeah I know. Get off my lawn.

    2. Re:so what? by MyDixieWrecked · · Score: 1

      I agree.

      The way I see it, a proper coder is someone who can write complex programs that work, are secure and can fail gracefully (or better yet, recover from errors). It doesn't matter if you're writing Java, PHP, C or VB.

      I've seen some pretty amazing things done in VB, and I've also seen some pretty amazing things done with nothing but C and the standard library without any kind of GUI (MP3 encoders, etc).

      When I first started coding and I was using various BASICs (QBASIC, REALbasic, VB), I didn't consider myself to be a true programmer... when I learned C/C++, I still didn't consider myself a real programmer because I couldn't write something with a GUI. When I learned Obj-C, PERL, Python, Ruby, Applescript, et al, I started to realize what programming was and what it meant to be a programmer.

      It wasn't until I started seeing how poorly many applications are written and how hard it really is to write good software. No matter what language you're using, no matter what tools you use, whether you use Eclipse, vi, emacs, wordpad, or textmate... if the end product isn't solid, you're not a good programmer.

      --



      ...spike
      Ewwwwww, coconut...
    3. Re:so what? by dreamchaser · · Score: 1

      Ah, nostalgia. I started coding around age 12. I did use BASIC at first, but found out very quickly how to POKE opcodes directly into memory, so I started doing most stuff in Z-80 machine language (not assembly, there were no memnonics for the opcodes with what I had to work with). Then came Pascal, then the C's, etc.

      Proper coding is language and GUI independant. I'd love to see some 'coders' who are used to doing everything all nice and GUI'ish write a device driver or OS kernel (yes, I've done both). Not all, but many, are not really very good these days and the quality or lack thereof of software and all the bloat it entails stands as a testement to that fact.

    4. Re:so what? by Anonymous Coward · · Score: 0

      The things you mention, plus:
      As computers become faster, there is actually more possibilities to do things in real time, which paradoxically means you have to write code to do things as fast as possible. Which is to say, proper native compilation.
      DSP as it shows up in real time audio and video processing, codecs and streaming seems to never be fast enough. And when it is, you can always consume the headroom with improved signal quality.

      Basically, any field where assembly level optimizations are still par for the course, will probably not be suitable for higher level languages for some time yet.

    5. Re:so what? by Anonymous Coward · · Score: 0

      still don't consider someone a proper coder unless they know C++, though.

      I still consider C++ a pile of crap used by so-called self-claimed "techs". If you cannot design the circuits and build prototypes before sending designs to febs, you're just a wuss that thinks you know what you are doing Any fool can program. Why do you think software is so shit and flaky?

    6. Re:so what? by moderatorrater · · Score: 2, Insightful

      The first thing I thought of when I read the summary was 'lazy coders' when garbage collection was cited as a driving factor While I somewhat agree with you, there are two things that I think you're overlooking. First, there are going to be bad programmers no matter what you do. Someone can sound good in an interview and turn out to be awful. Until everyone realizes that and comes to the decision that the programmer in question should be fired, they're introducing code to the system. Or, even worse, they're not bad enough to fire, but bad enough that it could be a problem. These people will always be there, so you have to try and work around them.

      Second, everyone makes mistakes. I don't care who you are, if you write 1 million lines of code, there's going to be a bug in there somewhere. Given enough bugs, there's going to be one you don't catch. Garbage collection takes away a class of bug and makes it so that even the very good programmers can write more stable code.

      There's a lot to be said for programmers getting taught better and applying those principles better, but in the end, taking away a class of bugs is going to be useful in the long run. Even with garbage collection it's possible to run into memory management problems, but it's a lot harder.
    7. Re:so what? by dreamchaser · · Score: 1

      Actually in general I agree, but I also think that every single CS student should have to write his/her own garbage collection libraries/routines before they ever graduate. It's like teaching someone to walk on crutches otherwise.

    8. Re:so what? by MyDixieWrecked · · Score: 1

      ahhh, yes... I remember PEEK and POKE... I remember my friend showing me how I could use those commands to communicate with a joystick and control LEDs on the computer.

      You really don't realize how good today's programmers have it until you try to run relatively modern applications on older hardware. Hell, even websites require relatively fast systems just to use.

      Try using a 'killer' machine from 1999 (500mhz, 512MB RAM running windows98 or MacOS 8.5) to surf today's web. Sites like amazon.com bring it to its knees. The amount of code in the page, the javascript, the CSS... it kills.

      I've got a vaio pcg-505tx that I'm using as a super mobile laptop right now. It's a 300mhz Pentium1 with 128MB RAM (it's maxed out). I even upgraded it with a 8GB SSD with the hopes of making swap happen faster. I've got Xubuntu installed on it with many services disabled and I have almost no RAM available to myself (about 25MB free). When I log into gmail with firefox, the machine swaps like crazy and I get an error that the javascript is taking too long to run and it wants to kill it.

      Back in those days, you didn't have high-resolution, 32-bit icons everywhere, buttons were simple line art as were window decorations.

      Low memory systems are not ideal for using hardly ANY modern applications. Even the overhead from the encryption when transferring files over SSH can overload slower machines.

      It boggles my mind when I think about how the old console games used so little RAM and so little space for the executable code. Programming on the arduino has taught me how little space 8K really is. Creating a usable bitmap alphabet for a dot-matrix character display nearly maxes that out.

      With today's limitless resources (CPU/RAM/storage), no one keeps an eye on optimizations unless it's to squeeze out an additional frame per second or render that additional polygon, and even then, optimizations aren't being used to their full potential.

      --



      ...spike
      Ewwwwww, coconut...
    9. Re:so what? by bnenning · · Score: 1

      The first thing I thought of when I read the summary was 'lazy coders' when garbage collection was cited as a driving factor.

      It's not laziness, it's a recognition that developer time is finite, and it's often much better to focus on improving actual functionality rather than poring over the details of memory management. Are C developers lazy because they let the compiler do the dirty work of register allocation?

      --
      How to solve most of our problems: 1.Lots of nuclear plants. 2.Cure aging.
    10. Re:so what? by Anonymous Coward · · Score: 0

      I consider a proper coder to be anyone who can write a proper flowchart ... I consider a proper coder to be anyone rolling on the floor laughing at that statement. No one uses flowcharts past puberty.
    11. Re:so what? by dreamchaser · · Score: 1

      YOU HAD 8 KILOBYTES TO WORK WITH???? Lucky you ;)

      Just teasing...a little. I started on 4k. The expansion to 16k gave me a woody (remember, I was like 12 or 13 at the time).

    12. Re:so what? by dreamchaser · · Score: 1

      Are C developers lazy because they let the compiler do the dirty work of register allocation?

      If they never bothered to learn how to manually allocate registers and resources then yes, yes they are. I have no problems with using higher level languages and things like garbage collection. It's the not learning how to do it yourself part that troubles me.

    13. Re:so what? by cdrudge · · Score: 1

      My first year of college my intro CS courses were C++ with an additional course of assembly on a RISC box. I couldn't afford out of state tuition so I moved back to my home state and switched colleges. There, I had to retake my intro CS classes as my new college had just started using Java. After learning (at least the basics) of a "real" language, those two Java courses were a piece of cake. I am very glad that I took those C++ classes as it taught me a lot more of the nitty gritty details of memory management, efficiency, etc. But I also appreciate the greater ease of doing things in Java (actually .Net these days for me) as I don't have to worry about all those little details and instead can worry about getting the project done on time and moving on to the next thing.

    14. Re:so what? by ajs · · Score: 1

      Of course assembly is losing ground. But does it matter? No.

      If you still need optimum performance at any cost--like for OS's, many games, simulations, etc.--you must use assembly. If you don't, then your C, C++ or favorite business language will give you faster development time and easier deployment.

      So it just doesn't matter. I still don't consider someone a proper coder unless they know assembly, though.

      What's interesting about the above is that a) I changed very little of what you said and b) it's the sentiment that you would have expected to hear in the late 80s.

      We're scaling our idea of "low level language" much more slowly than we're scaling compute performance, but it is scaling up, and one day in the not so distant future, I do expect the sense of what low-level is to shift up to languages that include native GC, bounds detection and a few other features that are not common to languages that we currently consider "low level." That said, I do not expect that to include Java, only because of the abstraction of the JVM.

    15. Re:so what? by gbjbaanb · · Score: 1

      it's often much better to focus on improving actual functionality rather than poring over the details of memory management.

      unfortunately, with a managed language you only shift the burden of poring over the details of memory management to poring over resource management and memory overusage. You still have to have control over what your program is doing and how its doing it, if you abrogate that responsibility you end up with poor code no matter what language its written in.

      This is the biggest problem with managed code - people have been told (and believe) that it does all the hard work for you. This used to be the case with VB.classic - people believed you just clicked some code together in a .cls module and it would work fine. We all know how well that turned out for the industry.

    16. Re:so what? by Sancho · · Score: 1

      Not all, but many, are not really very good these days and the quality or lack thereof of software and all the bloat it entails stands as a testement to that fact. To be fair, at least some of the lower quality and higher bloat has to be attributed to management requiring high turnaround for applications. It's one thing to write code well. It's another thing to write code well and fast.
    17. Re:so what? by Anonymous Coward · · Score: 0

      The other issue is that people are relying on the garbage collection to fix their logic errors and obscene resource consumption.

      I was helping a friend with his Java homework and his implementation was fine from a textbook standpoint. It just required about 200 gigs of memory to run. It was fun watching the garbage collection try and handle it.
      I asked him how much memory his program needed and he had no idea. The courses attempt to insulate the programmer from the architecture so much that such items as physical memory, speed, etc. aren't even considered relevant, when in reality they are one of the most important factors.
      The idea of machine independent code is a nice thought, but the reality is you will always be limited to your architecture. Removing that as a consideration simply leads to hugely bloated coding practices.

    18. Re:so what? by osu-neko · · Score: 1

      A proper coder can write a pretty info kiosk app or an unseen device driver, a database frontend or a file system, a dynamic web page or an HTTP server, a quick shell script or an operating system from scratch. He or she can extract the nth element of a list using nothing but car and cdr, or generate a complete app with a few clicks in the latest visual framework, and can write elegant code in Ruby, Smalltalk, C++, Java, Fortran, assembly language, and even BASIC. Specialization is for insects. ;)

      --
      "Convictions are more dangerous enemies of truth than lies."
    19. Re:so what? by thoughtfulbloke · · Score: 1

      We have a 'killer machine' from 2000 (dual 450mhz G4, 512 MB RAM) primarily for household web and related activities. I wouldn't want to be using System 8.5 (it's running 10.4.11 these days) but hardware-wise it is an entirely useable experience. Because the load is being divided up among the processors, it wouldn't be so great for computationally intense activites (i.e. on the fly video) that can't split up the work, but general use is fine.

    20. Re:So what? by maz2331 · · Score: 1

      I still can't see any real reason for Ada over Pascal. It seems to me that Ada is really just Pascal with some additional features to make it a pain to work in.

    21. Re:so what? by Anonymous Coward · · Score: 0

      Are you saying you can code your way out of a paper bag?

      Color me impressed.

    22. Re:So what? by Jim+Hall · · Score: 1

      Times change, and it should be unsurprising that the dominant programming languages change along with it. Some day, Java, PHP, Visual Basic, Python, and Ruby will all be obsolescent as well. Thirty years ago, computers were vastly different than they are now. In another thirty years, there will have been another quantum leap (intended) in computing. Why should the languages we program them with remain the same?

      C/C++ is really strong today, and I don't forsee it going away in the next 5-10 years. I do agree that after that time, even drivers may be written in something else. Don't worry, though. For those of us who know the languages, C/C++ will be really hot skills in about 30 years. I'll be about 65 then, ready to do some consulting/coding before I finally retire. :-)

    23. Re:so what? by lsolano · · Score: 0

      Agree 100%.

      Many people still think that programming is just a matter of dragging things from a left toolbar to the main window.

    24. Re:so what? by Abattoir · · Score: 1

      I consider a proper coder to be anyone who can write a proper flowchart and the pseudo-code/logic for their target application. It has nothing to do with the language they finally use to implement. Hot damn, there's hope for me yet as a programmer :-). About all I really remember from programming classes in college is flow charts and pseudo code.
    25. Re:so what? by Prune · · Score: 1

      That's a great post. I'm going to save this in my bookmarks about setting up interview questions

      --
      "Politicians and diapers must be changed often, and for the same reason."
    26. Re:so what? by Anonymous Coward · · Score: 0

      For this you can blame the schools which have forced us to lean and move to Java. I was actually the last class to learn C++ before the official switch. I pity the fools that came after me thinking Java is all they need to know. Just wait till they hit the real world.

    27. Re:so what? by Anonymous Coward · · Score: 0

      I started doing most stuff in Z-80 machine language (not assembly, there were no memnonics for the opcodes with what I had to work with). Of course there were mnemonics for the opcodes, you just weren't using them ;-)
    28. Re:so what? by Speare · · Score: 1

      I also appreciate the greater ease of doing things in Java (actually .Net these days for me) as I don't have to worry about all those little details and instead can worry about getting the project done on time and moving on to the next thing.

      I dunno but the next thing after writing a bit of Java code is usually wrapping each statement in try/catches or fuglifying your methods with all kinds of throw declarations you don't care about.

      --
      [ .sig file not found ]
    29. Re:so what? by moxjake · · Score: 1

      That's the sad fact; many of the kids being cranked out of schools today can't code their way out of a paper bag without a compiler/interpreter that does most of the dirty work for them. Thats because computer science curricula don't teach programming -- they teach computer science. Programming is a skill, not a science, and there are few school that teach it. Most good programmers learned how to program by doing it, not by sitting around talking philosophically about how it SHOULD work.
  9. Dying...not hardly by PalmKiller · · Score: 4, Insightful

    I know I am gonna get flamed for this, but they said web programming, like its the only game out there. Sure its not web 2.0 friendly, and sure most web script kiddies don't use it...mainly because it don't hold their hand, but its far from dead when your are needing to squeeze every last ounce of power out of your hardware, or even that other 25-30% of it.

    1. Re:Dying...not hardly by QuantumG · · Score: 1, Redundant

      No, they said web *presence*. Ya know, like how many web pages there are about the language..

      --
      How we know is more important than what we know.
    2. Re:Dying...not hardly by PalmKiller · · Score: 1

      Oops, your right. Surely they jest.

    3. Re:Dying...not hardly by moderatorrater · · Score: 1

      its far from dead when your are needing to squeeze every last ounce of power out of your hardware, or even that other 25-30% of it. While this is true, it's also something that doesn't come up that often really. Garbage collection and other automated features for languages can eliminate the vast majority of bugs in software. If you don't have to worry about buffer overflows and memory leaks, your code will be more secure, more stable and cost less to maintain. Being resource hungry is a tradeoff that most companies would make and many consumers as well.

      Besides, C and C++ will live on forever in most of the languages that have come since and as the foundation for those languages. Sure, PHP is popular, but the engine's C, same with perl and the other scripting languages.
  10. What about desktop presence? by Noodles · · Score: 4, Insightful

    I develop desktop application software. Right now I wouldn't think about using anything else but C++.

    1. Re:What about desktop presence? by Anonymous Coward · · Score: 0

      so if I hear you correctly, you're thinking about using C?

  11. C programmers don't care by Anonymous Coward · · Score: 0, Troll

    C programmers are a bunch of cynical old men. We don't have an irrational love of our favourite language. It's simply a tool for a job.

    If python or Ruby or Java does the job better, or faster, or more easily, then use that language. They're just programming languages.

    1. Re:C programmers don't care by osu-neko · · Score: 1

      Heh. Very true. I use to have the old "C: God's Programming Language" as my desktop wallpaper. I still consider it my favorite language. But I was struck the other day by the fact that I haven't actually used C for anything in the last three years. I used to bang out quick C programs for many little tasks, but these days I usually end up using whatever scripting language best suits the need, and for larger projects, whatever has the best libraries and support for the needs. If I were going to do it all from scratch, I'd want to start from C, but I've long since gotten over the "not invented here"/"not written by me" syndrome.

      I wonder if it's related to my slowly changing attitude where I went from viewing coding as a calling and an art form to viewing it as a means to get a job done.

      But "cynical old man?" Ouch...

      --
      "Convictions are more dangerous enemies of truth than lies."
  12. Wow by ucblockhead · · Score: 2, Funny
    Down 0.77% in a year? Alert the presses!


    Almost as bad as Jeff Atwood and Joel Spolsky calling them "dead languages" on their new podcast.

    --
    The cake is a pie
    1. Re:Wow by HappyEngineer · · Score: 1

      Given that the highest percentage in the list (Java) got only 20.529%, it seems to me that 0.77% is significant.

    2. Re:Wow by gbjbaanb · · Score: 1

      So they think C# is the ultimate? I suppose they have a point, 3% today.. 4% tomorrow. Global domination by Sunday teatime.

    3. Re:Wow by Hyperspite · · Score: 1

      Also, don't forget the error margins inherent in a survey like this. 0.77% might be within the error bar xD

    4. Re:Wow by Paul+Dubuc · · Score: 1

      Taken together, which actually makes a lot more sense to do than any other two languages (they are often used together in the same project), C and C++ have the highest percentage.

  13. How much of those are .NET? by Anonymous Coward · · Score: 0

    I wonder how much of the Visual Basic and C++ are the .NET variety?

  14. Sample Sets and Beta by 4solarisinfo · · Score: 1

    I really want to know if professional programmers out there think what shows up on the web is an accurate sample set of what is going overall in the programming community.
    When I ran a Video Production shop, I was always explaining that what you saw on TV was only a very small portion of the market share of Video Production. There's a lot of things that just aren't for public consumption.

  15. C++ is as good as C# _if_ used correctly. by Anonymous Coward · · Score: 0

    C++ manages memory for you, simply use boost shared_ptr/weak_ptr. Also, GC's are available for C++ (and C).

    Too bad so many people can't use _modern_ c++

    1. Re:C++ is as good as C# _if_ used correctly. by Nova77 · · Score: 1

      +1. Modern C++ is way different from the old day paradigms. Just look at the boost library.

    2. Re:C++ is as good as C# _if_ used correctly. by pclminion · · Score: 5, Insightful

      GC is available for C++, but IMHO inappropriate. One of the great advantages of C++ is that the construction/destruction mechanism, along with automatic variables, gives you absolute control of the lifetime of every single resource. Whereas a garbage collected language like Java gives you absolutely no control over when (if ever) an object is destructed. I think it is a little wacky to give up this total control of object lifetimes in return for such a puny benefit, a benefit which could easily be achieved through C++ resource management techniques like RAII.

      And anyway, garbage collection is irrelevant if you never "new" anything in the first place.

    3. Re:C++ is as good as C# _if_ used correctly. by Chris+Burke · · Score: 2, Informative

      And anyway, garbage collection is irrelevant if you never "new" anything in the first place.

      True, but your program is pretty trivial if it never needs to dynamically allocate a memory resource.

      --

      The enemies of Democracy are
    4. Re:C++ is as good as C# _if_ used correctly. by pclminion · · Score: 4, Informative

      Programs which use STL containers instead of manual memory management are "trivial?" This is news to me.

      Avoiding the use of "new" is not the same as avoiding dynamic allocation. You simply let the containers handle it for you. Yes, there are pointers flying around, but they are out of sight, and managed by code that actually does things properly for you.

    5. Re:C++ is as good as C# _if_ used correctly. by Anonymous Coward · · Score: 0

      Darn right.

      But with the crop of current 'programmers' schools are churning out lately, a 'safe' garbage collected
      language is necessary.

      Schools are taking shortcuts everywhere. Don't worry
      about the 'hard' stuff, let java do it for you.

      a language that is as isolated from the OS and the 'bare metal' is required for these sub-par programmers so they can't do any real damage, except to a poor virtual machine.

    6. Re:C++ is as good as C# _if_ used correctly. by Chris+Burke · · Score: 1

      Oh, you literally meant only explicit calls to operator new() in non-constructor code. Okay.

      I view having to call erase() to free up the memory consumed by an object in an stl structure that is no longer needed to be a form of manual memory management. If you never have to do that, and only ever deallocate stl objects by letting them go out of scope, then that does to me constitute a trivial example, at least from a memory management point of view.

      --

      The enemies of Democracy are
    7. Re:C++ is as good as C# _if_ used correctly. by Haeleth · · Score: 1

      Yes, there are pointers flying around, but they are out of sight, and managed by code that actually does things properly for you.
      Right up until the moment that you need to use inheritance, and suddenly you realise that you're screwed, because the only way you can use an STL container with C++'s broken OO is if you're sticking pointers in that container. Pointers that you have to manage.

      (Oh, sure, there's a Boost library that offers STL-like containers that can manage pointers to polymorphic objects for you, but by the time you find out about that, you've already written reams of code that's totally broken in subtle ways...)
    8. Re:C++ is as good as C# _if_ used correctly. by pclminion · · Score: 1

      Right up until the moment that you need to use inheritance, and suddenly you realise that you're screwed, because the only way you can use an STL container with C++'s broken OO is if you're sticking pointers in that container.

      boost::shared_ptr. Problem solved.

    9. Re:C++ is as good as C# _if_ used correctly. by bar-agent · · Score: 1

      True, but your program is pretty trivial if it never needs to dynamically allocate a memory resource.

      Not at all. Embedded applications often have maximum sizes that they allow for strings, buffers, and caches, and they set aside this space in advance, so they never have to do dynamic allocation.

      --
      i'd hit it so hard, if you pulled me out you'd be the king of britain [bash.org]
    10. Re:C++ is as good as C# _if_ used correctly. by WilyCoder · · Score: 1

      Thanks for the post. RAII looks like a really nice concept. I'm going to try and work it into my current project :-)

    11. Re:C++ is as good as C# _if_ used correctly. by pclminion · · Score: 1

      I view having to call erase() to free up the memory consumed by an object in an stl structure that is no longer needed to be a form of manual memory management.

      I agree. However, erasure of objects is tightly coupled to the actual algorithm being implemented. It is of course always possible to get the algorithm wrong. Nobody, including me, writes flawless code.

    12. Re:C++ is as good as C# _if_ used correctly. by Anonymous Coward · · Score: 0

      What a load of bollocks!

      RAII, the buzzword, was invented *because* Java made C++ look bad. Suddenly, somehow, a 'you gotta, or else' became 'a nice thing'. There's exactly nothing that you can do with RAII that you can't with a try {} finally {} block, finalisers, and GC. The cool thing *again, for the thick skulled* is that you don't need to code for it. The GC knows when something is out of scope. If you know better, you can close it yourself to optimise. And you know what? If you happen to be wrong (well, not *you* obviously, just all the other C++ programmers), GC will still be right, and RAII... won't.

    13. Re:C++ is as good as C# _if_ used correctly. by pclminion · · Score: 1

      There's exactly nothing that you can do with RAII that you can't with a try {} finally {} block, finalisers, and GC.

      I don't know what you Java folks are smoking, but it must be good shit when you think that three different concepts replacing a single simple concept is somehow an improvement.

    14. Re:C++ is as good as C# _if_ used correctly. by Anonymous Coward · · Score: 0

      Totally agree. However, it is unfortunate that this most powerful facility of C++ (stack-based resource management if you will) has pretty much given way to "modern" C++, invariably meaning "programming with templates", a.k.a., programming by text substitution. If C++ goes down the digital toilet, blame it on the people who promote templates.

      One can, as I have, develop a complete programming style out of an understanding of the power of this single facility. I ain't no dummy; I can probably pick up any other language I need to easily. But there is absolutely no other language that can match the pure power of using C++ in this particular way.

    15. Re:C++ is as good as C# _if_ used correctly. by jtshaw · · Score: 1

      "Whereas a garbage collected language like Java gives you absolutely no control over when (if ever) an object is destructed."

      That is the single biggest miss-conception that hurts java programs everywhere. The fact is, to write large high performance java programs you still have to be conscious of what is actually going on. That is why some JVM's have tuning parameters for the types of garbage collection as well as other aspects of the JVM your code is running in.

      Garage collection happening automatically in no way, shape, or form implies any level of performance, good or bad.

      http://java.sun.com/performance/reference/whitepapers/tuning.html

    16. Re:C++ is as good as C# _if_ used correctly. by ardor · · Score: 1

      Obviously you fail to understand key differences between RAII and the Java GC. The fact that you mix in try/finally only adds up to this.

      RAII ensures the destructor is ran once the scope is left. The Java GC does not guarantee this. This is ok for simple memory blocks, but very bad for resources that must be freed instantly, like some locks/handles on devices. In Java, I have to use finally. In C++, RAII not only takes care of cleaning up, it also ensures exception safety.

      D got it right; destructors are executed when the scope is left, but the used memory is freed up whenever the GC wants.

      Additionally RAII *does* allow stuff that cannot be done with your replacements. Just try this:

      mutex m;

      {
          scoped_lock lock(m); ... do stuff ...
      }

      Exception-safe mutex locks that are automatically freed once the scope is left. Do THIS in Java.

      Also, finalizers are amusing stuff: http://www-128.ibm.com/developerworks/java/library/j-jtctips/j-jtc0319a.html

      --
      This sig does not contain any SCO code.
    17. Re:C++ is as good as C# _if_ used correctly. by Anonymous Coward · · Score: 0

      Garbage Collection in and of itself is inappropriate.

      There's no way a runtime is going to know or even guess correctly at how you're losing memory.

      It's like recording video with everything on your camera set to "auto" and then calling yourself a "professional" filmmaker. It's a joke.

      You can call yourself a professional all you like, but unless you truly understand what's going on, you're really not.

    18. Re:C++ is as good as C# _if_ used correctly. by Anonymous Coward · · Score: 0

      This study is bogus. It's based on the query string
      +"(language) programming"

      What kind of Java programmer (or whatever language) looks up "Java programming"?
      This study is more likely a reflection of what is being taught in computer courses.

    19. Re:C++ is as good as C# _if_ used correctly. by Anonymous Coward · · Score: 0

      The problem with reference-counting pointers like boost::shared_ptr is that they introduce additional memory and computation overhead. They make life easier, but they aren't a panacea. And worst of all, they aren't in the standard library (yet). :-)

      In any case, I find good RAII design to be a pretty hard undertaking in and of itself. Thinking carefully about the lifetimes of shared objects is almost as much of a hassle as manual memory management (the actual use of which I never found so hard; long time C programmer here).

      Especially because of exception safety (and in the shared case, reference counting), C++ classes need to be designed so they can be destructed at any time. That takes a lot of work, too.

      And of course, no reference-counted solution can ever solve a memory allocation problem that avoids cycles (although I generally try to avoid circular data structures to begin with).

    20. Re:C++ is as good as C# _if_ used correctly. by Anonymous Coward · · Score: 0

      Java already has a synchronized (monitor object) statement, so it already has exception-safe locking as a core part of its design. (And not mutexes, but monitors, which avoid a lot of the potential deadlock issues.)

      Sure, that's just one example, and C++ can do a lot of things Java can't. But that's by design. I'd argue that that power is a terrible thing, however (operator overloading, anyone?), and more abused than useful.

      One of the worst things about C++ is how much "surprising" behavior can result, because it's all hidden behind "elegant" code. Yes, if you cross every last t and dot every last i, C++ works great, but that's a huge amount of work to get the same amount of simplicity you can find in other languages today.

    21. Re:C++ is as good as C# _if_ used correctly. by pclminion · · Score: 1

      The problem with reference-counting pointers like boost::shared_ptr is that they introduce additional memory and computation overhead.

      This is true. But in an argument about C++ squaring off against some other language, the other language usually also has an equivalent level of overhead. For instance Java GC is not "free."

      And of course, no reference-counted solution can ever solve a memory allocation problem that avoids cycles (although I generally try to avoid circular data structures to begin with).

      When I use cyclic data structures (which is not often) I just use weak pointers between the objects -- the objects themselves are owned by a supervisor container.

      And of course, it's always possible to "leak memory" by simply forgetting to lose a reference to something that you don't need anymore. That's possible in any language.

    22. Re:C++ is as good as C# _if_ used correctly. by Anonymous Coward · · Score: 0

      There's at least one gaping hole in the RAII paradigm: What if you want to throw an exception during destruction? (Not all resources can be freed without failure.)

      Answer: You can't. (Or at the very least, not without extensively language lawyering your particular use first.) So you're back to making sure you deallocate resources with an explicit release() method or something like that.

      It'd be nice if C++ had something like Java's finally for these situations (rare though they might be), instead of relying exclusively on the constructor/destructor mechanism to handle everything.

      In fact, Microsoft already supports finally as an extension to their C++ compiler, and it's being considered for the next ISO standard. (Though that article doesn't address my issue with the advisability of throwing an exception in the destructoor.)

    23. Re:C++ is as good as C# _if_ used correctly. by pclminion · · Score: 1

      There's at least one gaping hole in the RAII paradigm: What if you want to throw an exception during destruction? (Not all resources can be freed without failure.)

      This is a valid point. I'm not sure I understand how finally{} can solve it, though -- can you elaborate?

      As far as resources which might fail to be freed, these things seem few and far between, and I just try to accept that dealing with those kinds of resources is more complex and error prone than other resources. Not everything is cake, but most of it is.

    24. Re:C++ is as good as C# _if_ used correctly. by ardor · · Score: 1

      Surprises are actually language-independent. Any complex construction may show up "surprising" behaviour. In C++, the syntax sometimes makes it even worse; typos may result in valid code (like an unintended invocation of the comma operator) that crashes at run-time.

      I'm not saying C++ is the zenith of programming. I am saying, however, that there is absolutely nothing that can replace its entire range. Subsets? Sure, Java and C# are subsets of C++' expressiveness. But the entire range? You have to glue several languages somehow, and this is awful and often very inefficient.

      I think the future of programming languages (which is actually a blast from the past, like 90% of all programming "novelties") is actually present in C++ already, but in an ugly fashion: languages that adapt themselves in a metalayer to the problem. C++ can do this, although its a huge PITA because of the template syntax and error messages. Lisp is king there, but AFAIK cannot do this at compile-time. Python, too, can do this. Java and C# lose here. This is why many features that need to be built-in in Java/C# are often realized by writing a library in C++, Python, Lisp.

      As of "by design", I fully reject "dumbing down by design". Java isn't a sane subset of C++, it threw away key advantages. Thanks to missing real generics, it is absolutely impossible to write truly generic stuff in Java. You could never ever write something like Adobe's GIL or Antigrain with the same efficiency. Example: two vector classes that both have 3 floats, xyz; they are identical, but thanks to missing true generics, I have to write glue code, or agree on a base class, which is very problematic. In C++, I don't NEED glue code at run-time; I may need some at compile-time, but it is optimized away. People keep shouting at the JIT compile stuff and forget important things like this. Well, hopefully Java 7, 8, whatever, will include them.

      --
      This sig does not contain any SCO code.
  16. Where's LSL? by m_schnei · · Score: 0
    http://en.wikipedia.org/wiki/Linden_Scripting_Language

    It's turing complete, after all. And there are myriads of scripts around in the (virtual) world. ;-)

    --
    Nerdy by Nature!
    1. Re:Where's LSL? by osu-neko · · Score: 1

      And if you're really lucky, you can log in today and rez something to put a script in! :p

      I actually used to hate LSL, and I still hate many things about it, but it's got a few adorable quirks, especially if you like state-machines -- you can write them in any language, but when the language explicitly supports them, it can clean up and beautify a lot of code.

      Now if only we had arrays, hashtables, and structs... or even decent list syntax (I don't care if it'd just be syntactic sugar, I want my sugar!) And boolean ops that short circuit. Grr. I hate LSL...

      --
      "Convictions are more dangerous enemies of truth than lies."
  17. not so.. by Anonymous Coward · · Score: 1, Interesting

    when we have internet that is as fast as cpu response times c and c++ will go the way of the dinosaur and the internet will be your main application platform and gaming platform, meaning game over for c and c++.

    1. Re:not so.. by PalmKiller · · Score: 0, Flamebait

      AC, your an idiot.

    2. Re:not so.. by ArcherB · · Score: 4, Insightful

      when we have internet that is as fast as cpu response times c and c++ will go the way of the dinosaur and the internet will be your main application platform and gaming platform, meaning game over for c and c++. As long as computers need an OS, C/C++ will be in wide use. All major OS's are written in C/C++ and will be for the foreseeable future.
      --
      There is no "I disagree" mod for a reason. Flamebait, Troll, and Overrated are not substitutes.
    3. Re:not so.. by Anonymous Coward · · Score: 4, Funny

      Coming from someone who can't handle the concept of a contraction, it doesn't carry the weight you think it does.

    4. Re:not so.. by omeomi · · Score: 1

      Yeah, somebody just needs to write an Operating System in "Internet", and then we'll be set.

    5. Re:not so.. by Anonymous Coward · · Score: 1, Interesting

      As long as computers need an OS, C/C++ will be in wide use. All major OS's are written in C/C++ and will be for the foreseeable future. I'm sure the same was said quite a while ago with assembly swapped for C/C++. And, for the sake of application reliability and programmer productivity, one can only hope that the unforeseeable, but inevitable, future comes sooner than later.

    6. Re:not so.. by gangien · · Score: 4, Insightful

      I wouldn't be so sure.

    7. Re:not so.. by heelrod · · Score: 1

      whatever. Oh wait. PC's are the only computers in the world. Never mind. JAVA for everything.

      yea, OK, sure thing

    8. Re:not so.. by peragrin · · Score: 2, Interesting

      I hate to say so, but MSFT's Singularity and now others(including Open Source versions) are doing a core OS in C# and .NET. It is something innovated from MSFT.

      It will take time, but it's well within the foreseeable future.

      --
      i thought once I was found, but it was only a dream.
    9. Re:not so.. by Anonymous Coward · · Score: 0

      lulz

    10. Re:not so.. by lgw · · Score: 1

      Using a language with garbage collection for the kernel is a bit of a joke. However, saying that device drivers don't belong in the kernel, and might as well be written in C# or Java, is an ongoing holy war.

      I'm sure we'll reach the point evenutally where a micro-kernel written in C or C++, with the rest of the OS written in Java or something, will make sense.

      Oddly enough, given the apparant decline in popularity of garbage collected languages, C++0x (the next C++ standard) looks like it will require compilers to provide (opt-in) garbage collection.

      --
      Socialism: a lie told by totalitarians and believed by fools.
    11. Re:not so.. by RiotingPacifist · · Score: 5, Funny

      The day the linux kernel is coded in anything other than C, is the day i after i install duke nukem forever on hurd.

      --
      IranAir Flight 655 never forget!
    12. Re:not so.. by msuarezalvarez · · Score: 1

      Are you seriously saying that this is an innovation from MSFT?

    13. Re:not so.. by harry666t · · Score: 1

      D the Programming Language should be very suitable for kernel development (C/C++/Java-like, compiles to machine code, plays nice with asm, has GCC frontend, etc). Some time ago I was even thinking of making a simple bootable piece of D code, at least hello world, but meh, again it turned out I'm too lazy to even start (:

    14. Re:not so.. by Anonymous Coward · · Score: 0

      LOL. Making an OS out of an interpreted language (*VM) is like... running Vista.

    15. Re:not so.. by goombah99 · · Score: 1

      Using a language with garbage collection for the kernel is a bit of a joke. ...

      I'm sure we'll reach the point evenutally where a micro-kernel written in C or C++, with the rest of the OS written in Java or something, will make sense. Mac OS is written in Objective-C. Objective C now has garbage collection. And it arguably is more like java than C++. (e.g. run-time linking).

      The message passing interface of Objective C also seems to be a good match to the message passing interface of the mach kernel.

      So I'd say your statements don't really hold up.

      --
      Some drink at the fountain of knowledge. Others just gargle.
    16. Re:not so.. by Anonymous Coward · · Score: 0

      no it's not, in order to boot some D code you have to stub out all the runtime library which is a major PITA, and it turns out definitely messy

    17. Re:not so.. by andersbergh · · Score: 4, Informative

      Well, the kernel definitely isn't written in Objective-C, here are the languages they use:
      C for the kernel
      Embedded C++ for the drivers (IO Kit)

      But many of the applications that make up OS X however are written in Objective-C.

    18. Re:not so.. by andersbergh · · Score: 1

      Shouldn't be too hard: I've ran D code on the Nintendo DS without a runtime in the background. Tango has separated the runtime so it shouldn't be too hard to get the rest running as well (especially with the stub gc). But yes, I wouldn't really agree that D is a suitable language for OS dev.

    19. Re:not so.. by goombah99 · · Score: 1

      hmmm. well I learned something.

      --
      Some drink at the fountain of knowledge. Others just gargle.
    20. Re:not so.. by porkchop_d_clown · · Score: 2, Funny

      Let me know when you're finished with that Linux replacement.

    21. Re:not so.. by porkchop_d_clown · · Score: 1

      Singularity is interesting but it's just a research project, it's not intended to ever become a real OS.

    22. Re:not so.. by gwk · · Score: 1

      Your right singularity is an interesting project that could have very positive effects on OS research. Even re-writing a kernel in Cyclone (http://en.wikipedia.org/wiki/Cyclone_programming_language) and other interesting changes ... I have always wondered if a co-operative multitasking system for processes in kernel space would be a huge improvement. JNode on the other hand is a bad joke, throw away the MMU so we can't safely run any C/C++ or FORTRAN code? Billions of lines of code flushed down the toilet to what end ?

    23. Re:not so.. by dwater · · Score: 1

      He didn't complete his sentence. He was saying something about your 'an idiot'. You have an 'an idiot' don't you? If not, then I don't know what he means.

      --
      Max.
    24. Re:not so.. by plover · · Score: 1

      C++0x (the next C++ standard)

      I was at a talk by Bjarne Stoustrup last month, and he was talking about some of the features that are being added to C++0x. We had to laugh when he said he hoped the standards committee would finish it this decade, because he'd hate for the name to have to go into hexadecimal.

      --
      John
    25. Re:not so.. by Xarin · · Score: 1

      Thats's funny because my professor in college said all OS's will be written in assembly in the foreseeable future.

    26. Re:not so.. by Jimithing+DMB · · Score: 1

      Here's another tidbit: The precursor to IOKit was NeXT's DriverKit. DriverKit was written in Objective-C. Yes, Objective-C can be and has been used in a kernel.

    27. Re:not so.. by Icarium · · Score: 1

      So c and c++ will die when we figure out how to get data to travel (much) faster than light? I won't be holding my breath.

    28. Re:not so.. by TheRaven64 · · Score: 1

      There were operating systems written in Lisp before any were written in C. There are new ones written in Lisp, Smalltalk, Java, C#, and Haskell, and device drivers for OPENSTEP were written in Objective-C. Typically these have a few hundred lines of CPU-specific assembly - but so do operating systems written in C. There is nothing magical about C that means operating systems have to use it.

      --
      I am TheRaven on Soylent News
    29. Re:not so.. by TheRaven64 · · Score: 1

      You are correct, however IOKit is a rewrite of the old NeXT DriverKit, which was written in Objective-C, and shows that you can write kernel code in Objective-C.

      --
      I am TheRaven on Soylent News
    30. Re:not so.. by porkchop_d_clown · · Score: 1

      Hmmm... I think you misunderstood my point. It's not that there aren't operating systems written in other languages, it's that the momentum and mindshare held by Linux is a barrier to the adoption of other operating systems.

    31. Re:not so.. by PalmKiller · · Score: 1

      You're Ms West (my Jr High English teacher), is that you?

    32. Re:not so.. by PalmKiller · · Score: 1

      You're was suppose to be on a line by itself, but slashdot put it all on the same line (forgot to change it to text formatted). At any rate, that sounded so much like my condescending teacher that I had to respond. The fact does still remain however.
      That AC is still an idiot, regardless of my grammatical error, and you're an ass hat.

    33. Re:not so.. by Anonymous Coward · · Score: 0


      How do you drive motors and do data acquisition with stupid internet games? C is a real language for real solutions. games are games and who really cares what they are coded in, since they produce nothing.

      c is concise, clean, and gets straight to the point. if you can't manage your pointers, that's your problem. go back to school.

    34. Re:not so.. by sofla · · Score: 1

      when we have internet that is as fast as cpu response times... So in other words... never. Gotcha.
    35. Re:not so.. by setagllib · · Score: 1

      Put down the crack pipe and read http://en.wikipedia.org/wiki/Inferno_(operating_system). It's not even necessarily the first such effort, but it's incredibly "prior" art. And it's a completely working system that can run on bare hardware or on top of another system, not some MS Research project we'll never see released commercially*.

      * Besides, if Microsoft releases any new operating system, it will have to be at least as bad as Vista (for compatibility) or break all backward compatibility and compete with the ever-growing and mature Linux and MacOSX platforms. Microsoft is up shit creek - they can't maintain what they have and if they move on from it, they have to compete with others who got it much more "right" long ago.

      --
      Sam ty sig.
    36. Re:not so.. by peragrin · · Score: 1

      Why don't you actually go read about Inferno. Inferno uses a slightly modified Plan 9 Kernel written in C with a Inferno VM built into the kernel. Every on top of that is in VM, but the kernel itself is written in C.

      Drivers, etc are written in inferno's VM I do believe so it is a hybrid but I could be wrong about that.

      Speaking of Inferno I wish some one with some design abilities would do to Inferno what Apple did to BSD. Make it easy to use. I would jump at it.

      --
      i thought once I was found, but it was only a dream.
    37. Re:not so.. by Anonymous Coward · · Score: 0

      As long as computers need an OS, C/C++ will be in wide use.

      Most people do not consider "running C/C++ code" to be the same as "using C/C++".

  18. For performance-critical code there is no choice by SilentTristero · · Score: 4, Insightful

    For image processing (film/video), real-time audio or any serious signal processing, the overhead of anything but C/C++ is killer. It'll be news when Adobe After Effects or Autodesk Flame is rewritten in python.

    Besides, measuring the popularity of a language by the size of its web presence is the worst kind of fallacious reasoning.

  19. *SIGH* Repeat after me... by Anonymous Coward · · Score: 0

    As long as there is such a thing as an embedded computer, C and C++ are here to stay. Or tell me - do you have a plan to make your eight core Mac control the anti-lock brakes and airbag in your car?

  20. Incompetence... by HetMes · · Score: 2, Interesting

    ...I say. If reference counting or basic allocation deallocation coupling is something you cannot do, you're in the wrong business. However, educating students in the art (c.i.t. I know) of programming with Java calls for these kinds of problems.

  21. Re: Are C and C++ Losing Ground? by Anonymous Coward · · Score: 0

    >Are C and C++ Losing Ground?

    I sure hope so. Honest, I'm not trolling here, I'm just tired of C's religious zealots refusing to consider alternatives. C is a fine replacement for assembly language, but why the hell would you write a web server is assembly? Then why the hell would you write one in C? It's *good* that some languages make it easier to write good code, and harder to write bad code.

  22. That's a broken way to think of it by krog · · Score: 5, Insightful

    C and C++ are entrenched, but it was never their stability which caused it. Computer languages are theoretical; one valid language is just as 'stable' as another. The real issue of stability lies in the implementation, and that is language-independent.

    Anyway, C is going to stick around because it is the most superb assembly language developed by man. C++ will of course stay around as well, but by modern standards it fails as a "high-level" language. The ceiling got a lot higher in the intervening 20 years; other languages reach much higher in a very useful way. I'd be happy to see less C++.

    1. Re:That's a broken way to think of it by SatanicPuppy · · Score: 4, Insightful

      I'm not sure C is up to the multithreading/ multiprocessor support that is going to be required as processors keep shifting from single core to multicore architectures...I know it can be done, but C is hard to program for a single core...Multicore support may take it over the edge.

      Mind you, I don't think anything else is really set up for it either (Erlang?) but that's going to be the next big challenge.

      --
      ad logicam Claiming a proposition is false because it was presented as the conclusion of a fallacious argument.
    2. Re:That's a broken way to think of it by Threni · · Score: 1

      > Anyway, C is going to stick around because it is the most superb assembly language developed by man.

      C is not assembly language.

    3. Re:That's a broken way to think of it by Sloppy · · Score: 4, Insightful

      Mind you, I don't think anything else is really set up for it either (Erlang?) but that's going to be the next big challenge.

      Whatever it is, its compiler and low-level libraries will be written in C.

      --
      As copyright owner of this comment, I authorize everyone to defeat any technological measure which limits access to it.
    4. Re:That's a broken way to think of it by wmshub · · Score: 5, Informative

      Duh.

      I think the parent was implying that C often directly maps into assembly language, and he's right. As an embedded programmer, one of the benefits of C is that, other than register selection, I can often tell you exactly what assembly statements will be emitted by a chunk of C code. Often I do use C as a shorthand for assembly.

      Nobody who knows the term "assembly language" will think that C is one. But it's a lot closer than you might think.

    5. Re:That's a broken way to think of it by VGPowerlord · · Score: 1

      Anyway, C is going to stick around because it is the most superb assembly language developed by man. C++ will of course stay around as well, but by modern standards it fails as a "high-level" language. The ceiling got a lot higher in the intervening 20 years; other languages reach much higher in a very useful way. I'd be happy to see less C++.

      C is an assembly language? For what processor? I always thought C needed to be compiled and linked, not run through an assembler, so that it was portable.
      --
      GLaDOS for President 2016! "Well here we are again. It's always such a pleasure." -- GLaDOS, 2011
    6. Re:That's a broken way to think of it by lgw · · Score: 4, Insightful

      As someone who programmed in assembly for 5 yeas professionally, let me say: C is a crappy assembly language. It has a crappy macro language, and I'm often left guessing what the compiler will do with my C code, especially on an unfamiliar platform.

      Is an int 32 or 64 bits? I had better compile a test program and fire up a debugger to find out. OK, since there's no C standard type for "32 bit int", what works on this compiler? Maybe INT32 is defined somewhere?

      And don't get me started on implicit conversion.

      --
      Socialism: a lie told by totalitarians and believed by fools.
    7. Re:That's a broken way to think of it by turgid · · Score: 1

      There was an old joke of the form: C? Oh, you mean PDP-11 assembler.

    8. Re:That's a broken way to think of it by Schraegstrichpunkt · · Score: 5, Informative

      OK, since there's no C standard type for "32 bit int", what works on this compiler?

      C99 fixed that: #include <stdint.h>, then use either uint32_t or int32_t.

    9. Re:That's a broken way to think of it by Yokaze · · Score: 1

      One acronym: CUDA

      --
      "Between strong and weak, between rich and poor [...], it is freedom which oppresses and the law which sets free"
    10. Re:That's a broken way to think of it by johanwanderer · · Score: 1

      I'm not sure C is up to the multithreading/ multiprocessor support that is going to be required as processors keep shifting from single core to multicore architectures...I know it can be done, but C is hard to program for a single core...Multicore support may take it over the edge. Mind you, I don't think anything else is really set up for it either (Erlang?) but that's going to be the next big challenge. No language is going to be easier/harder to program for a single/multiple core/processor/threads. The language can only provide the facility for creating threads/processes, and the facility for those to communicate with one another. As those facilities are high-level construct themselves, you should be able to implement them in any high-level language (for example, as an object or library.) It still rests in the hands of the programmer to make use of those facilities, and to use threads and locks when appropriate.
    11. Re:That's a broken way to think of it by Anonymous Coward · · Score: 0

      Are you kidding? pthread is perhaps the easiest library to work with.

    12. Re:That's a broken way to think of it by lgw · · Score: 1

      Oh, hey, nice! Useful information from /. - that takes me back. Now if only those slackers on the C++ committee would get with the program.

      --
      Socialism: a lie told by totalitarians and believed by fools.
    13. Re:That's a broken way to think of it by Nursie · · Score: 5, Insightful

      Jesus christ there's another one....

      C has been doing multi process for decades, and multi thread for a decade or more.

      It's used in commercial apps all over the world.

      How many times - threads and parallelism have been with us for years. Just because games haven't been threaded doesn't mean the rest of the world hasn't been doing it, and doing it well for a long time

      Look up pthreads sometime.

      Seriously, threaded processing in C is damn simple.

    14. Re:That's a broken way to think of it by jgrahn · · Score: 1

      I'm not sure C is up to the multithreading/ multiprocessor support that is going to be required as processors keep shifting from single core to multicore architectures...I know it can be done, but C is hard to program for a single core...Multicore support may take it over the edge.

      That is assuming that you buy into the current SMP hype, which seems to assume that a majority (or even a largish minority) of programs will be CPU-bound, and impractical to break into cooperating processes a la popen("gzip -dc foo.gz", "r"). I do not see that happening.

      Heck, people argue against using C because CPUs are so fast that you cannot tell the difference between a program written in optimized C and one that is orders of magnitude slower and written in Java or Python. And they are often right!

    15. Re:That's a broken way to think of it by Anonymous Coward · · Score: 0

      As someone who programmed in assembly for 5 yeas professionally, let me say: C is a crappy assembly language. It has a crappy macro language, and I'm often left guessing what the compiler will do with my C code, especially on an unfamiliar platform. You're funny.

      Sure, about 1% of your C code will fail miserably on your new platform.

      OTOH, I can tell you exactly what 100% of your assembler code will do, without even knowing what platform. Hint -- it starts with "hardware exception" and ends with "illegal instruction".

      C is 10,000,000 times more portable than assembler. So what if that still isn't 100%?

      Also, in the rare cases (ie when you spent extra money to prioritize it) when your new platform is compatible and your assembler code still runs... the C compiler will generate code specifically for that CPU generation and still be faster.
    16. Re:That's a broken way to think of it by Yaztromo · · Score: 1

      Whatever it is, its compiler and low-level libraries will be written in C

      If they do, it will only be the first in-the-lab only generation of that compiler and low-level library set (if any), after which they'll be able to code and compile the compiler and libraries in the new language itself for release to the rest of the world.

      There is a lot of precedent for this, including many C compilers themselves. NetREXX is another example that immediately comes to mind (first version of the compiler was written in Java, the second version was written in NetREXX and then compiled with the first version, etc.). No doubt there are many, many more.

      Yaz.

    17. Re:That's a broken way to think of it by flnca · · Score: 1

      As has already been mentioned in this thread, programming single core CPUs is not much different than programming multicore CPUs. Multithread-programming and thread-synchronization are the keywords here. I've been writing multi-threaded applications since 1986 (back when I learned C on AmigaOS 1.1). (and YES, AmigaOS had threads, called "tasks" and processes called "processes" and a fast, non-copying, message-based IPC mechanism). The (perhaps unofficial) philosophy of C is to put everything not directly related to the language into a library. That's why you have to use libraries in C to create multi-threaded applications. Properly written C or C++ applications have no trouble with multicore CPUs. If they're multithreaded, the OS automatically distributes the threads equally among the processors (unless the application specifies explicit CPUs for its threads). Other languages, like Java, also enable programmers to write multi-threaded applications. It's not really a matter of the language (well, of course, unless there's really no facility for it).

    18. Re:That's a broken way to think of it by Tweenk · · Score: 1

      I think C++ is better than Java. Why?

      - C++ has no built-in garbage collector. However, you have multiple options: smart pointers + RAII, garbage collector library, your own GC implementation...
      - Java has a built-in garbage collector. However, explicit memory management is impossible, and the lack of destructors and scoped objects is very inconvenient at times. This leads to acquireResource() - releaseResource() style coding - something which should be long gone.

      The main problems are:
      1. People tend to learn the syntax only, and when the syntax doesn't directly provide what they need, they moan and look for another language instead of looking for appropriate libraries.
      2. People are anxious about doing the Wrong Thing, so if there is no officially blessed way to do something they won't do it at all so that they won't have to take the blame later.

      Java is a rather dumb language, but at the same time this makes it very attractive for enterprise development. Dumb languages can enable poor programmers to produce working code, while they don't obstruct good programmers too often.

      I don't see C++ or C going anywhere when it comes to performance-critical apps and low-level stuff like web servers, databases, OS kernels, device drivers etc., but it will decline in the enterprise.

      @ SatanicPuppy:
      C++ is actually relatively easy to multi-thread, because you can use RAII to lock critical sections and mutexes, so you can't forget to unlock them - the compiler does it for you when the lock falls out of scope. Java on the other hand requires you to manually unlock everything because there are no destructors or scoped objects. Parallel processing is inherently complex, so no language is going to magically make it easy.

      --
      Those who would give up liberty to obtain working drivers, deserve neither liberty nor working drivers.
    19. Re:That's a broken way to think of it by porkchop_d_clown · · Score: 1


      I disagree with this on a couple of fronts.

      Computer languages are theoretical; one valid language is just as 'stable' as another. Only from a theoretical viewpoint. Languages are designed for particular tasks and using them for tasks they weren't designed for is asking for trouble. Try writing a device driver in SAS, for example.

      The real issue of stability lies in the implementation, and that is language-independent. Again, I disagree. Stability is a feature of a language as much as strong typing or object orientation. A language can be designed to make it easy to write stable code or it can be written without consideration of stability. C was designed to be easily compiled into efficient PDP binaries. C++ was designed as a pre-processor for C. Neither had reliability or security as a design goal and it shows. This does not mean they are bad languages, but it does mean that there's an advantage to be gained in creating a language that has the efficiencies of C but also has the durability and security to survive in the modern computing environment.

    20. Re:That's a broken way to think of it by porkchop_d_clown · · Score: 1

      C is an assembly language? For what processor? I always thought C needed to be compiled and linked, not run through an assembler, so that it was portable. Sigh. Kids today. Yes C is a compiler. Krog's point was that C was designed to translate quickly and easily into PDP-11 machine instructions. That's why it has the increment and decrement functions, why strings are arrays, why pointers are interchangeable with arrays and why the size of C variables is machine dependent.
    21. Re:That's a broken way to think of it by coppro · · Score: 1

      Oh, hey, nice! Useful information from /. - that takes me back. Now if only those slackers on the C++ committee would get with the program. #include
    22. Re:That's a broken way to think of it by coppro · · Score: 1

      Failure to communicate! #include <limits>

    23. Re:That's a broken way to think of it by Anonymous Coward · · Score: 0

      Actually gcc 4.2 and 4.3 support multicore programming with the direct inclusion of OpenMP into the compiler. With the use of #pragma statements, multicore programming is now very easy. See for example

      http://w3.linux-magazine.com/issue/83/GNU_GCC_4.2_Review.pdf

    24. Re:That's a broken way to think of it by cheekyboy · · Score: 1

      As long as all your code fits in the chip who cares what it creates, most of the time it really doesnt matter.

      And these days, embedded devices are way more capable than 10 years ago, ram is cheaper than water too.

      And if they start making $1 java chips then.... who knows what will happen then.

      Eventually, we will get 300mhz java chips for $1 , like we now get dualcore 1.6ghz E1200s for $50

      --
      Liberty freedom are no1, not dicks in suits.
    25. Re:That's a broken way to think of it by goatpunch · · Score: 1

      No language is going to be easier/harder to program for a single/multiple core/processor/threads. The language can only provide the facility for creating threads/processes, and the facility for those to communicate with one another. This is true of all languages that use the same paradigm, e.g. all imperative languages. Switch programming paradigms, for example to a functional language, and suddenly the language can do a whole lot to ease the burden of getting performance out of multiple threads.
    26. Re:That's a broken way to think of it by __aabvlw4075 · · Score: 1

      You're apparently having a hard time not thinking in computing lingo. The primary meaning of "stable", according to Merriam-Webster, is "firmly established".

    27. Re:That's a broken way to think of it by Anonymous Coward · · Score: 0

      You mean like #include <cstdint>?

    28. Re:That's a broken way to think of it by lgw · · Score: 1

      Failure to communicate indeed. :)

      error C2065: 'int32_t' : undeclared identifier

      If I want to know what MAX_INT is, fine. But if I just want a 32-bit int, no help from limits.

      --
      Socialism: a lie told by totalitarians and believed by fools.
    29. Re:That's a broken way to think of it by pclminion · · Score: 1

      Is an int 32 or 64 bits? I had better compile a test program and fire up a debugger to find out. OK, since there's no C standard type for "32 bit int", what works on this compiler? Maybe INT32 is defined somewhere?

      Why is this such a massive issue? Once you know the size of an integer for a given platform, you're done. You can collect this knowledge in a header file which can be shared between projects. In fact, this has already been done with stdint.h. Your compiler doesn't have stdint.h? Download Paul Hsieh's portable stdint.h -- it's freely available.

      This is a non-issue. And anyway, what the hell are you doing that you need to know how big an integer is? You're doing something inherently low-level (being aware of bits, and how many there are of them) and yet you complain that the language is low level? This is bizarre.

    30. Re:That's a broken way to think of it by lgw · · Score: 1

      You mean like #include <cstdint>? fatal error C1083: Cannot open include file: 'cstdint': No such file or directory

      Nice try, though.
      --
      Socialism: a lie told by totalitarians and believed by fools.
    31. Re:That's a broken way to think of it by lgw · · Score: 1

      No, I was complaining that the language was too *high* level for when I need a low-level language. I know, I know, not the usual complaint about C so it threw you. :) More specifically, I'm annoyed at the way that the same C program will compile just fine on different platforms but do radically different things, if that program solved some low-level problem. If I'm going to have to write the program a different way on each machine, why am I using C again?

      --
      Socialism: a lie told by totalitarians and believed by fools.
    32. Re:That's a broken way to think of it by xenocide2 · · Score: 1

      At the moment, the C language standard is simply broken for multithreading. There's good reasons for it too. Imaging arithmetic on a 32bit int on a platform of 16bit sized words. There's apparently plans to deal with this in C++, and then C will follow on the assumption that C++ is harder to solve, and C will basically try to be as compatible as possible with their complex needs.

      Java is actually in a place to handle this problem quite perfectly. They recognized from the start that the memory model needed work and went about defining a suitable language for multithreading. It's built into the language itself, like garbage collection is. This is why it's popular among enterprise developments. With smart people writing multithreaded code (which we lack in any langauge), you can get some pretty nice results and be fairly efficient, despite Java's renown for being slow.

      --
      I Browse at +4 Flamebait

      Open Source Sysadmin

    33. Re:That's a broken way to think of it by xenocide2 · · Score: 2, Funny

      Ah, well there's no use trying to use C++ as an embedded language / assembler. One look at template inheritance and you shall melt like the Nazi's in Indiana Jones.

      --
      I Browse at +4 Flamebait

      Open Source Sysadmin

    34. Re:That's a broken way to think of it by xenocide2 · · Score: 1
      I think it's stdint.h you're looking for:

      * ISO C99: 7.18 Integer types ...

      typedef unsigned int uint32_t; Limits describes various limits on the system and types.
      --
      I Browse at +4 Flamebait

      Open Source Sysadmin

    35. Re:That's a broken way to think of it by xenocide2 · · Score: 1

      Well, his complaint is that the language isn't a good low level one, on the grounds that bits matter and until C99 was approved and implemented, was a reasonable assumption. Reasons you might want to know the size of datatypes are easy to come up with: you're defining a network protocol or a file storage format. If you use int and compile for x86 and amd64, for example, you could wind up with two incompatible memory layouts. This is the sort of reason we came up with stdint.h in the first place.

      --
      I Browse at +4 Flamebait

      Open Source Sysadmin

    36. Re:That's a broken way to think of it by lgw · · Score: 1

      Templates are simply the worst macro language ever invented by mankind. When I was young I learned to program in assembly on my Commodore 64, and I couldn't afford to buy an assembler, so I typed in one I found in a magazine. And the assembler that I typed in from a magazine for my Commodore 64 had a better macro language than C++! </rant>

      --
      Socialism: a lie told by totalitarians and believed by fools.
    37. Re:That's a broken way to think of it by Anonymous Coward · · Score: 0

      'C is hard to program'

      Get real.
      How is C hard to program?

    38. Re:That's a broken way to think of it by tuomoks · · Score: 1

      I'm not a C fan but would someone specify why it is supposed to be difficult to write multi-threaded, multi-core, multi-node, whatever code in C. I see this coming up time to time. Now, I have written C 20+ years and never had any problems, running from 1 to xx cores (where available). Yes, I would prefer even lower level control or a powerful Algol type language as TAL in Tandem but not often available. C++ and C# - ouch, the nights I have used fixing either bad code or problems in libraries for threading, locking problems, stack overflows and lost memory - I want to forget! No language replaces thinking.

      No, not all compilers are written in C. And actually Yaztromo is right, there are languages which can bootstrap themselves, some LISPs I like especially, no limits how much to expand the language just by definitions and let it recompile itself. And it also happens to be very safe language, just not easy to read sometimes. NetREXX is nice too, way undervalued for some things.

      Languages are like dresses, one is fashionable now and then comes the next fashion. Unfortunately often based on marketing and not facts but that's business.

    39. Re:That's a broken way to think of it by LarsWestergren · · Score: 1

      >>Mind you, I don't think anything else is really set up for it either (Erlang?) but that's going to be the next big challenge.

      >Whatever it is, its compiler and low-level libraries will be written in C.


      Low-level libraries maybe, but why the would you write the compiler in C? If you are going to write an advanced compiler I thought you would really want to use a high level language. For instance, Javac has been written in Java for a long time.

      --

      Being bitter is drinking poison and hoping someone else will die

    40. Re:That's a broken way to think of it by Anonymous Coward · · Score: 0

      "I'm not sure C is up to the multithreading/ multiprocessor support that is going to be required as processors keep shifting from single core to multicore architectures...I know it can be done, but C is hard to program for a single core...Multicore support may take it over the edge." - by SatanicPuppy (611928) * on Thursday April 24, @05:07PM (#23189460) All you need is to be able to create threads really, & C can do that with ease & the Win32 API for example, provides for this:

      HANDLE WINAPI CreateThread(
          __in_opt LPSECURITY_ATTRIBUTES lpThreadAttributes,
          __in SIZE_T dwStackSize,
          __in LPTHREAD_START_ROUTINE lpStartAddress,
          __in_opt LPVOID lpParameter,
          __in DWORD dwCreationFlags,
          __out_opt LPDWORD lpThreadId
      );

      Then, by using multiple thread design, you essentially have created SMP ready code, implicitly, because the OS can send threads of execution from a parent process off to other CPU's (in true SMP setups) or CPU cores, as needed WHEN needed (when 1 of the N cores, usually 0, gets saturated) & the OS' process scheduler kernel subsystems see to this for you.

      Also, if you use multiple thread design, there is really no need for SetProcessAffinity type API calls (for what I call "explicit SMP design") either, since the OS handles threads that way for you.

      APK

      P.S.=> Think of multiple thread designed code, more or less, like an automatic/hydromatic transmission in an automobile vs. "standard shift" (stickshift + clutch), @ least as far as SMP/multicore ready code programming, because it's a fairly close analog... apk

    41. Re:That's a broken way to think of it by kraut · · Score: 1

      > As someone who programmed in assembly for 5 yeas professionally, let me say: C is a crappy assembly language

      No, it's a good and portable assembly language.

      > It has a crappy macro language,
      Fair point. The preprocessor is pretty shit.

      > and I'm often left guessing what the compiler will do with my C code, especially on an unfamiliar platform.

      > Is an int 32 or 64 bits? I had better compile a test program and fire up a debugger to find out. OK, since there's no C standard type for "32 bit int", what works on this compiler? Maybe INT32 is defined somewhere?

      Why would you expect to be able to program in portable assembly without knowing enough about the platform to know what the size of an int is?

      And quite frankly, what C compilers do really isn't too hard to figure out...

      --
      no taxation without representation!
    42. Re:That's a broken way to think of it by TheRaven64 · · Score: 2, Informative
      Why? The Java compiler is written in Java, most Lisp compilers are written in Lisp and Smalltalk compilers are written in Smalltalk. I believe most ML and Haskell compilers are also written in their target languages. It's very rare to find a compiler that can't compile itself - this is one of the common tests of an implementation.

      As to low-level libraries, again, why? There are operating systems written in high-level languages, apart from a tiny bit of machine-specific assembly language they are written in assembly. Something like SqueakNOS has assembly code to install the interrupt handlers and then everything above that is written in Smalltalk. No C anywhere.

      --
      I am TheRaven on Soylent News
    43. Re:That's a broken way to think of it by TheRaven64 · · Score: 1

      For easy concurrent programming, you need an enforcement of the principle that no data structure is both aliased and mutable. This is implicit in the language in something like Erlang (the only mutable data structure is the process dictionary, which can not be aliased), and in most functional languages but impossible to do in C without defining an entirely new language on top of C.

      --
      I am TheRaven on Soylent News
    44. Re:That's a broken way to think of it by TheRaven64 · · Score: 1

      ...And why it has shift, but not rotate, instructions and why the case statements must have constant condition.

      --
      I am TheRaven on Soylent News
    45. Re:That's a broken way to think of it by pbrooks100 · · Score: 1

      I'm not sure C is up to the multithreading/ multiprocessor support that is going to be required as processors keep shifting from single core to multicore architectures... Mind you, I don't think anything else is really set up for it either (Erlang?) but that's going to be the next big challenge. LabVIEW is multithreading/multiprocessor capable and has moved from #34 to #31 in the last 12 months... http://digital.ni.com/express.nsf/bycode/exyjqg
    46. Re:That's a broken way to think of it by porkchop_d_clown · · Score: 1

      In a way, I think C, and Gnu C in particular, has become the Microsoft Windows of computer languages - for all the bad and the good that that implies.

      Twenty years ago, I bragged that I was fluent in over 20 different computer languages - if you counted dialects of BASIC and assembler it was closer to 30 - but with the arrival of gcc as an effective and free compiler the compiler language business froze. Everyone began using C and then C++, and other languages got pushed to the margins. Good because it meant that a programmer's skills and code became more portable but bad because we were suddenly caught in the trap of backward compatibility.

      At this point, all my other languages are obsolete and nearly forgotten (Anybody need some PL/I? FORTH? APL? Modula-2?) Even my Java has atrophied to the "read it but can't write it" level. About the only other language I do anything in is PHP - I dabble in it to the point that I can make minor patches to my Drupal server. The idea that C is now fading fills me with excitement but also a good bit of dread...

    47. Re:That's a broken way to think of it by SatanicPuppy · · Score: 1

      No no no, you can just reinvent the wheel and program all those methods in C! (sarcasm)

      That was pretty much my original point; C can do threading, but C is not really geared toward making threading easy in the way it will need to be to well support multiprocessing.

      But you can't say that without the C zealots going crazy. C can do anything better than any other language.

      --
      ad logicam Claiming a proposition is false because it was presented as the conclusion of a fallacious argument.
    48. Re:That's a broken way to think of it by multipartmixed · · Score: 1
      > Seriously, threaded processing in C is damn simple.

      No, threads are hard.

      I mean, creating and joining threads sure is easy. What's hard is writing correct multithreaded programs. In C, or many other MT languages. But C reveals some additional complexity, especially in the "fully portable" realm, that I would classify as non-trivial:

      Here's a fun one.

      struct {
        int a;
        int b;
      } s;
       
      thread1_func() {
        for (s.a = 0; s.a < 500; s.a++);
      }
       
      thread2_func() {
        for (;;)
          s.b=0;
      }
      Under what circumstances can thread 1's loop run more than 500 times?

      I'll give you a hint, it requires two CPUs, and only breaks on certain arches.

      And there are plenty more non-obvious "gotchas". For example, what happens when one thread holds a mutex and another thread forks, with fork-one semantics, without ever calling exec? What thread receives posix signals? Now consider the case when you're developing MT libraries that fork or catch? Or how about libraries that hold mutexes and the applications fork?

      These are all "solvable" problems, but they certainly stretch beyond the "threads in C are easy" threshold.
      --

      Do daemons dream of electric sleep()?
    49. Re:That's a broken way to think of it by Khelder · · Score: 1

      A lot of /. folks are extremely good programmers, and I think don't realize that what's easy for them is not easy for most people.

      C and C++ are an easy languages to write buggy code in. People write working programs in them, and people also write buggy code in every language that anyone has written more than "Hello, world!" in. But this doesn't mean that all languages are equally easy to write bug-free code in. The flexibility and power C/C++ have (which is part of their appeal) also gives you a lot of rope to hang yourself with.

      Similarly, lots of multi-threaded programs work, and lots of single-threaded programs are buggy. But multi-threaded programming is much, much harder than single-threaded. Also, the support provided by the language and libraries you use can make a *huge* difference. (The type of app, too, since some types are a lot easier to parallelize than others, but that's OT.)

      I would especially like to object to anybody who says "Why are you whining about C/C++? They have pthreads, and that's enough." That's true in the same sense that in theory you could write any program in assembly or describe any computable algorithm in lambda calculus. Yes, you *can* write multi-threaded code in pthreads, but if that's all you have, it's pretty painful. What more could you want? For one thing, higher-level libraries like the Java Concurrency Libraries.

      And it's not just a matter of having the "right" add-on concurrency/threading library. If you have a bunch of other libraries, like I/O, for example, that were designed with concurrency in mind, they might all, say, use SIGALARM for timeouts. If the app is single-threaded, no problem, but if not, you're in trouble. So really, you need a whole suite of libraries made to support concurrency.

    50. Re:That's a broken way to think of it by DuckDodgers · · Score: 1

      "Seriously, threaded processing in C is damn simple."

      The basic concepts are dead simple. Avoiding a race condition or resource conflict that hangs the system is often non-trivial, and testing for all possible combination of interactions between multiple threads is incredibly difficult.

      Multi-threading in C is certainly possible, and many proficient developers around the world do a damn fine job of it. But some other programming languages and libraries make error-free concurrent programming much easier.

    51. Re:That's a broken way to think of it by Anonymous Coward · · Score: 0

      that's ridiculous. Squeezing performance out of all the threads usually is down to good design and conception. The actual implementation is rather straight forward most of the time.

      c is ideal for systems level programming. The kernel your operating system using most likely written in C / C++. They use threads.

      Most 3d games are still written in C++. As a games programmer I still try to put most/all game logic in scripting languages but the core of the system is generally in a language that allows a high frame rate. There are other languages out there that can achieve this too, and I hope one day that there will be a clearly superior language that has support from the compiler vendors, but until that day C++ isn't moving.

    52. Re:That's a broken way to think of it by cmburns69 · · Score: 1

      Certain types of programming lend themselves to multiple threads of execution easier than others. Functional languages (http://en.wikipedia.org/wiki/Erlang>Erlang, for example) guarantee that functions will have no side-effects, thereby allowing the compiler/execution environment to shunt the execution of the function into whatever thread is most convenient at the time.

      Yes, you can code your C or C++ functions to do the same, but it takes a lot of effort that can be avoided if the execution environment knows that your code is safe.

      --
      Online Starcraft RPG? At
      Dietary fiber is like asynchronous IO-- Non-blocking!
    53. Re:That's a broken way to think of it by Anonymous Coward · · Score: 0

      OpenMP, which is now practically the standard for multicore programming, was designed with the first support for C/C++ and Fortran. Now, we're waiting for every other language to adopt this.

    54. Re:That's a broken way to think of it by n7ytd · · Score: 1

      ...I'm often left guessing what the compiler will do with my C code, especially on an unfamiliar platform.

      That's the point... you write in the language you know and hope that the guys writing the compiler know the platform intimately.

      If you need to guarantee the bit size of an integer, int is not the correct type.

    55. Re:That's a broken way to think of it by 4D6963 · · Score: 1

      I'm often left guessing what the compiler will do with my C code, especially on an unfamiliar platform.

      Duh, no shit! The beauty of C is that it's about as powerful as assembly languages (usually there's little you can gain by writing in assembly that you can't gain by writing good C), but isn't hardware specific at all. I like to see C as some sort of pure form of expression of algorithms, in that I quite naturally turn algorithms into C code without having to worry about things I shouldn't have to worry about. But of course you can't know what the compiler will output on an unfamiliar platform, because that's entirely up to the compiler to decide what to do out of your code. So yes, you've gotta know that in GCC 4.x for ARM the output for 64-bit integers will be pretty fucked up, and that's GCC's fault.

      You can't blame it on C for not letting you deal with every arcane and intricate aspect of each platform's architectural detail, because that's the job of assembly programming. C is meant to be a portable language.

      As for your example, that was really fucked up, make me wanna scream "Haha stfu and rtfm namely the C99 draft that's been out for 10 years, noob!". Besides even if you'll ignore stdint.h or can't afford to use it you can still use sizeof(int) and using sizeof you'll surely even be able to define your own fixed-size integer types using a few #if and #define statements. No need for a debugger here. Google for n1124.pdf, you really seem to need it.

      And what's that thing about implicit conversion you're grieving about?

      --
      You just got troll'd!
    56. Re:That's a broken way to think of it by mounthood · · Score: 1

      Whatever it is, its compiler and low-level libraries will be written in C. Not Vala
      --
      tomorrow who's gonna fuss
    57. Re:That's a broken way to think of it by legonis · · Score: 1

      pthreads are part of POSIX API that implement OS level threads, there is no mention of the in the C language standard and any code written based on them wont compile on a non POSIX compatible platform. Those who critic C/C++ for lack of parallel mechanisms are asking for homogeneous language level constructs that work uniformly across multiple platforms, such as green threads in Java.

    58. Re:That's a broken way to think of it by legonis · · Score: 1

      True, however many of the primitive implementations of Squeak, actually do interface with some native C code. Of course this doesn't mean the couldn't be written in any other language that compiles to the native byte code(including assembly as you pointed out).

    59. Re:That's a broken way to think of it by Anonymous Coward · · Score: 0

      "I'm not sure C is up to the multithreading/ multiprocessor support that is going to be required..."

      I think you don't completely 1)understand how compilers work and 2) understand what C is.

      C is an abstraction just above assembly language. Philosophically there is no reason to knock a low-level language for not having high-level constructs. In fact it is rather idiotic.

      Sorry to be so harsh, but it always seems that 95% of the people chiming in on language religion discussions have never taken a class in programming languages or compilers. This is a sad comment about the state CS programs today.

      C and C++ have their place as low-level and low-to-mid-level languages. They are what they are. Comparing them to high-level languages is pointless.

      It makes perfect sense that fewer people would make use of the lower level languages over time since the majority of work will be applications not systems. Software has always been an inverse pyramid. A tiny number of lower level systems packages, with resource management next, then applications. Now with large and distributed enterprise solutions things are not only getting more abstract they actually need to get more abstract. So going forward we will need higher orders of abstraction more than anything else.

      So pick your tools according to the work at hand.

    60. Re:That's a broken way to think of it by Raenex · · Score: 1

      A lot of /. folks are extremely good programmers, and I think don't realize that what's easy for them is not easy for most people. You shouldn't propagate the myth that "extremely good programmers" can handle threading easily. There are fundamental problems that make it not easy. Anybody who thinks it's easy hasn't written a significant program where threads were pervasive or are downplaying the problems.

      No programmer writes bug-free code, and the penalty for failure with threads bugs that are hard to find in testing and hard to reproduce.
    61. Re:That's a broken way to think of it by Khelder · · Score: 1

      I agree that even (really) good programmers make mistakes when writing multi-threaded code. My point there was that if you're a lot better at something than most people, you may underestimate how hard it is and have unrealistic ideas about how well most people would do at it.

      In the specific example of multithreading, I think a programmer of any skill will benefit from higher-level abstractions than pthreads. The point about skill level is that if the higher your skill level, the less it will probably hurt you (or at least the less you'll think it will) not to have the extra help from the language and/or libraries.

    62. Re:That's a broken way to think of it by Raenex · · Score: 1

      My point there was that if you're a lot better at something than most people, you may underestimate how hard it is and have unrealistic ideas about how well most people would do at it. I think the people who say it isn't hard either don't have the experience, are fooling themselves, or are being intellectually dishonest. Ultimately I don't think it's because they're so great that they find it easy, and appealing to that logic amounts to pandering and spreading of misinformation.

      We've heard this line of thinking time and time again about how "good coders" don't need their hands held, that their should be more focus on "good coders", and not on the tools they use. C is good enough, they say.

      I don't mean to be harsh -- it's just that I think the approach you are taking encourages the elitist attitude instead of addressing real problems. Programmers are often smart and prideful, and don't want to use tools if they think they are only for the mediocre.
    63. Re:That's a broken way to think of it by Anonymous Coward · · Score: 0

      I'm not sure C is up to the multithreading/ multiprocessor support that is going to be required as processors keep shifting from single core to multicore architectures

      C is used to implement the kernel on which your fucking toy languages run.

  23. C and C++ might die at different rates. by jythie · · Score: 5, Insightful

    I could actually see C++ slowly going away over the next decade as it is replaced by other languages that fill the same needs but better. C on the other hand is probably going to be around for a long, long time.

    1. Re:C and C++ might die at different rates. by Anonymous Coward · · Score: 0

      I could actually see C++ slowly going away over the next decade as it is replaced by other languages that fill the same needs but better. Agreed. Here's hoping it's D rather than C++0x.
    2. Re:C and C++ might die at different rates. by jythie · · Score: 1

      or C#, or ObjC, or some other unnammed successor. C++ tries too hard to keep it's C roots to be truly viable long term.

    3. Re:C and C++ might die at different rates. by ari_j · · Score: 1

      Agreed. I get really sick of people lumping those two together as if they are one language. The fate of C++ is dependent in part on that of C, but not vice versa.

      I've also noticed many people talking about sometimes writing C code to add functionality beneath Python, Java, or the like. I wonder how much less common that would be if the underlying OS weren't written in C. If the underlying OS were written in Java, you'd be writing Java code to create your libraries.

      And that brings me to the conclusion of the exercise: Someone needs to write an entire OS in Intercal.

    4. Re:C and C++ might die at different rates. by jythie · · Score: 1

      You realize that someone out there somewhere is no thinking 'hmmm, I've been looking for a project.. I wonder if you could write an OS in intercal?' damn you ;p But yeah, one of the reasons people revert to C in other languages is to interface with OS components that are written in C.

    5. Re:C and C++ might die at different rates. by MobyDisk · · Score: 1

      I'm sure I'm asking on the wrong forum for this... but, I'll try: why does anyone ever still program in C? C++ is C with some very useful language extensions and an improved standard library. It has no downsides.

      Now, somebody will reply and tell me how C++ is less efficient or start some out-of-date 1985 tirade about how virtuals are slow or some such nonsense. But seriously -- I want to ask serious C coders who have actually used and know C++: why would you ever go back to C?

    6. Re:C and C++ might die at different rates. by Anonymous Coward · · Score: 0

      Linux Kernel Modules. Other than that, I vaguely remember it being slightly easier (because of not having to deal with C++ name mangling with classes) to write C functions for doing Native Interfacing (i.e. linking Python/Ada/Java/and I'd say whatever, but I can't think of any other language I've done) but for all I know, that's gotten easier since the last time I needed to do it.

      Other than those two, I completely agree.

    7. Re:C and C++ might die at different rates. by ari_j · · Score: 1

      The other reason is that the language's interpreter or some part of its runtime is written in C. However, that's typically just because the OS is in C, too. The only reason this matters for practical reasons is that you'll at first have an OS written in Intercal with a Python runtime written in C, but eventually you'll get sick of maintaining the C compiler you wrote in Intercal and rewrite the Python runtime, as well as contracting a very bad case of epilepsy.

    8. Re:C and C++ might die at different rates. by Anonymous Coward · · Score: 0

      C on the other hand is probably going to be around for a long, long time. I'm betting on 2038 ;-)
    9. Re:C and C++ might die at different rates. by Anonymous Coward · · Score: 0

      Just because there is a 'C' in 'C#' doesn't make it anything like C.

    10. Re:C and C++ might die at different rates. by Anonymous Coward · · Score: 0

      Like what? REALLY, please tell me what can replace C or C++?

    11. Re:C and C++ might die at different rates. by Anonymous Coward · · Score: 0

      Because C++ is a horrible, overly complicated mess and a mishmash of too many different programing paradigms.

      If you want a simple, but powerful imperative programming language that is supported on nearly every computer platform known to man, then use C.
      If you want a strong Object Oriented language, then use Smalltalk, Python, or (if you must) Ruby.
      If you want an Object Oriented language, but also need the compiler to hold your hand (and don't mind having to write twice as much code as a result), then use Java or C#
      If you want to do template metaprograming then use Lisp

      If you enjoy wading through thousands of compiler error messages due to a single typo in a template, and just love binary ABI incompatibilities, AND you like using twice as much code as you should have to, then by all means use C++.

    12. Re:C and C++ might die at different rates. by ardor · · Score: 1

      If you want a language that can do all of the above, use C++.

      Seriously, C++'s range is unmatched, even by Lisp. Its by no means a nice language, but the least of all evils. There is no other language that allows me to use a multitude of paradigms while diving down to the bare metal in the same code. If you want to replace C++, you need to write something that has its power. C++ is overly complex, yes, but not because its multi-paradigmatic, but because of the legacy support for C and the ugly template syntax.

      The best part is when people say Java is the successor to C++. heh... Java's range is almost a singularity compared to C++. Or any other language.

      So, people, yes! Write a successor! Really, I would love to see one that is NOT a subset of C++. The closest so far is D, but D 1.0 is barely usable. Maybe D 2.0....

      --
      This sig does not contain any SCO code.
    13. Re:C and C++ might die at different rates. by Anonymous Coward · · Score: 0

      I could actually see C++ slowly going away over the next decade as it is replaced by other languages that fill the same needs but better. C on the other hand is probably going to be around for a long, long time.


      Actually C++ is slowly replacing C in many uses, I can see that happening in embedded devices. Dimnishing percentage is the result of recent outburst of web software.

      But this may change too, there are quite interesting approaches to create web development framework in C++ and benefit from its strong compile time code checking capabilities.
    14. Re:C and C++ might die at different rates. by jythie · · Score: 1

      C++, while more convient, is less predictable. If you look at a ANSI C program and a C++ program you generally have a much better chance of seeing what the C program is _actually_ doing.
      C++ tends to be more readable for understanding what it is conceptually doing.
      An example is operator overloading. when you write A+B=C in C, you generally know what all those operators are doing and know that it will not be jumping to any functions or have other side effects. In C++ those operators could be doing anything.
      Same with constructors and destructors. You have an idea of when they will run and where they are inserted into the code, but you can't always be sure. So if such details actually matter then C is safer to use.
      C++ also throws all sorts of (potential) junk in the static initialization space, so you never know what might execute before main() runs. In C you have to mark things explicitly.
      I actually use both depending on the situation. They both have strengths and weaknesses. When I want ease of use I tend to use C++. When I want safty and predictiblity (important for low level code and drives) then I go with C.

    15. Re:C and C++ might die at different rates. by jythie · · Score: 1

      There is that too.

      Under unix at least you can't really do predictable lookups on C++ functions, so loadable modules are MUCH harder to write. You end up having to write a C wrapper around the C++ code.

    16. Re:C and C++ might die at different rates. by 4D6963 · · Score: 1

      Why should I want to program in C++? I barely grasp the basic concepts of OOP and I don't see any need for them, plus I want to stick to low level programming. Besides C++ looks like gobbledegook to me. If I'm gonna use C++ to do exactly the same stuff as I do in C and nothing else then why even bother? Serious C coders use C because that's exactly what they need, and no other language does it better.

      --
      You just got troll'd!
    17. Re:C and C++ might die at different rates. by MobyDisk · · Score: 1

      Besides C++ looks like gobbledegook to me. C++ is C with about a dozen extra keywords, so it shouldn't be that hard to grasp. Many of those keywords have been added to C in recent years since they've been so useful (const, volatile, inline, ...). If you can't read C++, you probably can't read C either. Usually, the C++ equivalent is easier to read, such as this example:.

      C: int * foo = (int *)malloc(numElements * sizeof(int))
      C++: int * foo = new int[numElements];

      I barely grasp the basic concepts of OOP and I don't see any need for them Often when people don't understand something they assume there is no need for it. Saying "I don't understand OOP so I won't use it" is like saying "I don't understand diplomacy, so I'll use war." You use what you know. I suggest learning a bit about OOP - you will probably notice that many C programs are OO, and that many C++ programs are not OO. It is just a design paradigm. Most modern best practices and designs are based on OOP, so if you don't know it, you will be unable to tap into a lot of knowledge and resources.

      plus I want to stick to low level programming. In low-level code, C++ will give you the benefit of extra type safety with no disadvantages.
    18. Re:C and C++ might die at different rates. by MobyDisk · · Score: 1

      C++ also throws all sorts of (potential) junk in the static initialization space, so you never know what might execute before main() runs. In C you have to mark things explicitly. I'm glad you mentioned that, because it is the one thing I have disliked about C++: specifically, GCC. I find that if I compile some minimal C++ code in GCC, if I use iostreams it adds about 200k to the resulting EXE - presumably static initializers are calling something deep within STL. But MSVC does not do that: I get a nice 15k executable with no noticable static initialization. This has made me avoid using iostreams when writing x-platform code, and it is kinda annoying.

      Is this a known bug in GCC? Is there a way to avoid it?
  24. Statistics by Anonymous Coward · · Score: 5, Insightful

    Measuring by internet web pages mentioning it? Can you say, "worthless statistic," kids? I write code that controls hardware. You bet it's C++. I write code that's IN the hardware. An interpreted language? Are you out of your damn mind? Do I blog about it? Don't be absurd. Am I generating "web presence" for it? Only on slashdot. Go away useless statistic.

    1. Re:Statistics by Anonymous Coward · · Score: 2, Insightful


      I absolutely agree. We have a disease in our industry, and it's that fast and cheap with under-experienced under-trained people is the way to go. There's a reason why OS's are not coded in concepts like Java - any programming language that needs to pause to "clean up after itself" needs some serious damn help - please code, audit your code properly instead of writing yet another piece of code because you refuse to properly #def, #undef and manage how you use memory.

      I'm sick and tired of the "Javoids" hanging up my web browsing, and fouling up real-time delivery on my trading floors. We are burning up serious quantities of electricity, and creating serious amounts of heat and feeding a bloated marketplace with this kind of inefficiency. We don't need faster processors, we need better code. You can make money with excellence - you just have to try instead of taking the easy road every time. Cray made a fortune being brilliant and keeping true to his engineering principles. Microsoft made billions by placing a pillow over the head of any and every innovation anyone with two brain cells in Redmond could think of would threaten their bloatware.

      Somewhere along the line the craftspeople left the building because IT managers were replaced with "Executrons" - these mindless folks who actually get compensated bonus for how much they "save" by cutting costs in IT - that's letting the fox in the hen-house. Thanks to this idiocracy, we now teach people not programming, but how to use Microsoft & Sun products in college for CS101, and to find any worthwhile thinking in a candidate I need to look for people from a foreign country.

      Thanks, Sun. Thanks, Microsoft. How about some real damn innovation, please, instead of these statistical analysis that make the status quo seem palatable.

    2. Re:Statistics by thanasakis · · Score: 1

      Amen, +10 insightful.

    3. Re:Statistics by Anonymous Coward · · Score: 0

      Yeah, I didn't see Verilog in that list.

    4. Re:Statistics by jim3e8 · · Score: 2, Insightful

      I write code that controls hardware. You bet it's C++. I write code that's IN the hardware. An interpreted language? Are you out of your damn mind?


      Forth is interpreted.
    5. Re:Statistics by xtracto · · Score: 1

      And I am sure it is a skewed statistic. Pretty much the majority of people that write in the internet that their pr0gramz skillz are VB, PHP and HTML (yeah... leet programming there) are the ones that do not have a clue.

      Whereas the people that is busy programming in C/C++ for a life just return home, play with their kids and have sex with their wifes (and ocasionaly post as AC on slashdot)

      --
      Ubuntu is an African word meaning 'I can't configure Debian'
    6. Re:Statistics by Anonymous Coward · · Score: 0

      "which measures the popularity of programming languages by monitoring their web presence."

      What does that mean? There are more sourceforge projects? C++ programs don't run on the internets, they tend to run the internet. When they crawl do they count every apache server too?

      I can't believe they have a company that survives based on metrics like that.

    7. Re:Statistics by Anonymous Coward · · Score: 0



      No wonder my DVD player sucks. Write embedded shit in C, please.

    8. Re:Statistics by dkf · · Score: 1

      I write code that's IN the hardware. An interpreted language? Are you out of your damn mind? Curiously, I've seen an embedded OS/firmware that was written in TCL, back in 2002. Very strange!
      --
      "Little does he know, but there is no 'I' in 'Idiot'!"
    9. Re:Statistics by tuomoks · · Score: 1

      You are absolutely right, no programming system which stops the flow at any time has no place in systems which need continuous flow! It is (was?) called systems design. Not in education any more? Definitely not in many requirements any more!

      Yes, I see that a management problem, can't blame programmers so much - you do what is told. But a real pain if it gets to production. And trying to argue that more cores and processors don't help in those cases because everything still gets locked. Or that increasing threads / threadpool sizes only usually makes it worse. Add more memory for message buffers(?) - even higher peeks once they get flowing again and latency, timing problems go out of the roof sometimes ending to total meltdown where the system doesn't do anything else but tries to manage itself!

      It seems that programming has gone back to batch days, read input, process, output, repeat instead of keeping the flow going. Or even worse, polling the inputs, still happening on application layers.

  25. Just like Fortan and COBOL! by Sta7ic · · Score: 1, Insightful

    "C++ is dying". Next!

    C/C++ won't be going anywhere fast.
      * There's too much code written in both languages.
      * There's NO CHANCE (imo) that anyone is going to write a kernel with code the plays with the memory behind the scenes. That's what the kernel's there for.
      * "If it works, don't fix it." See old FORTRAN, COBOL, Pascal, and other "dead/dying" languages that are still being used in industries because it'd cost more to replace everything than it's worth to update it ~ and in downtime & support costs more than direct dev costs.
      * "Fashionable" languages may affect the language choice, but do not affect task requirements. Construction workers don't wear hard hats because it's fashionable to do so.

    1. Re:Just like Fortan and COBOL! by HalWasRight · · Score: 1

      I don't wish C++ would go away. I just wish people would have some ^#@$!% *TASTE* when using it. Don't overload arithmetic operators for non-arithmetic types! In fact don't overload ANY operators. It makes your code absolutely unreadable and often hides the very real cost of intermediate value allocation/deallocation.

      --
      "This mission is too important to allow you to jeopardize it." -- HAL
  26. I haven't written any real C++ in a long time by Omnifarious · · Score: 1

    I can see cases in which I'd want to write an application primarily in C++, but it would be a pretty rare thing now. Mostly I see C and C++ as ways to make Python faster when it needs to be.

    The garbage collection is nice, yes. But what really draws me to interpreted languages is how easy it is to build programs in tiny little scraps that you independently test along the way. And after that, how some of them allow you to have great economy of expression without being hopelessly obscure.

  27. I Hope so Too by turgid · · Score: 0, Flamebait

    C is a systems language, and it's very good at it. Gone are the days of 8MHz desktop computers when we needed C for writing applications.

    C has its place, and C++ isn't all it's cracked up to be.

    I hope they are becoming proportionally less popular than other languages, because otherwise we aren't making progress.

    I write C for a living, and enjoy it, but then I do systems level stuff. I would hate to write a modern application in C. It'd be crazy. Java or C# would be pushing it too, they're just not high-level enough.

    1. Re:I Hope so Too by Anonymous Coward · · Score: 1, Informative

      C++ isn't all it's cracked up to be.

      It isn't? Let me give a little example of what you can do in C++. The task is this: 1. Transform all the strings in a vector of strings to uppercase. 2. Remove all the strings whose length is a multiple of 3. 3. Sort the resulting vector. 4. Print the strings on the screen.

      Here's how I do it:

      (cat(stringvec) | transform(strupper) | grep(bind(size, _1) % 3 != 0) | sort() | print())();

      Yes, that is actual C++ code, using a powerful generics language implemented with metaprogramming techniques. Now imagine writing entire systems like this. Looks kind of like shell code, doesn't it? Except with the total efficiency of C++.

      Don't care for this little language? Invent your own. C++ has the capacity to express an infinite number of such "little languages." Metaprogramming is not a joke. It is probably the most powerful feature of C++. The problem is, few people are genuinely good at it. The boost project collects most of the experts in one place, so we can all make use of their techniques.

      But, I suppose, this insanely powerful ability is not "progress." Hrm.

      (In case you are wondering, the assembler code generated by the compiler from that single line is very similar to the code I would have written, had I written in assembler myself.)

    2. Re:I Hope so Too by turgid · · Score: 1

      How big and slow are C++ compilers? The language itself is enormous and unwieldy. Look at all the add-on libraries you had to use to achieve your example?

      You'd have written assembler to do that yourself?

      You truly are a god. I bow down and worship at your divine feet, unworthy that I am.

    3. Re:I Hope so Too by Anonymous Coward · · Score: 0

      Look at all the add-on libraries you had to use to achieve your example?

      The library used in that example is approximately 1500 lines long. But if you're upset that you have to include a few extra lines of code in order to achieve a reduction in code volume of, on average, 15 times, along with a corresponding increase in clarity, I guess I can't help you.
    4. Re:I Hope so Too by linuxrocks123 · · Score: 1

      What framework is that? Is it cross-platform and/or OSS? I might want to use it.

      --
      vi ~/.emacs # I'm probably going to Hell for this.
    5. Re:I Hope so Too by gbjbaanb · · Score: 1

      the C++ language is tiny, not "enormous". As for add-on libraries, look at all the other languages, you may not notice the libraries as they come bundled but languages like Java and C# have deprecated more library features than ever existed in C++

      I think he had to use 1 add-on library, and may have been better off writing it using the stl instead.

    6. Re:I Hope so Too by Anonymous Coward · · Score: 0

      It is my own framework. I am currently in the process of cleaning it up for a public release, probably under the BSD license. If that happens, you'll be able to use it.

    7. Re:I Hope so Too by linuxrocks123 · · Score: 1

      Cool. If that happens, what will its name be? I'll be Googling / searching Sourceforge for it :)

      --
      vi ~/.emacs # I'm probably going to Hell for this.
    8. Re:I Hope so Too by Anonymous Coward · · Score: 0

      Right now I refer to it as chains, but pipes also sounds good. However such a generic name would probably seem arrogant, as well as being hard to Google for. Honestly, I can't say what the name will be. I am open to suggestions! :)

      Essentially all it lacks is a way for users to easily write their own filters (everything in between the '|' characters being known as a filter) without having to understand all the metaprogramming junk. For the most part, this means making the set of filters as orthogonal and generic as possible, to avoid the need for custom filters in the first place. The more I use it in real projects, the better I understand how to do that.

    9. Re:I Hope so Too by mabinogi · · Score: 1

      But, I suppose, this insanely powerful ability is not "progress." Hrm. it's progress for C++, but it's something people have been doing in Lisp forever, and something that is largely unnecessary in dynamic Object Oriented languages like Smalltalk.

      It's good that C++ can do that, but that doesn't make it special.
      --
      Advanced users are users too!
    10. Re:I Hope so Too by ardor · · Score: 1

      Yes, in an even match, Lisp vs. C++, Lisp would almost always win. I agree.

      But in the real world, Lisp toolchains are a PITA compared to whats there for C++, especially regarding optimization (well, Scheme's Stalin is nice, but I suppose we are talking about Common Lisp here). Also, I've yet to see a Lisp that allows me to do bare metal coding and high-level stuff like the GP's in one source. It certainly is possible ... but no one did it so far. Also, is compile-time generic programming possible in CL currently? Compile-time compiler checking or the like? A very strong argument for C++ is that this stuff is never done at runtime...

      So maybe a slightly updated CL, with a much better toolchain, would be the ultimate.

      --
      This sig does not contain any SCO code.
    11. Re:I Hope so Too by ram4 · · Score: 1

      I write C for a living, and enjoy it, but then I do systems level stuff. I would hate to write a modern application in C. It'd be crazy. Java or C# would be pushing it too, they're just not high-level enough.

      Take for instance a "modern application" like gtk-gnutella. It is developped in C. Other Gnutella clients exist that are developped in Java. I claim that it is because gtk-gnutella is in C that it is more efficient for the end-user (in terms of memory footprint, CPU usage).

      True, a Gnutella client can be seen as "low-level" because it essentially runs close to the system: it manipulates sockets and files (I/Os), and implements network protocols (with the need to construct and decompile complex binary packets).

      However, being written in C is not a burden, it's a breeze.

    12. Re:I Hope so Too by turgid · · Score: 1

      Thanks.

    13. Re:I Hope so Too by turgid · · Score: 1

      It isn't? Let me give a little example of what you can do in C++.

      There's this concept called, "Turing complete."

  28. It's not about the language, it's about the VM by Anonymous Coward · · Score: 0

    For 99.9% of applications out there, you do not need C. Nor ASM. For the uttermost techy stuff, like, say, the gurus working on OS kernels or hypervisors, then ASM and C still rule the day. Any day.

    But once again, for 99.9% of apps out there, what is really needed is: a bullet-proof virtual machine (it's 2008 and I'm pissed off by all these buffer overrun exploits/null exploits/you-name-it that are simply a thing of the past in a good VM) and great libraries.

    It's obvious that this discussion is at the 3GL level, so pick Java, pick C#, pick Scala or any language targetting a bullet-proof VM and you're good to go (that said not too sure about C#/.Net being as robust as Java/JVM... Last time I checked the Real World [TM] --as in bank transaction etc.-- wasn't running on MS technology ;)

    I think there's no excuse today to produce something, say in Java or Scala, that runs under a JVM, that is notably slower than the C counterpart.

    It's even less forgivable to spout "but Java applets failed" and "Java makes my browser crash" nonsense in 2008.

    Did you write a Webapp that comes even close to GMail? What is GMail written in yet? Did you write something that comes close to GWT? What language do you need to use to interface the GWT API yet? Did you write several of the planet's very best IDEs ? What are these written in yet? What is the language that is going to be used by independant developer to port apps to the new Android phones (LG, Samsung, Motorola phones etc.) ?

    Can I do remote profiling of your app as easy as 1-2-3 ?

    Really guys, wake up. What language/VM is powering the Real World [TM] ?

  29. Specializing, not dying by PenguinX · · Score: 1

    I've noticed this trend as well, however it seems to me as though these languages are specializing rather than dying.

    For example, it seems to me that C has a long future ahead of it as the de-facto low-level language. C++ is evolving in many ways, while trying to be true to the 'as close to the hardware' as possible roots. Many of the changes that have been outlined in the C++0x specification are rather interesting indeed.

    I've spent the past year of my life using Python every day, and I'll admit that it has excellent utility as a general purpose programming language. However I do not see it replacing C in kernel development, nor do I see systems libraries being re-written in Python. I do however see many opportunities for rapid application development, web development, and other application-centric development in Python.

    To be fair, there hasn't been anything earth shattering from the systems level programmers in some time, although the call has gone out to 'fix' threading, and if anyone takes that seriously I am certain that we'll see an increasing number of lines of code written in C and C++ again.

    Finally, number of lines written doesn't mean one language is better than another. Frankly that's really silly, and it doesn't hold up to marketability either. I was recently in the job market, and many many people had no clue what Python was. Then again, I live in Seattle.

    Cheers
    -b

  30. Different markets - different requirements by ThePhilips · · Score: 4, Interesting

    What I love about such studies is that they can confirm any theory you want.

    Truth remains that every particular market has requirements which dictate selection of languages.

    I doubt that telecom industry (as it is right now) would ever get over C or C++. Just like kernel or system libraries in anything else but C.

    If you look at rise of Web - and pleiades of supporting it languages - then both C/C++ are out of question of course. Though again I can hardly imaging Apache or MySQL or PHP being written in anything else but C or C++.

    Market for system and telecom programming is definitely shrinking - and consequently their languages. Other markets are now blooming - and their languages are becoming more popular.

    My point is that the languages are complementing - they are not competing. After all you have to write hardware, firmware and OS first. Only then your beloved automated garbage collection has possibility to kicks in.

    --
    All hope abandon ye who enter here.
    1. Re:Different markets - different requirements by krog · · Score: 3, Informative

      Just a note -- Ericsson developed the Erlang language with telecom-style reliability in mind, and using it they have brought to market products like ATM switches with 99.9999999% uptime (that's nine nines, under 40ms of downtime per year). Telecom isn't just C's domain anymore.

    2. Re:Different markets - different requirements by Anonymous Coward · · Score: 0

      I thought the telecom industry still used pascal

    3. Re:Different markets - different requirements by fred+fleenblat · · Score: 1

      >> pleiades of supporting languages

      that doesn't seem right.
      perhaps you meant plethora, or myriad.

    4. Re:Different markets - different requirements by benhattman · · Score: 1

      What I love about such studies is that they can confirm any theory you want.
      How about this theory. I think C/C++ are loosing ground because they have names which are difficult to search Google with. Type in C and you get Citigroup/Wikipedia(programming, celsius)/vitamin/subway lines...the list goes on. Now type in PHP and every link is about the language.

      In short, if you don't know how to do something, it's better if your language's name uses more than one letter. So how is 'D' increasing then, I wonder?
    5. Re:Different markets - different requirements by dabadab · · Score: 1

      Well, telecom (and railway) systems were never exclusively C, CHILL, for example, was (is) also popular.

      --
      Real life is overrated.
    6. Re:Different markets - different requirements by Joutsa · · Score: 1

      Well, Nokia Networks (now Nokia Siemens Networks) has TNSDL, which is a kludgy home-brew thing. It has not prevented them making things with some nines uptime.

  31. There are two kinds of coders... by Froze · · Score: 3, Insightful

    those who can code in binary and those who cant code.

    OK, kidding aside.

    There are those who write code so that a person can do something on a computer. In which case the users are comparatively slow and the high level languages give you a distinct advantage in development.

    Then there are those who write code to make the computer do something, in which case the low level languages give you the ability to more effectively optimize how the computer interacts with itself, this is where languages like C, C++ really come into their own.

    In the early days of computing it was all about the later, now its much more about the former, but the later will never go away. So the decrease is reasonable and IMHO does not represent a failing of the language, just a shift in the way computers are being used. I will be very surprised if the high level languages ever get widespread acceptance in the areas that require computational efficiency, ala computational physics, protein folding, etc.

    --
    -- The morphemes of your disquisition are ascertainable, but they have eschewed an ambit of transpicuous exposition.
    1. Re:There are two kinds of coders... by oodaloop · · Score: 2, Informative

      OK, kidding aside.
      I thought the joke went: There are 10 kinds of coders...
      --
      Tic-Tac-Toe, Global Thermonuclear War, and relationships all have the same winning move.
    2. Re:There are two kinds of coders... by HoboCop · · Score: 1

      I think you are right, but you overlook the trend towards modularization and multi-threading techniques. I've seen quite a few places where chunks of C code do most the of the real work, and a higher level language like Python or Java are used simply to control data flow and provide interfaces. I think this will be more and more popular as an application architecture, as the number of processors increase and the location of your data and interface get more abstract.

    3. Re:There are two kinds of coders... by osu-neko · · Score: 1

      I've seen quite a few places where chunks of C code do most the of the real work, and a higher level language like Python or Java are used simply to control data flow and provide interfaces.

      Considering most libraries (and most languages) are written in C or C++, I think this is essentially true the majority of the time. We code our basic, low-level ops once in C and then don't worry about it anymore, using the higher level language to deal with the higher level logic. All the higher level language is doing is directing what bits of C code get executed when.

      --
      "Convictions are more dangerous enemies of truth than lies."
    4. Re:There are two kinds of coders... by HoboCop · · Score: 1

      Ah! Yes that is true, but not what I had in mind. I was actually thinking of full executables that did specific jobs coded in C, coordinated across processes, networks, etc by other non-C pieces... which I guess is essentially the same thing, since we are building upon a base of code that was written in C (network stack, OS, database, etc).

      A lot of that code is getting to be very mature, so things that used to be applications are now infrastructure.

    5. Re:There are two kinds of coders... by swillden · · Score: 1

      Very insightful post. I hadn't considered that distinction in that way.

      --
      Note to ACs: I usually delete AC replies without reading them. If you want to talk to me, log in.
  32. Fortran! by frogzilla · · Score: 4, Informative

    Fortran has been dead for ages but we still use it everyday on a variety of architectures. I know we're not the only ones. Many scientists still use it.

    1. Re:Fortran! by Digi-John · · Score: 2, Funny

      FORTRAN is fast as hell and lots of scientists know it already, so yeah, it's still got a lot of use over here in scientific computing. Software packages like LINPACK have been tweaked for decades to get really high performance. The thing is, people in scientific computing are less likely to sit around blogging and posting on /. (I'm an exception, it seems) so their languages (FORTRAN and C, maybe some C++) don't get as much coverage as stuff like Ruby on Rails where you get 5 million postings on Digg every day from some web-tard who just figured out how to make his blog even more disgusting.

      --
      Klingon programs don't timeshare, they battle for supremacy.
    2. Re:Fortran! by Alpha830RulZ · · Score: 1

      There are also people who still ride horse, but they don't call it transportation. (ducks)

      I'm porting a fortran app to python currently.

      --
      I was taught to respect my elders. The trouble is, it's getting harder and harder to find some.
    3. Re:Fortran! by Anonymous Coward · · Score: 0

      Another example is Assembly, how long has it been since anyone used it? Yet if you say that you shouldn't learn assembly, then you are programming with the thought that magic drives your program. Not knowing assembly = not knowing how a computer works.

    4. Re:Fortran! by SEMW · · Score: 1

      Fortran has been dead for ages but we still use it everyday on a variety of architectures. I know we're not the only ones. Many scientists still use it. Yeah, but modern Fortran (2003) is a world away from the good old days. I know most scientists etc. are probably still on Fortran 90/95 rather than 2003, but even so that's still a lot better than the FORTRAN 77 most people think of as Fortran.
      --
      What's purple and commutes? An Abelian grape.
    5. Re:Fortran! by Merlynnus · · Score: 1

      Funny. I'm porting a python app (well, ok a python module) to Fortran currently. We do all our front-end work with Python, backend (that is, number crunching not database) with Fortran.

    6. Re:Fortran! by Anonymous Coward · · Score: 0

      Yet if you say that you shouldn't learn assembly, then you are programming with the thought that magic drives your program.

      No, you're programming with the thought that only a few, highly-skilled people need to worry about that low level stuff. Not learning something isn't the same as not knowing that it exists.
    7. Re:Fortran! by Nicolay77 · · Score: 1

      In this case it's more like the difference between driving a stick shift and an automatic.

      You get the most of the machine if you use a stick shift, and if you race, that's essential. But you need lots of practise and an amazing concentration.

      If you just want to drive home, an automatic is of course more convenient.

      And the market analogy is that currently most cars are automatic.

      --
      We are Turing O-Machines. The Oracle is out there.
  33. Re:For performance-critical code there is no choic by SanityInAnarchy · · Score: 1

    Which is why most of the "new kids" -- Python, Perl, Ruby (though Perl is getting kind of old now) -- support C extensions.

    Would I actually write h.264 encoding/decoding in Ruby? No, not really.

    Would I write a video app in Ruby? Absolutely -- just call out to the existing h.264 library (and mjpeg, etc) when I need to do the performance-intensive (and also boring) stuff.

    --
    Don't thank God, thank a doctor!
  34. Lose A Little Ground by BigBlueOx · · Score: 1

    C may lose a little ground now and then but don't expect it to go away anytime soon. C is a cross-platform macro-assembler and a cross-platform macro-assembler is such an astoundingly useful thing that C has managed to be widely used since the reign of Henry III. Expecting C to die is like expecting Microsoft to open-source Windows.

    In fact, along with ViceGrips and duct tape, C is one of the Three Most Useful Things In The Universe. (BTW, I didn't make that up. It's in The Book)

  35. All I gotta say is by IdeaMan · · Score: 1

    Bjarne! Get off your ass!

    Memory management needs to be addressed as part of the language, not as a library call. That this has not been effectively addressed I lay directly at your feet. Don't give me that garbage about memory management being a job for the programmer. If that were the case then why did you even bother with explicit typing? Expecting us to keep the track of where to release memory is just as bad as expecting us to remember the type of every variable in the system. And then you went and added exceptions.

    IMO garbage collection is an ugly solution to a general problem that wasn't solved by the compiler. It ruins real-time performance and still doesn't solve the other half of the memory allocation problem: not releasing memory.

    Oh and that half-assed new/delete junk you gave us just a friendly wrapper, it doesn't go anywhere near solving the problem.

    --
    They ARE out to get you simply because They are in it for themselves and they don't care about you.
    1. Re:All I gotta say is by gbjbaanb · · Score: 1

      Does he need to? Boost has support for various smart pointer classes that should handle everything you need:

      http://www.boost.org/doc/libs/1_35_0/libs/smart_ptr/smart_ptr.htm

      You don't *need* a garbage collector if you have a reference counted smart pointer to manage memory within scopes. The point here is that you can choose whichever memory management scheme you like if it is part of a library. If you want a special allocator, write (or select) one.

      We needed this once, several highly-preallocated memory heaps, it made a tremendous impact on performance at the expense of memory consumed. It fitted our needs, something you'd never see in a general-purpose allocator.

    2. Re:All I gotta say is by IdeaMan · · Score: 1

      I haven't used Boost, and my post was arguing for a solution like that implemented into the language. I did notice that it was proposed as an addition to the standard library, which sounds like a good idea.

      How bullet-proof is it (for below I'm assuming no casting):

      Does the compiler flag copying a non-copyable pointer (scoped_ptr) as an error?
      Can you delete a shared pointer without affecting the reference count?
      Does it catch at compile time de-referencing a pointer that has been deleted? (Compare to scoping rules for variables - Attempting to access a pointer after it has been deleted should be handled the same way that accessing a variable that is out of scope is handled)

      --
      They ARE out to get you simply because They are in it for themselves and they don't care about you.
  36. slashdotted by Anonymous Coward · · Score: 0

    Yet another reason not to use a web server written in Java.

  37. Give me a break by sentientbrendan · · Score: 1

    C++ is going "out of fashion"? What industry is this again? Who cares what is "in fashion."

    C and C++ let you do things that you *cannot* no matter how hard you try in other languages. Java and Python have their place, and that place has expanded over time, but there are areas that they cannot tread.

    No matter how much you improve the JVM, you will *never* be able to write a video codec in java (when the jvm compacts, it has to stop the world, and thus the video too). Nor will you be able to write kernel modules. Nor will you be able to write a large commercial video game. The list goes on and on...

    Garbage collection is *great* when you can use it. However, garbage collection has some fundamental performance and memory usage characteristics that aren't going to go away, and thus GC languages will always be precluded from certain domains.

    Scheme, ruby, python, lua, and lots of other languages come and go, but C++ is a powerful tool that is here to stay.

    1. Re:Give me a break by Anonymous Coward · · Score: 0

      > you will *never* be able to write a video codec in java

      There are several video codecs written in java. A simple fucking google search would have shown this to be true. You don't know jack shit about garbage collection. You think malloc() and free() have zero cost? You are garbage collecting with those two calls, you are just doing it by hand. Single-threaded. Probably not even batching.

    2. Re:Give me a break by gangien · · Score: 1

      C and C++ let you do things that you *cannot* no matter how hard you try in other languages.

      the reverse is also true.. but since they're all turing complete.. the only partial truth to your statement, is it isn't currently practical to do somethings in some languages, right now.

      No matter how much you improve the JVM, you will *never* be able to write a video codec in java (when the jvm compacts, it has to stop the world, and thus the video too). Nor will you be able to write kernel modules. Nor will you be able to write a large commercial video game. The list goes on and on...

      You can certainly write kernel modules in java(check out jnode.. and there's no reason you can't compile java code directly to native code anyways), you can certainly write a commmercial video game in java (fast and 3d and all that). And while I've never written or looked into writing a video codec, i would suspect you could do that in java as well. I think you're overestimating performance implications.

      Scheme, ruby, python, lua, and lots of other languages come and go, but C++ is a powerful tool that is here to stay.

      lisp (which is what scheme is), is older than C. And thus older than C++. fortran was first, then came lisp.

      I do however, aggree with your first statement, and who care's what's in fashion :)

    3. Re:Give me a break by quickbasicguru · · Score: 1

      You can write an OS in a garbage collected language. (The Lisp machines did it)

      I don't see why you can't write a video codec in a garbage collected language. (A good garbage collector and a program that generates little/no garbage helps)

      Garbage collection in some cases can be faster than manual memory management.

      With the proper tools, a high level language can be as fast as C.

    4. Re:Give me a break by zermous · · Score: 1

      Yeah, and keep this in mind: writing GC code that never has to GC is every bit as entertaining and black an art as coding that stuff in maximally efficient C. It can be done.

    5. Re:Give me a break by osu-neko · · Score: 1

      I think you're essentially agreeing. It was fashionable once to write high level apps in C++. Obviously it's never going to be replaced in those areas where other languags *cannot* do what it does. But as a general purpose, high-level language, yeah, it's a lot less fashionable than it once was.

      As for who cares what is in fashion, the answer is, anyone who doesn't suffer from "not invented here" syndrome. If you want to write everything from scratch, C++ is the way to go -- because you can do anything with it. But if you want to just get the job done quickly and efficiently without reinventing the wheel, you care what's in fashion, because whatever's in fashion is going to be what's most likely to have the tools available to just drop into your project and use. Indeed, the more fashionable it is, the more likely you'll have a rich smorgasbord of libraries and such to choose from, picking one that best suits your needs, minimizing your own work in adapting it to your purposes. It pays to be up with the latest fashion in this case.

      --
      "Convictions are more dangerous enemies of truth than lies."
  38. Also included on the list. by Anonymous Coward · · Score: 0
    What "programming languages" that they didn't include.

    The Next 50 Programming Languages


    The following list of languages denotes #51 to #100. Since the differences are relatively small, the programming languages are only listed (in alphabetical order).

    ...Verilog, VHDL...


    I guess that we HDL guys have our work cut out. Mark my words-- we will catch up to C/C++.

  39. Re:Just use Java by jythie · · Score: 1

    Yet you can do more true OOP in C then in C++... OOP in C is easy, you just don't have the 'work done for you' that you get in other languages. But C's runtime polymorphism is lighter and more powerful then Java or C++.

  40. The lower levels will always be there by CustomDesigned · · Score: 2, Insightful

    I do most of my work in Python and Java now. However, I often need to write in C/C++ to create JNI modules for Java or extension modules for Python. Wrapping low level (use 3rd party library) and performance intensive stuff for control via a higher level language is very productive. (C++ is handy for JNI, C is better for Python.) Furthermore, I even occasionally write small functions in assembler for C - usually to utilize a specialized instruction.

    1. Re:The lower levels will always be there by fermion · · Score: 1
      I concur. The high level languages change, often depending on the high level interfaces. It makes little sense to write high level interfaces in straight C. At most, you might use a something based on C.

      OTOH, I do not think there are many people writing low level code in assembly, which was not all that uncommon many years ago. On needed to interface to a external device, well sit down and write the glue code in assembly. It is the only way to work. Now, such code would be written in C or C++. Does that make assembly any less important? Does that make C any less? Well, sort of. One might be more likely to get a job writing in Python or Java, but I think it is kind of like a car mechanic who rely's on fancy diagnostic rather than intimate knowledge of how the car operates. Such a mechanic might provide cheaper service in the short term, but at some point needless parts will be replaced and things will remain unfixed.

      --
      "She's a scientist and a lesbian. She's not going to let it slide." Orphan Black
  41. Surprising charts by DanQuixote · · Score: 1


    With the help of the Standard Template Library (thank you vector and string!), I am 4 to 6 times more productive in C++ than in C. How is it that C is more "popular" than C++?

    Perhaps this study isn't showing what they think it is. As long as we can't count lines of production code directly, such a conclusion will be somewhat suspicious.

    --
    "We think people rightly feel that once they buy something, it stays bought," --Suw Charman, Open Rights Grp
  42. Wow - D! by Arakageeta · · Score: 1

    Wow. I'm amazed that D made the list. Could this really replace C++ given more time?

  43. Absolutely by DoofusOfDeath · · Score: 5, Funny

    Are C and C++ Losing Ground?

    Yes, but on the bright side, they lose ground about 1.5x faster than Java in most applications.

    1. Re:Absolutely by Anonymous Coward · · Score: 0

      And do it using at least one order of magnitude less RAM. It's just a darn shame to waste all the that available RAM.

  44. Unstructured programming by viking80 · · Score: 1

    I notice in the data that unstructured programming has been making a big leap forward. I guess I need to update my skills here. It also appears that spaghetti code is becoming more common.

    --
    don't cut it off www.mgmbill.org
  45. The Big Thing & the Big Language by heroine · · Score: 1

    Transparent garbage collection sure is nifty but it's not the real world. Start talking to the physical world & you have to think in terms of addresses & memory again. Most of today's software doesn't talk to the physical world. It's database management, document formatting, user interface design. If the big thing changes to talk to the real world, the language ratings could change real fast.

    1. Re:The Big Thing & the Big Language by osu-neko · · Score: 1

      ...it's not the real world. Start talking to the physical world... Most of today's software doesn't talk to the physical world. It's database management, document formatting, user interface design.[!!!]

      :o Have faith, program. The Users are real. They do exist.

      lol srsly! You seem to have turned "talking to the real world" on its head -- you seem to be defining it as the opposite of talking to the real world.

      --
      "Convictions are more dangerous enemies of truth than lies."
    2. Re:The Big Thing & the Big Language by marcosdumay · · Score: 1

      He is probably refering to interfacing hardware. Users are real, but "clicks" on widgets and all kinds of events most programmers use are virtual.

  46. We've replaced C/C++ with Python wherever possible by Sarusa · · Score: 5, Interesting

    We have certainly replaced C/C++ with Python wherever we can. This is about 90% of our software. Except where C is absolutely needed (which is mostly just in our kernel/device driver stuff), the 10x faster Python development and far easier code maintenance just outweighs everything else. That the Python is much less prone to crashing for programs beyond tiny one-offs is another big positive (yes, yes, if you write perfect C/C++ and don't use glib you'll never crash either, but in practice this never happens).

    In practice the speed difference doesn't matter for almost every application we've run into - we have a high speed network load tester in Python, which sounds ridiculous, but it works and it makes it insanely easier to add new tests or behaviors. If we ever hit a bottleneck, we just write a small C extension module and call that from the Python.

    I'm saying Python here, but insert your higher level language of choice.

  47. Nice statistic by mugnyte · · Score: 1


      The number of pages pointing to this comment is rising with certainty over the foreseeable future. Popular? Perhaps. Valuable stat? No.

  48. Interesting. by Anonymous Coward · · Score: 0

    But C's runtime polymorphism is lighter and more powerful then Java or C++. Could you elaborate on this?

    I'm curious how it is lighter, exactly.

    * In C you would set up an array of function pointers to represent your virtual methods.
    * In C++ the compiler would set up an array of function pointers (maybe we'll call it a 'virtual table', if you will?) to represent your virtual methods.

    Also, what sort of additional capabilities are possible with C OOP? Changing methods at runtime? That is the only thing I can think of off the top of my head, and that is covered by delegates/interfaces in C++ and Java, respectively.
    1. Re:Interesting. by jythie · · Score: 1

      vtables are often implemented via a symbolic lookup table rather then offsets so calling a function can often involve traversing the list to find the right one. Even with delegates and interfaces, true you can get some degree of runtime polymorphism, but these add some non-trivial redirections and can clog up both your call stack and symbol table. I admit there are not huge gains in C OOP nor are they things that can't be done in other languages with some work around, but they do require some significant additional complexity to do it.

  49. bandwagonism by epine · · Score: 5, Insightful

    I wouldn't say C or C++ is losing ground. They both continue to serve well in the niches they established.

    Meanwhile, other segments of the pie are expanding, and few of these new applications are coded in C or C++. Does that mean C and C++ are losing ground?

    There is no language out there that serves as a better C than C, or a better C++ than C++. The people who carp about C++ reject the C++ agenda, which is not to achieve supreme enlightenment, but to cope with any ugly reality you throw at it, across any scale of implementation.

    For those who wish to gaze toward enlightenment, there is always Java. Enlightenment is on the other side of a thick, protective window, but my isn't the view pretty? I've yet to encounter an "enlightened" language that offers a doorway rather than a window seat. I would be first in line if the hatch ever opened.

    The problem with C/C++ has long been that the number of programming projects far exceeds the number of people who have the particular aptitudes that C/C++ demand: those of us who don't need (or wish) to be protected from ourselves (or the guy programming next to us).

    It's not economically practical to force programmers who don't have that temperament to begin with to fight a losing battle with self-imposed coding invariants. I'm glad these people have other language choices where they can thrive within the scope of their particular gifts. I don't feel my role is diminished by their successes.

    For those of us who have gone to the trouble to cultivate hardcore program correctness skills, none of the supposed problems in the design of C or C++ are progress limiting factors, not within the zone of applications that demand a hardcore attitude toward program correctness.

    It's the natural order of things that hardcore niches are soon vacated by those unsuited to thrive there, leaving behind a critical core of people who specialize in deep-down nastiness.

    For example, it's not just anyone who maintains a root DNS server. I can say with some assurance that the person who does so did not earn his (or her) grey hairs by worrying about whether the implementation language supported automatic GC.

    Let's take a metaphor from the security sector. Ten years ago, a perimeter firewall was considered a good security measure. This measure alone eliminated 99% of TCP/IP based remote exploits.

    These days, most exploits are tunneled through http, or maybe I'm behind the times, and the true threat is now regarded to be some protocol tunneled within http.

    Then some genius comes along and says "in the security sector, TCP/IP defenses are losing ground". Quoi? Actually, no one is out there dismantling their TCP/IP based perimeter firewall. It's continuing to do the same essential job as ever.

    It's only the bandwagon that has picked up and moved camp. Yes, garbage collection and deep packet inspection are now all the rage. So it goes.

    Why not go around saying that sexual reproduction is all the rage these days? Would that imply we could eliminate all the organisms that reproduce asexually, and the earth's ecology would continue to function? Hardly.

    These new languages are soaking up much of the new code burden because these language are freed from having to cope with the nastiness at the extremes (small and large) that C/C++ have already taken care of.

    I would almost say that defines a success criteria for a programming language: if it removes enough nastiness from the application space, that the next language that comes along is free to function on a higher plane of convenience. C/C++ have both earned their stripes. Which of these new languages will achieve as much?

    1. Re:bandwagonism by Henry+V+.009 · · Score: 1

      Exactly. The statement that gets thrown around is "the right tool for the job" -- a statement which satisfies nobody because it says nothing.

      The fundamental truth of programming is that talent matters, and that some people have it while some people don't. All great software is created by people with talent.

      If you don't have talent, then stay as far away from C++ as you can. There are great languages out there for you, but they aren't C++. If you do have talent, then C++ will reward the time invested in it.

      The greatest asset of C++ is the seriousness and quality of the people supporting it -- the people who work on the new standards, the people who contribute and maintain Boost, the people who work on well-used libraries. There isn't a stronger community of programmers out there.

    2. Re:bandwagonism by Anonymous Coward · · Score: 0

      I wouldn't say C or C++ is losing ground. They both continue to serve well in the niches they established. That kind of response has a name: denial.
    3. Re:bandwagonism by BotnetZombie · · Score: 1

      Just one question, do you have a car analogy for that?

  50. No Assembly? by whitneyw · · Score: 1

    C is is great for being a very readable language that compiles fairly directly into assembly, but it is by no means the last word in performance. There are still systems for which even optimized C is too bloated. In the shop where I currently work, there are a lot of gray-haired, mainframe sages who still argue over which instruction is more appropriate. (They do not, of course, go to google for that kind of information.) The remarkable thing about it is that those choices sometimes make measurable differences. Those people scoff at C the way the C zealots posting here scoff at java.

    I couldn't help but notice that there were no assembly languages in the list. Let's not lose site of the fact that this survey measures flow through the intertubes, not actual usage or utility. Let's also not loose site of the fact that each language has its purpose, however humble.

    Even the mainframers agree, though, that you shouldn't program in COBOL if you can possibly avoid it.

    1. Re:No Assembly? by Anonymous Coward · · Score: 0

      And let's learn how to spell "lose".

  51. Re:For performance-critical code there is no choic by jameson · · Score: 4, Insightful

    Hi,

    Yes, some things need to be done in assembly or C in order to `stay competetive' or even just to remain within the realm of the possible. How much that is depends on your application and your platform.

    So, systems programmers, you need not worry, your skills are always going to be needed for something.

    But let's be honest here, 80% of the applications you can code entirely in Haskell or Prolog or Python or whatever fancy high-level language you may personally have come to love. And of the remaining 20%, you can usually still code 80% of the application in your favourite language and optimise the core 20% in C. (After profiling. Let me repeat that, AFTER profiling.)

    Will it run faster and in less memory if you do it all in C? If you do it properly, sure. But that's not the question to ask. If you work commercially, ask for `what will be most profitable in the long run, while remaining ethical'. If you work free software projects, ask for `what will benefit people the most'.

    Don't confuse the above questions with `what will satisfy my C(++) hacker ego the most'. And remember that it's not just about getting the code working and making it fast, it's about making the code robust; and in many cases it's also about making the code readable for whoever will maintain it after you.

    Apologies for this rant; feel free to mod it down if you so desire, but you, dear fellow programmers, have had it coming for quite a while, as did I.

  52. Re:C/C++ is dying! Plus Good by davidsyes · · Score: 1

    It's not too quite unpossible... But

    http://lyrics.learnithere.org/lyrics-category-e/eurythmics-lyrics/

    Well, maybe that's like asking if having a duo of Annie Lennox and Barbara Steisand, or Annie and Celine Dion would be losing musical ground...

    Let's ask Annie...

    DOUBLE plusgood....

    --
    Previously: "Linux... Toward the Sunrise..." Now: "Linux... Toward the-- No, now, part of Every Sunrise"
  53. Interesting list... by Anonymous Coward · · Score: 0

    ...though I'm having a hard time taking it seriously:
    Logo (that thing with the turtles?!) is more popular than either Bash and Awk, both of which are apparently less popular than Fortran. At the top end of the list, Pascal beats all of these hands down, whilst the more popular C++ gets a good hammering by Visual Basic.
    WTF?

  54. Vista's problems show it is not by snikulin · · Score: 1
    Well, look at Vista.

    While Vista-64 is fine on powerful workstation (my WS has 24 GB RAM and 8 cores, I do a lot of math), the OS clearly sucks on "normal" PC.

    Now, I overheard that a lot of Vista code was written on C#. And that they redo it in C/C++.

    Hmmmm

  55. Pascal??? by sfjoe · · Score: 0

    It says Pascal jumped from #21 to #15. That seems pretty dubious to me. I've got nothing against Pascal - that's almost all I used in college. I just can't imagine that many projects deciding it was just what they needed.

    --
    It's simple: I demand prosecution for torture.
    1. Re:Pascal??? by Is0m0rph · · Score: 1

      I was surprised to see that as well. I coded in Pascal for a company a long time ago and have never encountered it again. I can't ever think of something I would choose Pascal for now. C# is what I mainly use now and after programming for years under QNX ANSI C I'm loving .Net and C#.

    2. Re:Pascal??? by maz2331 · · Score: 1

      Pascal is actually a pretty useful language for some tasks. I use it a lot for string processing utilities and such where I need speed. Modern implementations are nearly as powerful as C or C++, and a good bit easier to read.

      C is my lanugage of choice for image processing, where pointers and low-level pixel manipulation in minimum time are critical.

  56. Good Riddance by FranTaylor · · Score: 0

    Hopefully someday we will have hardware that allows us to write the OS in a higher level language. I still have an old ChineUal so I know that it can be done.

    C and C++ are nothing more then portable assembler. Applications developers have no reason to get so close to the hardware.

  57. So what? by menace3society · · Score: 5, Insightful

    FORTRAN, Lisp, and Cobol have all lost ground. BASIC and Pascal used to be the big dogs instead of also-rans, and if Ada ever had any ground in the first place, it lost that.

    Even Perl isn't as popular as it used to be, now that other languages have started to fill its niche.

    Times change, and it should be unsurprising that the dominant programming languages change along with it. Some day, Java, PHP, Visual Basic, Python, and Ruby will all be obsolescent as well. Thirty years ago, computers were vastly different than they are now. In another thirty years, there will have been another quantum leap (intended) in computing. Why should the languages we program them with remain the same?

  58. Going, Going, ... by wagr · · Score: 1

    Another year and I'll finally be able to throw away my Ada generics.

  59. What the heck??? by LWATCDR · · Score: 0

    Okay I took a look at that list. All I can say is what!!!!!
    C++ fell .77%
    C is still number two.
    And list rates what? Search engine hits?
    D is ranked 12???? who the heck uses D?
    As to garbage collection vs manual memory management I have to say that I do like managed languages but feel there is room for both.
    But if you want grabage collection in c and c++ you can get it.
    http://www.hpl.hp.com/personal/Hans_Boehm/gc/

    --
    See my blog http://ilovecookes.blogspot.com/ for light hearted technical information.
  60. That's what's missing from my angry-old-man rants! by roystgnr · · Score: 4, Interesting

    Who's going to bother listening to my "back in my day, we programmed uphill in the snow both ways" stories when I don't even bother to use a monospaced font!

    And before I started up my 80x25 terminal window, I tied an onion to my belt, which was the style at the time.

    Yeah. Much better.

  61. Oh, man... by Richard+Steiner · · Score: 1

    What? SymStream and SuperSleuth aren't on the list??!? Man, I gotta update...

    --
    Mainframe/UNIX Bit Twiddler and long time Windows/Linux Hobbyist.
    The Theorem Theorem: If If, Then Then.
  62. Java speed by CustomDesigned · · Score: 1
    I have to counter that old saw.


    I use C/C++, Java, and Python. Java is not "slow as hell". The language itself is fairly close to C. What makes certain applications slow with the Sun VM is things like the default GC using twice as much memory, and very bloated environments like EJB. Even the startup time is reasonable beginning with Java 5 (the standard library is precompiled, and you can add your own libs).


    GNU Java compiles to native and uses a C++ compatible conservative collector (Boehm). It is fast. I loved Sun JDK 1.1 - I could run a network daemon in 256K. Even in 1.1, lowlevel benchmarks showed Java nearly as fast as C. Slowness was caused by the environments built on top of it (EJB). The modern JVMs are so bloated in comparison to 1.1 - good thing 2G is entry level memory. But their performance in incrementally better given enough memory.


    The fastest language for many problems seems to be Lisp, not C. I could never handle all those parens, and alternate syntaxes (Lisp is very flexible that way) just get me sneered at by the Lisp experts.

  63. The D Programming Language by Anonymous Coward · · Score: 0

    I was interested to see D rated 12th. Is anyone here using D for real projects? If so, do you like it? Do you see any chance of it gaining traction?

  64. Yes it is by Weaselmancer · · Score: 3, Insightful

    It's just slightly higher level. A C compiler outputs assembly code - that's the whole point of a C compiler. Think of C as the worlds greatest macro processor for assembly.

    That's why most compilers have some sort of ASM pragma - so you can inject your assembly into the code if you feel the compiler is doing a poor job of it.

    That's also why you'll never find a faster language. And that's why it'll never go away.

    --
    Weaselmancer
    rediculous.
    1. Re:Yes it is by osu-neko · · Score: 1

      Indeed. With many languages, I don't really know exactly what kind of machine code will be generated from a statement, and looking at the output with a disassembler can be shocking. With C, I can pretty much tell you exactly what machine code is going to be generated (assuming I'm familiar with the target processor), and generally the output from a disassembler looks like something somewhere between "pretty much what I thought" and "exactly what I thought", with the tendency being towards the latter. Without using "asm" you don't have direct access to the target processor's unique features, but that's beside the point -- C pretty much really is portable assembly language, you only use "asm" when you're deliberately doing something non-portable.

      Sooner or later, everything comes down to machine code, so at the heart of any system you're going to find some sort of assembly language, no matter what becomes popular at the higher levels. To date, no one's come up with a better portable assembler than C, so its place in the grand scheme of things is pretty secure.

      --
      "Convictions are more dangerous enemies of truth than lies."
    2. Re:Yes it is by Weaselmancer · · Score: 5, Funny

      Best laugh of the day - thank you. =)

      Hey, you've given me an idea though. You know what would be even faster? Now...don't stop me until you hear me out, okay?

      If Java is faster than C, we should rewrite the Java VM...in Java! Interpreted code running in an interpreter...that is *also* interpreted!

      Just think of the speed increase! It would be like using uranium to fuel the space shuttle! Awesome multiplied by awesome.

      --
      Weaselmancer
      rediculous.
    3. Re:Yes it is by Threni · · Score: 1

      > It's just slightly higher level. A C compiler outputs assembly code - that's the whole point of a C compiler. Think of C as the worlds
      > greatest macro processor for assembly.

      I've written games in both C and assembly language, and they're different. An assembler has an almost line for line mapping of source code to instructions, unless you do a lot of work with macros and the preprocessor. C often allows you to use `emit` to squirt assembly language into the output, but other than that it's free to implement the instructions any way it wishes. You'd be highly unlikely to use a C compiler to write assembly language. That's the whole point of C - allowing you to write low level code without having to rewrite from scratch when you move platforms. Assembly language is for when you want to target a specific CPU for reasons of speed, knowing full well that moving from z-80 to 6800 or whatever will involve an almost total rewrite.

    4. Re:Yes it is by MichaelNeale · · Score: 1

      You can get OpenJDK source yourself, and see that it is between 70 and 80% written in java itself.

      But I wouldn't let facts get in the way of your excellent well thought out argument.

    5. Re:Yes it is by Anonymous Coward · · Score: 0

      You know, there are java->native compilers for a wide range of instruction set architectures, right? Like, for example, the java compiler in the GNU Compiler Collection (gcc).

      Here's a current overview of the GNU Compiler for Java: http://en.wikipedia.org/w/index.php?title=GNU_Compiler_for_Java&oldid=203000078

      "It can compile Java source code ... directly to machine code for any of a number of CPU architectures".

      Java compiled with gcj can outperform C compiled with gcc for some computational problems. It is also less likely to suffer from a variety of common C programming bugs.

    6. Re:Yes it is by RobBebop · · Score: 1

      Awesome multiplied by awesome. awesome^2 ?
      --
      Support the 30 Hour Work Week!!!
    7. Re:Yes it is by MichaelSmith · · Score: 2

      Lately I have been working on little applications for myself which I release under a GPL. They are not much: a front end for my GPS, an educational game/toy for my son.

      So far it has all been in java but then I read another article about the apple Lisa and decided to write a document oriented desktop for my eeePC.

      Wanting it to be blindingly fast I started working in C with XLib and Xt calls. It is coming along nicely but the graphics are horribly slow compared to what I could do in Java. I think part of the reason is I am drawing icons as xpm images. A project I work on in my day job uses a font for drawing icons instead.

      Overall it is no faster than java and the java graphics API's seem to contain workarounds for bugs in X.

      I love working in C. It has been a great experience but the JIT based runtime seems to deliver results which a simple compiler can not.

    8. Re:Yes it is by gstamp · · Score: 2, Informative

      >If Java is faster than C, we should rewrite the Java VM...in Java!  Interpreted
      >code running in an interpreter...that is *also* interpreted!

      >Just think of the speed increase!  It would be like using uranium to fuel the
      >space shuttle!  Awesome <i>multiplied by awesome.

      Been done.

      http://jikesrvm.org/

      You do know that Java hasn't been interpreted for a long long time right?

      Hotspot JIT compilers are pretty cool. You should check them out sometime.

    9. Re:Yes it is by Anonymous Coward · · Score: 0

      Oh but C is written in C.
      It surely must be possible!!!!!

    10. Re:Yes it is by RightSaidFred99 · · Score: 1

      He was talking about the Java..VM of course. And Java isn't faster than C, of course, unless your C compiler sucks. It's pretty fast in some things, though.

    11. Re:Yes it is by LarsWestergren · · Score: 1

      Interpreted code running in an interpreter...that is *also* interpreted! Just think of the speed increase! It would be like using uranium to fuel the space shuttle! Awesome multiplied by awesome.

      Of course you always need a low lever layer to go through. But adding another layer to increase performance isn't as outlandish a thought as you might think. JRuby is a virtual machine for Ruby written in Java to run on top of the Java virtual machine... and these days it is generally faster than the Ruby VM written in C.

      --

      Being bitter is drinking poison and hoping someone else will die

    12. Re:Yes it is by mgiuca · · Score: 1

      Well I don't know the exact statistics, but the idea of a high level language being faster than C (in CERTAIN INSTANCES) is fairly valid.

      This is because if you use, eg, Java libraries for a hash table, then it will have been written in C, and by people who have spent a lot more effort thinking about hash tables than you are likely to. Same with a garbage collector - it has been proven to run faster than manual de-allocation in certain cases.

      This all comes down to the fact that Java was written in C, and hugely optimised.

      The idea (yes, I know it was a joke, but don't stop me until you hear me out) of writing the Java VM in Java is flawed because then you won't get the speed boost of hand-optimising low-level libraries and mechanisms in C.

    13. Re:Yes it is by enos · · Score: 1

      What you're missing is that the JVM isn't limited to compiling once. At first it does a very quick compilation of the bytecode to native which isn't much faster than interpreting (but it's compiled!). Then, it watches the code execute, and the often used parts get recompiled with better optimizations and swapped in.

      Java code is faster than C for a simple reason: It has more optimizations at its disposal. A C compiler can only optimize what it can guess will happen. The JVM can also optimize based on exactly how your program runs, and it can recompile as the runtime behavior changes.

      Just because Swing is a slow UI toolkit and that the JVM takes some time to start doesn't mean that Java is slow once warmed up.

      --
      boldly going forward, 'cause we can't find reverse
    14. Re:Yes it is by enos · · Score: 2, Informative
      Most of the JVM is written in Java. Only a small bit to bootstrap things is written in C. The compiler (bytecode->native), garbage collector(s) (you can write your own, btw), class loader, class verifier, etc, are written in Java.

      C isn't faster than Java, of course, unless your program finishes before the JVM's overhead can be amortized. Anything that needs a long time to run will probably be faster in Java.

      --
      boldly going forward, 'cause we can't find reverse
    15. Re:Yes it is by TheRaven64 · · Score: 1

      Try using XCB. If you use xlib then you need to be very, very clever in order for X latency not to be noticeable to your users. Also, make sure you are using XSHM to transfer your images to the server (so you don't need to copy them through a socket every screen redraw) and, if at all possible, use the render and composite extensions for as much drawing as you can (they will offload stuff to the GPU where they can, and have fast CPU implementations where they can't).

      --
      I am TheRaven on Soylent News
    16. Re:Yes it is by TheRaven64 · · Score: 1

      This has nothing to do with the language, and everything to do with the implementation. SGI, I believe, had a research project in the '90s where they ran a binary-rewriting MIPS emulator on a MIPS system and got about a 10-20% speed up over the same code running directly on the hardware. Something like LLVM can do runtime profiling and optimisation for any source language it supports (including C).

      --
      I am TheRaven on Soylent News
    17. Re:Yes it is by Schadrach · · Score: 1

      You know what's funny? Generally the first thing you should write in a language once you have a running compiler for it is a compiler for the language itself. This sounds bizarre to some people, but it leads to a lot of interesting tricks, where you can do things like optimize the compiler, compile it with itself twice and have an optimizing compiler that itself has been optimized in the same manner. If you write the compiler to be modular, you can swap out the code generation component, and compile it with the new one to make a cross compiler, then compile it with that to make a native code compiler for the new platform. You can also have things that the compiler simply "knows" because a previous version of it was compiled to know, such as having the compiler source emit '\"' when encountering the \" special character. Think about that one for a bit.

    18. Re:Yes it is by Beefpatrol · · Score: 1

      Most of the comparisons I have seen have shown that in many situations, Java can approach the speed of C. That being said, I can understand that there may be some situations where the C compiler in question gets itself into an optimization corner and produces code that is less efficient than a reasonable Java counterpart. I'd be really really surprised, however, if you were to take a cross section of typical programs, write them in Java and C, (in a fairly normal manner), and had the Java programs beat the C programs on average. I don't really see how that is possible unless you were specifically trying to use examples that the exploited the best properties of the JVM and the worst properties of the C compiler and processor in question.

    19. Re:Yes it is by RightSaidFred99 · · Score: 1

      This is all horribly wrong. What's your next argument - "This just in, Java faster than assembly code programming!". Well, sure, if your assembly code programmer is a moron. By definition the closer to the metal you are, the faster the code you can write. You will be hard pressed to find _anything_ that's IO or computationally intensive that performs better for any length of run in Java than in C. The idea that "anything that needs a long time to run will probably be faster in Java" is quite simply ridiculous. There may be a few special cases where the JVM (which _is_ mostly written in C, by the way) may be able to optimize a few local cases better, but that's few and far between. As for JVM in Java, of course not. Seriously, how do you think your Java program interfaces with the OS? Hint: There is no Java call to "open()" or "exec()". Everything used by your JVM that's in Java is in the jar files that come with your runtime. The java binary and all the shared libraries you see in your JRE directory are written in C.

    20. Re:Yes it is by afroborg · · Score: 1

      Surely that is everything to do with the compiler and nothing to do with the language though

      --
      my sig could kick your sig's arse...
    21. Re:Yes it is by enos · · Score: 1

      Easy there, don't put words in my mouth. C was created to it can be used to write an OS (Unix) and it does that very well. Java was created to write applications. Of course you want to write drivers and OSes in C.

      But just because you're coding in assembly doesn't automatically make your code efficient. I don't care how good your assembly guy is, he won't be able to write more than just the inner loops of an app in assembler in any reasonable amount of time. Even games are no longer using assembly because it's jut not worth it.

      You missed my point that Java makes a lot of optimizations which take time to perform. Therefore their cost must be amortized over time. That's where the speed comes in. Why do you think a lot of webservers are written in Java? It's not all crap.

      So what that Java doesn't have the native library functions? It uses the system ones! You don't have to have code written in C to be able to link in to those. You just have to emit compatible assembly, which the bytecode->native compiler can do just fine.

      I'm not saying Java is the holy grail and we should all switch. It does have problems, but being automatically slower than C is not one of them.

      --
      boldly going forward, 'cause we can't find reverse
    22. Re:Yes it is by MichaelNeale · · Score: 1

      No OpenJDK includes the VM (perhaps it isn't well named) - but I was counting the VM in that.

      If you took out the core of the VM, it would be 100% java. There is a java version of hotspot being worked on, which will make it easier for the instruction generation/inlining to be ported to other architectures as they arise (as it is, it is fairly x86 centric at the moment IIRC).

  65. "for the foreseeable future." by Anonymous Coward · · Score: 0

    I knew the c/c++ flamers would come out to my comment but no one can see beyond a local computer doing their processing? think 20-30 years from now, you will not have the desktop operating system you know today running c and c++. you will be using the internet as a medium for every bit of your computing needs; centralized computing requiring 1 big ass server that might run on the underlyings of c/c++ but no desktop nodes will be needed, just an internet connection with a hard drive making c/c++ very minimal for any useful task at that point.

    mark my words haters :)

    PS. the irony of my captcha: dinosaur

    1. Re:"for the foreseeable future." by porkchop_d_clown · · Score: 1

      We could have had that today, if the idiots controlling Plan9 and Inferno hadn't put such ridiculous licensing restrictions on them.

      They were so worried about their precious IP they ensured that no one would ever use it for anything.

  66. C++ - as garbage collected as you wanna be by SpinyNorman · · Score: 2, Interesting

    There's nothing to stop you from exclusively using reference-counted smart pointers and garbage collection in C++, for some or all of a project, if that's really your thing.

    For me, C++ destructors (each object responsibe for it's own storage) remove most of the hassle of freeing storage, and I've never hankered after garbage collection.

    1. Re:C++ - as garbage collected as you wanna be by Anonymous Coward · · Score: 0

      Yep. Right now, in a successful real-world project (WAY faster than our Perl and Java solutions, by the way), there are exactly four calls to "new" and /zero/ to "delete". It doesn't leak memory.

      All smart pointers.

  67. The 8Mhz computers are still widely used by technoextreme · · Score: 1

    I write code that's IN the hardware.

    As someone said the need to utilize C because of the 8Mhz computers are long gone. The problem is that he failed to realize that the 8Mhz computers are just working in a different place. For example most people probably have a bunch of them in their car and the only way to program them is with C, C++, or Assembler.
    --
    Ooo man the floppy drive is broken. No wait. The computer is just upside down.
  68. Yawn. by Anonymous Coward · · Score: 0

    Oh, not another one of these. (sigh)

    Fine. I'll throw this in: Most stuff runs on or is implemented in C or C++. Adoption rate != deployment rate != growth rate != use rate != "ground".

  69. Stupid typo by technoextreme · · Score: 1

    I meant to write 8Mhz desktop computers.

    --
    Ooo man the floppy drive is broken. No wait. The computer is just upside down.
  70. D programming language by WalterBright · · Score: 1

    I doubt that legacy C++ code will ever be rewritten in the D programming language, but D can easily replace C++ for new projects. You can do the same things in D as in C++, it's just a lot easier.

    1. Re:D programming language by marcosdumay · · Score: 1

      It is nice that D is so hight on the list. Last time I checket, it was just a promissing project with an alpha release.

      Well, it is still promissing...

  71. Flaws... by andy55 · · Score: 1

    There seems to be two flaws if a language's "popularity" is measured solely by its web presence and activity... First, proprietary/closed/corporate software development generally occurs off the public/web radar, so if the goal is to evaluate trends in a language's use and popularity, we need to be looking at more than what's on sourceforge, public support forums, and so on. Second, more activity in, say, a C# forum only means that more questions were asked questions about C# than in a C++ forum. The other day someone was insisting to me that Apple rightfully is killing Carbon and going with Cocoa b/c of how much more activity the Cocoa mail list sees than the Carbon mail list (the implication that activity equals popularity *and* quality). I replied that *may* be the case, but it *could* be the case that Cocoa is inherently harder to learn and more a pain than Carbon (thus resulting in more mail list activity and questions).

    I head what amounts to high performance desktop graphics (think desktop video gaming), and most of our stuff has to be in C/C++ for performance, legal portability, and embedded/platform portability. So, we're basically no different than companies like EA (codebase wise), so I feel confident and qualified in saying that the whole discussion of what language is the most "popular" is just silly.

    It amazes me that people still spend time with these kind of language popularity estimates, as if an X% difference of "usage" actually means anything useful. Even if it were possible to add up and know how many hours the world spent using each language in a year's time, what would that accomplish? I suppose the big discovery would be that it's all about finding the right tool for the job. Of course, the joke here is that any developer or manager worth anything already knows this.

  72. Hammers and screwdrivers by Weaselmancer · · Score: 4, Insightful

    I haven't written a line of code in C or C++ since I started with C#

    That says nothing about those languages. All that says anything about is your job.

    I write drivers, so I could make the opposite statement. Doesn't say anything about the relative merits of one language versus another though. All it says is that I'm in an environment where C makes more sense.

    In summary: A hammer is best when your problem is a nail, and a screwdriver is best when your problem is a screw.

    --
    Weaselmancer
    rediculous.
    1. Re:Hammers and screwdrivers by Chris+Burke · · Score: 4, Funny

      In summary: A hammer is best when your problem is a nail, and a screwdriver is best when your problem is a screw.

      I also find screwdrivers to be a very good solution when my problem is sobriety, and maybe Vitamin C deficiency.

      --

      The enemies of Democracy are
    2. Re:Hammers and screwdrivers by Anonymous Coward · · Score: 0



      That is absolutely the truth. I can't count the number of time I've been "told" to code a device driver using C++ or perhaps Java. Yea right. Blah. C has not lost any ground in the embedded realm despite idiotic project management.

  73. latest trend by Anonymous Coward · · Score: 0

    The article misses the latest trend, which is programming directly in binary by flipping switches back and forth.

  74. Die already by Cultural+Sublimation · · Score: 1

    I, for one, sincerely hope that C++ is indeed losing ground. The language started already on the wrong foot (making it backwards compatible with C was a terrible mistake) and has since become the ultimate cathedral of rococo horror.

    (Have you noticed how most (relatively) sane C++ developers tend to use only a subset of the language? And how C++ dev teams inevitably run into problems when the subsets mastered by different programmers are disjoint?)

    Note that I did dabble in C++ for a number of years. But now, I only regret not having discovered Ocaml sooner. Though a functional programming language, it isn't one useful only for academic wankery. Quite on the contrary; it's very pragmatic in its design, supporting also imperative and object oriented programming. And by virtue of its very expressive and strong type system, it makes programming far safer than in C++ or even Java (no "null pointer exceptions" or that sort of runtime failure). Moreover, it is a very fast language (comparable to C++ in terms of speed) and has an excellent coverage in terms of available libraries.

    So you will pardon me if I don't shed a tear on news of C++'s impending demise...

  75. Yes indeed! When I'll switch from C/C++ by Anonymous Coward · · Score: 0

    If you notice the numbers, C and C++ combined outdo Java.

    I'll switch from C when the UNIX/Linux kernel is rewritten in something else. Kernel engineers tend to be the best programmers around (sorry, that's not intended as a troll - just extreme personal bias :) ). So when they (ahem, we) find something better, I'll definitely use it. But not until then.

  76. Anecdotal experience by raw-sewage · · Score: 2, Interesting

    I've been in the "real world" for about six years now, after graduating with a computer science degree. I'm currently in Chicago, Illinois, USA. I've spent the past several months looking for a good software engineering job, both in the Chicago and Milwaukee (Wisconsin) areas. Just from this experience, my take is that Java and C#/.NET technologies are hottest right now.

    My first job was using C and C++. This was partly due to historical reasons (the application was about 12 years old), but also because the API for the platform was only in C. Shortly before I came in, and during my tenure there, we were trying to move more towards C++ and build a more object-oriented framework. My current position is at a high-frequency trading firm. All our software is custom and mostly C++ (some C here and there, and a handful of Perl to glue things together).

    So based on this experience, when I was looking for a job, I was focusing on C/C++ positions. What I found is that there aren't a lot of people looking for C/C++ developers. In Milwaukee, virtually all of the demand for C/C++ programmers was for embedded systems. In Chicago, there was little demand for experience in those languages outside of embedded systems and the finance industry (which I was/am trying to get out of!).

    This is just my casual observation of a relatively small portion of the software engineer landscape as a whole.

    On top of a diminishing demand for C/C++ programmers, I found that quite a few companies who were looking for Java/C# programmers wouldn't even consider C/C++ people. The languages aren't all that different, and the concepts should definitely be portable. I think knowing concepts, understanding programming ideas/patterns, problem solving, etc, are more important that knowing the specifics of a particular language. Shrug.

  77. That'd be good as a new/delete back-end by tepples · · Score: 1

    C is the perfect language to implement memory management in, in fact, because it has perfect fine-grained control over memory. It could be argued that C++ is the perfect language to use with your optimized C allocator. Just override operators new and delete, and other methods using this object get the benefits of RAII.
  78. Speed of light limits Internet speeds by tepples · · Score: 3, Insightful

    when we have internet that is as fast as cpu response times Unlikely. Even hard drives are faster than routing a ping from London to Tokyo and back.
    1. Re:Speed of light limits Internet speeds by mcvos · · Score: 1

      when we have internet that is as fast as cpu response times Unlikely. Even hard drives are faster than routing a ping from London to Tokyo and back. But in optimal circumstances, the internet is already faster than '70s tape reels, so internet is catching up with storage speeds.

  79. Re:That's what's missing from my angry-old-man ran by Jehosephat2k · · Score: 2, Funny

    All you young bucks, let me tell you somethig. Back in the good ol' days when I was a programmer, we didn't have all these fancy "windows" and "icons". All we had were 1's and 0's. And sometimes we didn't have any 1's. Once I wrote a database using only 0's. And we liked it.

  80. GC is the thing by heffrey · · Score: 1

    The thing about having GC is not that it makes it easier to avoid memory problems, it is that it makes writing code more enjoyable. Contrast writing something in Python, say, with writing it in C. In Python you can concentrate on the job at hand. In C you spend all your time doing the book keeping. Obviously there's a place for C and C++, and Java, C#, Python, Ruby, Fortran, Delphi etc. etc. etc., but people will work with what they enjoy. And that means that when you get to choose between C/C++ and a higher level language then the HLL will win.

  81. This guy is a MS dupe by Anonymous Coward · · Score: 0

    C is not going anywhere, nor is C++, nor perl. Java and C# are both terrible implementations that fulfill the same need (badly).

  82. Then why are Pascal and Delphi separate? by tepples · · Score: 1

    In fact, the "(Visual) Basic" heading leads me to think that all versions of Basic might be included. Then why didn't the survey include Pascal and Delphi in one line in the same way? Delphi is as much Pascal as Visual Basic is BASIC.
    1. Re:Then why are Pascal and Delphi separate? by metamatic · · Score: 1

      There's an accepted ANSI/ISO open standard for Pascal, and Delphi doesn't fully implement it.

      Whereas Visual Basic is compatible with ANSI BASIC, being ANSI BASIC plus extensions.

      --
      GCHQ Quantum Insert installed. If only our tongues were made of glass, how much more careful we would be when we speak
  83. Time to get a new account by turgid · · Score: 0, Flamebait

    Posts from this one keep getting modded troll and flamebait.

  84. Get used to that by Weaselmancer · · Score: 1

    I don't trust most people to program in C. It's great if can do it well, but for every person who CAN do it well there are 3 who only think they can.

    And as time marches on, that ratio will only get worse. People who pick up a primary language that has garbage collection will be seriously handicapped if they ever need to write in a language that doesn't have it.

    That means people who do down-to-the-wire systems work will someday become as rare as hen's teeth. And it will always be necessary to have these folks around.

    --
    Weaselmancer
    rediculous.
    1. Re:Get used to that by caluml · · Score: 1

      People who pick up a primary language that has garbage collection will be seriously handicapped if they ever need to write in a language that doesn't have it. And people that drive cars will be seriously handicapped if they ever need to ride a horse and cart.
  85. Even on small systems? by tepples · · Score: 1

    Both .NET and Mono allow for C#, so you're not stuck on one platform. So what happens when you are presented with an embedded-style platform with 4 MB of RAM? Do you expect to be able to shrink Mono to fit?
    1. Re:Even on small systems? by inasity_rules · · Score: 1

      I still use PIC16F877As. Around 4Kb memory and 35 instructions. Its amazing what you can do with so little.

      --
      I have determined that my sig is indeterminate.
  86. Memory management is NOT difficult by pestilence669 · · Score: 1, Troll

    Developers that cannot manage their own memory are not real developers. Period. Try threading sometime.

  87. Objective C (v2.0) soon to be there? by chaim79 · · Score: 1

    With the iPhone SDK coming out and being 100% Objective C (v2.0) and Apple development in general being mostly Objective C (v2.0 in Leopard, v1.x in Tiger and earlier), I wonder how long it will be before it shows up on the list.

    And in case you are wondering, Objective C v2.0 introduced optional Garbage Collection to this language, designed to be somewhat backwards compatible (GC can be required or optional, if optional it will run on Objective C 1.x systems).

    --
    DEMETRIUS: Villain, what hast thou done?
    AARON: Villain, I have done thy mother.
    Shakespeare invents 'your mom'
  88. Re:For performance-critical code there is no choic by tepples · · Score: 1

    For image processing (film/video), real-time audio or any serious signal processing, the overhead of anything but C/C++ is killer. It'll be news when Adobe After Effects or Autodesk Flame is rewritten in python. A common Python idiom is an extension written in C++ that implements signal processing. Then the front-end doesn't lose as much speed to the Python interpreter.
  89. I disagree somewhat by Weaselmancer · · Score: 1

    First off, let me say that I agree with you about Java not being slow. It's quick enough to write emulators on that run reasonably well. And those are notoriously computation and speed intensive. But I have to take exception with this statement:

    All the benchmarks are showing Java exceeding C++ performance and giving C a run for its money

    Java can never give C a run for its money. C takes in C files and outputs assembly code. Java takes in java files and outputs java bytecode, which is interpreted by a virtual machine. It can never approach C in terms of speed.

    The only thing that has a chance of being faster than C is hand-crafted assembly. And that being done by someone who knows more optimizations than the compiler. Possible, but unlikely.

    Good examples of people who could pull off this feat are the demo-scene folks from the 1980's in the Amiga scene. They were better than compilers. Other than that, I don't know of any others.

    --
    Weaselmancer
    rediculous.
    1. Re:I disagree somewhat by AKAImBatman · · Score: 1

      Java can never give C a run for its money. C takes in C files and outputs assembly code. Java takes in java files and outputs java bytecode, which is interpreted by a virtual machine. It can never approach C in terms of speed.

      This statement shows an extreme ignorance of how the Virtual Machine functions. The bytecode is only an intermediary format, similar to the P-Code that GCC outputs before converting it into a native program. When the Hotspot VM gets ahold of it, it does the following:

      1. Interprets the code.
      2. If the code is run more than once, compile it to a native module and execute.
      3. If the code is identified as a performance-critical area, do a runtime analysis to optimize the living hell out of the code.

      Step 3 is quite interesting, as the hotspot compiler can remove all kinds of bounds checks, dynamically unroll loops, inline methods, and perform other optimizations that can only be proven to be correct at runtime, but not at compile-time. In addition, hotspot has the opportunity to tune the compiled code to match the CPU rather than compiling for the lowest-common denominator. Something that C/C++ compilers can't do without creating a massively bloated executable. (i.e. A separate code path for each CPU. Something that the Intel compiler actually does do on a limited basis to provide higher performance levels for their latest processors.)

      THAT is why hotspot is capable of kicking C++ up between its ears.
    2. Re:I disagree somewhat by Anonymous Coward · · Score: 0

      John Carmack, Michael Abrash, Terje Matheson. What planet have you been living on?

  90. Garbage Collection...No Thank You by Jcarr45 · · Score: 1

    [quote]"Languages without automated garbage collection are getting out of fashion"[/quote]
    We have had so much trouble with GC taking our application down that we implemented our on measures to handle this. We run a real-time application that would come to a stand-still while GC was in process. All because some suit decided we needed to add some Buzz words to our Marketing, e.g. Java

  91. C++ losing favor by apharmdq · · Score: 2, Interesting

    I'm not really sure why C++ is so ill-favored lately. It may not be fully OO, but there are many times when a fully OO solution is counterintuitive. Instead, C++ allows the developer to choose whether they want an OO solution or not. I also see a lot of complaints about C++ performance in comparison to C performance, but really, when properly implemented there is little difference. The same goes for garbage collection. Granted you have to write it yourself, but program-specific garbage collection will ALWAYS be more efficient than automatic garbage collection.

    I think it's generally agreed that C and C++ aren't going anywhere anytime soon, since a lower-level programming language will always be needed. However, sidelining C++ in favor of C is definitely not a good idea, as C++ does offer many advantages that C lacks. (Yes, even for kernel development.)

    I'd go into more depth, but this article really does a good job of explaining it:
    http://unthought.net/c++/c_vs_c++.html

  92. PowerShell is NOT VB by PRMan · · Score: 1

    PowerShell is its own .NET language.

    --
    Peter predicted that you would "deliberately forget" creation 2000 years ago...
  93. Utter BullShit by imus · · Score: 0, Troll

    Apache, Perl, Python, Ruby, MySQL, etc... are ALL written in C or C++. What a stupid, uninformed claim to make!

  94. C isn't dead... by Tumbleweed · · Score: 2, Funny

    ...it just smells that way.

  95. those other languages are MADE with C by karmaflux · · Score: 1, Insightful

    1. Java.....20.5% - runtime written in C
    2. C........14.7% - duh
    3. VB.......11.6% - who cares
    4. PHP......10.3% - written in C++
    5. C++.......9.9% - duh
    6. Perl......5.9% - written in C
    7. Python....4.5% - written in C
    8. C#........3.8% - who cares
    9. Ruby......2.9% - written in C
    10. Delphi...2.7% - no idea

    ...somehow I doubt C or C++ are going anywhere. The good news is if they DO die at least they'll take PHP with them.

    --

    REM Old programmers don't die. They just GOSUB without RETURN.

    1. Re:those other languages are MADE with C by _Shad0w_ · · Score: 1

      My guess would be that the C# compiler - along with pretty much everything else that's part of Visual Studio, including VB.NET - is implemented in C++. I expect the .NET framework itself is also coded in C++

      --

      Yeah, I had a sig once; I got bored of it.

    2. Re:those other languages are MADE with C by DragonWriter · · Score: 1

      9. Ruby......2.9% - written in C


      The main interpreter for is written in C, JRuby (an alternative implementation that is very popular) is pure Java, HotRuby runs the bytecodes for the YARV (Ruby 1.9) VM on JavaScript/Flash.
    3. Re:those other languages are MADE with C by Valafar · · Score: 1

      Actually, no. The compiler(s) are written in C++ but the Framework itself is actually written in C#.

  96. D programming language by porneL · · Score: 2, Insightful

    D also offers syntax and ease of writing comparable to C#/Java, but is faster, doesn't require VM and compiles to native code linkable with C.

  97. Pascal / FoxPro ?! by PureCreditor · · Score: 1

    i agree that C++ needs to be updated for auto GC. Perhaps like a C# version of C++ without the vendor-tie-in.

    C will *always* have its place in OS and systems-level programming. The high-level of abstraction in modern languages are preventing them from being an effective C replacement (which wants the lowest-level and no abstraction).

    Now, why is Pascal and FoxPro growing so fast?? I didn't know there's such a huge demand for those 2?? Or have I been living in a cave through the Web 2.0 era?

    ps : can someone explain the pros and cons of Ruby v. Python? I haven't programmed in either.

  98. Wow, look at D go! by Tumbleweed · · Score: 1

    I'm shocked and pleased that D is even on the top2 0 list, much less at #12 already. I guess going 1.0 last year really helped with adoption. Now it just needs a lot of dev tools to really send it into the top ten. If you want to replace C with something C-like, I can't think of anything better than D as far as the language itself goes; we just need those supporting tools.

  99. His comments don't make SENSE by xquark · · Score: 1

    No where in the paragraph that starts off with c and c++ is loosing ground does he mention why, then he goes off and talks about automated GC, come on if any language were NOT to have GC it would be the likes of c or c++. I don't believe he has much clue as to what is going on, and the way his org collects and interprets data is flawed to say the least.

    --
    Arash Partow's Philosophy: Be a person who knows what they don't know, and not a person who doesn't know.
  100. And what are all those other languages written in? by Tomy · · Score: 2, Insightful


    Until a language comes along that can outperform C or C++, there will always be a use for them.

    It's still right-tool-for-the-job. I don't use Ruby to write audio DSP plugins, and I don't use C/C++ to code a web application.

    I'll keep both in my tool box, along with lisp, ... and this thermos.

  101. Python+Fortran or JAVA+Groovy by goombah99 · · Score: 4, Insightful

    In the work I do--scientific calculations with a lot of fast numerics, , python + fortran seems like nirvana, as each overcomes the shortcomings of the other. One could just as well use C except the efficient numeric libs and memory layout give fortran an edge.

    This of course is not the match made in heaven for everyone but numerical scientists should look hard.

    What's so good?
    Utility:
    Well there's a strong base of numeric libraries in Python that are fortran array freindly so there's a good base to grow off of.

    Second F2PY, which creates python modules out of fortran subs works so well it's almost transparent and painless. Even cooler is that because fortran compiles are ludicrously fast compared to C++, you can generate fortran code in the python compiler at run time and compile it one the fly for creating modules optimized to your problem.

    Given you are wrapping in python, the availability of groovy C++ libs is not really very enticing at all given the pain you will pay for having to write the whole program in C++.

    Practical:
    Fortran as a stand alone language kinda blows for versatility and modern program architectures. But if all you are doing is writing a function then it's a sweet language because it's language syntax is so tight that it's harder to make a syntax error that compiles, and hard to logic errors seem to be less evasive than in C. (e.g. using i++ instead of ++i or doing I=4 instead of i==4 are not possible in fortran's limited syntax).

    Thus you write functions and let python deal with all the memory management, human interface, file management, command line arg parsing and all the messy bits that end up being a lot bigger than the function where the program spends all it's time.

    Fortran is also very optimization friendly since things like matrix multiplies and out-of-order loops are part of the core language.

    This is debatable but I find that fortran seems to have a more logical memory order in 2-d arrays. Namely if you take a sub-array you get elements that are consecutive in memory and thus for most microprocessors will all get pulled into the cache on the same page. Slices of C-arrays have consecutive elements spaced by the row width apart in memory. One can of course find cases where one is preferred over another.

    I do however which python had some way of optionally typing variables that was less cumbersome and slow than decorators or explicit run-time type checking. I virtually never write python that takes advantage of introspection or dynamic typing so the ability not to have some protection--optionally and just to debug--by type checking is annoying.

    But If I were starting from scratch and did not have a compelling need for all those wonderful fortran numeric libs, I think the optimal choice in the future is going to be

    Java+ Groovy.

    basically you learn one syntax and get the best of both interpreted and compiled languages. Develop it in groovy then migrate the slow bits to JAVA. import all the great JAVA libs.

    And since it's nearly the same syntax it's easy to read.

    --
    Some drink at the fountain of knowledge. Others just gargle.
    1. Re:Python+Fortran or JAVA+Groovy by goombah99 · · Score: 4, Insightful

      Replying to myself because I forgot to add why I think Java+groovy has a big future.

      The big achilles heel of python is that it currently truly sucks for multi-core programming and it would appear that attempts to solve this are not coming quickly. It's global interpreter lock means that multi-threading gains almost no speed over a single processor. It's darn clumsy to fork in part because it takes so long for python to unwind it's stack when a job exits. And it's never written from the ground up to be thread safe.

      Fortran95 and 2003 have huge potentials for multi-cores since vector ops and out of order loops are part of the core language, the memory order of arrays can be favorable to vector ops, and the developers have been thinking about High performance Computing as a driver.

      however neither fortran95 or pyhton has notions of Syncronizing and locking so all the parallelism is implicit not explicit. You'd rather have implict paralellism to be sure, but sometimes you need explicit control.

      JAVA was written with threading in mind from the beginging. So it can potentially embrace the multi-core revolution that is coming more quickly than other languages.

      --
      Some drink at the fountain of knowledge. Others just gargle.
    2. Re:Python+Fortran or JAVA+Groovy by Anonymous Coward · · Score: 0

      Um, is "for i = 1.3" a for statement or a variable assignment? (Variables with spaces??) :-)

    3. Re:Python+Fortran or JAVA+Groovy by goombah99 · · Score: 1

      Um, is "for i = 1.3" a for statement or a variable assignment? (Variables with spaces??) :-) well since there's not a "for" statement in fortran to make this confusing it resolves to fori = 1.3 as long as you declared the variable fori.

      --
      Some drink at the fountain of knowledge. Others just gargle.
    4. Re:Python+Fortran or JAVA+Groovy by BotnetZombie · · Score: 1

      Here's something interesting:
      http://www.math.ucla.edu/~anderson/JAVAclass/JavaInterface/JavaInterface.html

      I've never considered combining this before, but now it seems like it could be a good idea.

    5. Re:Python+Fortran or JAVA+Groovy by tuffy · · Score: 1

      I'm not convinced Java's "synchronized" facilities are a significant improvement over Python's global interpreter lock. They both try to solve the same problem of shared data management across threads in a similar way, and I think neither will really scale to huge multi-core systems so long as the lock-and-key mechanisms remain in place.

      Erlang's "nothing shared" philosophy, and functional programming in general, seem to me like a more viable strategy for building large, reliable software systems that can span dozens, or hundreds, of CPU cores.

      --

      Ita erat quando hic adveni.

    6. Re:Python+Fortran or JAVA+Groovy by arevos · · Score: 2, Interesting

      The big achilles heel of python is that it currently truly sucks for multi-core programming and it would appear that attempts to solve this are not coming quickly. Jython? Iron Python? These Python implementations don't have the same global interpreter lock issues that CPython has.

      JAVA was written with threading in mind from the beginging. So it can potentially embrace the multi-core revolution that is coming more quickly than other languages. Java was written with a lot of things in mind, but in my opinion, it didn't fully achieve many of them. Locks and explicit threads are increasingly regarded as not a very good model for handling concurrency.

      Fortunately, whilst Java may have problems, other JVM based languages like Scala and Clojure handle concurrency extremely well in comparison.
    7. Re:Python+Fortran or JAVA+Groovy by s_p_oneil · · Score: 1

      That's the big Achilles heel of most scripting languages, and just about anything else developed for cross-platform Unix support (look at how long it took Apache to get threads, and even then it doesn't help to use them with mod-php, mod-python, or mod-ruby). If you want fast (for a scripting language), multi-threaded, and not dependent on Java or .Net, I suppose there's Lua (and LuaJIT). Unfortunately, Lua is like the "assembly language" of scripting languages.

    8. Re:Python+Fortran or JAVA+Groovy by goombah99 · · Score: 4, Interesting

      I'm not convinced Java's "synchronized" facilities are a significant improvement over Python's global interpreter lock. Java gets a (somewhat) linear speed-up when you add cores. Python gets virtually zero and in some cases it loses over unthreaded. Big difference!
      --
      Some drink at the fountain of knowledge. Others just gargle.
    9. Re:Python+Fortran or JAVA+Groovy by goombah99 · · Score: 2, Interesting

      I agree Lua is fast and slim. Perl seems to fork really well. Java threads really well and presumably so does groovy. Python is terrible at both.

      In the end you want both powerful and language in wide use (for libraries and people willing to code). That sort of brings it back to Java.

      --
      Some drink at the fountain of knowledge. Others just gargle.
    10. Re:Python+Fortran or JAVA+Groovy by NovaX · · Score: 4, Informative

      There are a number of differences, if I understand Python's giant lock approach correctly. They have basically adopted the threading model used in most early, single-processor operating systems (e.g. Linux, FreeBSD) where the system calls are protected by a shared lock. This works fine for single-processors, since multiple processes are implicitly serialized by task switching. However, as multiple processes run concurrently in hardware this immediately shows performance issues.

      Java's synchronized keyword is a user-level mutex and not a single shared lock across the entire JVM. This means that data structures like HashMaps can use lock-splitting across buckets, or that threads executing independant code flows are not serialized across a single mutex boundary. With Java-5's support for CAS operations, more powerful locks and concurrency data structures are available. I have executed thousands of threads in a distributed master-worker fashion and, due to elegant lock semantics, have not suffered any performance issues due to synchronization. This means that Java is quite strong at both multi-core systems (where there are only a few CPUs) and distributed systems (where there are many).

      I am personally a fan of an actor model (e.g. Erlang) for application developers and a lock model (e.g. C, Java) for infrastructure developers. I do not believe that the actor model works efficently enough to be used at the guts of a system, such as caches, where performance is critical. These are special areas that need a skilled hand, meaning that a lock model should be used sparingly in favor of an actor approach. This has been adopted for quite a long time, as message-based (queues) models are fairly standard in most large, distributed service-based applications.

      --

      "Open Source?" - Press any key to continue
    11. Re:Python+Fortran or JAVA+Groovy by radl33t · · Score: 1

      wow. i am blown away by this. I've always wondered if there is something better to handle the glue of my codes. do you have resources or direction to send someone who uses fortran quite a bit for CFD research codes? I spend 80-90% of my time struggling with fortran to make it due things that it seems like it should not do. I do this because its what people do. The science takes a back seat to the total waste of time that is connecting functions, parsing, input/output (oh my god..). So yeah is there python stuff specific to fortran users? what kind of development environment do you use for this python/fortran combo? actually, breifly searching the literature has yielded some interesting article titles. Do you have any l33t references? amazing, A new dawn may arrive!

    12. Re:Python+Fortran or JAVA+Groovy by Gracenotes · · Score: 3, Informative

      They both try to solve the same problem of shared data management across threads in a similar way, and I think neither will really scale to huge multi-core systems so long as the lock-and-key mechanisms remain in place.

      Java introduced many more sophisticated tools with the java.util.concurrent package (and subpackages) that allow for programs with high CPU thoroughput and scalability. These include synchronization primitives such as a count-down latch, cyclic barrier, semaphore, an exchanger, and so on. Several concurrent collections were introduced, notably a variety of queues that serve a variety of unique purposes. An executor framework was introduced to replace Timer/TimerTask, and includes all sorts of thread pools, rejected execution policies, delayed executors... you get the idea.

      java.util.concurrent.atomic has several atomic value holders, some of them reflection-based, all of which use compare-and-swap, a low-level algorithm, for lock-free access/modification. java.util.concurrent.lock contains locking utilities, including a ReentrantLock. (This class was so much faster than synchronized, btw, than synchronized was changed to use ReentrantLock's algorithm in Java 6.) Finally, there's the AbstractQueuedSynchronizer, a robust class for building synchronizers, that (again) uses compare-and-swap to maintain state.

      There's no doubt that less data shared between processes, and increased parallelization, is good for any concurrent application. In terms of concurrency, though, Java offers quite a bit of flexibility and sophistication, though sacrificing some of the simplicity of functional programming languages. In my opinion, anyway.

    13. Re:Python+Fortran or JAVA+Groovy by goombah99 · · Score: 1

      The big achilles heel of python is that it currently truly sucks for multi-core programming and it would appear that attempts to solve this are not coming quickly. Jython? Iron Python? These Python implementations don't have the same global interpreter lock issues that CPython has. Those are worthwhile suggestions but not panceas--Cpython continues to dominate for solid reasons: in particular jython has to load the JVM so is slow, may 20 times slower than a python program with a short lifetime (consider CGI or network management). It lags in development, it does not gaurantee certain behaviors like object destruction happen in the same manner as python. It supposedly has wonky Bools. I'm not aware of IDEs for it.
      Iron python is not worth considering since it's windows only.

      JAVA was written with threading in mind from the beginging. So it can potentially embrace the multi-core revolution that is coming more quickly than other languages. Java was written with a lot of things in mind, but in my opinion, it didn't fully achieve many of them. Locks and explicit threads are increasingly regarded as not a very good model for handling concurrency.

      Fortunately, whilst Java may have problems, other JVM based languages like Scala and Clojure handle concurrency extremely well in comparison. Yes you want implicit parallelism. But that can be done under the hood like it can in fortran. But you do need explicit control too. it's not that you want to do it all with sync and lock. You just want them available. Moreover you want a language in widespread use with good libs and lots of programmers.

      If all I wanted was the potential for parallelism I'd choose a functional language. But that's not what I want. I want a useful language that clearly has paths to easy parallelism. My bets on java. But there's other contenders. See Fortress for a vaporware language that kinda gets everything right from a numerical computation point of view. But it won't have and programmers or libs for a long time.

      --
      Some drink at the fountain of knowledge. Others just gargle.
    14. Re:Python+Fortran or JAVA+Groovy by s_p_oneil · · Score: 1

      I agree that Java is great in many ways, and IMO provides the best cross-platform web/app server available. However, if you need to distribute a commercial application with a web app attached to it (for a company's Intranet), distributing the entire JDK for JSP compilation is a bit of a burden. ;-) You can precompile the JSP, but even the distributing the JRE is a bit of a burden (and sometimes you may need to test customizations and/or hotfixes on a customer's system).

    15. Re:Python+Fortran or JAVA+Groovy by Anonymous Coward · · Score: 0

      groovy's not interpreted

    16. Re:Python+Fortran or JAVA+Groovy by TapeCutter · · Score: 1

      "This is debatable but I find that fortran seems to have a more logical memory order in 2-d arrays. Namely if you take a sub-array you get elements that are consecutive in memory and thus for most microprocessors will all get pulled into the cache on the same page. Slices of C-arrays have consecutive elements spaced by the row width apart in memory. One can of course find cases where one is preferred over another"

      Not much of a debate but here goes. Arguing Fortran has "a more logical memory order in 2-d arrays" than C is nonsense since it's quite likely that your Fortran compiler was written in C.

      --
      And did you exchange a walk on part in the war for a lead role in a cage? - Pink Floyd.
    17. Re:Python+Fortran or JAVA+Groovy by arevos · · Score: 1

      Iron python is not worth considering since it's windows only. Iron Python works on Mono, as well.

      Yes you want implicit parallelism. I don't believe Scala or Clojure has any capability to handle concurrency implicitly. But they do have much better tools available to handle it explicitly.

      Moreover you want a language in widespread use with good libs and lots of programmers. Scala and Clojure are JVM based, so they have all the same libraries as Java has.

      As for programmers, I can't see Java getting much more popular than it already is. It has a very primitive and restrictive syntax, a flawed type system, and its concurrency model doesn't scale well. If we're looking long term, I can't see a language like Java being the face of the future.

      In other words, I think we've seen Java's peak usage.
    18. Re:Python+Fortran or JAVA+Groovy by ioshhdflwuegfh · · Score: 1

      In the work I do--scientific calculations with a lot of fast numerics, python + fortran seems like nirvana, as each overcomes the shortcomings of the other. One could just as well use C except the efficient numeric libs and memory layout give fortran an edge. From you post it seems that you haven't done much scientific calculations, especially with a lot of fast numerics. Let me demonstrate and enlighten a bit. If the memory layout of which you speak is about column-wise vs row-vise storage of matrices, there is no fundamental difference in numerical calculations between the two. When you say

      if you take a sub-array you get elements that are consecutive in memory and thus for most microprocessors will all get pulled into the cache on the same page. Slices of C-arrays have consecutive elements spaced by the row width apart in memory. Exactly the same claim can be made for the column-wise storage. When we are talking about submatrices, then neither storage scheme provides mapping between consecutive memory locations and any nontrivial submatrix.

      Fortran is also very optimization friendly since things like matrix multiplies and out-of-order loops are part of the core language. Depends on which fortran you're talking about. Matrix multiplication nowadays can be done efficiently using BLAS, which is a library just like any other, thus callable from (m)any language(s). Integration of matrix multiplication into the "core" language does not guarantee efficiency of the compiled code.

      (e.g. using i++ instead of ++i or doing I=4 instead of i==4 are not possible in fortran's limited syntax). Yes, those are beginner's mistakes.

      The rest of your post reads like some silly futuristic science fiction, for instance:

      But If I were starting from scratch and did not have a compelling need for all those wonderful fortran numeric libs, I think the optimal choice in the future is going to be

      Java+ Groovy. The optimal choice for what? Numerics?
    19. Re:Python+Fortran or JAVA+Groovy by Anonymous Coward · · Score: 0

      Try StacklessPython, it's used by producers of EVE Online game both on client and server side. As far as I know it's vey multi thread/multi core friendly.

    20. Re:Python+Fortran or JAVA+Groovy by Anonymous Coward · · Score: 0

      That make zero sense. fortran has a defined memory order.

    21. Re:Python+Fortran or JAVA+Groovy by KDR_11k · · Score: 1

      I've only done scripts for videogame logic in Lua but overall it seems to be much easier to mess up than Python. At least Python will tell you when you're checking an identifier without declaring it (usually caused by a typo) and complain about bad signatures and stuff, Lua has a tendency to silently fail and sometimes cause errors that don't cause an exception until much later, making debugging harder. Sometimes Python syntax is uglier (e.g. the . notation for map table entries is much prettier) but I found it easier to spot errors in Python than Lua.

      --
      Justice is the sheep getting arrested while an impartial judge declares the vote void.
    22. Re:Python+Fortran or JAVA+Groovy by s_p_oneil · · Score: 1

      Well, I did say it was the "assembly language" of scripting languages. When you try to extend it in C, you even have to manually push args onto the "stack" and pop the results off. *shudder* IMO Ruby is the best scripting language, but its runtime engine has some serious issues (slow, violently unfriendly to threads even in C/C++ extensions, etc.) Once you get used to Ruby, other scripting languages seem like a pain (and compiled languages even more of a pain). FYI, Rails sucks, but the core Ruby language is a thing of beauty and elegance.

    23. Re:Python+Fortran or JAVA+Groovy by Anonymous Coward · · Score: 0

      Depends on which fortran you're talking about. Matrix multiplication nowadays can be done efficiently using BLAS, which is a library just like any other, thus callable from (m)any language(s). Integration of matrix multiplication into the "core" language does not guarantee efficiency of the compiled code. What a noob. From you post it seems that you haven't done much scientific calculations, especially with a lot of fast numerics.

      When we are talking about submatrices, then neither storage scheme provides mapping between consecutive memory locations and any nontrivial submatrix. My my, you are both arrogant and unknowledgable aren't you? I guess those traits blind you to each other. what a dork.
  102. Since you're not using that brain... by Anonymous Coward · · Score: 1, Insightful

    can I borrow it to clean my cat's litter box?

    To spoil the joke, but to explain it to you:

    1) The speed of the internet has fuckall to do with the programming language used to code the processing parts of it.
    2) A hard drive connected to a terabit internet won't do jack shit; -something- at your end needs to receive and interpret the stuff coming down the tubes. Or do you think magic fairies will do that?
    3) Even a hard drive has software inside it, which will still need to be programmed, which means some language will be in use.

    You're getting flamed because your statement makes about as much sense as: "Because TV will be digital next year, everybody will wear lederhosen with rabid gerbils stuffed down the front."

    1. Re:Since you're not using that brain... by Anonymous Coward · · Score: 0

      Thanks for telling me. The gerbils were starting to bite.

  103. The Jave virtual machine is written by geekoid · · Score: 0, Flamebait

    in what, now?

    hmm

    --
    The Kruger Dunning explains most post on /. http://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect
  104. I call BS by Aaron+Isotton · · Score: 1

    That study seems pretty crappy to me.

    Java, C, VB and PHP in the top spots seem reasonable. But Delphi, Pascal, Lisp, FoxPro and ColdFusion gaining ground? Mainly the latter 3? Come on. There is probably more Fortran code out there than the five combined. Also, Javascript going away?

    The currently 'en vogue' languages from this list are Java, PHP, Python, C#, Ruby, Javascript and maybe VB - no matter what any study tells you. C and C++ are going to stay for a *long* time - probably just as long as COBOL and Fortran did.

  105. Tell that to HDTiVo... by PRMan · · Score: 1

    It's abysmally slow running Python to do everything.

    --
    Peter predicted that you would "deliberately forget" creation 2000 years ago...
  106. Re:And what are all those other languages written by geekoid · · Score: 1

    heh, in the 90's my first web application was written in C.

    It was damn fast.

    --
    The Kruger Dunning explains most post on /. http://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect
  107. Nothing to see here, move alone... by PhotoGuy · · Score: 1

    These results seem pretty obvious to me.

    C (and C++) are great when speed, efficiency, and close mapping to the native processor are essential, such as for operating systems (scheduling, I/O, device drivers, need to be *Fast*), embedded systems, and a few other cases where CPU performance is the bottleneck. (Final Cut Pro won't be rewritten in Java, any time soon.)

    For most other tasks, a higher level language with garbage collection allows far more rapid development, and with processor speeds such as they are, these other languages are more than fast enough, and becoming more so as CPU speeds and number-of-cores increase.

    The odd time you do need some serious crunching, doing a "native method" (or equivalent, depending upon your higher level language of choice) is a great way to tweak up the 10% of your app that takes of 90% of the time, while spending most of your coding time in a higher level world.

    More and more apps are becoming web-based; chewing up web requests and spitting back the resulting data, in relatively short-lived processes is a perfect place for garbage collecting higher languages with powerful string manipulating features.

    C and C++ won't be going away soon, as long as we have operating systems in their current form. But the percentage of the apps requiring their specialties will indeed be decreasing.

    --
    Love many, trust a few, do harm to none.
    1. Re:Nothing to see here, move alone... by PhotoGuy · · Score: 1

      Why do I always have an insight into saying things more concisely, immediately after hitting submit. Sigh...

      Another way to look at it: the number of operating systems and apps requiring C's efficiently is growing very slowly, one could even argue at a fairly low linear rate. Meanwhile, the number of apps overall is undoubtedly growing exponentially. So is there any surprise C/C++'s percentages are dropping? It doesn't reduce how essential they are to the infrastructures we use to run those non-C/C++ apps.

      --
      Love many, trust a few, do harm to none.
  108. From the pointers to classes by WarJolt · · Score: 1

    I think you should learn how to use a pointer before you learn a class. It's really sad that a lot of programmers out there don't even know what a register is. I prefer knowing how something works before I use it. Garbage collection is great, but if you can understand how it works you're only hurting yourself.

  109. I wish you weren't AC... by iamsamed · · Score: 1

    Thanks to this idiocracy, we now teach people not programming, but how to use Microsoft & Sun products in college for CS101, and to find any worthwhile thinking in a candidate I need to look for people from a foreign country.

    I agree with just about everything you've said. I question the above, though. Is it really that bad?

  110. no cr@p detection by Anonymous Coward · · Score: 0

    Surveys like this can't tell which languages are used for serious, valuable code vs. cookie-cutter crap. That explains why VB keeps bobbing to the top.

  111. Powershell != VBScript by SEMW · · Score: 1

    Powershell != VBscript. VBscript is one of the Windows Script Host languages. Powershell is a scripting front-end to the .NET CLI. Very different beasts.

    --
    What's purple and commutes? An Abelian grape.
  112. Re:For performance-critical code there is no choic by SilentTristero · · Score: 1

    Exactly my point. A huge fraction of AE and Flame (and Avid, etc.) are the signal processing algorithms, realtime disk access and I/O (to hardware and screen), thread management for avoiding dropped frames and so on -- what you classify as "extensions". Sure, you could write the non-critical parts in python, but you'd be switching into extension-land so often, and most of the meaty code is in the algorithms, it's not clear what you'd gain.

    I'm just saying, not everything is a web app or a word processor or a single clever algorithm wrapped in a huge GUI. And those hard realtime and performance-critical apps are still the sweet spot for C/C++, as they always have been and will continue to be.

  113. Desktop development by StackedCrooked · · Score: 1

    As a cross-platform desktop application developer I simply see no other option than to use C++.

  114. Natively-compiled languages by radarsat1 · · Score: 5, Interesting

    I'd _like_ to stop using C++, frankly, but I don't seem to have a choice. A lot of my work depends on real-time capability, the kind of speed that is still only really possible on natively compiled languages that don't do dynamic typing.

    I don't even mean hardcore real-time mechanical nano-second control of knife-wielding deathbots, just simple, This Must Run As Fast or Faster Than The Rate At Which It Will Be Converted To Analog. Python and Java still don't replace C in this area. (Mainly audio, video, and high-speed mechanical control.) And when it gets complex and you need to get into object oriented models to simplify the programming, there is unfortunately no real alternative other than C++. Combine this with that fact that there are a bunch of great libraries out there written in C++ that would be very difficult to replace, and you're stuck with it.

    (I sort of oscillate between liking C++ and hating it, but I'm preferring straight C more and more these days. But like I said, I don't always have the luxury of choice, depending on what libraries I need to use.)

    All these other languages mentioned (Java, Python, Ruby, PHP, Perl, etc) do not compile to native code, and all do dynamic memory management. Hell, that's exactly what makes them *good*. But unfortunately they're not so good for real-time tasks.

    For real-time, you need deterministic memory management, and native speed. I've been looking at some other languages that compile to native code these days, like D, or Vala, but I haven't really decided yet whether I can start using them on serious projects.

    I'd really like to learn more about functional programming in this area, too, but there seem to be very few functional languages that are designed for real-time. FAUST is one, but it's only for audio.

    Anyone know any other good natively-compiled languages that actually have well-implemented modern features?

    I wish it were possible to have a compiled version of Python, for example, but there are many dynamic features it depends on. (Some stuff could be done in Pyrex, which is a pretty cool little project, but so far I've only used it to make bindings to C libraries.)

    1. Re:Natively-compiled languages by Anonymous Coward · · Score: 0

      If you can get past its name, try PureBasic. It is compiled and can include inline assembly or direct memory read/write using peek/poke. You can even tell it to generate the assembly code to insure it's doing what you want.

      It can be targeted easily for multiple platforms as well as it has assemblers for Linux, Mac, OSX, and Windows.

      http://www.purebasic.com/

    2. Re:Natively-compiled languages by dtecmeister · · Score: 1

      If you can get past its name, try PureBasic. It is compiled and can include inline assembly or direct memory read/write using peek/poke. You can even tell it to generate the assembly code to insure it's doing what you want. It can be targeted easily for multiple platforms as well as it has assemblers for Linux, Mac, OSX, and Windows. http://www.purebasic.com/ Sorry for the duplicate, didn't login the first time.

    3. Re:Natively-compiled languages by onefriedrice · · Score: 1

      I'd _like_ to stop using C++, frankly, but I don't seem to have a choice. A lot of my work depends on real-time capability, the kind of speed that is still only really possible on natively compiled languages that don't do dynamic typing... All these other languages mentioned (Java, Python, Ruby, PHP, Perl, etc) do not compile to native code, and all do dynamic memory management. I have the solution you need. It's called Objective-C. Seriously, don't laugh. It's exactly what you're asking for. It's a language that compiles into real machine code with a very small (way fast) runtime to handle all the dynamic stuff. You can even bypass the runtime and execute methods directly whenever you need the same performance you'd get with C alone. It's beautiful because it's just plain old C with a few syntax additions to support the objects and method calls. Plus, it's well supported by GNU GCC.

      There's not many of us using it (comparatively), but there are some really good libraries if you look around, most notably Cocoa (or GNUStep). Also, you can obviously also use any C library natively without requiring any bridges. Seriously, Obj-C is awesome, and it's not just an Apple thing. I use it under Linux and Windows for 3D graphics applications. Theoretically, optimized C++ could be faster, but Obj-C method calls are almost as fast as regular function calls, and Obj-C is so much nicer to use.
      --
      This author takes full ownership and responsibility for the unpopular opinions outlined above.
    4. Re:Natively-compiled languages by LarsWestergren · · Score: 1


      All these other languages mentioned (Java, Python, Ruby, PHP, Perl, etc) do not compile to native code, and all do dynamic memory management.


      Er, java DOES compile to native at runtime.

      But unfortunately they're not so good for real-time tasks.

      They can be. For instance, the Real-Time Java dialect of Java was recently picked to run the Eglin Space Surveillance Radar.

      --

      Being bitter is drinking poison and hoping someone else will die

    5. Re:Natively-compiled languages by ardor · · Score: 1

      Objective C, with improved C++ templates, hey THIS would rock. Count me in if this happens.

      --
      This sig does not contain any SCO code.
    6. Re:Natively-compiled languages by m50d · · Score: 1

      If you can wrap your head around the functional way of thinking, OCaml may be worth a shot.

      --
      I am trolling
    7. Re:Natively-compiled languages by Anonymous Coward · · Score: 0

      Have you played with real-time java, as opposed to the stock java? I would be interested to know how well it performs...

  115. Objective C by goombah99 · · Score: 1

    As long as computers need an OS, C/C++ will be in wide use. All major OS's are written in C/C++ and will be for the foreseeable future. Ahem. Look at mac OS. it's in objective-C, which is more of a cousin to Java than to C++.

    --
    Some drink at the fountain of knowledge. Others just gargle.
    1. Re:Objective C by amRadioHed · · Score: 1

      The OS X kernel is written in Obj-C? Are you sure about that?

      --
      We hope your rules and wisdom choke you / Now we are one in everlasting peace
    2. Re:Objective C by nogginthenog · · Score: 1

      IIRC the Mach kernel is written in C.

    3. Re:Objective C by jeremyp · · Score: 4, Informative

      The Mac OS X kernel is entirely written in C except for the bits that have to be written in assembler.

      The preferred run time for graphical applications is Objective C but I'm willing to bet that the low level graphics are done in C.

      And Objective C is the bastard son of C and Smalltalk (but it's still my favourite programming language). It's probably equally closely related to Java and C++.

      --
      All I want is a secure system where it's easy to do anything I want. Is that too much to ask ~~ Randall Munroe
    4. Re:Objective C by TheRaven64 · · Score: 1

      It's probably equally closely related to Java and C++ Objective-C is very similar to Java. Several of the designers of Java came from NeXT and were intimately familiar with Objective-C. The dynamic dispatch mechanism in Java, interfaces, and several other things in Java come directly from Objective-C. Sadly, the syntax comes from C++.
      --
      I am TheRaven on Soylent News
    5. Re:Objective C by Anonymous Coward · · Score: 0

      The Mac OS X kernel is entirely written in C except for the bits that have to be written in assembler. Actually there are some C++ bits: IOKit, the object oriented driver API, and all IOKit drivers. They try to stick to EC++ rather than using the full language. EC++ is from the embedded computing world; it's a subset of C++ designed to be practical to run on really small systems.
    6. Re:Objective C by Anonymous Coward · · Score: 0

      Oh, and I forgot to mention that in the NeXT days, IOKit was written in Objective-C.

  116. "How do we tell truths that might hurt?" by Anonymous Coward · · Score: 0

    To paraphrase our master, the late prof. Edsger Dijkstra:

    "It is practically impossible to teach good programming to students that have had a prior exposure to [edit] garbage collected languages [/edit]: as potential programmers they are mentally mutilated beyond hope of regeneration."

    Garbage collected languages are pretty nice tools for the professional programmer. As a learning tool for students they are a disaster. You really need to be able roll your own memory management etc., before getting the go-ahead for C#, Java or what not. But that's one thing.

    Garbage collection isn't a silver bullet that automagically kills all memory management worries in real-world systems. Far from it. And I'm not talking about the performance aspect at all.

    Debugging memory (exhaustion) problems (yes, there is such a thing, even in .NET/Java) can be just as painful as tracking memory leaks in a C++ program.

    The major difference here is that the garbage collector is, unfortunately, a Black Box and to get on top of things you need to infer things about its workings and your problem _indirectly_, from system statistics (performance counters, anyone?). It is not unheard of that in order to really get to the source of the problem, you just might have to analyze an IIS/ASP.NET core dump with WinDBG.

    At that point, all that Java/VB/C# mastery is worth nothing. One needs to grow a pair of good old-fashioned programmer's balls.

    C and C++ aren't going anywhere. The post-Web 2.0 world will still need expert programmers.

  117. This list is a popularity contest by Anonymous Coward · · Score: 0

    Nothing more. This is basically a list of languages getting the most press coverage. You know, people making blog entries and all that.

    I can tell because there is no way in hell D would be on there if it wasn't. It's a curiosity with a bunch of people making a lot of noise. It is not being used all that often for serious applications.

    Meanwhile the C/C++ programmers are silently hacking away. See, C and C++ have been around so much that it's just taken for granted. Tons and tons of people use it but there isn't much noise because it is what it is. It is the base of practically everything running your computer right now. If you're using Python, Perl, Java, and C# then you're using code written by C and/or C++ programmers. (Lua is by far the best scripting and extension language available by the way)

  118. The C/C++ language space needs to evolve by CoughDropAddict · · Score: 4, Interesting
    I am a die-hard C and C++ advocate. I consider it a high priority to make sure that the JVM and .NET aren't the de facto future of all computing, which seems like more and more of a risk when you see things like Singularity OS, which is an OS where all application code must be managed code. These managed code people go nuts and think that everything should be managed.

    The current generation of managed code VMs clearly have some benefits. But but they fall far short on some of the key properties that make C and C++ so powerful. Even if I grant you that the JVM and .NET have caught up to C and C++ in speed (which I still don't believe has been demonstrated), it's undeniable that
    • VMs have comically bloated memory footprints: between 2x and 30x comparable C programs according to benchmarks: JVM, Mono. Even if you consider memory cheap, smaller is always better because it means fewer bits flying over the bus and better cache utilization.
    • VMs stop the world to do garbage collection. Point me to all the articles you want that explain how "it's getting better" and "they've figured out how to make it real-time," but that doesn't change the fact that you're stopping all threads whenever you garbage collect, which is making your latency suffer.

    C and C++ are the only game in town for getting the best performance and a small memory footprint and the ability to have the lowest possible latency.

    That said, I think that C and C++ are becoming harder to justify when you consider the havoc that memory errors can wreak. It's highly embarrassing to vendors and damaging to their customers when a buffer overflow exploit is discovered. malloc and free, even when used correctly, can still have some forgotten downsides like the memory fragmentation that was discovered in Firefox 2, and took some very smart people a lot of work to address.

    What I would like to see is a language that gives the benefits of C and C++ (extremely fast, extremely small memory footprint, and no GC pauses) but that is also immune to C and C++'s weaknesses (memory corruption, memory leaks, memory fragmentation). Yep, I pretty much want to have my cake and eat it too. Why do I think this is possible? I think that the future is to have a fully concurrent, compacting GC. Everyone's telling us we're going to have more cores than we know what to do with soon, right? Well why not use all those extra cores to do GC in the background? Even if it's more expensive on the whole, we barely know what to do with all those extra cores as it is. With this strategy, you could get the performance guarantees and low overhead of C and C++ (on the real, non-GC thread, that is) without having to give up GC or suffer from memory fragmentation.

    I'm also not willing to give up the option of dropping to C or C++ (or even assembly language) when it's justified. Mention JNI in a room of Java people and observe them reel in horror -- it's culturally shunned to deviate from "100% pure Java." Maybe this is a good value when you're on a big team of people writing a web app, but for systems and multimedia programming this is silly -- inner loops are inner loops, and some of them can benefit from machine-specific optimization.

    Theoretically you could experiment with the fully concurrent GC using an existing language/runtime like Java, but I've sort of given up on the JVM and .NET communities, because they have empirically demonstrated that they culturally have no regard for small memory footprint, low overhead, short startup time, etc. They just don't consider huge memory footprint or ridiculous startup times a problem. This is not to ment

    1. Re:The C/C++ language space needs to evolve by Anonymous Coward · · Score: 0

      I'm also not willing to give up the option of dropping to C or C++ (or even assembly language) when it's justified. Mention JNI in a room of Java people and observe them reel in horror -- it's culturally shunned to deviate from "100% pure Java." Maybe this is a good value when you're on a big team of people writing a web app, but for systems and multimedia programming this is silly -- inner loops are inner loops, and some of them can benefit from machine-specific optimization. Reaction aside, JNI is (of course) not always 'wrong'. Certainly Sun's JVM 'under the cover' uses JNI to access system functionality (e.g. TCP messaging).

      And there are undoubtedly cases where there are performance benefits. (Interestingly, I can (and have) come up with applications that are inherently faster in Java - but people don't seem to propose calling this from C/C++.)

      But...
      In my experience, JNI 'optimizations' commonly
      a) are not properly validated i.e. no-one actually bothers to check if they are more optimal
      b) Are not properly maintained i.e. 3 release later the code is not better/faster/stronger.

      So personally, I definitely introduce 'impedance' when JNI is proposed.

      Theoretically you could experiment with the fully concurrent GC using an existing language/runtime like Java, but I've sort of given up on the JVM and .NET communities, because they have empirically demonstrated that they culturally have no regard for small memory footprint, low overhead, short startup time, etc. They just don't consider huge memory footprint or ridiculous startup times a problem. This is not to mention that Java is useless for systems programming because its stated purpose is to keep you as far away from the system as possible. I am not sure fully concurrent & small are necessarily compatible (e.g. having extra memory to allow compacting etc). And concurrency is certainly getting better (e.g. Sun's 'G1').
    2. Re:The C/C++ language space needs to evolve by QuietObserver · · Score: 1

      C and C++ are the only game in town for getting the best performance and a small memory footprint and the ability to have the lowest possible latency.

      Actually, that's not true. Machine Language has the smallest possible footprint and the smallest possible latency, and also get the absolute best performance. The thing is, C, C++, and any other language has to translate the commands you issue into something the processor can easily understand, which often turns out to be many more machine language instructions than you would have if you wrote the same code in machine language directly. I won't argue that you are wrong regarding high level languages, though.

  119. Prolog? Logo? by Chardish · · Score: 1

    How on earth are Prolog and Logo so high up on the list (after getting past the top 20?) Who uses them for any practical applications? I had always seen them as instructional tools or toys rather than functional languages (no pun intended, Prolog.) It's kind of embarrassing as an Objective-C programmer to see Prolog and Logo doing better than Obj-C or Smalltalk.

    1. Re:Prolog? Logo? by Zelos · · Score: 1

      Prolog (or Prolog-based languages) see a lot of use in planning applications - Constraint Logic Programming etc. Things like optimal scheduling for allocating aircraft to gates at an airport.

  120. Python is about to overtake PERL by dbdweeb · · Score: 1

    If you extrapolate the charts you can see that it won't be long until Python overtakes PERL... Ah, there is justice in this world.

    And the recent Google App Engine initiative is going to add to the momentum.

    Python Troll

    1. Re:Python is about to overtake PERL by chromatic · · Score: 1

      PERL isn't even in the list, you nut.

  121. Re:We've replaced C/C++ with Python wherever possi by IamTheRealMike · · Score: 2, Interesting

    You didn't say what kind of software you're writing. Personally, I think using Python for large codebases is shooting yourself in the foot (I've seen it tried several times and the results were never pleasant).

    Problems Python has that C++ doesn't (imho) - Python is oddly easier to write than read in my experience, because it's so dynamic. The result is that it's a lot of fun to write and really no fun at all to try and figure out when you're new to a codebase, because you can'

    Python doesn't even try and be efficient. Fans of Python tend to say that it doesn't matter because either performance doesn't matter for their application, or because they can write the hot-spots in C. Well, for a lot of apps there aren't really any well defined hotspots after some optimisation. Instead the app just chugs. Look at the fate of Chandler or Sugar for instance. You can't fix that kind of thing by jucidiously rewriting the bottlenecks in C because there isn't one bottleneck - it's death by a thousand cuts. This is especially true of memory-constrained environments like desktop software. I've seen way too many apps where the developers clearly thought they'd "make it fast later" and then discovered that they didn't understand performance like they thought ...

    It's rather hard to distribute Python apps without distributing a giant runtime with them as well. For many apps that doesn't matter, but if you want people to download your app, it's going to hurt. Any consumer desktop app for instance ...

  122. Re:For performance-critical code there is no choic by xtracto · · Score: 1

    Just to add to the "film video/audio" field. Banking people use quite a lot of C++. In fact, if you are looking for a quant. developer or something similar in banks you *MUST* C++, and some scripting language (python usually do).

    And, then we go to games. The majority of games are done in C/C++. And I am not only talking about PC games, but Nintendo/PS/Microsoft console games.

    Can anyone think of other industry aside of those three (movies, banking, games) big enough to make a dent by using another "major" language?

    --
    Ubuntu is an African word meaning 'I can't configure Debian'
  123. methodology: source code != installs by SaberTaylor · · Score: 1

    Java and Visual Basic are mostly in-house business apps.
    Top shelf apps that are getting installed on lots of machines are C++ (your office suite, browser, tools, etc.) If there's no danger of cpu bound tasks, C#.
    Web stuff, PHP, isn't installed everywhere but is used by many browsers.
    The #'s of installs are not reflected in the methodology.

    --
    If you need text styles to communicate then you don't have a message.
  124. C/C++ are hardly dying by Lisandro · · Score: 1

    The list itself proves it - they're the only two low-level, compiled languages in the top 10. Garbage collection is nice if you're lazy or don't really need to be bothered with it, but they're different tools for different scenarios and they all have their place. Even when seeing VB and PHP up there hurts me in my stomach.

    And no, JIT and bytecode execution is not compiling. Get over it.

  125. Re:That's what's missing from my angry-old-man ran by osu-neko · · Score: 1

    80x25?! You young'uns has the easy life! We thought we were living in luxury when we got our 40-column displays after having been forced to eek out on 22-columns for years. And that's when we even HAD monitors! Try editing your code when your "display" is a printer!

    (Wow, flashback -- I actually did use computers connected to printers with no monitors at one time, and wonderful phones that you actually dialed and put the handset over the acoustic coupler to connect to the MECC system. Ah, those were the days. Funny how we get nostalgic for things that, honestly, really sucked.)

    --
    "Convictions are more dangerous enemies of truth than lies."
  126. Linked? by Perf · · Score: 1

    Forgive my humble intrusion, VGPowerLord, but I believe your ministers of knowledge have mislead you.

    But many assemblers emit object code that must be linked.

    (By the way, does the VG stand for Video Game?)

    1. Re:Linked? by VGPowerlord · · Score: 1

      (By the way, does the VG stand for Video Game?)

      Yes, the nick powerlord was already snapped up when I registered here. I should have been more inventive and just come up with something new rather than just slapping the first two letters of the website I run in front, but hindsight is always 20/20.
      --
      GLaDOS for President 2016! "Well here we are again. It's always such a pleasure." -- GLaDOS, 2011
  127. myth by nguy · · Score: 2, Interesting

    The chance of running into all kinds of memory problems is gradually outweighing the performance penalty you have to pay for garbage collection

    It's a myth that there is a performance penalty for garbage collection; garbage collection usually has less overhead than doing the same kind of memory management with malloc/free.

    The reason that garbage collection has a reputation for being slower is that once people have garbage collection, they get sloppy and wasteful. And languages using garbage collection often just aren't designed for efficiency (e.g., Java).

    It would be nice to have a safe, garbage collected systems language, and such languages are possible. Unfortunately, all we get is Java and C#, two bloated languages that make writing efficient programs harder than eating tomato soup with chopsticks.

    1. Re:myth by techprophet · · Score: 1

      It would be nice to have a safe, garbage collected systems language, and such languages are possible. Unfortunately, all we get is Java and C#, two bloated languages that make writing efficient programs harder than eating tomato soup with chopsticks. I agree. I use C++ quite a bit in my development, there is no way it will die. If it does Linux will die with it (and there is no way that will happen). I tried using C# once. I spent a day learning it before realizing it was C++ without new/delete
  128. Re:We've replaced C/C++ with Python wherever possi by Anonymous Coward · · Score: 0

    My high-level language of choice is pretty much anything other than Python. I like the whitespace thing, but I can't use a language with such broken scoping rules.

  129. Mods on crack by Nursie · · Score: 4, Informative

    Troll?

    Annoyed, enflamed perhaps, but Troll?

    Sorry but it's a pet hate of mine that here on slashdot, which is supposed to be a forward looking tech board, that people still regularly espouse the view that threaded programming is something either still in development, too complex for ordinary mortals, or only applicable in a few scientific arenas.

    It's just thoroughly incorrect. Industry and open source have been doing threading for years. Please can we lose this myth.

    And to bring the post back on topic - pthreads in C will do it all nicely. Hell, even MS VC++ 6.0 (almost 10 years old?) will compile your multithreaded Windows C app.

    I'd also lik to express suprise at the title of this article. C is losing popularity at the same position as last year, number 2? OK, it'll fizzle out any day now, I believe you.

    I think my job's safe for now.

    1. Re:Mods on crack by Bellum+Aeternus · · Score: 1

      Safe? I'll say. My employer is looking to expand by hiring another 200+ C/C++ developers over the next 18-24 months. I don't think the language is going any where. That said, managed languages are wonderful for developing UI apps and basic server code because they're faster to develop with and help to prevent memory issues. I personally work a lot with C# and it has made my life easier for the things it's good at. I'm happy to have more tools, because I wouldn't use a hammer to turn a screw even though I suppose I could.

      --
      - I voted for Nintendo and against Bush
  130. statistics... by achacha · · Score: 1

    Why separate C and C++? I use them both in projects I work on and if you combine them you get 25% which is higher than Java. That study overall is pretty silly with questionable basis. I would argue there is more C/C++ code in the world than any other language; that doesn't mean it is the right language for every job. I use it when I need performance and control over how memory is managed (along with many other reasons). I also use java when performance is probably not an issue. When I need a script I use python. It's all about knowing the right tool to use and foreseeing where the project will go.

    Statistics are 63% of the time wrong and 51% of the time partially right...

  131. What about for embedded applications? by Rorschach1 · · Score: 2, Insightful

    I'm curious what the list looks like for embedded programming - particularly at the low end. For my money, C is hard to beat on small systems - it's a good compromise between efficiency and manageability. If you know how the compiler works, it's not hard to write code that's nearly as efficient as hand-optimized assembly.

    I'm sure Java ranks high there, too, but I don't consider it to be in the same class. Native Java hardware is relatively expensive, and running a VM takes a significant amount of memory and processing power.

    My latest project is pure C (aside from about 100 lines of assembly for a firmware upgrade bootloader), around 30 pages of source code at present, and it compiles to about 9k of object code. It's targeted for a $2.50 processor, and I'm able to do things like simultaneous Bell 202 and DTMF decoding in software because I know exactly how C arithmetic is implemented on the processor and can take advantage of that without having to actually do the implementation in assembler. Doing the same thing in Java would cost a lot more. And when $5 saved on the bill of materials means an extra $5-10k in my bank account at the end of the year, that's a big deal.

    So what other languages can compete in that space?

    1. Re:What about for embedded applications? by MemoryDragon · · Score: 1

      Except in the world where I live 30 pages of sourcecode is more or less a little bit bigger than hello world... :-) Things are different if you dont do embedded programming. I sometimes miss the days of fighting for every processor cycle and byte, and then I start the compiler program a program instantly which has uptimes of years from day zero and I stop to miss those days.

  132. memory management by sentientbrendan · · Score: 1

    >You don't know jack shit about garbage collection.
    >You think malloc() and free() have zero cost?

    Well, first of all, in C and C++ you often *don't have* to use malloc and free if you don't want to. Apache, for instance, uses memory pools. Hell, you can even plug a garbage collector into C and C++ if you want, like Boehm gc. The point of C++ is that it can do *anything* and doesn't force you into a particular model.

    Also, before you swear at me, please look up the term "amortized complexity" and compare it to worst case complexity.

    Many algorithms have low amortized, or average complexity, but extremely high worst case. Garbage collection has decent is an algorithm that has good amortized time an atrocious worst case complexity for memory allocation.

    Whereas in comparison, malloc and free are not cheap, but their worst case complexity can be made reasonable.

    What is the worst case for a java garbage collector? When you try to allocate memeory on the heap, but can't because the heap is full. Then, java has to stop the world (freeze *all* threads) and free whatever memory it can on the heap. This operations time is proportional to the *total memory* your program uses, so it can easily make your app hang for a few seconds. Obviously, if you are processing video this will cause unavoidable stuttering.

    GC implementations use a number of techniques to reduce the number of compactions, but there's no way to avoid them completely, which is part of why java desktop applications always have a sluggish UI experience, even if they work fine for things like web sites or batch jobs where the subjective interactivity of the process doesn't really come into play.

  133. Garbage Collection by RAMMS+EIN · · Score: 2, Interesting

    ``The chance of running into all kinds of memory problems is gradually outweighing the performance penalty you have to pay for garbage collection.''

    Moreover, automatic memory management makes for more elegant and workable APIs, and some things (I think closures are among those) need automatic memory management.

    Also, automatic memory management is not necessarily slower than manual memory management. In fact, garbage collection can be faster than malloc/free, and has been demonstrated to be so in some cases. (One obvious case where a collector outperforms manual memory management is when the collector never has to run.)

    --
    Please correct me if I got my facts wrong.
    1. Re:Garbage Collection by DragonTHC · · Score: 1

      here's a fact you got wrong: any programmer who needs automatic memory management is lazy and/or not skillful

      --
      They're using their grammar skills there.
    2. Re:Garbage Collection by dacut · · Score: 1

      In fact, garbage collection can be faster than malloc/free, and has been demonstrated to be so in some cases. (One obvious case where a collector outperforms manual memory management is when the collector never has to run.) That's an unfair comparison. I'd be more impressed in the latter case if it was still faster than just malloc() without free(). :-)
  134. I wrote another post in this thread by sentientbrendan · · Score: 1

    explaining why GC has to halt the world periodically, which causes stutter in applications with user faces UI's like video.

    >You can write an OS in a garbage collected language.
    >(The Lisp machines did it)

    The kernel would be a really bad place to put a garbage collector, because that would mean the entire system would halt on a compaction.

    I don't know for a fact, but I doubt the LISP machines used garbage collection in the kernel. Even if the kernel source was some variation of LISP, it doesn't mean it was garbage collected LISP.

    It would be incredibly stupid to try to write drivers with garbage collection. I'm not saying it is impossible, I'm just saying that the performance would be unusably bad even on modern hardware.

    1. Re:I wrote another post in this thread by mabinogi · · Score: 1

      The kernel would be a really bad place to put a garbage collector, because that would mean the entire system would halt on a compaction. Only if you wrote it to work that way.
      --
      Advanced users are users too!
  135. Comment removed by account_deleted · · Score: 1, Flamebait

    Comment removed based on user account deletion

  136. Guilt by association by John+Guilt · · Score: 1

    C and C++ should not be lumped together. C is very, very good at being what it's supposed to be (a half-decently-portable hemi-demi-semi-assembly language that lets you finesse/{screw up} the heap) and C++ has always struck me as being neither fish nor flesh nor fowl, and master of none. Being neither hot nor cold, I spit it out.

    Note that their results of (a whole!) two years seems to bear this out---C is close to holding steady, C++ is slipping a bit more (though still de minimus).

  137. Niche compared to others by DrYak · · Score: 2, Insightful

    I wouldn't say it's a niche. It's a niche in the sense that AJAX is exclusively used for web interfaces.

    So it could also be considered a niche on the scale of all the situation at which you can throw the other languages. C could be found on anything electronic that can run code between small embed micro-controllers up to package running on huge mainframes or cluster.

    It's not bad, its very useful indeed. Just hasn't seen as many different usages as the other languages yet.
    --
    "Sufficiently advanced satire is indistinguishable from reality." - [Tips: 1DrYakQDKCQ6y52z6QbnkxHXAocMZJE61o ]
    1. Re:Niche compared to others by Anonymous Coward · · Score: 0

      When it comes to web languages, I was pleased to see Cold Fusion doing as well as it is--and it includes built-in AJAX support (along with a bunch of other things like PDF generation and Flex)

      It's a very easy language to learn and it does an awful lot. It basically *is* java so you get all the benefits of java under the hood, but it's a lot easier to program in.

      Expect Cold Fusion to continue to make great strides, next year's TIOBA will show it!!

    2. Re:Niche compared to others by JasterBobaMereel · · Score: 1

      ...But how many people are using AJAX and how many people are writing Javascript

      I use AJAX frameworks but don't program in JavaScript, I program in other languages that use AJAX frameworks that are programmed in JavaScript and DHTML etc ...

      --
      Puteulanus fenestra mortis
    3. Re:Niche compared to others by DuckDodgers · · Score: 1

      Seconded. Many of the AJAX frameworks out there handle almost all of the Javascript coding for you, and you need to do just a bare minimum of Javascript coding on your own.

      And the nice thing about AJAX is that most end-users are already familiar with web interfaces. Depending on your target market, even a pretty simple and intuitive rich client application can be intimidating to end users, even if the user interface is nearly identical to what they would get in a web application.

  138. C/C++ will be dead when Linux has no C/C++! by Doug52392 · · Score: 1

    C/C++ will be dead when there is not one .c, .cpp, .h, or other C/C++ file extension in the /usr/src folder! If an entire OS is made with it, it's still alive to me!

  139. Well, you make good points... by Weaselmancer · · Score: 1

    But not in response to what I typed. I think the reason why you disagree with my post so much is that you didn't read it very closely.

    This statement shows an extreme ignorance of how the Virtual Machine functions.

    I made no claims about the virtual machine - I only made claims about the compiler:

    Java takes in java files and outputs java bytecode, which is interpreted by a virtual machine.

    And this:

    THAT is why hotspot is capable of kicking C++ up between its ears.

    Has nothing to do with my post you responded to. Find a single instance of me mentioning C++.

    --
    Weaselmancer
    rediculous.
    1. Re:Well, you make good points... by AKAImBatman · · Score: 1

      I made no claims about the virtual machine - I only made claims about the compiler:

      If you're looking at the JavaC compiler, you're going to be sadly disappointed. The Java compiler is nothing. It literally does nothing except turn the source code into a binary representation of the class file. The REAL compiler is the Just In Time compiler in the Virtual Machine. And that virtual machine gets to pay Assembler Guru and sit there and tweak your code like only the best Assembler Masters can do.

      Has nothing to do with my post you responded to. Find a single instance of me mentioning C++.

      *I* mentioned C++ and C. But it was inconsistent of me not to mention C in my second post, sooo... THAT is why Java can approach and even exceed the performance of C code. Happy? ;-)
  140. Evolution... by Anonymous Coward · · Score: 0

    In the past, people used to use C to write desktop programs.
    Today, people use C to write embedded programs and high-level languages for desktop programs.
    Tomorrow, people will use C to write program for nano-scale devices and high-level languages for embedded.
    After tomorrow, who knows?

  141. Hardly by shentino · · Score: 1

    What are you going to use to write the compilers?

  142. Pascal, PHP, JavaScript, various, stuff, etc by SirJorgelOfBorgel · · Score: 1

    I for one, am glad to see both Delphi and Pascal are on the rise (albeit very little - and personally I think they should be taken together).

    Delphi was great in it's day (up to version 7) as an IDE and RAD environment. But ofcourse, leave it to Borland to destroy a good product. Their track record says enough :)

    Either way, Object Pascal is a great development language and I still use it daily. Compared to C++ it's a breeze to work with and you can do pretty much anything you can do with C++ with OP (and it'll still compile it all in a fraction of a second). I know for a fact Delphi 5 & 7 are still heavily used in large (and government) projects, btw.

    Delphi may be dead, but FreePascal+Lazarus is still very much alive and useful. Providing a RAD environment largely compatible with Delphi, but compiling to many many different platforms. From Linux to Windows, from Windows Mobile to NDS, sporting various GUI toolkits, etc.

    I still develop many small tools for Windows in Delphi and crossplatform or 'weirdplatform' stuff in FreePascal+Lazarus.

    The language is easy to learn (but beware, the 'last mile' is not so easy) and you can make use of all the C/C++ goodness out there. You may need to translate a header or two, but that's it. It compiles natively and it's damned fast.

    I'd go so far as to say that developing in Pascal is at least twice as fast as developing in C++ - and yes I also develop in C++ when necessary (ie, client requirement).

    A little known fact about OP is that it actually does support garbage collection if you do some smart coding ('abusing' scope-dependant reference counted variables). It's not 'built in' like in C# and Java, but after doing it for a day or two it comes natural. Actually this trickery is also very useful for debug logging and such, as you're able to perform operations both when variables are declared and when it goes out of scope. I can just see you thinking "smart coding, that must be a lot of code then". It isn't. It takes about 3 or 4 lines of code per class to add this functionality.

    Something that's more interesting though is Windows Mobile development. You might be interested to know that one of the most tricky and 'undocumented feature abusing' application available for Windows Mobile is written in FreePascal (I'll not spam the program itself) and I'm quite sure it would've taken a lot more time to write in C++.

    ----

    As for PHP, I'm also a happy user of that. Yes, it's a language that invites abuse from the users who start with scripting languages, and not always as elegant as for example Python (should spend more time on that one) and Ruby (overhyped not really useful IMHO), but again, if you use it correctly you can do amazing things with it. Well structured, large, maintainable, scalable and code-wise intuitive applications are definitely something PHP shines at, if used correctly.

    If there's one thing getting me down in this list it's JavaScripts fairly low rating. In todays web development world, knowing JavaScript, and knowing it well, is definitely a requirement. I wouldn't hire a web developer (not a designer!) who doesn't know all the JS basics and at least a fair share of the more advanced stuff. Knowing your way around jQuery (or Dojo, ExtJS, whatever) is good, but if you don't WHY and HOW it works, you're still no good, and you WILL run into problems you will not be able to solve.

    Though webdevelopment used to be a bit of a small brother to 'real software development', the complexity of it is rising rapidly. Combining really advanced/complex designs (functionality-wise as well as visual) into HTML and CSS operating correctly cross-browser is something that already requires a lot of quirk-knowledge. JavaScript isn't implemented very consistently across browsers either. Enter the complexities of making it a full extensive AJAX application, it's not a small feat.

    Especially if you realise that many of todays 'webcoders' are expected to do the server side (PHP/ASP/

  143. Functionnal languages. by DrYak · · Score: 1

    Parallel processing is inherently complex, so no language is going to magically make it easy. Functional language are the things that will magically make it much easier. You use a language where you describe what results you want and let the system choose the best strategy to reach the goal, instead of having to detail explicitly how to proceed. As soon as you have it, it's only a matter of having efficient compiler to decide which part to parallelize and how to do it. You transfer the burden of deciding how to make parallel code from the programmer to the compiler.
    Previous generations have shown similar shift of burdens for example regarding low-level optimisation between hand-written assembler and C-code optimised by the compiler.

    The problem is that we are currently light years away from this. For now, functional languages are in their infancy. But still there's already some work being done on auto-parallelising Haskell.

    Until then, during the next few decades, we will have to put up with thing such as CUDA (C code. With some extension to distinguish what runs on the CPU and GPU. And a fucking weird library of function to setup and control GPU execution, and which is a little bit too low-level and dependent on the architecture for what I would expect from a high-level language), Brook (C-like language for GPU. With nice syntactic sugar for setup/control. But lacks some fundamental functions (like integer math and scatters) that I would expect from a C-like language) and OpenMP (basically, just tags that you add to tell the compiler : Hey the following loop could be processed in parallel instead of sequentially)
    --
    "Sufficiently advanced satire is indistinguishable from reality." - [Tips: 1DrYakQDKCQ6y52z6QbnkxHXAocMZJE61o ]
    1. Re:Functionnal languages. by ardor · · Score: 1

      CUDA is weird. CTM too.

      Why?

      Because they control the GPU. You CANNOT map your typical strong functional language on a GPU. GPUs are good for a SUBSET of problems solvable by a functional language.

      --
      This sig does not contain any SCO code.
    2. Re:Functionnal languages. by lekikui · · Score: 1

      Functional languages are one of the oldest families, not in their infancy. See Lisp. And the current king of concurrent programming is Erlang, which is a functional language designed to do such things with, and do it well.

      --
      "Lisp ... made me aware that software could be close to executable mathematics." - L. Peter Deutsch
  144. This list is no good! by Anonymous Coward · · Score: 0

    There is no XML, CSS on the list. This list can't be serious!

  145. Hrm by sega01 · · Score: 1

    Just use C and Lua and the world's problems will come to an end! No more headaches from reading C++, no more back pain from replacing servers with continually slowing down C# code! Besides, once you turn your company's network into a perfect C+Lua setup, and 20 years from now if the world is headed in its current direction noone will likely know the languages and you can get more raises since you are the only one who can maintain their network!

  146. Hey kids: Silly-ass horse poopy! by uassholes · · Score: 0

    A list of fashionable languages is about as stupid as cars that honk their horns when you lock the doors.

    All it says is that, as usual, operating systems, languages, drivers, and other serious software are still written in C, and all the silly-ass shit is written in whatever the kids find exciting this week.

    If more silly-ass shit is being written than operating systems, then C moves down the list. So what?

    Would you want an operating system written in Ruby? What is Ruby written in? (Hint: the answer starts with the letter 'C'".)

  147. Algol68 by hedley · · Score: 2, Interesting

    Strong typing. Garbage collection. Native code generation.

    Lack of OO and a current up to date machine code generating compiler would be a detriment though
    to a rollout anytime soon of this old language.

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

    H.

  148. C-- by GileadGreene · · Score: 1

    You may want to take a look at C--. It's got some good justifications for claiming to be a better assembly language than C.

  149. Underlying layers are still C or C++ by hajo · · Score: 1

    Although the amount of programmers programming in C/C++ might be decreasing as a a percentage of all prgogrammers; they still build the underlying foundations of all our software.
    (Note: I've mainly been programming in python the past 5 years)
    Virtual machines; interpreters; device drivers etc... are all implemented in C / C++.
    without those wizards who know how to handle memory and hardware at a basic level, merely competent people like me would be a whole lot slower...

    --
    Hajo Monogamy: Belief so strong that millions of people end perfectly good relationships in order to start a new one.
  150. research or practical? by Anonymous Coward · · Score: 0

    python => c => asm

    different layer do different things
    no one for all
    sorry

  151. The myths of garbage collection by Anonymous Coward · · Score: 0

    'The chance of running into all kinds of memory problems is gradually outweighing the performance penalty you have to pay for garbage collection.'

    Always benchmark before making assumptions about performance. Here the benchmark is pretty simple: in a garbage collected language, allocate N objects in a loop, making N big enough so that several gc's are performed. Then do "free(malloc(sizeof whatever))" or "delete new whatever" in C and C++.

    I find common (Windows, Unix, Linux) implementations of free/malloc are ten times slower than gc-based memory management.

    I do not expect the myth to go away, of course. Too many people like obsessing about object destruction and RAII. Like back when compilers weren't very good with register allocation, people liked obsessing with register declarations.

  152. Why I don't like C++ by Anonymous Coward · · Score: 0

    It takes too long to compile a large C++ project.

    No reflection.

    Poor error messages.

    For a long time, non-standard compiler implementations.


    Lack of garbage collection was never an issue.

  153. Re:For performance-critical code there is no choic by ST-Clock · · Score: 1

    Sorry, but I wonder if anyone of you have heard about things like "hotspot" and "jit" compilers. Server applications that are "performance-critical" like currency-exchange systems are actually built in Java (not J2EE mind you). Java Applications that run for a long time can outperform C applications, simply because the vm can use runtime information to make optimizations. C compilers can only make conservative optimizations because they rely solely on static analyses...

  154. Ruby before Python? by PCM2 · · Score: 1

    Jansen says not much has affected the top ten programming languages in the last five years, with only Python entering the top 10 (replacing COBOL) Wait ... so Ruby made the top 10 before Python did? That doesn't give me much faith in the validity of this list.
    --
    Breakfast served all day!
  155. The TIOBE Index is a Bit Flawed by Shlomi+Fish · · Score: 2, Informative

    As Sterling Hanenkamp notes the TIOBE index is a bit flawed. It doesn't measure popularity - it measures hype, and not all of it too. That put aside, it is true that C and C++ are not used as much as they once used to, and that's because there are alternatives that are better for many uses. However, there are still many tasks for which they are still the best choice (warning - a link to my own article), and should be used. A lot of open-source code is written in ANSI C and C++, and usually for very good reasons.

    While I expect the use of C and C++ to diminish, I wouldn't say they are "dying" or "losing ground". They just become more established and more "niche" languages. Another fact to note is that usually the virtual machines for higher-level languages are C-hosted - perl5, CPython, ruby, php, Tcl, the various Java VMs, Mono (and probably Microsoft's .NET too), Lua, Io, etc. are all written in ANSI C, and can normally be extended using it. Some languages are self-hosting and usually can be bootstrapped by compiling themselves to C, and then compiling the C code.

    Every programmer worth his salt, should still learn ANSI C, because not knowing it leads to lack of good understanding of computer architectures and portable programming that is bound to lead to inefficient code, and improper use of any programming language. I wouldn't recommend learning ANSI C as the first programming language (another link to an article of mine), but it's still an essential skill.

    --
    We have two eyes and ten fingers so we will type five times as much as we read. http://www.shlomifish.org/
  156. Re:It is somewhat and it's the reason I left CS by Nullav · · Score: 1

    "But computers are getting faster!"

    --
    I just read Slashdot for the articles.
  157. Dubious methodology by Angst+Badger · · Score: 2, Insightful

    which measures the popularity of programming languages by monitoring their web presence

    Web presence doesn't equal much; it certainly doesn't equate to popularity. Nor do these numbers bear much resemblance to the mix of programming openings I see on job boards. C is number two? Really? Or are they just counting the number of times C shows up in the meaningless expression C/C++ ? Outside of the DSP and embedded devices niche, the appearance of "C/C++" in a job listing means they're looking for a C++ programmer, and it's generally followed by a list of C++ APIs that the successful candidate will be familiar with. And please, C fans, keep your flames low. C is my favorite language, but if it was really the second most popular programming language, I wouldn't spend eight to ten hours a day programming in C++ and PHP.

    Anyway, the bit about the lack of garbage collection in C++ is a crock. There are a number of easy to learn and use GC libraries available for C++, and a number of them can be used in most cases with little to no code changes simply by linking them in. If the popularity of C++ is declining over GC, it's because people have gotten too lazy to type "c++ garbage collector" into Google. There are plenty of reasons to dislike C++, but that's just not one of them.

    --
    Proud member of the Weirdo-American community.
  158. Re:Natively-compiled languages - real problems by Animats · · Score: 2, Interesting

    There's nothing good to program in. This is a serious problem.

    We have C. C isn't a bad language, but the "pointer=array" concept, while it provided some performance gains in the PDP-11 days, continues to cause millions of crashes and intrusions every day. The fundamental problem is that you can't even express the size of an array in the language. Given that, the odds of consistently getting subscripts right is low. This could be fixed, but it will never happen.

    There's C++. C++ has lost its way, as I've pointed out before. The C++ committee is off in template la-la land, putting in features that few will use and fewer still will use correctly. (Coming soon: "concepts"). The real problem with C++ is that it's no safer than C, but hides more.

    There were once better languages. Delphi is better, but it's Borland. Modula 3 was a good systems programming language, but it died with DEC. Various attempts at improvement, from Ada to Eiffel to Sather, have almost died off. Amazingly, "D", which is Walter Bright's successor to C++, has a measurable market share.

    Some progress is being made on numeric issues, like compiling Matlab to efficient code for parallel hardwware. But that doesn't help systems programming much. Hard-compiled Python would have potential, if Guido wasn't against it. (Python has a speed penalty of about 10x to 60x over C/C++. Maybe at some point Google management will decide that a hard-compiled Python system would be cheaper than building additional data centers at former aluminum-smelter sites.)

    As for garbage collection, it's a headache. "Finalizer" and "destructor" semantics get weird. (See "Managed C++") Reference counting leads to saner semantics and repeatable timing, but is inefficient unless the compiler knows how to hoist reference count updates out of loops. (Incidentally, about 90% of subscript checks can be hoisted out of loops, and you can almost always hoist them out of inner FOR loops. So subscript checking is almost free if done right.) Note that Perl is reference-counted, and Perl programmers don't spend much attention on memory management. If you have strong and weak pointers, reference counting, and treat cycles as errors, you don't really need garbage collection.

  159. f2py by goombah99 · · Score: 1

    Best advice: purchase the numpy users guide.  very brief intro to f2py but you also get to learn the data types in python that work with fortran calls.

    A program to add to 1-D arrays to each other element by element might look like this:

    from numpy import *
    import f2py
    f = """
         Subroutine foo(a,b,c,N)
         integer N
         real a(N),B(N),C(N)
    cf2py intent(out) :: c
         integer i
         do i=(1,N)
              c(i) = a(i)+b(i)
         enddo
         return
    """
    f2py.f2py(f,module="bar")
    import  bar

    a = arange(5)  # dummy array, size 5
    b = sin(a)         # the sine of this array's elements

    c = bar.foo(a,b)  # the sum of a and b, executed in fortran

    when you run this it compiles the fortran at runtime and creates the python module bar.so that can be imported into any python program (on the same kind of computer).  In this example, the fortran is embedded as a string in the python and recomplied every run.  One could just run f2py at the command line on the fortran file one time and then just import the module.

    flourishes that make fortran more pythonic:
    f2py is smart enough to figure out that N is just a dummy length argument equal to the array size, and so it will drop it from the required arglist (or you can supply it if you want to as an extra arg).

    if you use f90 it will also figure out which variable are purely  output variables and move those to the lefthand side.  if you use f77 like above you can either leave them on the righthand side or you can add comments to the program that hint to f2py to move it to the left side.  (see above code for example)

    Thus c = foo(a,b)  has no need to specify N, and the output is on the right hand side.

    I can if I want to make foo() a method inside of a class.  Thus I hold multiple instances of the data structures in python and use them to call the single instance of foo()

    also try googling performance python.

    --
    Some drink at the fountain of knowledge. Others just gargle.
    1. Re:f2py by goombah99 · · Score: 1

      Oh and look at the python packages scipy and matplotlib, these use numpy and provide zillions of high level libraries and plotting functions. matplot lib has a syntax resembling matlab for plotting. Scipy uses ftpy under the hood so installing scipy will give you both numpy and f2py.

      it takes a day to compile scipy and matplot lib so do it overnight.

      if you have a mac, they can be found in both fink and macports. fink also is on linux.

      final tip:
      ipython is an IDE that plays nice with matplotlib by running the interactive xwindows in another thread.

      if you use ipyhton, look at the "run" command for the best way to run code without polluting your namespace.

      --
      Some drink at the fountain of knowledge. Others just gargle.
  160. Everyone is coding... by Anonymous Coward · · Score: 0

    Why people prefer "garbage collector" than manage by themselves it? Some of them have a deep knowledge about what they are saying and have technical arguments to defend languages like Java and so forth.

    Other, and sadly it's the biggest one, prefer GC because they are literally incapable to code as a professional. Java brings to the programming scene the possibility that many people without a strong background, now are able to code.

    That's too bad and that's why, due technologies like that, Java, .Net and similar, the programming profession is so bad payed. Everyone can code. And even code is bad, hardware is strong enough to make the illusion the application is running properly.

  161. Re:It is somewhat and it's the reason I left CS by Shados · · Score: 2, Insightful

    I have news for you however. Statistically and historically, CS-related work was mostly a big trail of failures. Virtually no project, aside a select few with insane ressources backing em, and a couple of lucky shots, actually ended up giving out more value than they required.

    In this day and age, maybe its inefficient, maybe its not quite CS, maybe its not "cool", but it gets the job done, it saves money, it makes things work, its enabling. Its still not good enough in its current state, but its going in the right direction. We're leaving the "how" behind, and changing it with the "what". People have ideas, and they make those ideas a reality, and it "works".

    It may not be as badass to implement an enterprise management system, as opposed to the first ethernet network, but you don't spend 3 years on a project to be left empty ended 90% of the time either.

  162. Learn to do your job by Anonymous Coward · · Score: 0

    How much serious software is written in an interpreted language compared to the ones in C/C++ ?

    As far as I know all the major OS kernels are done in some variant of C/C++ including: Linux, BSD, Windows, Plan9, OS/2, OSX...

    What was the last graphics intensive game you had that was done in something other than C/C++?
    What heavy traffic Web site hosts their pages with a Web server written in an interpreted language?
    Which X11 server is done with an interpreted language?
    Last I checked the top 5 database engines aren't programmed in interpreted languages.

    I can't help but get the impression that only toys are done in something other than C/C++ while anything significant is done with the Cs. Yeah, most software we use today are toys and can be handled with interpreted languages. You want to connect to a database, grab some query results and show it on the screen, no biggie. You don't need C/C++ to do that.

    It's irritating to see people whine and try to drive away things they don't understand. Seriously? You can't handle allocating memory and managing it yourself? I'm thankful that the mechanical engineering industry isn't as lax as the software industry is with all the ignorant developers out there. Why ignorant and not lazy? Lazy developers are fine, they're the ones that know to work smarter not harder.

    Use the right tool for the job. If most software in use today can be done well with an interpreted language then by all means use one. That also probably means that most developers out there aren't developing anything really serious. Quick trumpeting the death of a toolset that you have little experience with.

    Come back when your fancy language tool chain doesn't rely on good ole' C/C++ at some stage. I think C/C++ will start to die when the operating systems are done in something other than C/C++. At that stage, people will want to talk to the kernel in its native language and switch accordingly.

    You think the C folks are shaking in their boots because they might have to learn Java, C# or the language du jour? I don't think so, for them it's just a shift in paradigm and syntax. One the other hand, watch the other guys give you the deer in the headlights look when you want to do something outside their little sandbox.

    Just like in the real-world, languages evolve and some become obscure dialects with only a few pockets of the population using them on a daily basis. And just like the real-world there will always be many languages each with it's own distinctive flare. I know some people that can speak five languages and I also know some people that haven't mastered their own native language.

  163. Not forever by Anonymous Coward · · Score: 1, Interesting

    Your argument used to go thusly:

    For performance critical processing, the overhead of anything but assembly language is killer. It'll be news when After Effects of Flame is rewritten in C.

    As time goes by, C# will be to C++ what C++ currently is to assembly language.

    1. Re:Not forever by 4D6963 · · Score: 1

      I believe compilers haven't always produced the same quality machine code as a modern GCC with -O2 (or better). Most of the time when I look at the assembly output produced from my C code by GCC on ARM using -O2 (in my experience without any optimisation the output looks like gobbledegook) it's pretty clever code (even if you can quickly spot a couple of instructions you could make become one) and I'd be willing to bet that it's most of the time better code than what most assembly coders from back in the day would have produced (now that people use GCC to make "fast assmebly prototypes" it's just cheating ;-) ).

      Assembly programming isn't a magic bullet to speed issues, often a good design (that is, conceiving the algorithm in a clever way) can help a hell of a lot better than hand-done Assembly optimisations), and even then it takes a good knowledge of the architecture you're programming for to see any improvement.

      --
      You just got troll'd!
  164. C++ is easy by jessecurry · · Score: 2, Insightful

    Saying that C++ is losing ground because it lacks garbage collection makes me fear for the future of the "general programmer". If you use C++ for any length of time beyond a week it becomes second nature to manage your memory. Hell, I programmed in C++ for 2 days and caught on to situations in which a memory leak would even be possible. It's scary how easy it is to do... it's even scarier to think that people would drop a language because they may have to be mindful of memory when they code.

    --
    Those who know, do not speak. Those who speak, do not know. ~Lao Tzu
  165. Nah. by fozzy1015 · · Score: 2, Informative

    I work at a very large telecom on their enterprise level network routers. Our code base is almost entirely C. I, and a few others, have been moving parts over to C++ mostly for what C++ and Boost can offer. There is a standard Red-Black binary tree library in VxWorks(probably all Unixes: rbtLib.h). Needing two or more sets of ordering on the same data is a hack. You create two binary trees and cast different structs before dereferencing it. I've done it. I then tried the multi index set in Boost and you know what? Each entry takes up EXACTLY the same amount of data as when I hand coded it in C. What's great about C++ is you can use it as a better C. Define all your types and use the implicit constructor calls to range check all with assert() when you develop.

    I've also interviewed at Redback and they are entirely a C shop. Some of it is old entrenchment, but some of it is needing to know exactly what happens in their code. I have mixed feelings about that.

    On the other hand, C is the lowest you can get across processor architectures. You have complete confidence knowing exactly how much memory a structure will take up, with knowledge of boundary alignemnt of course. Saving it to disk and loading it back is straight forward. Have one virtual function in a C++ class or structure and doing that will cause trouble as the compiler will put a pointer to a vtable at the beginning. From a simple debug shell I've had to debug a chip vendor's function by calling malloc and passing the address back to the API function to DMA a hardware table into memory. Have you seen what function overloading causes the compiler to do with the entries in the symbol table? My whole point is that abstraction leaks will always occur, and when someone has to go to the lower level to debug, these higher level constructs cause more confusion.

    C isn't going anywhere, at least not in the some what niche area of network software programming.

  166. 128 core cpus on a usb stick by cheekyboy · · Score: 1

    The day we get 2ghz 128 cores in a tiny usb stick for $40, will be the day we program in flow chart/gui thingos.
    Just like stargate, have a rack full of usb3 slots, and 2inch long crystal shaped usb sticks with crystal CPUs at 128 to 4096 core cpus, just plug in live and bingo
    new speed ups in real time.

    Maybe computers will be just a skeleton, IO back plane with ports/plugs/sockets, no cpus, no ram, everything is plugin and go, ala HAL 2001
    4x10 matrix of usb slots, 2x10 matrix of microSD slots, 5x hdmi sockets, 10 optical sockets.

    --
    Liberty freedom are no1, not dicks in suits.
    1. Re:128 core cpus on a usb stick by SanityInAnarchy · · Score: 1

      The day we get 2ghz 128 cores in a tiny usb stick for $40, will be the day we program in flow chart/gui thingos. You have no idea what you're talking about, do you?

      Just like stargate... rack full of usb3 slots... Nope. No idea at all. (For the record, Stargate computer science has been pretty horrible, and what makes you think it'd be usb, and not FireWire or something else?)

      But we have this kind of power now. People can, and do, program things intended to run on massive clusters/supercomputers. (Actually, it can be more challenging to make something do that much in parallel -- most programs won't take advantage of two cores, let alone 128.)

      The fact is, there have been experiments in GUI-based programming. They almost universally sucked. We have enough problems with the languages we have right now -- I don't think we, as a species, quite grok how to design UIs of any kind.

      And at the same time, my current language of choice for large projects is Ruby, which was designed to be programmer-friendly, even if that meant it was incredibly inefficient. Turns out, there are a lot of apps where performance doesn't matter at all, and a lot more where you can simply throw CPU at the problem -- sometimes literally; in a well-designed Ruby on Rails app, you can simply buy another server or ten if you get slashdotted.
      --
      Don't thank God, thank a doctor!
  167. C is king in embedded systems. by liftphreaker · · Score: 1

    Coming from an embedded systems background, I can say that C is still king here. Nothing else comes close to C - the number of platforms you can write code for, the close relationship with the hardware, IO, drivers, etc. We use C for tiny 8-bit microcontrollers, all the way through to powerful ARM9 processors with tons of RAM.

  168. Re:We've replaced C/C++ with Python wherever possi by JoshHeitzman · · Score: 1

    "giant runtime"? As compared to what exactly? The desktop Python runtime is tiny compared to the desktop .Net or Java runtimes.

    --
    Software Inventor
  169. ComputerWorld: ColdFusion is dying by G3ckoG33k · · Score: 2, Informative

    From http://www.computerworld.com/action/article.do?command=viewArticleBasic&articleId=9020942&pageNumber=1 "ColdFusion. This once-popular Web programming language -- released in the mid-1990s by Allaire Corp. (which was later purchased by Macromedia Inc., which itself was acquired by Adobe Systems Inc.) -- has since been superseded by other development platforms, including Microsoft Corp.'s Active Server Pages and .Net, as well as Java, Ruby on Rails, Python, PHP and other open-source languages. Debates continue over whether ColdFusion is as robust and scalable as its competitors, but nevertheless, premiums paid for ColdFusion programmers have dropped way off, according to Foote. "It was really popular at one time, but the market is now crowded with other products," he says" So, it is counterintuitive with these new stats! Who should one believe?

  170. Ack. by SanityInAnarchy · · Score: 1

    I wonder if anyone else caught it... This should be:

    "with C... just about every advantage it has over more modern languages are advantages that assembly has over C itself."

    --
    Don't thank God, thank a doctor!
  171. What does that mean for Python by g4b · · Score: 1

    To what does that leave python as fcgi replacement for PHP?
    does the locking issue present disadvantages to Python after all?
    because i was thinking, suggesting people to make their webpages in python rather than PHP was a good idea, not just in performance, but also in code maintabality. AFAIK in fcgi only one instance of the interpreter is running, so this would cause slowdowns after all?

    or as scripting language for servers?
    given you have an online server for a lot of users (around 300, like the game server for a mmog), and needs to be scripted, and could be written in C# or in C++/Python, which would be the choice here? would thread-lock make it slower in python?
    my experience is, that a software written in C# is hell of a fast in allocating a lot of "items" (objects) and dont cause "server slowdowns" in complex operations, however, it is constantly slower than the C++/python counterpart at the first glimpse.

    it would honestly interest me, even if the question seems weird.

  172. Web site "programming" by Anonymous Coward · · Score: 0

    I don't think it was ever popular to write web sites of any kind in C. With the traditional and ever popular 3-tier/database centric web enabled approach there are many choices avaliable. Queues and query languages, browser langauges, web frameworks and associated scripting languages. Utilizing the right combination of the set ususally yields good results in a given web project because separation of concerns is promoted by the environment itself.

    Now if you look at each tier in your stack chances are most or all of it was written in C.

    I think the problem with these surveys is theres a heck of a lot more people doing web sites and scripting nowadays than working in the commercial application space as full time developers.

    Unfortunately the existance of 'jad -p' outright disqualifies many really nice but interpreted languages from concideration in the commercial space.

    In the real world "memory leaks" are the least of your problems. The technology does not exist to garbage collect expensive items such as connections, transactions, synchronization objects...etc in any manner that approaches sane and reasonable. Until this changes GCs appeal while useful will remain limited.

  173. Re:Natively-compiled languages - real problems by ardor · · Score: 1

    The C++ committee is off in template la-la land, putting in features that few will use and fewer still will use correctly. (Coming soon: "concepts"). Obviously, you didn't understand them, otherwise you would know that generic and template meta programming are C++'s true distinctive powers, not some cheap vtables, manual resource management, or C compatibility.

    Before you start: Yes, I know you are a seasoned coder, and did lots of work. It is no excuse for not understanding the "template la-la land". You can argue against them all you want (you won't hear any disagreement about C++'s crappy template syntax from me for example), but please use some VALID arguments.
    --
    This sig does not contain any SCO code.
  174. re: NBL / "no new paradigms" by corecaptain · · Score: 2, Interesting

    As for NBL - I think the NBL will provide support/semantics for development methodologies and components - Abstractions built in for defining components, instantiating them from repositories, support for testing .. I think all the current focus on things like dynamic vs static typing, closures, functional languages, dsl, are all things that are at too low a level - it is analogous to assembly language programmers arguing over instruction set design when out of left field comes compiled high level languages (ie. fortran ) So I think the guy saying he doesn't see any new paradigms showing up is correct if your "domain" is limited to what we know so far.. I mean take C vs Ruby - how much do their paradigms differ ? Compare the difference in paradigms between assembly and fortran - that is big difference. I think the NBL will be the NBL exactly because it will force us to think about programming in an entirely new way - in my opinion it will need to address the fundamental problem that alot of software engineering (despite 20 years of OO) involves re-inventing the wheel.
    Take the hottest web dev framework - Ruby on Rails...what is pathetic is how much functionality each web dev team is duplicating all over the world...user management, logging, session management, on and on, not to mention higher level domain stuff like shopping carts.. so there is lots of re-inventing the wheel going on. Software needs components - this is not a new idea .. I think Parnas in the 70s or something delivered a speech on this...so the NBL will enable components ...Software development is hard (re Brooks - mythical man month - essential vs accidental complexity) that is true..but it doesn't follow that we are doomed to repeating the essential (hard parts) ad infinitum....okay sorry for rambling... good night.

  175. Count LUA by g4b · · Score: 1

    After all, with a userbase of ten million, the nation of Azeroth explicitly using LUA in their 3d Webbrowser it should count for something!?

    I expected a lot of books written about it for now, with about 100 pages and 40 pages of them containing high-performance graphs screenshotted from "the game" itself, adressing important scientific issues like:
    "Increase Output and Minimize Input - A Warriors Guide"
    "The Right Array Management and Database Access for Spambots"
    "Multiple Transfer and Transaction Management for Traders" (with chinese intro)
    "Hardware Process Automation to optimize a Pointing Device"
    "Colored Interface Design for Orcs"
    "Nightelves Guide to Arithmetic Trees - Solving the Bagpack Problem" (with an approach to world travel solutions)
    "Developing Daemons" (with an example of a cronjob to remind you to go to sleep before you die)

  176. What about Fortran by Anonymous Coward · · Score: 0

    There must be an error. I cannot find Fortran in the list. Please try to correct. I guess Fortran should be at least in the first 5 places.

  177. Only the web by jandersen · · Score: 1

    "C and C++ becoming less popular with web developers" != "C and C++ becoming less popular in general". After all, Python, Ruby, Perl and other interpreted languages are all written in things like C or C++, I assume. And the convenience of automatic garbage collection is offset not only by the system overhead it causes, but also by the diminished of control over what goes on in your system, memorywise.

  178. Re:That's what's missing from my angry-old-man ran by jrumney · · Score: 1

    Printer? Luxury!!!! When I were a lad, we punched 'oles in our own palms, as we didn't even 'ave punchcards yet.

  179. The STL is useful but not essential by Viol8 · · Score: 1

    Most people use the STL just for dynamic arrays and maps. If you're a half decent programmer its not too hard to role your own (though admittedly a nuisance to have to do so). So no , I wouldn't say knowing the STL is a minimum requirement for programming in C++, in fact for many years before the STL came along C++ chugged along quite happily without it.

    1. Re:The STL is useful but not essential by computational+super · · Score: 1
      If you're a half decent programmer its not too hard to role [sic] your own

      Dear God, please don't do that to the rest of us. Roll your own as a learning experience (everybody should do it at least once), but please use the standards for code anybody else is going to have to maintain.

      --
      Proud neuron in the Slashdot hivemind since 2002.
    2. Re:The STL is useful but not essential by marcosdumay · · Score: 1

      Sometimes it is easier to roll yet another linked list class than to apply STL.

      And, no, it doesn't have to come with new bugs.

    3. Re:The STL is useful but not essential by s_p_oneil · · Score: 1

      Oh please. The last time I rolled my own AVL tree, it ran an order of magnitude faster than std::map (benchmarked using a 32-bit int for a key). Adds, seeks, and deletes were all much faster whether I was inserting data in order or not. I will use std::map where I don't need speed, but I'll use my own in some cases where speed is critical.

      Standards and guidelines are all very good, but no programming rule I've ever read makes sense 100% of the time (although a few rules come damn close), and knowing when you should bend the rules is part of being a good programmer. Too many of the newer rules seem to exist solely to keep poor programmers out of trouble. To those of us who can keep ourselves out of trouble, it is definitely a mixed blessing.

  180. Huh? by Viol8 · · Score: 1

    ".I know it can be done, but C is hard to program for a single core"

    I think the translation of that is "I find C hard to program" since single core processors have been the default for most people using C for the last 20 or so years!

    "Multicore support may take it over the edge."

    Err why? You think programming multicore in C is hard , try it in assembler. At least with C you can always take the easy option and use threading libraries.

    1. Re:Huh? by SatanicPuppy · · Score: 1

      Program in Erlang for a while, and then try to do the same sort of thing in C and you'll see what I mean. And I'm not even a big fan of Erlang, but the kind of things it does to make shared memory access possible across multithreaded applications is something that C does not currently have a resource for.

      Admittedly I'm not big for programming in C; for what I do it's just not useful. But the problems with C are out there for anyone to see; applications designed to run on a single core are already plagued with memory problems. Compound that with multiple concurrently running threads that need the same system resources and I can't help but see more problems.

      --
      ad logicam Claiming a proposition is false because it was presented as the conclusion of a fallacious argument.
    2. Re:Huh? by Viol8 · · Score: 1

      "shared memory access possible across multithreaded applications is something that C does not currently have a resource for."

      Err , I suggest you check out shmget(), shmat(), shmctl() and every other SysV shared memory API function. Also mmap() is rather useful with threads.

      Also I'd be interested to know what the interpreter or compiler for Erlang is written in.

    3. Re:Huh? by krog · · Score: 1
      From the Erlang FAQ:

      10.7. How did the first Erlang compiler get written?

      (or: how was Erlang bootstrapped?) In Joe's words: " First I designed an abstract machine to execute Erlang. This was called the JAM machine; JAM = Joe's Abstract Machine. "

      " Then I wrote a compiler from Erlang to JAM and an emulator to see if the machine worked. Both these were written in prolog. "

      " At the same time Mike Williams wrote a C emulator for the JAM. "

      " Then I rewrote the erlang-to-jam compiler in Erlang and used the prolog compiler to compile it. The resultant object code was run in the C emulator. Then we threw away prolog. "


      So these days, the VM is written in C, and the compiler is written in Erlang.
  181. Ah rubbish by Viol8 · · Score: 1

    "At the moment, the C language standard is simply broken for multithreading"

    Total BS. The pthreads library works and it works well and so do the equivalent libs on MS Windows. Just because you might find it hard means nothing.

    "suitable language for multithreading. It's built into the language itself, like garbage collection is."

    You mean it makes it easy for novices. Oh incidentaly , what language do you think the Java VM is written in? Java? Bzzzt , wrong. Its C and assembler. So how do they manage to get the threads working then? It must be magic!

    Something else you might want to note is that some problems are best solved by multiprocess rather than multithread , and for that , really Java sucks badly.

    1. Re:Ah rubbish by xenocide2 · · Score: 1

      No, it is fundamentally broken in places. It's not a matter of library support. It's a matter of the compiler taking those libraries and totally fucking with their intended purpose because the language spec lets them and it can improve optimizations.

      But I'm glad idiots have opinions. It gives people like this guy (video) something to do, by educating you. What ends up happening is that compilers end up presenting non-standard extensions. I've used an embedded language nesC that would provide atomic blocks and implement them by disabling interrupts (not a great idea when avoidable, but passable if you know the drawbacks).

      --
      I Browse at +4 Flamebait

      Open Source Sysadmin

    2. Re:Ah rubbish by Viol8 · · Score: 1

      "It's a matter of the compiler taking those libraries and totally fucking with their intended purpose because the language spec lets them and it can improve optimizations."

      Yeah , because adding the "volatile" keyword is such a chore.

      "I'm glad idiots have opinions."

      Me too , and when you get an opinion that makes sense instead of talking out your arse and finding some non example that you've obviously desperately searched long and hard for on goodle, get back to me.

      "I've used an embedded language nesC"

      Let me guess , written by your professor for your CS101 beginners course.

    3. Re:Ah rubbish by xenocide2 · · Score: 1

      Yeah , because adding the "volatile" keyword is such a chore. Oh my dear god. You've raised the stakes far too high to be this wrong. This quote is a steaming turd of falsehood. For the benefit of anyone reading this who isn't a troll, volatile only works the way you think it does in Java. In C and C++ the only uses for it is when the hardware itself might write to the variable, common in memory mapped devices. Hans Boehm, co-author of a world class C++ garbage collector runtime, and current member of the C++0x committee gave a talk to Google about how concurrency can be trifled with, from the hardware level to the language specification to optimizations, and what the committee is doing to fix it. I actually had that one sitting on my hard drive but hadn't watched it yet, so I didn't bother trotting it out as well.

      This isn't something I've just looked up to spite you. It's come up recently on the websites I read, as GCC recently bit the Linux kernel. I've studied proof techniques for semaphores, locks, monitors and so on. This is the sort of stuff that interests me. If memory ordering and non-atomic writes don't make sense to you, then please watch these and maybe read some of the papers. You don't have to understand me, but if you can't understand them then maybe it's time to stop defending the viability of multithreading today. And probably, you should stop using it.
      --
      I Browse at +4 Flamebait

      Open Source Sysadmin

    4. Re:Ah rubbish by Viol8 · · Score: 1

      "it's time to stop defending the viability of multithreading today."

      Yeah , I'll just side with some guy on slashdot instead of most of the rest of the computer industry.

      Not.

    5. Re:Ah rubbish by xenocide2 · · Score: 1

      Like I said, you don't have to trust me, but if you don't trust the people on the committee that is planning to fix it, they've written papers about what's wrong. They do represent the rest of the computer industry, after all. But hey, it's a lot easier to sell what you've got working today in your office and ignore the random odd bugs that you can't duplicate than it is to own up to a minor breakage in assumptions about multithreaded viability, so I can see where you're coming from.

      --
      I Browse at +4 Flamebait

      Open Source Sysadmin

  182. Re:We've replaced C/C++ with Python wherever possi by IamTheRealMike · · Score: 1

    Yeah, exactly. They're too large as well :)

  183. Knowing C, knowing you.. by Anonymous Coward · · Score: 1, Interesting

    you're forgetting that knowing C isn't the same as knowing all the library calls. Knowing C (or PERL/Java/Python/PHP/...) means knowing how to program in it. Knowing the way to approach it properly (you can write C code in Perl, practically. It's not really Perl then, though, and does things in a wasteful way), knowing when you have to do something and what that something is is knowing the language.

    You have different ways of doing loops, different ways of defining things (C is a strongly typed language, as is Java [though it doesn't have unsigned...] but perl isn't). And each language does it differently.

  184. Hmm by Viol8 · · Score: 1


    "I have not coded a memory leak or buffer overrun in C++ in over six years."

    That you know of.

    "The best way to avoid overflowing raw buffers is to not use raw buffers. Use the containers. When you think you can't, think harder."

    yes , nice soundbite , but in the real world things arn't always that simple. For example in network data processing you might have to read a packet header , check the size then allocate enough memory for the packet and read it in mapping a number of structure pointers onto the character buffer. Try doing that in any efficient way using the STL.

    1. Re:Hmm by pclminion · · Score: 1

      That you know of.

      How about you? Under your coding paradigm (whatever it is), do you have some magic method of proving that there are no leaks? Of course I cannot prove it, any more than you can prove a program correct in general, but tools like valgrind, and empirical observation are strong evidence. If you have some method of proving that code is free of memory leaks I would like to hear about it.

      What I do know is that this particular style of coding massively reduces the PROBABILITY of a leak. After all, that's really the best you can hope for.

      For example in network data processing you might have to read a packet header , check the size then allocate enough memory for the packet and read it in mapping a number of structure pointers onto the character buffer. Try doing that in any efficient way using the STL.

      I'm not sure what part of that you think would be hard, or inefficient. Obviously, the STL cannot do everything you could possibly want. However, the core problem here (memory management) is easily solved by using a vector of char to hold the packet's contents. Exactly what difficulty are you imagining?

    2. Re:Hmm by Viol8 · · Score: 1

      "How about you? Under your coding paradigm (whatever it is), do you have some magic method of proving that there are no leaks? "

      No, but I wouldn't be so bloody arrogant as to state that I never have.

      "is easily solved by using a vector of char to hold the packet's contents"

      Err why would I ever want to do that? You think I want to add one character at a time?? And how exactly would I get the internal pointer to use in a read()? Either you've never done network coding or you're just an idiot.

    3. Re:Hmm by pclminion · · Score: 1

      Err why would I ever want to do that? You think I want to add one character at a time??

      Why the hell would you have to add a char at a time?

      std::vector buffer(packet_size);
      recv(socket, &buffer[0], packet_size, 0);

      Not so fucking hard, is it? Guess what: STL was not designed to be inefficient. Who the hell would use it if it was?

      And how exactly would I get the internal pointer to use in a read()?

      The address of the element at index i in a vector is simply:

      &buffer[i]

      But by all means, continue to lean on your own ignorance in an effort to convince me I'm stupid. Give me another one, genius.

    4. Re:Hmm by pclminion · · Score: 1

      And by the way, what the hell sort of "network programmer" uses read() instead of recv()? Guess what -- they aren't the same thing, especially on Windows.

    5. Re:Hmm by Viol8 · · Score: 1

      They're exactly the same thing it you're working with connection orieted stream sockets and arn't interested in settings flags or getting OOB data idiot. As for Windows , who gives a shit about that OS and its bastardised version of posix.

  185. VB6 Apps still in production by chriseyre2000 · · Score: 1

    I know of at leat one VB6 app that is still in production. They need to split the VB6 from the VB.NET stats to make things clearer.

  186. The reason - fanboys by Viol8 · · Score: 1

    Every little niche language has its fanboys, especially in the web development world (no idea why , maybe the sort of people who do web development are more excitable than other coders) and ColdFusion is no exception. So there will be lots of "noise" about it on the internet and this is what this guy is picking up with his stats.

  187. Not myth by Anonymous Coward · · Score: 0

    The problem is that you can't tell the system when to collect garbage. So you may find that during a critical section your VM stops everything and starts collecting up the garbage and throwing it out.

    If you manage memory yourself, you can prove that your system will not do this.

    1. Re:Not myth by nguy · · Score: 2, Informative

      The problem is that you can't tell the system when to collect garbage. So you may find that during a critical section your VM stops everything and starts collecting up the garbage and throwing it out.

      That is completely false. Even with a regular garbage collector, you can disable the garbage collector when you want/need to. Concurrent garbage collectors don't stop the system at all. And real-time garbage collectors give you precise upper limits for every memory allocation.

      If you manage memory yourself, you can prove that your system will not do this.

      That, too, is false, in two ways.

      First, having a garbage collector doesn't prevent you from doing manual storage management.

      Second, malloc/free and new/delete can have arbitrarily high latencies, and they do in practice.

  188. Not as prominent as it was by NCG_Mike · · Score: 1

    I feel C++ isn't quite as prominent as it once was. For UI development, I'm using Objective-C (AppKit) on the Mac and some Windows guys are C# fans. Quite a lot of older Windows code is MFC and the old Mac code is PowerPlant. It's always a case of the tool for the job. Here we write a lot of cross-platform code, well Windows and Mac, so C++ is the common denominator *and* the developers are familiar with it. It works... and if it aint broken, don't fix it!

  189. TIOBE Index is biased and faulty by thesteef · · Score: 2, Insightful

    It's unbelievable this company get's any attention with this index. Just some quick and easy points which have been glaring mistakes for years now: Vb is a combination of Basic, VB.NET, Visual Basic.NET, Visual Basic .NET, Visual Basic 2005, VB 2005, Visual Basic 2003, VB 2003, Visual Basic 2002, VB 2002. Some of these, especially the .net variants are totally different languages with only superficial similarities with the rest. Including this in the index is nonsense. Secondly one has to wonder why .net in general is so underrepresented versus java. This can be explained an their data gathering method. They google for terms like +c# programming. This ommits an entire group of articles only targetting .NET This is because of the language independant nature of the platform. Some numbers to put this 'index' in some much needed perspective: +java programming 8.320.000 +.net programming 13.500.000 +c# programming 1.260.000 +vb programming 618.000 +vb +.net programming 664.000 This is the only meaningful way to look at the relative popularity of java & .net. Java is not only a language but also a platform, so is .net. Furthermore the majority of programming (judging from these numbers i'd say about double) in .net is done in c#. You'd have to conclude that c# should at least be up there with java. That is if you think counting the number of search engine results is a meaningful way to get an index, which I don't.

  190. C and C++ epitomize the soul of programming by Anonymous Coward · · Score: 0

    I believe that, if, as a programmer, you don't find joy in the low-level languages and workings of computer systems, you either aren't properly educated or are in the wrong field completely.

    Programming expertise is not a bag of tricks type of thing. It is a way of thinking and understanding. This is applied mathematics.

    Visual Basic was the single largest blow to undermine the foundations on which the programmer's profession is built. By dumbing down the tools, you're dumbing down the average programmer. I think there is an inherent complexity to programming that should be appreciated by all practitioners.

    Programmers trained only in Java/C#/VB lack the way of thinking part. Given a problem these people search google for a copy-paste solution or a godsend tutorial, a "trick" to make the problem go away and then move along.

    Deep understanding and broad knowledge are a prerequisite for effective problem solving skills.

    A true programmer isn't happy with a code snippet. He wants the parts of the problem specified. He wants to understand the solution before using it. Well-written and detailed API references are enjoyed by the this type of programmer. He knows the devil is always in the details and if the specification is low on details, he won't be happy. Exactness and correctness are appreciated.

    I think the correct way of thinking part needs to be grown from the bottom up, starting with lower-level languages and lower-level problems. After you appreciate the complexity of it all and know your way around, you're ready to cut corners, save time and use Java, VB or C#. And.. what's important, you're ready to solve the problems you WILL face in production systems written in these languages.

    Hating the details, the complexity of C/C++ programming is hating the soul of computing.

  191. TIOBE is flawed by Biffers · · Score: 1

    I think TIOBE is flawed. For real statistics I use indeed.com. It's the mother of all job sites, and it also does trending. http://www.indeed.com/jobtrends?q=%22C%2B%2B%22%2C+%22C%23%22%2Cjava%2C+Perl%2CPython&l= thats the view of the current job market. Perhaps C/C++ is slipping in some areas, but it will not go away. I work on Wall Street, and fast trading systems are written in either Java or C/C++. There will always be a need for speedy software. As for Perl/Python. Sure there are people using Python out there. I'm sure its a great language, but I haven't really found a reason to move off or Perl yet. Every systems engineer I know uses Perl. A while back some twit said that anything more then 100 lines of Perl becomes difficult to manage. This quote has gotten lots of publicity, but I don't agree with it. I've actually seen entire Quantitative Trading Systems written in Perl (thousands and thousands of lines of code) that were quite easy to maintain. The real issue with maintaining code is writing good code and commenting the code where it needs to be commented to begin with. Its really quite simple. As for not having a new release of Perl .. I fail to see why so many people make an issue of it. It works .. really well as a matter of fact. I could see getting my underwear in a bunch if it didn't work well; but it does.

    1. Re:TIOBE is flawed by chromatic · · Score: 1

      As for not having a new release of Perl .. I fail to see why so many people make an issue of it.

      ... given that Perl 5.10 came out a few months ago.

    2. Re:TIOBE is flawed by VENONA · · Score: 1

      Interesting link. I still need to find some docs and kick the tires. If you change search terms to include ".NET" you find a fast ramp back in '05, and a corresponding decrease in Java. Then things smooth out a bit, with .NET having a larger share. I don't use either one, and can't comment on relative popularity. But there are probably independent means of confirming, at least in broad strokes, the trends this site displays.

      Finding good terms would definitely be important. For instance, if I use 'D', it blows everything away, and I just don't think that D has caught on to that degree... :) C also shows a 'ramp and stabilize higher' in the latter part of '06. No idea what might cause that, so unless someone has an explanation, I suspect it's an artifact.

      Again, interesting link. Thanks.

      --
      What you do with a computer does not constitute the whole of computing.
  192. Re:For performance-critical code there is no choic by Joutsa · · Score: 1

    I would be surprised, too, if they chose Python. Lightroom is already 40% Lua.

  193. Re:For performance-critical code there is no choic by marcosdumay · · Score: 1

    (After profiling. Let me repeat that, AFTER profiling.)

    What is the problem on deciding what needs optimizing at design time? Really, unless you are using a very weard programming environment (like Bash or MathLab) you should have a very good grasp of what needs optimizing BEFORE you write any piece of code. At least, you should have as good grasp as are your requisites, what for code that needs to be optimized tend to be very good.

    And don't come with "The Arth of Unix Programming says so". That is not an acceptable answer.

  194. C++ can automate that memory management for you by Joce640k · · Score: 1

    Use STL for data storage (std::vector, std::string, etc.) and you'll never have to worry about malloc()/free() for that.

    Use reference counted pointers for keeping track of objects and you'll never have to worry about remembering to call 'delete' when you've finished with them.

    In short, don't ever use a raw C pointer for managing resources. Let the compiler do the work for you.

    --
    No sig today...
  195. Java, C++, Python, etc etc are written in C by Anonymous Coward · · Score: 0


    So it's blindingly obvious. Anything that you can do in C++ or Python or any other language is very possible in C.

    The Linux kernel is huge project, worked on my thousands of individual programmers, hundreds of corporations. They have a average of around seven _thousand_ lines of code change (additions and deletions) PER DAY.

    And on top of that its all hugely object oriented Seriously. OBJECT ORIENTED with not a lick of C++ or any other object oriented language.

    Does (not yelling at fyngyrz) THAT COMPUTE, people?

    Object oriented programming and code base without using a object oriented programming language? (OMG)

    Over and over again people will quite happily tell you that 'Java' or 'C++' or C# is what you need if you want to do 'enterprise' work. Also you _need_ big IDEs and all sorts of stuff.

    HELL NO YOU DON'T.

    Your organization may require it because of politics or management requirements.. but it certainly has ZERO to do with any technical or practical requirements.

    The deal here is that high level languages are used because _they_are_easier_to_READ_.

    Get it, people? Easier to read.

    High level languages are quicker to prototype applications.

    You WRITE YOUR APPLICATION FIRST. DO PLANNING SECOND. And high level languages are there to facilitate that and make this painful step as fast as possible.

    The problem is is that unless you write your application first you don't know what the technical requirements are going to be for that application.

    You can guess, but your going to be wrong and if you establish a application design without knowing what that application is going to require then your going to end up wasting all your time force feeding a square application into a round design document.

    So ideally you write your app first, quick-n-dirty. It'll be slow and buggy and in a high level language. Then you write your design and planning based on the lessons you learned from that.

    Then you rewrite it with the better design and use a mixture of languages or whatever is most appropriate.

    The most important part is making your program easy to read. If it's easy to read then it's easy to understand and programmers working on your code are much less likely to introduce bugs. It should all be programmed in a as straight forward as a manner as possible. Optimizations should be avoided unless they can be proven that they will have a substantial impact on performance.

    This is why I like Python. Easy to program, easy to read, easy to profile. Makes things quick to prototype and even if it's 70 times slower then C it doesn't matter because if you need speed Python loves working with lower-level languages. It's not like Java were everything needs to be 'java' in order for you to use in your apps.

    It's a practical language, not a idealistic or uber-OO one.

    For example: Cython/Pyrex. Lets you mix and match C programming with Python programming without the bullet plate code normally required to make modules.

  196. use of the 'delete' operator is Doing It Wrong? by Joce640k · · Score: 1

    Pretty much, yes.

    I use delete when I use the 'pimpl' idiom, and ... not much else.

    I never use delete[] - because std::vector is *always* superior to new[]. new[] and delete[] could be removed from C++ with no harm done.

    Doing It Right means a reference counted pointer whenever you use 'new' to make an object, STL for data storage (arrays, lists, strings).

    If you do it The Right Way, C++ memory management becomes a dim memory of evils past.

    --
    No sig today...
    1. Re:use of the 'delete' operator is Doing It Wrong? by HeronBlademaster · · Score: 1

      std::vector can be significantly slower than a directly allocated array in some cases; the problem is compounded when you're looking at 2-dimensional or 3-dimensional matrices.

      I'd guess std::vector probably uses new[] somewhere deep down inside, so no, you couldn't remove new[] and delete[] from C++ with no harm done. Remember, it needs to call the constructors of the objects it contains; malloc won't do that, and new[] is probably faster than calling malloc and then doing in-place construction in a loop.

      The STL is usually The Right Way... but not always.

    2. Re:use of the 'delete' operator is Doing It Wrong? by Joce640k · · Score: 1

      "std::vector can be significantly slower than a directly allocated array in some cases; "

      Are you willing to bet on that? You'll find it's not true if you try it.

      PS: For VC++ users, remember to #define _CRT_SECURE_NO_DEPRECATE before you #include If you don't you'll get range checking on all data accesses to the vector.

      "I'd guess std::vector probably uses new[] somewhere deep down inside"

      Nope. When you call "vector::reserve()" memory is allocated but not initialized. This can't be done with new[].

      --
      No sig today...
  197. Re:For performance-critical code there is no choic by sonchat · · Score: 0

    thanks

  198. Re:For performance-critical code there is no choic by Anonymous Coward · · Score: 0

    The problem with deciding what to optimize at design time, is that this only works if you are solving a problem that you understand completely (likely because you have solved it before).

    For many problems, you will not have that sort of perspective until the application has been fielded for a while. Therein lies the benefit of deferring optimization until you have done profiling. When you optimize profiled code, you know what to optimize. When you optimize at design time, you're guessing that the optimization is appropriate. It may or may not be.

  199. This article is troll bait by Anonymous Coward · · Score: 0

    This article is such troll bait.

    C. There is nothing competing with it. Period.

    C++. Colleges that did chrun out VC++ grads will now chrun out C# and Java grads.

    kthbi
    typedeaF

  200. Don't get the wrong idea by Anonymous Coward · · Score: 0

    There is another way to interpret this, which i think is much more valid. C is not losing ground, but it is being used by a smaller PERCENTAGE of coders.

    Why?

    For every systems programmer, there are a billion high level programmers working on business/communications-oriented projects. The applications for (and number of) high level programmers have exploded, which is reflected in the presence of php in this list.

  201. C is in second place; not dying at all by mcvos · · Score: 1

    Surely it's not really a fair indication just because it's web presence is dropping? I could easily argue that Java is only so "popular" because more people are posting with problems they're having using the language and that C\C++ are only loosing ground because better information on using the language is already out there. I really doubt that's the case. Java has excellent online support, and has had so since its early days.

    Personally I don't think a second place for C is anything to complain about, but if you want to explain why Java is bigger, that's easy: Java is the language of choice for web development, and there really is a lot of webdevelopment out there.
    That's where the growing market is.

    C is becoming a niche language. It's the prime language for drivers, OSs, libraries and other low level technical stuff, but most programmers don't write their own drivers or libraries. They write applications, and preferably in a slightly higher-level language than C.

    But C is still going surprisingly strong, considering its second place. And in its niche, it will probably survive for a very long time.
  202. Re:That's what's missing from my angry-old-man ran by 4D6963 · · Score: 1

    80x25?! You young'uns has the easy life! We thought we were living in luxury when we got our 40-column displays after having been forced to eek out on 22-columns for years.

    Funny because although I'm only 21 I learnt to code in BASIC on a 20x2 screen. Yup, 20x2, on my little sister's V-Tech Genius 2000. That was in 1999.

    --
    You just got troll'd!
  203. There are three kinds of lies by stormcoder · · Score: 1

    Besides the study being useless, it fails to make sense. All these high level languages, excepting lisp, can't be written in themselves. Everything underneath the web page (interpreters, web server, databases, OS, web browser) are all written in C or C++. For those winers that complain about working with memory, please stay away from C and C++, just admit your limitations. I don't want to have to come and fix the problems you amateurs cause.

    --
    Sorry my bullshit sensor overloaded.
  204. Re:For performance-critical code there is no choic by 4D6963 · · Score: 1

    For image processing (film/video), real-time audio or any serious signal processing, the overhead of anything but C/C++ is killer.

    As a signal processing programming hobbyist (see link in my sig), I've gotta say, C is not just faster, it's ideal. Basically when it comes to C people grieve about lots of things, like poor text string handling or whatever. But when all you do is crunch numbers on big ass arrays using more or less advanced mathematical concepts and formulas in a fairly linear way, C is ideal and doesn't suffer any real flaw. Well that's coming from someone who learnt C through making signal processing programs, so YMMV.

    --
    You just got troll'd!
  205. Ada is written in Ada by krischik · · Score: 1

    The GNU Ada compiler (GNAT) is self hosted [1]. Also I think there are several self hosted Pascal compiler.

    Martin

    [1] "self hosted": a compiler compiles itself when creating the next generation - of corse this is detail for the the particular implementation and not a programming language in general. And, ahh, version 0.0.0 is never self hosted - if push comes to shove it needs to be written in assember or hex code.

    1. Re:Ada is written in Ada by stormcoder · · Score: 1

      Ada didn't make the list.

      --
      Sorry my bullshit sensor overloaded.
    2. Re:Ada is written in Ada by krischik · · Score: 1

      Shure Ada is on the list, on place 19. Ada has been on the list since day one of the Tiobe index.

      It is helpfull to read the original article: Primary list is from 1 to 20 and the secondary list is from 21 to 50.

      Martin

    3. Re:Ada is written in Ada by stormcoder · · Score: 1

      If you had read the slashdot article you know we were discussing the top ten. 19th is not in the top ten. So not on the list. ;)

      --
      Sorry my bullshit sensor overloaded.
  206. CS Grads Can't do Pointers by mcoon · · Score: 1

    The last time I took a CS class in the 90s, the biggest problem the students had with programming was the concept of the pointer. The instructor really wasn't doing a good job at describing it, and none of the students were happy. What a blood bath come practical test time. No wonder these kids like to use managed languages.

  207. The are no ANSI C compilers by krischik · · Score: 1

    There is no point in learing ANSI C (apart from academia) because one one minor compiler vendor has a full features ANSI C compiler to offer.

    Don't belive me? then try this an despair:



    void f (int *restricted a, int size, int c[size])
          { // do something
          return;
          }



    Note: since I don't have an ANSI C compiler so I could not test the code, fix typos as needed.

    Note 2: Both Ada and ISO Pascal (not Turbo Pascal) define var-arrays and all Ada compilers and at least one Pascal compiler have a working implementation.

    Martin

  208. Re:Delphi on its way back by andersa · · Score: 1

    Since the IDE tools were spun off into a separate company (CodeGear). Things have gotten more and more focused. We use D2007 as our primary delevelopment tool where I work and although from a documentation quality standpoint, it really was released prematurely, things have really improved, with regular updates to both the IDE and help system. It is at a level now where I feel completely comfortable committing to developing with this tool for our future applications.

    At the same time CodeGear has released adaptations of their IDE to much hyped languages like PHP and Ruby. The company seems to have a sence of direction again finally.

  209. But they don't have to. by krischik · · Score: 1

    Ada would be just as well suited for the task of low level programming.

    Besided both smalltalk and lisp are implemented in, well, smalltalk and lisp. And yes, there was even a lisp operating system.

    Martin

  210. Ada. by krischik · · Score: 1

    Well Ada has been designed for embedded system programming in an high integrety environment.

    Martin

  211. Ada Reference Manual Annex D Real-Time Systems by krischik · · Score: 1

    Maybe you want to have a look at it:

    http://www.adaic.org/standards/05rm/html/RM-D.html

    Martin

  212. Ada is not a paint by krischik · · Score: 1

    and it has a damm side more features the Pascal. Have a look:

    http://www.adaic.org/standards/05rm/html/RM-TTL.html
    http://en.wikibooks.org/wiki/Ada_Programming

    Martin

  213. Compiler Optimisers by krischik · · Score: 1

    I would think that a modern Fortran or Ada compiler would be just as fast for the task you described. I fact they could be faster since the have propper arrays which can be optimised much better.

    And just because K&C could not a write compiler optimiser it does not mean no one can.

    Martin

  214. Re:For performance-critical code there is no choic by Anonymous Coward · · Score: 0

    Even so, Adobe has its dark side. Judging from the Adobe Flash *player* Linux implementation, it feels like they wrote it in the slowest imaginable way and upped the Minimum Software Requirements instead. Any SWF, especially when with embedded video, displays slower than Mplayer, and you DO notice that on millibarebones (no more than 1.2 GHz). -- Most likely no accelerated video decoding (e.g. SSE/SSE2), no display acceleration (should be Xv at the least, though XvMC would be better)...

  215. Re:For performance-critical code there is no choic by marcosdumay · · Score: 1

    Yeah, optimizing at design time only works if you are solving a problem you understand completely. That means, you have all the requisits (you don't need to implement it to understand it).

    Conveniently, most software that deserves being optimized (games being an exception) have quite strict requisits.

  216. Garbage Collection by Anonymous Coward · · Score: 0

    We have two "camps" in our company: the "server guys" who are programming in C++, and the "application guys" who are programming in C#.

    The C# people scoff at us "legacy programmers" (very sneaky subconscious marketing by Microsoft), but the interesting thing is that they come to us for advice when their C# applications leak memory or have hideous performance.

    Here's what I think about C#: http://www.curly-brace.com/favorite.html

    By the way: TIOBE is hired by our company and their product "TICS" is used to track software quality ("quality" as in "conformance to coding guidelines").

  217. What a JOKE! by gravisan · · Score: 1

    *FURIOUS* Firstly, don't buy into the hype about GC ... managing memory isn't rocket science if you know what you are doing, which I am sure most of the haters don't know / care about - all they can do is throw in snippets of crap from time to time and not actually DO anything about it (i.e. pick up a book and RTFM) - when is the last time they have used smart pointers? ... (ask them what a pointer is - they will just say I DON'T NEED TO KNOW ABOUT IT) ... no you don't need to know about economics of software/hardware either With the release of C++0x there is more standardization of stuff (like threading) that is already available (look @ boost.org) ... most people who bitch about C/C++ never could finish their 101 programming assignments. meh! more on pointers: http://chemivar.blogspot.com/2007/12/do-not-fear-for-smart-pointers-are-here.html also that list is rather bs, it doesn't factor in the importance of the projects, take a look around - everything runs on C/C++ developed code.

  218. Re:Delphi on its way back by billcopc · · Score: 1

    It's true, and I was impressed with Delphi for PHP. Admittedly, I've only tried it for a few minutes, but I was expecting an absolutely useless mockery of an IDE, instead I got the impression this thing could actually build a web app on short notice.

    If I weren't drowning in CF filth, I might actually take Delphi/PHP for a spin one of these days.

    --
    -Billco, Fnarg.com
  219. Re:C is the best assembly language (IMHO) by Douglas+Goodall · · Score: 1
    After twenty years of assembler, I found that the compiler I was using had started generating BETTER code than I would have. Tom Rolander convinced me that C was portable assembler. I know now that he was right. For someone like myself who tended towards the register crippled Intel processors, assembler coding had become an execise in remembering what specific registers were good for and doing my best to use them. After computers had more then eight kilobytes of memory, it was less important to hand optimize every line of code. The beneficial use of C came from learning to write portable conservative code that if compiled with warnings turned on, would do what you wanted. When C could generate efficient reliable code faster for me than writing the assembler by hand, I started using it.

    You can write bad code in any language. You can also write code that is difficult to maintain in any language. In the long term, C as used in Unix wasn't the cleanest or most reliable,

    When Microsoft and Intel decided programmers couldn't be trusted to write native code, it was a sad day indeed, and dot net seems to me to be about keeping the programmer away from the iron. That is especially bad for someone like me who was most comfortable close to the iron. In my experience, the projects I worked on that were complete failures, happened because of changes to underlying software interfaces, and not problems with my understanding of hardware I was trying to control. Take for example my attempt to implement Concurrent DOS 386 on an Altos server. After years of successful implementation of XIOS code controlling hardware, the XIOS for the Altos had to interface with buggy software supplied by a hostile group at Altos. In the middle of the project, Altos lost the source code of their part and redesigned and re-implemented the software layers controlling the hardware, and the basis of my adaptation changed out from under me with no notice.

    When youj write code with dot net and it doesn't run right, who is at fault. Is it you, or the compiler, or the runtime implementation. At least with the real hardware, you could use debugging tools, logic analysers, and in-circuit emulators to get to the bottom of problems. When you write programs that are complied into pseudocode that is executed by runtimes implemented by a closed source single source vendor and you have problems, you are screwed.

    For me, programming is about writing code that manipulates data and produces results. Someone familiar with the problem domain should be able to read the code.

    At the point where Microsoft outlawed real programming, I bought a big Macintosh workstation with lots of cores, a huge amount of memory, lots of hard disk, a Unix compliant operating system with a nice GUI on top. It has an assembler, and a C compiler for classic computing. It has Cocoa and objective-c for Apple specific application work. Vista and all future Microsoft operating systems will not appeal to me as computing platforms, since what they really are, are execution platforms for Microsoft products.

    What turned out to be important for me was efficient reliable platforms with efficient reliable language tools to create and run software that solved problems in a way that could be relied upon for business and personal use. Every time I look, Microsoft has broken something I need for business, and in the last ten years, it has most often been the development software and it's interfaces to the operating systems services.

  220. Re:No errors, no crashes, flawless ITYJ? by Douglas+Goodall · · Score: 1

    Is that you Jesus? No people I know claim that level of perfection in the real world. Someone is in denial. I can only hope the programming skill exceeds the skill with the English language since I cannot tell whether the above posting is a joke or a serious remark.

  221. In regard to garbage collecting languages by Douglas+Goodall · · Score: 1
    When the dot net technology first appeared, my criticism was that there was no control over garbage collection , and when it occurred, the run-time environment would become unreliable for several seconds. For my uses, computer software cannot cannot have latency of seconds when it is used to control hardware, communicate, or support a user interface.

    I have read here that languages with garbage collection are becoming more popular than languages without. I can only interpret this to mean that keeping track of your program's allocations is considered too much work.

    Real programming is not simple, or effortless. It is necessary to learn, to think, to design, to improve.

    People who like to program in BASIC should not be given the task of deciding what is a good programming language. If all the programming left for us to do by Microsoft can be done in BASIC, our job as software engineers is over and we might as well retire.

  222. Re:It is somewhat and it's the reason I left CS by VENONA · · Score: 1

    There's always going to be a need for things like algorithm research, so I'm not convinced that what you refer to as the "how" should be left behind. I don't doubt that it's happening at many schools. I just don't think it's a good idea. CS should be CS--a primarily mathematical pursuit. Programs which teach other things, which I freely grant are just as valuable, should have other names.

    There's certainly a lot of "what" going on right now, if I have your meaning right. Witness the seemingly endless creation of frameworks, and even nested frameworks. If I really have your meanings right, I'd have to say that mistakes are being made in lowering the CS bar, while simultaneously failing to teach exactly what is involved in creating and using good frameworks, libraries, and other pragmatic programmer's toolbox items.

    I'm not saying that there shouldn't be commonality. If I were to formally describe Kerberos, for instance, I'd want a programmer to be able to implement it, not depend upon being able to do calls into a lib, which may not exist. I'd want that programmer to be able to know how to sanely construct that lib, if it didn't exist.

    I've seen a couple of recent grads who could do neither of these things. One of them didn't really seem to know much about Big-O notation, so there were basic communication problems. That was scary enough that I'm glad I don't have to work with them as a day-to-day thing. Neither seemed particularly interested in learning, either; they apparently saw themselves as some sort of 9 to 5 meat IDE-driver, and would do nothing but increase my workload.

    I certainly don't agree with everything in the GP. I could completely get my rant on, about portions of that post. But I don't entirely disagree with it, either, and I don't think it should have been modded flamebait.

    --
    What you do with a computer does not constitute the whole of computing.