[Pharo-project] XTream was Re: Re: Ocean (was Re: Less plugins, more Smalltalk code!)

Igor Stasenko siguctua at gmail.com
Thu Oct 7 18:48:11 EDT 2010


Nicolas,
the design of your version lacks composability.
Also, i seriously think that read and write streams should not be
married under same class.
This could be a paradigm shift for many people, but not for me, since
i dealt with real-time
network communications in the past and can say that network
communication based on bidirectional data flow
really sucks, because it doesn't scale.. and don't works for more than
2 peers :)

By its nature, data flow is unidirectional. Trying to unify things and
present it as a bidirectional
leads to bad code, bad usage patterns (see RemoteString) and
endless discussions around 'do we need a multiple inheritance or not'.

If i want to read from stream, i can do it like following:

file := 'foo.txt' asFile.

reader := file readXStream.
reader next

if i want to write something, i do

writer := file writeXStream.
writer nextPut: $x.

and if i need to read & write both, then i probably should tell writer
and reader
to share same state, like file handle, cache, buffers etc, but not to
be the same object.
so, if i need to write, i should use writer, and if i need to read - i
should use reader..

Concerning composability, this is a cornerstone of VW XTreams implementation.
And after watching their presentation at ESUG, i can say that your
implementation completely miss the point (sorry).
Seeing how simple i can build complex parser(s) by composing multiple
low-level parsers
in PetitParser, nobody can convince me, that its a bad idea for streams.

Why i can't simply do:

reader := 'aaa.txt' asFile readXStream.
utf8Reader := UTF8Reader on: reader.
?


On 8 October 2010 00:51, Nicolas Cellier
<nicolas.cellier.aka.nice at gmail.com> wrote:
> 2010/10/7 Stéphane Ducasse <stephane.ducasse at inria.fr>:
>> pay attention that there are two xtreams package frameworks from what I understand
>>
>>        one presented at esug and one developed by nicolas
>>
>> Stef
>>
>
> Now, I wonder if I should not rename it SqueaXtream or something -
> apologize for not being Pharo-tically correct ;)
>
> Nicolas
>
>> On Oct 7, 2010, at 4:58 PM, Sven Van Caekenberghe wrote:
>>
>>>
>>> On 06 Oct 2010, at 08:48, Nicolas Cellier wrote:
>>>
>>>> See also hijacked  http://www.squeaksource.com/XTream.html borrowing
>>>> some of the ideas, but somehow less extreme.
>>>> Most packages should now load in Pharo.
>>>
>>> Hi Nicolas,
>>>
>>> I have been looking at the ESUG 2010 slides & google code project pages of xstreams and I must say that I like this very much.
>>>
>>> Your code on SS does indeed load in Pharo 1.1. 8 tests fail out of 37 with errors that I think are probably fixable. I am browsing it now.
>>>
>>> Now my question is, first, do you have some write up somewhere explaining what you did and why, and second, what is the current state of your project and what are your future plans/goals ?
>>>
>>> Thx,
>>>
>>> Sven
>>>
>>>
>>>
>>> _______________________________________________
>>> Pharo-project mailing list
>>> Pharo-project at lists.gforge.inria.fr
>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>
>>
>> _______________________________________________
>> Pharo-project mailing list
>> Pharo-project at lists.gforge.inria.fr
>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>
>
> _______________________________________________
> Pharo-project mailing list
> Pharo-project at lists.gforge.inria.fr
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>



-- 
Best regards,
Igor Stasenko AKA sig.




More information about the Pharo-dev mailing list