digitalmars.D - Mango's "Pickle" serialization weirdness!
- Garett Bass (11/11) Jan 15 2006 I can understand the usage of the word "pickle" in the sense of preserva...
- clayasaurus (3/44) Jan 16 2006 You might want to post here (
- Kris (5/7) Jan 16 2006 Yes; please do.
I can understand the usage of the word "pickle" in the sense of preservation,
but the method names for pickling library are totally counterintuitive.
PickleWriter.freeze()?!? why would a "writer" be doing any freezing?
PickleReader.thaw()?!? why would a "reader" need to thaw something?
Shouldn't writers write() and readers read()? The individual method names do
capture their own purpose, but they don't fit into the larger scheme of things.
Instead they sound like poorly named food-service machinery. Excuse me, but
I'm trying to serialize/deserialize some data. If I wanted to freeze my pickle
I'd go to Antarctica and pull down my pants.
I'm writing a serialization library that uses, I think, much more intuitive
naming. The base interface for serializable things is "Serializable". Classes
that serialize built-in data types are called Serializers. E.g.:
class GenericArraySerializer(T) : Serializable {...}
This template generalizes the serialization implementation for arrays of
intrinsic types. Similarly, there are specializations for arrays of object
references.
When I want to serialize/deserialize, I create a subtype of class Format, which
determines the format of the serialization data, and provide a stream to
serialize/deserialize to/from. One particular benefit of my solution is that I
only require a SerializableObject's serializable members to be registered, the
class need not provide any code to handle the actual reading and writing that
occurs during serialization.
Sorry for the rant. Seeing Pickle has only reinforced my desire to bring my
serialization project to completion. I suppose is a good thing. I only hope
the rest of Mango is a doesn't have such a multiple-personality disorder.
Regards,
Garett
Jan 15 2006
You might want to post here (
http://dsource.org/forums/viewforum.php?f=5 ) as well.
Garett Bass wrote:
I can understand the usage of the word "pickle" in the sense of
preservation, but the method names for pickling library are totally
counterintuitive.
PickleWriter.freeze()?!? why would a "writer" be doing any freezing?
PickleReader.thaw()?!? why would a "reader" need to thaw something?
Shouldn't writers write() and readers read()? The individual method
names do capture their own purpose, but they don't fit into the larger
scheme of things. Instead they sound like poorly named food-service
machinery. Excuse me, but I'm trying to serialize/deserialize some
data. If I wanted to freeze my pickle I'd go to Antarctica and pull
down my pants.
I'm writing a serialization library that uses, I think, much more
intuitive naming. The base interface for serializable things is
"Serializable". Classes that serialize built-in data types are called
Serializers. E.g.:
class GenericArraySerializer(T) : Serializable {...}
This template generalizes the serialization implementation for arrays of
intrinsic types. Similarly, there are specializations for arrays of
object references.
When I want to serialize/deserialize, I create a subtype of class
Format, which determines the format of the serialization data, and
provide a stream to serialize/deserialize to/from. One particular
benefit of my solution is that I only require a SerializableObject's
serializable members to be registered, the class need not provide any
code to handle the actual reading and writing that occurs during
serialization.
Sorry for the rant. Seeing Pickle has only reinforced my desire to
bring my serialization project to completion. I suppose is a good
thing. I only hope the rest of Mango is a doesn't have such a
multiple-personality disorder.
Regards,
Garett
Jan 16 2006
"clayasaurus" <clayasaurus gmail.com> wroteYou might want to post here ( http://dsource.org/forums/viewforum.php?f=5 ) as well.Yes; please do. Any issues regarding Mango should (also) be posted over at dsource.org, just so that they are guaranteed to be noticed. Mango is an open-source, group-supported library ~ improvements are more than welcome!
Jan 16 2006








"Kris" <fu bar.com>