On Tuesday, 22 January 2013 at 13:54:08 UTC, eles wrote:

The text opens with...:

"We like it when people always want more! Otherwise, we'd be out of the upgrade business. Sometimes, people ask me what I will do when the compiler is done. Done? No software program that is selling is ever done!
-- Walter Bright, C++ compiler architect"

So... the question is: does that quote also applies for dmd? :)

It's been quoted that for every 10 lines of code there's a bug. There are programs with tens of thousands of lines of code, so finding every bug is probably impossible for large programs (above 1000 lines). But that doesn't mean they can't run very very well. A number of the bugs for unchecked work is addition for example, perhaps simplest of operations; Are you going to check after every little + that you didn't have an overflow? Without a lot of extra work are you going to include checks that ensure they can't break?

C example:

  //code looks okay
  void* getMemory(int a, int b) {
    return malloc(a + b);
  }

  //becomes negative due to overflow. it can happen
  //probably returns NULL. I don't know..
  void* ptr = getMemory(0x7fffffff, 0x7fffffff);

  //overflow free version?
  void* getMemory(unsigned int a, unsigned int b) {
    //max name may be wrong, but you get the idea.
    //don't remember, need third cast?
    assert(((long long) a) + ((long long) b) <= UNSIGNED_INT_MAX);
    return malloc(a + b);
  }

  //should assert now
  void* ptr = getMemory(UNSIGNED_INT_MAX, UNSIGNED_INT_MAX);


Since part of the process is not only fixing bugs and improving the compiler, but there's also new features that may be requested that you find necessary yet never needed before you thought about it.

Consider: A recent project of mine that I hadn't updated in over a year and a half seemed to have a bug with how it handled a certain feature and was just brought up, needed to add about 10 lines of code to handle it; Then I found a bug within those 10 lines (after it was working).

With that in mind, it's likely no program will be 'done', but if they do the job well enough then it's probably good enough. So to answer it, the answer is probably yes it applies to dmd.

Reply via email to