[self-interest] simplicity

Chandrasekhar Ramakrishnan cramakrishnan at acm.org
Sun Jun 27 19:02:00 UTC 2004

Ian Woollard schrieb:
> For example in C++ you can do things like:
> {
>      FileHandle f = open("/adirectory/aFile", open);
>     f << "I went to the zoo";
> }
> And the file may be automagically closed as f goes out of scope.

Yes, but you could also do this:

class ZooWriter {
	FileHandle mFH;
	void write_zoo() {
		mFH = open("/adir/afile", open);
		mFH << "I went to the zoo";

	void after_writing_zoo_write_home() {
		mFH << ". Then I went home";

	void essay() {

And then you'll have a problem.  

(Aside -- how would you implement the open function described in your
example? Instead of creating an open function, I would have given
FileHandle a two argument constructor and written FileHandle f("path",
open), but there's always more I can learn about C++.)

> But this is unreliable in Java/Self/Smalltalk- you don't know when the 
> GC will get around to release it. I consider this to be a bug in these 
> languages.

Yes, but if your runtime uses a two-space GC implementation and
collects recently allocated objects more frequently, the file handle
will be closed reasonably soon, and you get the added bonus that the
example I provided won't cause any problems.

- sekhar

C. Ramakrishnan        cramakrishnan at acm.org

More information about the Self-interest mailing list