Subj : Re: dangers of operator overloading To : comp.programming From : Rob Thorpe Date : Mon Aug 22 2005 02:39 am Robert Maas, see http://tinyurl.com/uh3t wrote: > > From: "Rob Thorpe" > > Or, if no-ones going to look in the file, then you can make the file a > > lisp program. To form the data structure the program is executed. > > That way if the representation of the data on file is changed the only > > thing that needs to change is the program that writes this program out. > > (This also assumes you don't care about security) > > I don't like that solution at all, for precisely the reason you cite > (security). If someday you decide you need security, if you have just a > data file, it's easy to encrypt it and delete the original, and then > decrypt it on-the-fly only at safe times, and immediately delete the > decrypted version whenever there's a security breach. But if you have > an actual program that generates the confidential data, it's not so > easy to encrypt the source for storage and then decrypt it and compile > it and run it all on the fly and the delete the source and object and > data when there's a security breach. > > If you need a different data format, you simply write a converter from > the native-lisp-sepxr format to whatever new data format you need. It's > a lot easier to invent an output routine for a new syntax than to > invent an input routine for a new syntax, so with the original data > always in s-expression format the hard part is already done and all you > have to do is the easy part each time you change the runtime format of > data. (You might even have more than one runtime format, such as a > forward and a backward lookup table, each generated from the same > s-expression input.) Yes, there's no doubt about it, from a security point of view it sucks. It can be useful for writing your own quick programs though. If you need to do something serious you write the converter you mention. Alternatively, if you data's in something like defstructs you can hook the printer to use your own printing routine. .