Loading ...
Sorry, an error occurred while loading the content.

RE: Programming Languages and XP (was Re: [OT] Re: [XP] Extreme Testing!)

Expand Messages
  • Charlie Poole
    Hi Joe, ... AFAIK, all languages that use interfaces (C++, Java, C# for example) require you to duplicate the method declarations in the interface deinition
    Message 1 of 111 , Jul 1, 2007
    • 0 Attachment
      Hi Joe,

      > A simple example: when I extract an interface, C++ forces me
      > to duplicate the method declaration in various header files.
      > I have to declare the method in the interface definition and
      > each of its implementations. I don't have this problem in
      > Java, Smalltalk, Ruby, Python, and others. So here is a case
      > where C++ forces me to duplicate code that other languages
      > don't force me to duplicate. Since removing duplication is
      > part of simple design, in this direction, C++ designs are
      > more complex than, say, Java designs.

      AFAIK, all languages that use interfaces (C++, Java, C# for example)
      require you to "duplicate" the method declarations in the interface
      deinition and in each implementation. I use quotes because there
      seems to be no real duplication here: the first is a statement of
      the contract, the second is the carrying out of that contract. The
      textual repetition looks like duplication, but it serves two purposes.

      [One could, of course, argue that languages that don't require specific
      interfaces are "better" than those that do. In fact many have made that
      argument but I don't want to go there.]

      I think you are actually saying that some languages make it quicker,
      simpler or easier to /express/ a design and I certainly agree. However,
      the design activity culminating in some intention like "I guess I'll
      have an interface and three implementations" is identical in all languages
      for which that statement makes sense.

      On another tack, I think that language preference discussions, while they
      can be fun, mix badly with discussions of XP. They have a tendency to
      confuse some people into thinking that you can only do XP using a
      certain kind of language, which I think we all know is untrue.

      Charlie

      > > For a long time I myself was on the "this language is better than
      > > that" crusade. At the moment I believe that you can do a
      > decent design
      > > in any language (with the exception of brainfuck and i686
      > assembler -
      > > just for reference: I meant higher level languages).
      >
      > Ron didn't claim that Smalltalk was better than C++. That
      > would be stupid, and Ron's not stupid, in general.
      >
      > Take care.
      > --
      > J. B. (Joe) Rainsberger :: http://www.jbrains.ca Your guide
      > to software craftsmanship JUnit Recipes: Practical Methods
      > for Programmer Testing
      > 2005 Gordon Pask Award for contribution Agile Software Practice
      >
      >
      > To Post a message, send it to: extremeprogramming@...
      >
      > To Unsubscribe, send a blank message to:
      > extremeprogramming-unsubscribe@...
      >
      > ad-free courtesy of objectmentor.com
      > Yahoo! Groups Links
      >
      >
      >
      >
    • J. B. Rainsberger
      ... I understand your point. I was partly acting as the devil s advocate and partly asking a genuine question about Smalltalk as a Smalltalk novice. Take care.
      Message 111 of 111 , Jul 6, 2007
      • 0 Attachment
        Ron Jeffries wrote:

        > Hello, J.. On Thursday, July 5, 2007, at 11:44:11 PM, you wrote:
        >
        > > So is the interface an important element of the design? In Smalltalk,
        > > the interface is implicit, because we can only deduce it by noticing the
        > > same method signatures in multiple classes and looking for the client
        > > code that uses the corresponding classes polymorphically (not knowing a
        > > more proper way to express that idea). Does Smalltalk then not obscure
        > > intent in this area? If not, why not?
        >
        > It can. There are implementations of interface-like things if you
        > want them. And other ways of expressing the thing.
        >
        > On the other hand, polymorphism without all that rigidity has value
        > too.
        >
        > But my only point was that the two designs, as reflected in the
        > code, are different. I'm not making a claim as to which one is
        > better, only that the language does make a difference to the design,
        > at least as implemented.

        I understand your point. I was partly acting as the devil's advocate and
        partly asking a genuine question about Smalltalk as a Smalltalk novice.

        Take care.
        --
        J. B. (Joe) Rainsberger :: http://www.jbrains.ca
        Your guide to software craftsmanship
        JUnit Recipes: Practical Methods for Programmer Testing
        2005 Gordon Pask Award for contribution Agile Software Practice
      Your message has been successfully submitted and would be delivered to recipients shortly.