[Python-3000] Builtin iterator type

Neil Toronto ntoronto at cs.byu.edu
Sun Nov 19 06:42:19 CET 2006


Guido van Rossum wrote:
> I realize that Java- and Zope-style interfaces *seem* to be all about
> syntax (they define names and signatures of methods but not semantics)
> but IMO that's only a theoretical objection; in *practice* these
> interfaces have strong connotations of semantics (albeit written in
> Enlish rather than using assertions or pre- and post-conditions) and
> nobody would think of claiming to implement an interface without
> implementing the proper semantics (or some interpretation thereof :-)

Actually, plenty of people would dream of it and even do it. I've seen 
some pretty evil implementations of Java interfaces. All they can 
enforce is static types and method signatures.

My main point is, unless you're willing to go whole-hog with pre- and 
post-conditions (and even that would be insufficient, as you can't check 
anything like "this eventually, on some call, responds with x" without 
spelling it out in temporal logic and running model checking software), 
no interface can enforce anything *semantically* meaningful. The most 
useful thing an interface can do is *communicate* semantics to another 
programmer.

I'm not sure I said anything Guido didn't already say, but I wanted to 
make the distinction between *enforcing* correct behavior and 
*communicating* correct behavior. Java (and Zope, apparently) simply 
have a more formal way of doing this. Stock Python doesn't.

Neil



More information about the Python-3000 mailing list