Sig, An OO layer on top of procedural software does not have to be tied to the limitations of the procedural software, and in general should not be. You make refactoring of Socket sound like it can only be done by a complete slash and burn, when in fact it could be as simple as exposing behavior where it makes sense.
Bill -----Original Message----- From: [email protected] [mailto:[email protected]] On Behalf Of Igor Stasenko Sent: Friday, October 30, 2009 7:30 PM To: [email protected] Subject: Re: [Pharo-project] Socket>>socketStream 2009/10/31 Schwab,Wilhelm K <[email protected]>: > Sig, > > Furthering a bad design practice does not illustrate an attempts to promote > safe use of resources. If you knew that adding the behavior was a bad idea, > why did you suggest it? > because, as to me, what you are proposing is equivalent to it. In smalltalk you can enforce the correct usage of provided functionality only by means of provided behavior. > Server behavior: consider listening on ports and accepting connections. > True, that is BSD socket behavior, but you are trying to have it both ways. > You cannot complain about superset behavior that I might introduce and then > later say that the current design is ok because it uses the same shotgun > wedding approach as BSD (aka a superset interface). > we have what we have. :) If you'd were writing own library for network communication which directly speaks with hardware (like in SqueakNOS), then you are free to do it differently. But Socket implementation depends on underlaying socket library, adopted by wide range of OSes working with wide range of hardware. It is good that we having something in common and don't need to invent or implement it from scratch. And despite how good or bad it is, it allows us to write portable software, including smalltalk, unless you refactor Socket class :) > Taking your approach, nothing in Squeak would ever get fixed. In fact, > "well, YOU can always do such and such in YOUR image" was the usual argument > used to block change in Squeak. Something to think about. > if there will be fix or extension in original socket library, only then we should consider synchronizing Socket class with it. > And yes, replacing the entire network system has crossed my mind. IPv4 and 6 > are currently mixed into a big ball of mud (no offense to those working hard > to add it, but it's not at all factored, and should be). I will hopefully > soon be in a position to get network connections running across platforms, > and I suspect that the errors reported some months ago will turn out to be > due to the new sockets. Finally, we should have access to SSL sockets via > OpenSSL. That might just drop in along side of the current socket system, > but there might be room for a better solution, perhaps as an extension of > Nile. > as long as you are using same library (sockets), i see not much reasons why we would need to drastically refactor the stuff. Because, with whatever code will wrap it, you end up using same system calls which expecting same argument types & returning same results. So, instead of 'better wrapper', we should expose these calls to language, as close as possible to original and this is the main role of Socket class. Then anyone is free to use them as he likes to. This is what i meant by talking about 'own subclass' and this is why i think that Socket class is bad place for refactory. My point is, that if you writing own library/classes, which having virtually no dependencies from other frameworks, then you are free to do it in any way you like to. But if your goal is to expose the functionality of existing library (such as sockets), then instead, you should be very pedantic and do it as much as close to original, despite how good or bad it is. Then you are opening doors to people who already used this library before, but in another environment/language. -- Best regards, Igor Stasenko AKA sig. _______________________________________________ Pharo-project mailing list [email protected] http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project _______________________________________________ Pharo-project mailing list [email protected] http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
