Slashdot Mirror


Bjarne Stroustrup Awarded 2015 Dahl-Nygaard Prize

mikejuk writes Bjarne Stroustrup, the creator of C++, is the 2015 recipient of the Senior Dahl-Nygaard Prize, considered the most prestigious prize in object-oriented computer science. Established in 2005 it honors the pioneering work on object-orientation of Ole-Johan Dahl and Kristen Nygaard, who designed Simula, the original object-oriented language and are remembered as "colorful characters." To be eligible for the senior prize an individual must have made a "significant long-term contribution to the field of Object-Orientation," and this year it goes to Bjarne Stoustrup for the design, implementation and evolution of the C++ programming language. You can't argue with that.

35 of 200 comments (clear)

  1. You can't argue with that by Anonymous Coward · · Score: 2, Insightful

    It's Sladhdot. Watch me..

  2. Poor Alan Kay by TheRaven64 · · Score: 4, Insightful

    'When I invented the term Object Oriented, C++ was not what I had in mind.' - Alan Kay.

    --
    I am TheRaven on Soylent News
    1. Re:Poor Alan Kay by Calavar · · Score: 5, Insightful

      C++ is a three-way compromise between good object oriented design, backwards compatibility with C, and high performance. Stroustrup has never billed it as anything else.

      Of course, the fact that C++ is a compromise between three goals that are often at odds means that it isn't anywhere near the best language for object-oriented design (loses to Smalltalk and many others), for backwards compatibility with C (IMO Vala does better -- YMMV), or for high performance (loses to FORTRAN). But it does a reasonable job of "good enough" on all three fronts, and that is what has made it so enduringly popular over the last few decades.

      So, no, C++ isn't the best language for object-oriented programing. It's not even close. But that doesn't mean it is a bad language.

    2. Re:Poor Alan Kay by Cassini2 · · Score: 4, Informative

      C++. All of programming in one language - except simplicity.

      "When programming in C++, you have to pick the subset of the language that you want to use. Otherwise your code will be unreadable."

    3. Re:Poor Alan Kay by Uecker · · Score: 3, Insightful

      I disagree that the complexity from C++ is only the result of being the compromise of these three properties. Ofcourse, such a language would be somewhat more difficult than a new language without backwards compatibility to C, but I still think that most complexity in C++ comes from adding whatever feature was cool at the time *without too much thought*. I had to debug my fair share of subtle problems in C++ code (mostly from other people - I stopped using C++ for my own projects years ago) and usually the problems are the new language features that C++ added to C which cause problems. I know excellent programmers who can use them correctly, but most don't. The reason is that they have surprising and hard to understand properties. See, for example, the keynote of Scott Meyer (Effective C++) at the d language conference this year. He lists a lot of arbitrary design flaws in C++.

    4. Re:Poor Alan Kay by UnknownSoldier · · Score: 3, Interesting

      > But that doesn't mean it is a bad language.

      It is when programmers blindly use OOP as a Silver Bullet (TM) and then wonder WTF they run into all sorts of performance problems ...

      "Pitfalls of Object Oriented Programming"
      * http://research.scee.net/files...

      I'm sorry but the C++ committee has their head up their @$$es for *practical* matters:

      * Standardized Name Mangling?
      * Standardized ABI so compiler A can call code compiled with compiler B
      * Standardized error messages
      * Standardized pragmas to enable/disable warnings for unused variables
      * Standardized forced inline, never inilne
      * A consistent grammar between forward declarations and function definitions to make it easier to copy/paste

      void foo(); // semi-colon required
      void foo(); // semi-colon is error
      {
      }

      * Multi-column debugging instead of the archaic line debugging

      foo(); bar(); qaz(); // try setting a breakpoint on bar .. most debuggers only support line debugging?!

      Gee, who would ever want that!

      Yeah, lets ignore real world issues for the past 20 years and keep adding CRAP onto the language ...

      "A Proposal to Add 2D Graphics Rendering and Display to C++"
      * http://www.open-std.org/jtc1/s...

      For high performance games, most of the C++ features are *ignored*

      "CppCon 2014: Nicolas Fleury "C++ in Huge AAA Games"
      * https://www.youtube.com/watch?...

    5. Re:Poor Alan Kay by lgw · · Score: 3, Insightful

      You can wrote very fast an elegant code in C++ just as easily as in C - it's just a different tool set. C++ is not for writing code using the same approach one uses with C; It's terrible for that. But once you understand scoped objects, all memory and resource leaks go away (well, you can attach something to a global structure and forget about it, but you can mess that up in any language). That alone is a huge win.

      C++ has one terrible, fundamental flaw: the learning curve is too high. There's just about nothing where the "right way" is obvious, or even common. And so few people get to real expertise that there's not a common library that collects all those right ways and makes them easy to learn! It's a tragedy, really.

      --
      Socialism: a lie told by totalitarians and believed by fools.
    6. Re:Poor Alan Kay by K.+S.+Kyosuke · · Score: 2

      Actually, he also talked about how all he wanted was possible in Lisp, and it is my understanding that CLOS had been dragged into the "pay-as-you-go" performance territory quite some time ago.

      --
      Ezekiel 23:20
    7. Re:Poor Alan Kay by lgw · · Score: 2

      True, because it is basically terrible for everything, it is terrrible also for using it in the same way as C.

      We get it, you don't like C++. I don't like strawberry ice cream.

      Yes, RAII is nice. But only *some* memory and resource leaks go away, basically the ones which are trivial, because allocation and deallocation simply follow lexical scope. Ofcourse, this is only trivial in languages which do not have exceptions. Exceptions make this simple thing very complicated, and without RAII it is indeed almost impossible to avoid resource leaks in C++. But without exceptions, it is not so much of a deal. In other words, RAII had to be invented after the fact to make exceptions usable in C++ because - again - some feature were introduced without much thought.

      Exceptions are absolutely the right way to do error handling. This was controversial last century, maybe? But it's more than simple RAII - if you have non-trivial destructors, you're likely doing it wrong. Shared_ptr combined with scoped objects fixes the non-trivial ones, and basically everyone uses shared_ptr for everything now. Perhaps over-used, but it gets it right.

      This is only a tragedy for people who have to use C++ or think they have to. There is nothing more liberaring than to realize that all this complexity of C++ is completely unnecessary.

      I haven't paid much attention to D, but C++ is in a space where none of the othe mainstream languages are. C is quite overused for lack of expertise in C++ - and Java likely is as well.

      --
      Socialism: a lie told by totalitarians and believed by fools.
    8. Re:Poor Alan Kay by serviscope_minor · · Score: 3, Insightful

      I'm sorry but the C++ committee has their head up their @$$es for *practical* matters:

      Says the guy who doesn't understand the C++ committee. The C++ committee care very strongly about backwards compatibility, because so does everyon who uses C++. They also care very strongly about compiler adoption because, well, if the compilers don't adopt changes then no matter how much better it is in theory, it's worse than useless in practice.

      * Standardized Name Mangling?

      Would be nice, but would cause major backwards compatibility breakage because all but one compiler would have to change the magling scheme.

      * Standardized ABI so compiler A can call code compiled with compiler B

      Well, GCC won't adopt Microsoft's SEH, because they're slower. Microsoft won't adopt the Itanium ABI, because it would slaughter backwards compatibility and the faster exceptions aren't flexible enough to do what Microsft uses their exceptions for.

      Secondly, if they'd mandated this, we'd have never got a huge boost in exception speed somehwere when gcc 3 came online.

      But basically, it would be worthless because the compiler writers wouldn't adopt it. So why bother?

      * Standardized error messages

      Easy to ask for, almost impossible to specify. Do the error messages have to be in colour or is that optional? Besides it's foolish to claim they have their heads up their asses for not doing something that noone else has ever done.

      * Standardized pragmas to enable/disable warnings for unused variables

      What? Why?

      * Standardized forced inline, never inilne

      Again why?

      * A consistent grammar between forward declarations and function definitions to make it easier to copy/paste

      Nope. Never going to break backwards compatibility. Because no one would adopt the new standard.

      * Multi-column debugging instead of the archaic line debugging

      Outside the scope of the standard. Whine at your debugger vendor.

      *"A Proposal to Add 2D Graphics Rendering and Display to C++"

      The C++ committee have their heads up their asses because they discuss a proposal submitted acording to the correct procedure??

      *For high performance games, most of the C++ features are *ignored* "CppCon 2014: Nicolas Fleury "C++ in Huge AAA Games"

      So your argument against C++ is that it's used in one of the most competitive industries? You know, you don't have to use every langage feature in every project.

      --
      SJW n. One who posts facts.
  3. Contribution? by Anonymous Coward · · Score: 5, Funny

    Contribution to Object Orientation? That's like an award for hammer-based carpentry.

    1. Re:Contribution? by ranton · · Score: 4, Interesting

      I also find it hard to believe an award for pioneering work in object-orientation which started in 2005 just got around to awarding Bjarne Stoustrup ten years later. Since they give out two awards each year, I wonder what the other 18 guys did. Off the top of my head only Alan Kay comes to mind as being more deserving.

      --
      -- All that is necessary for the triumph of evil is that good men do nothing. -- Edmund Burke
    2. Re:Contribution? by rmstar · · Score: 2

      Since they give out two awards each year, I wonder what the other 18 guys did. Off the top of my head only Alan Kay comes to mind as being more deserving.

      Well, Kiczales, des Rivieres, and Bobrow come to mind. It's not that well known, but the meta-object protocol and multiple dispatch are so much more powerfull than C++ OO that it is actually not funny.

    3. Re:Contribution? by narcc · · Score: 3, Insightful

      the OO design patterns people.

      Really? I think the GOF should be round-up and shot. No other group has caused more harm to the industry.

  4. Re:Ppl who don't know C++ slamming C++ by Anonymous Coward · · Score: 2, Informative

    As Stroustrup himself has explained several times, C++ is a multi-paradigm language. You can use it to do C-style system programming (indeed, using the exact same library and system calls without the overhead of a translation layer), object-oriented programming, or generic programming, and mix and match within the same app, library or even the same class definition. And there's no bytecode virtual machine overhead.

    So to say that it's not a pure OO language, well no, it wasn't designed that way.

  5. Who knew? by Marginal+Coward · · Score: 4, Informative

    Who knew that there was an annual award for such a specialized field? It's surprising that Stroustrup hasn't gotten this award already. Based on the Wikipedia entry about this prize, it looks like in 2013 and 2014 they couldn't think of anyone else who created a popular object-oriented language. Maybe somebody should tell 'em about Guido Van Rossum and James Gosling. And what about the STL guy who was just interviewed here? Not to mention the Objective-C guy, whoever he is. (I'm sure I've left many other deserving candidates out - sorry about that.)

  6. Re:Ppl who don't know C++ slamming C++ by craigm4980 · · Score: 2

    Why is inheritance a bad idea?

    It couples polymorphism/dynamic dispatch to implementation sharing. These concepts can be used orthogonally through other means which gives much better flexibility. One example is what Go does with interfaces for one polymorphism/dynamic dispatch and composition for implementation sharing. You can do this style in C++ as well, and it often works out better than massive type hierarchies. Its much easier to re-factor (thus requires less upfront design) and avoids the problems of multiple inheritance. It can get you lower coupling too.

  7. Re:Ppl who don't know C++ slamming C++ by hey! · · Score: 5, Insightful

    Well it's been many, many years since I've used it, which was back in the late 80s and early 90s. My impression from this time is that C++ is unquestionably a work of genius, but that I didn't particularly like it. Part of that is that we didn't really know how to use it effectively. In that era most object oriented programmers used concrete inheritance way too much. Part of that is due to aspects of what we thought an OO language should have that turned out to add complexity while being only marginally useful in practice (e.g. multiple concrete inheritance and operator overloading).

    But in terms of meeting its design goals C++ is a tour de force of ingenuity -- even if some of those goals are questionable by today's standards. The very fact that we know some of those features aren't necessarily ideal is because they were taken out of the realm of academic noodling and put into a practical and highly successful language that could tackle the problems of the day on the hardware of the day. It's hard to overstate the practical impact of C++ on the advancement of both theory and practice of software development.

    Any prize for contributions to OO programming pretty that didn't include Stroustrup in its first recipients would be dubious.

    --
    Post may contain irony: discontinue use if experiencing mood swings, nausea or elevated blood pressure.
  8. Re:Ppl who don't know C++ slamming C++ by halivar · · Score: 2

    What is true OO and how C++ prevents me from doing it? Show some code.

    It's like a resume question from Evil Overlords, Inc. software division.

  9. Award? by Anonymous Coward · · Score: 2, Funny

    I thought Dahl-Nygaard was an Indian soup.

  10. Is FORTRAN still winning? Was Re:Poor Alan Kay by 140Mandak262Jamuna · · Score: 4, Interesting
    Till about FORTRAN 77 it was clearly beating C in scientific computations. But that was mainly because Fortran used static memory allocations and C was littered will malloc and associated overheads. With Fortran99, dynamic memory allocations came to Fortran too. At this point I figured it must be just badly hampered C, all the pain and not much gain. Have not tried it personally.

    But a question for those who have: Does it still win with dynamic memory allocation? How granular is the dynamic memory allocation? Complete like C? or it is a bastardized version where the common block sizes could be defined at run time and then it runs without ever calling free()? I could imagine the language getting malloc() but not free() to retain speed.

    --
    sed -e 's/Chuck Norris/Rajnikant/g' joke > fact
    1. Re:Is FORTRAN still winning? Was Re:Poor Alan Kay by Anonymous Coward · · Score: 4, Insightful

      One of the reasons compilers can often still better optimize FORTRAN code is that FORTRAN makes stronger guarantees about aliasing than C++ does. The lack of such guarantees constrain C++ compilers by introducing more antidependencies that restrict code motion, although in practice most of them are not actually antidependencies.

      Compilers are getting better over time at sorting that out, but sometimes it can't be sorted out because there isn't enough information available statically to do so.

      I'm not a FORTRAN programmer and don't particularly like the language, but FORTRAN is still where it's at for high performance computation. And FORTRAN is a better language today than FORTRAN77 was back in the day!

    2. Re:Is FORTRAN still winning? Was Re:Poor Alan Kay by Rising+Ape · · Score: 2

      Does it still win with dynamic memory allocation? How granular is the dynamic memory allocation? Complete like C?

      Fortran's dynamic memory allocation is much easier to work with than C's. You simply declare a variable allocatable, then allocate as needed with the appropriate size. It automatically gets deallocated when it falls out of scope, so no memory leaks (at least since F95).

      e.g.

      real, allocatable :: myarray(:)

      allocate (myarray(1000), stat=ierr)
      (something to check error code ierr here)

      I've written a bit of finite difference code in Fortran. Repeatedly allocating and deallocating can give a huge performance hit, so I tend to do all my allocations before the main loop. Not entirely sure why the penalty is so big, but it seems to be - these are allocations of hundreds of MB or even a few GB, so the cost of operations done on the arrays should dwarf the cost of the allocation. Unless there's some underlying reason why touching newly allocated memory is so slow, but I don't know enough about how virtual memory behaves to say.

    3. Re:Is FORTRAN still winning? Was Re:Poor Alan Kay by 140Mandak262Jamuna · · Score: 2
      Have you done any comparison with this keyword in C and Fortran? I play in the Finite Element Field. For me the flexibility afforded by C++ out weighs the performance I could get in Fortran. At least the solver people work on a mesh that is not altered, you could estimate the memory needs in one pass and then do the allocations, even for unstructured meshes. I make unstructured meshes, so I would not know a priori the number of tets incident on a node or number of triangles incident on an edge. I build these structures as I go along, and it is impossible to avoid new() and delete() in C. They are basically malloc() and free(). So have not touched FORTRAN for ages.

      Among the solvers some of the matrix solvers use FORTRAN and some blas. Again they too prefer C++ for most of the solution and reserve FORTRAN only for really serious loops.

      --
      sed -e 's/Chuck Norris/Rajnikant/g' joke > fact
  11. C++ is a travesty of design by presidenteloco · · Score: 3, Interesting

    Because its requirements, chosen by its designer, were misguided and impossible to achieve with a clean, elegant design.

    Attempting to be compatible with C was a terrible mistake. The resulting language complexity, inconsistency, and limitations resulted in an unsafe language much harder to use than is justifiable.

    What would have been wrong with just creating a compiler which was both a C compiler, and also a compiler for a clean OO language.

    Programs could have had C functions in some source files/directories, (considered unsafe, of course), and clean OO modules in other files / directories. An easy way of using data in some C types such as basic numbers, arrays, and strings within the OO language could have been crafted, and a no-muss-no-fuss way of calling C functions from OO and vice versa could have been included.

    What was lacking was the courage to drag programmers away from C rules and conventions enough to create a simple and powerful OO language.

    The ugly compromise approach set back OO programming momentum, cost millions of person-years of unnecessary debugging effort and allowed many, many continued buffer overflow exploits etc. that ruin the reputation of software in general.

    --

    Where are we going and why are we in a handbasket?
    1. Re:C++ is a travesty of design by Half-pint+HAL · · Score: 3, Insightful

      Indeed -- a multiparadigm "language" doesn't have to actually be a single language at all. It can be multiple languages with a single datatype system and call mechanism. (I'm personally more interested in this as a way to combine functional programming with procedural programming, but it would work just as well for OO with non-OO.)

      --
      Got them moderator blues I blieve I walk out the do', With these mod-points I been gettin', I 'most never post no mo'
  12. Ken Thompson on C++ by Anonymous Coward · · Score: 5, Interesting

    "I would try out the [C++] language [at AT&T] as it was being developed and make comments on it. It was part of the work atmosphere there. And you'd write something and then the next day it wouldn't work because the language changed. It was very unstable for a very long period of time. At some point, I said, no, no more. In an interview I said exactly that, that I didn't use it because it wouldn't stay still for two days in a row. When Stroustrup read the interview he came screaming into my room about how I was undermining him and what I said mattered and I said it was a bad language."

    "[C++] certainly has its good points. But by and large I think it's a bad language. It does a lot of things half well and it’s just a garbage heap of ideas that are mutually exclusive. Everybody I know, whether it’s personal or corporate, selects a subset and these subsets are different. So it’s not a good language to transport an algorithm—to say, "I wrote it; here, take it." It’s way too big, way too complex. And it’s obviously built by a committee. Stroustrup campaigned for years and years and years, way beyond any sort of technical contributions he made to the language, to get it adopted and used. And he sort of ran all the standards committees with a whip and a chair. And he said "no" to no one. He put every feature in that language that ever existed. It wasn't cleanly designed—it was just the union of everything that came along. And I think it suffered drastically from that."

    Ken Thompson; cited in Seibel, Peter (2009). Coders At Work. p. 475.

    1. Re:Ken Thompson on C++ by Anonymous Coward · · Score: 4, Insightful

      Stroustrup might agree that he's not necessarily brilliant in the same way Thompson was, but he is disciplined and dogged and willing to talk to people and compromise. He took his job as maintainer of C++ seriously, and was willing to keep at it for three decades, which is something that Nicklaus Wirth didn't do as creator of Pascal for instance. He's been able to attract very intelligent, very dedicated folks to the C++ standardization effort, people who don't resort to juvenile flame wars as we often see breaking out in open source projects.

      I don't think it was fair to say that Stroustrup caved and took whatever proposals anybody had. For example, people have been asking for, and proposing implementations for garbage collection in C++ for more than 20 years, but it's still not in the standard. There is no standard GUI or windowing API, or standards for enterprise application server frameworks, or anything matching wall of books that came out of SunSoft/Oracle for the Java API's. When Stroustrup through his lot behind STL, he was implicitly rejecting many competing proposals, including those submitted by his friends and long time colleagues at Bell Labs. Given the change in paradigm that STL represented relative to the mainstream of O-O collection class libraries, that took guts.

    2. Re:Ken Thompson on C++ by serviscope_minor · · Score: 2

      Well that just sounds like mean-spirited carping. This for example is demonstrably not true:

      And he sort of ran all the standards committees with a whip and a chair. And he said "no" to no one. He put every feature in that language that ever existed.

      The committee process is very open and one can see how it works. and it doesn't work like that. And it certainly doesn't have every feature: most proposals get rejected.

      --
      SJW n. One who posts facts.
  13. Re:Pronunciation by presidenteloco · · Score: 3, Funny

    Yes. And it is "see" "ploose" "ploose" for those in the know.

    --

    Where are we going and why are we in a handbasket?
  14. Re:Ppl who don't know C++ slamming C++ by narcc · · Score: 2

    What is true OO

    No one knows. Those who think they know all disagree with one another.

  15. Re:Ppl who don't know C++ slamming C++ by flowsnake · · Score: 2

    When the only hammer you have is C++, every problem looks like a thumb.

  16. Well, there's another bullshit award, then. by jcr · · Score: 3, Insightful

    C++ is to C as Lung Cancer is to Lung.

    -jcr

    --
    The only title of honor that a tyrant can grant is "Enemy of the State."
  17. "Science"? by Tablizer · · Score: 2

    Re: "object-oriented computer science" -- Where is the "science"? Where are the theories, the metrics, and the independent repeats to verify?

  18. Functional Awards? by Tablizer · · Score: 3, Funny

    Where are the "Functional Science" awards? You gotta have Paradigm Envy, no?

    And how about the Procedural Awards, and the Goto Awards? I hear the Goto team racks up a lot of air-fare.