Building a string from incompatible objects.

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
68 messages Options
1234
Reply | Threaded
Open this post in threaded view
|

Re: Building a string from incompatible objects.

Bijan Parsia-2
On Mon, 8 Jan 2001, Costas Menico wrote:

> Bijan Parsia <[hidden email]> wrote:
>
> >On Sun, 7 Jan 2001, Nicholas Riley wrote:
> >
> >> Costas Menico <[hidden email]> wrote:
> >>
> >> >>Additionally, ObjectStudio also provides String>>++ which works like
> >> >>#+ but automatically puts a space character between the 2 objects.
> >> >
> >> > This to me is fluff. Now we are talking beyond reasonable need.
> >>
> >> I've found such operators useful in other languages - they've been
> >> similarly named, as && where & is the standard string concatenation
> >> operator.
> >
> >Heh! It's nice to see Costas in the "anti-fluff" position ;)
> >
>
> I was never a fluffer.

All I meant was that you are now in the position of saying "that's too
much" vs. someone saying "I find this readable, typable, and useful". It
helps emphaize that this is somewhat a matter of taste. Of course, taste
is *very* important. On the other hand, we should be careful not to assume
that our own taste is representative.

> On the otherhand I feel Smalltalk is not a
> religion either.

Faugh! No one has even remotely suggested that. Or acted as if that were
the case. Certainly not me. Argue against the actual arguments, not
against the alleged "forces of retrograde purity" :)

> It's a real computer development environment and does
> need some enhancements to fulfill user needs.

The problem, of course, is *indentifying* those needs, providing an
enhancement that *fulfills* those needs, and making sure that 1) there
isn't something better and 2) it's not disruptive of other needs.

I fully accept that *you* have such a need. I tried to identify where
fulfilling that need by adding the particular message you desired with the
particular semantics wasn't an overall win when standardize, and when not
standarized, wasn't a win for you if you want to share your code. I
identified other ways of meeting those needs that may make trade offs
between being *as* satisfying to you (considering the problem in
isolation) and not being disruptive wrt to these other needs. By all
*means*, if you like #++ use it. I'll bet that the first thing most peple
will do with your code is replace all uses of your #++ with something
else.

If this doesn't bother you, end of story.

If Dave Harris convinces me that he has an operator family that is
coherent, readable, and worth the trouble of learning, then you may well
have something new that you'll like using and that will have two other
folks pushing it.

> If Smalltalk's mission
> is to develop real world applications

A mission successfully accomplished for *decades* without anything like
#++. Indeed, *many* languages lack auto-coercing concantination operators.

Funny that.

> then market demand and vendor
> competition will make it happen.

If this conditional is supposed to show that #++ will win because it's
necessary for developing real world applications, then I don't think it's
correct :)

Cheers,
Bijan Parsia.


Reply | Threaded
Open this post in threaded view
|

Re: Smalltalk Community Opinions (was Re: Building a string from incompatible objects)

David Simmons
In reply to this post by James Robertson-3
"James A. Robertson" <[hidden email]> wrote in message
news:[hidden email]...
> David Simmons wrote:
> >
> > <[hidden email]> wrote in message
> > news:[hidden email]...
> > > On Mon, 08 Jan 2001 14:58:51 GMT, "Boris Popov"
>
> IMHO, it's not that the language is sacrosanct; it's just that changing
> the syntax (rather than adding methods/classes) is (IMHO) not the best
> route.  Adding complexity isn't a great idea.

Hi James. It's good to see you jumping in before my opinions get out of line
;-)

I agree with you that adding syntax (sin-tax) for its own sake or for mere
convenience is not a good idea. I also agree that adding complexity is not a
good thing. In my strongly held viewpoint, complexity is the antithesis of
what Smalltalk is or should embody as a language and as a complete
platform/system.

I say this with the full recognition/acknowledgement that I have been quite
active in extending Smalltalk for the last ten years. Some of my work in
this area may be flawed or I may not have taken enough care or deliberation
in designing or developing it, but I'd like to believe that I've
continually, in that effort, tried give all such work due deliberation and
consideration.

There was a lot of discourse on the original thread from which this post is
derived, so I will restate my opinions regarding some of the ideas
presented.

First, I was originally informing the participants in the thread about QKS
use of the ${...} operator syntax. I also lobbyied for the ${...} operator
syntax to be used if any syntax was to become standard; and I gave
hints/suggestions about how to add it to a compiler.

I gave a limited set of arguments for the viewpoint of adding this syntax. I
can appreciate and understand dialects not wanting to add any new syntax,
let alone this one.

Second, I was generally opposed to any other syntax suggested.

Third, I suggested using the #<< family of messages as a means for extending
stream protocol to achieve some of the originally posted questions/ideas. I
gave various examples and rationale for using this familiar set of binary
messages.

My initial involvement in the discussions was only to provide this
information to expand posters mindshare on the topic. As I saw more ideas
and discussion unfolding I extended my position to lobby for using the #<<
family of selectors if any such family was to make its way into multiple
dialects or public frameworks.

Fourth, I gave a variety of comments and/or arguments against some suggested
ideas. Particularly I was strongly opposed to the idea that the #<< message
should be universally defined to convert the receiver to a Stream if it was
not one already. This would, in effect, be the same thing as turning the #<<
message into an operator (in much the same way that isNil, notNil, class,
ifTrue:... messages are effectively operators).


-------
SIDEBAR:
-------
I should also add that, historically, the vendors seem to have had minimal
to no collaboration regarding their efforts to extend or alter Smalltalk the
language or Smalltalk the common vernacular. There are changes that have
been made to Smalltalk, there are inconsistencies among dialects, and there
are things that are really worth consideration for availability among all
dialects.

I've been, perhaps to the annoyance of some, fairly strong/agressive in my
efforts to evangelize the idea of exploring change and for ideas of
standardization/extension (and especially vendor collaborative extension) of
Smalltalk's capabilities.

I wouldn't be surprised to find some people viewing some of my
approach/dialogue as being downright arrogant, but it is sometimes hard to
know how best to encourage exploration in this area (so breaking eggs to
make the omelete is necessary). I've also learned that taking a bit of a
stronger view than one really feels is sometimes necessary to "stir-the-pot"
sufficiently to create a catalyst for discussion.

With regard to my posts involving SmallScript, I thing it is probably
obvious to most frequent cls readers that, for me, it represents a
culmination of my experience and development efforts in this field over many
years.

I'd like to believe that the work on SmallScript (which is NOT smalltalk,
but IS a new language that subsumes Smalltalk within it) has some
fundamental new capabilities. My posts periodically bleeding through with
some of my personal frustrations at losing nearly 5 years of time in
enabling Smalltalk to have access to exploring and benefitting from some of
its facilities and overall issues for me with bringing it together because
of my/QKS mistakes and Smalltalk and Apple market related problems doesn't
necessarily assist/help my other goals.

I believe that growth and active involvement and discussion of technical
issues and their rationale not only strengthens the language, but provides
an attractive venue for education and community interaction (activity,
discussion, and exploring the frontiers of computing ideas are always good
attractors for community growth and education).

The discussion and exploration of ideas does not mean that all (or perhaps
even most) discussed or proposed ideas should be adopted or their use
encouraged; but encouraging and nurturing discussions about them is a
benefit for everyone.
-------

-- Dave Simmons [www.qks.com / www.smallscript.com]
  "Effectively solving a problem begins with how you express it."

>

[...snip...]

>
> --
> James A. Robertson
> Product Manager (Smalltalk), Cincom
> [hidden email]
>
> <Talk Small and Carry a Big Class Library>


Reply | Threaded
Open this post in threaded view
|

Re: Building a string from incompatible objects.

Vassili Bykov-3
In reply to this post by David Simmons
David Simmons wrote in message ...
>"Dave Harris" <[hidden email]> wrote in message
>> How much do you know about early (circa 1971) Smalltalk? As far as I can
>> tell, a message send resulted in the entire message being sent to the
>> receiver and the receiver effectively parsed it, giving it more control
>> over the syntax than now.

That's right.  Every object receives a sequence of unevaluated tokens from
the message send.  The heart of each object is message receiving code --
essentially a pattern matcher that makes sense out of that sequence.  The
matcher ("programmable method dispatch") typically looks at the first token
("a selector") and then decide what to do with the rest, evaluating some of
them in the process.  So the matcher language is the real language core, the
message passing and dispatch are a library on top of it.

This is all in present tense because Smalltalk-72 is alive and well.  Dan
Ingalls implemented the core interpreter and key primitives of ST-72 to run
inside a Squeak image.  Gave me that Jurassic Park feeling first time I saw
it.  It is available together with the system source (there was no image
back then; the system boots by loading the source).  The source and the
comments make a very interesting reading by itself (ever wanted to know a
map of Alto hardware registers?)

The syntax is very different and with the difference in how the language is
built, ST-72 is a totally different language.  Especially the first time you
see it in a "proper" font, with all the eyeballs and pointing hands.  There
are a few interesting glimpses of roots of the current syntax, like you can
see where the leading colon of a block argument declaration comes from.

>I've never read that paper; I'll have to find it (unless you perchance mail
>it to me :). But I was aware that the syntax of early Smalltalk
>implementations was much more flexible.

It was published in _History of Programming Languages, Part II_.  Hopefully
the online version also includes the illustrations the printed one has.
There is also an appendix explaining the design and giving the interpreter
source (one page of a fairly transparent language).  This seems to be an
earlier version of the language than the one used in the examples in the
paper itself, and also a few things were apparently mixed up in typesetting.
(You notice it if you try to implement something based on that).

--Vassili


Reply | Threaded
Open this post in threaded view
|

Re: Building a string from incompatible objects.

Bijan Parsia-2
In reply to this post by David Simmons
On Mon, 8 Jan 2001, David Simmons wrote:
[snip]

Wow. Lots of stuff. I'm way to wacked to say much useful except: Get
SmallScript out there so we can play with it! ;)


> > Apologies if you know this stuff better than me - which is quite likely.
> > Most of what I know comes from Kay's "Early History of Smalltalk" paper,
> > which I found online recently.
>
> I've never read that paper; I'll have to find it (unless you perchance mail
> it to me :). But I was aware that the syntax of early Smalltalk
> implementations was much more flexible.

First, I'll point to some generic cool history papers on:

        http://users.ipa.net/~dwighth/

http://users.ipa.net/~dwighth/smalltalk/St76/Smalltalk76ProgrammingSystem.html

Does Smalltalk-76, with nothing about syntax extentions.


I wish Parc would put the Smalltlak-72 Instruction Manual online, then
list it on their historical docs page:

        http://www.parc.xerox.com/publications/pubs-hst.html

But here's a good message from Alan to the Squeak list:

        http://www.egroups.com/message/squeak/15947

"P.S. At PARC we had complete control over our character sets and fonts,
and very little interest in ASCII...  Smalltalk-72 could deal with
sequences of keywords with spaces in between them -- and it was a
"zero-overhead" extensible language: that is, each class was defined as a
syntactic recognizer of the messages it could receive in a very
straightforward manner. The resulting syntax was much more "scripting
like" than Smalltalk-80 (and even quite a few of today's "scripting
languages").
     This was a really good idea for a while, but started to degenerate
into a Tower of Babel via poor choices for syntactic forms in the heat of
programming (even by good programmers).
     Smalltalk-76 (by Dan) was a really interesting meeting ground between
a compilable and a readable syntax. Smalltalk-80's syntax (I
believe) could have adopted a stronger theory of uniformity that would
have yielded more pleasing results (I don't like it).
     I still like the idea of easy syntactic extension (and most of the
possible routes to metaprogramming), but experience seems to say that
"making it easy" should not generally be the same as "put it at the same
level of expression". There should be "fences" that you have to jump over
to do the metaprogramming, but once jumped, the metaprogramming should be
easy and not obscure .... (Squeak needs a LOT OF WORK to be in accord with
this principle.)"""

> My (most likely flawed) understanding was that it had conceptual features
> for altering the syntax; like lisp (no surprises here if you're have some
> knowledge of the trends of that day and of the Smalltalk developer's
> eventually direct rivalry relationship with lisp developer's where Smalltalk
> was the younger and significantly less respected sibling). Based on what
> you've described it would have been a very slow interpreter -- which I would
> guess would have been a significant motivating factor for changing it.

 From what Alan wrote above, I don't think so.

The *really* cool thing is that you can run Smalltalk-72 in Squeak:
        http://minnow.cc.gatech.edu/squeak/989

(Note I forget which version of Squeak this was released for. I'm pretty
sure they plan to role it into the main release, as well as a Smalltalk-76
simulator.)

> Based on my direct discussion with Alan (in the early-mid 90's) about the
> early evolution of Smalltalk, my understanding of the very first versions of
> Smalltalk were that it's design/implementation was simple and had very
> limited relationship to the Smalltalk's available by the early to mid 90's.
[snip]

My impression is that there wasn't a lot of focus on the VM or tuning the
GC, but the class libraries I suspect were more Squeaklike in their
constant flux.

Cheers,
Bijan Parsia.


Reply | Threaded
Open this post in threaded view
|

Re: Building a string from incompatible objects.

Bijan Parsia-2
In reply to this post by David Simmons
On Mon, 8 Jan 2001, David Simmons wrote:

> "Costas Menico" <[hidden email]> wrote in message
> news:[hidden email]...
> > Bijan Parsia <[hidden email]> wrote:
> >
> > >On Sun, 7 Jan 2001, Nicholas Riley wrote:
> > >
> > >> Costas Menico <[hidden email]> wrote:
> > >>
> > >> >>Additionally, ObjectStudio also provides String>>++ which works like
> > >> >>#+ but automatically puts a space character between the 2 objects.
> > >> >
> > >> > This to me is fluff. Now we are talking beyond reasonable need.
> > >>
> > >> I've found such operators useful in other languages - they've been
> > >> similarly named, as && where & is the standard string concatenation
> > >> operator.
> > >
> > >Heh! It's nice to see Costas in the "anti-fluff" position ;)
> > >
> >
> > I was never a fluffer.
>
> I'll bite, what the heck is a fluffer?

It's the person who comes in to poof your pillow.

> And what did Bijan mean when he used
> the phrase "anti-fluff"?
[snip]

Just that some of us were whining about #++ the auto-coercer as being a
bit of silly fluff, and here Costas was saying that the operator that
added a space was somehow "too much" ("This to me is fluff.")

I was just struck my his resistance to what was essentially his own
position on the very same basis that others did his original proposal.

We could run the whole debate all over again with a little substitution
except that Costas would be on the side of the angels this time :)

Of course, *that* part of the debate has degerated into ye olde "My
favorite language has foo and if you wan't to attract millions of people
the way my favorite langauge does, you'll have to drag yourself out of the
mire of hoary language purism and adopt foo. It's marketing. You must
understand marketing. Otherwise Smalltalk will continue dying." As boring
as it is fallacious.

The interesting part of the debate (investigation rather) has split into
the (going strong) "what're some good general ways of easing string/user
message construction/printing?" and the (kinda quiet but getting some
steam) "how do we handle significant syntactic variation?"

Cheers,
Bijan Parsia.


Reply | Threaded
Open this post in threaded view
|

Re: Smalltalk Community Opinions (was Re: Building a string from incompatible objects)

Vassili Bykov-3
In reply to this post by David Simmons
David Simmons wrote in message
<2Qs66.101422$[hidden email]>...
>Costas,
>
><opinion>
>I've monitored this thread pretty much from the beginning. I don't
>understand the semi-antagonistic attitude some posters have had to your
>ideas (well actually I do, I just wish I didn't). You openly asked for
>advice and ideas, you proposed and explored many ideas in the spirit of
good
>discourse.
>
>In that same spirit some people disagreed with some ideas (some other
people
>chose to make comments that were not exactly in that spirit, and I for one
>wish they wouldn't expose their attitudes so plainly).
>
>It's a great thing to have open hearty debate and discussion and voice
one's
>opinion on the topic, its a whole other thing to criticize/denigrate the
>individuals participating in such discourse.

I don't think spirit of good discourse precludes antagonistic attitude, as
long as that attitude is towards ideas rather than the poster.  I very much
enjoyed the discussions started by Costas, as they made me better realize
some of the values I see in Smalltalk.  Speaking for myself, my
antagonistic, when it was indeed antagonistic, attitude, was the result of
disagreement between those values and the proposed ideas and nothing else.
Costas, I sure hope you will continue to bring up your ideas even if I
cannot, and will not, promise to always agree with them--<in a tragic
voice>especially if you don't drop this ludicrous operator idea (just
kidding :).

>The passion most smalltalker's feel about their smalltalk is a great
>strength; and so too is their healthy resistance to change. As long as that
>resistance isn't blind or close minded.

Precisely.  I personally haven't noticed close-mindedness in the disagreeing
posts.  The authors were explaining the reason behind their opinions.  Not
all disagreement is because of close-mindedness.  Maybe I have missed some
of the other posts.

>But I have observed, that as a result, the "vocal" community sometimes
>pushes the implicit view that Smalltalk and "ParcPlace/Cincom" Smalltalk
are
>one and the same thing, and when that happens and/or they implicitly sneer
>at any or all the other Smalltalk dialects that exist or treat them as
>inferior; the community and the language suffers.

Speaking for myself, this is not the view I would be pushing implicitly or
explicitly, because this is nowhere close to how I feel.  Maybe I am wearing
rose-coloured glasses, but I thought this was the general feeling in this
community, regardless of the dialect.  I have seen occasional posts that
could be interpreted otherwise, but I thought they were more of slips of
tongue rather than truly deeply rooted attitudes.  (Besides, in those posts
that I remember, VisualWorks was at the receiving end of disdain for ugly
looks, dated tools or proprietary control.  Some of these are deserved, or
mostly deserved, or were deserved until recently, or--about proprietary
control--this is after all real world, folks).

As a side note, as I pointed out before, VisualWorks is not CincomSmalltalk.
Cincom Smalltalk is a marketing label for both Smalltalk dialects owned by
Cincom, VisualWorks and ObjectStudio, and let's not diminish the role of
ObjectStudio by equating VisualWorks and Cincom Smalltalk.

>There are many things inside of current Smalltalk implementations
(including
>Cincom's, IBM, Squeak, QKS, etc.) that are merely happenstance of their day
>and would benefit from being redesigned (that includes both old and new
>capabilities).

Absolutely.

>Unfortunately, some of the criticisms/arguments I've seen about new ideas
>are based primarily on familiarity with this happenstance stuff, or just on
>the notion that it is different from what the "proscribed" way/philosphy
>we've had "forever" is.

As I am never tired of saying, nothing is black and white.  Innovation is
good, but defending old ways in not necessarily bad either.  Not all new
ideas are good, and not all the ways things have been "forever" are bad.
The best we can do is indeed stick to the spirit of good discourse, not take
things personally, and not declare ideas good or bad simply based on what
side--old or new--they are on.

>Smalltalk is more than just its CS language; which means, all the more,
that
>continually exploring new ideas and techniques is important to its health
>and longevity. It is a system, it is about the frameworks, and it is about
>design, and it is about a way of thinking about software.

There is book I found a tremendously interesting reading, with the opening
chapters very much related to the whole topic of these language extension
threads.  It's been a while since I read it but it's been on my mind a lot
throughout this whole and other related discussions.  The connection is very
extensive and not always direct, so I won't go any further than recommending
the book itself.  It is _Patterns of Software_ by Richard Gabriel.  Yes it
is about "those" patterns, but it is about their philosophical rather than
the applied side.  There are no Visitors or Flyweights or code examples in
it (OK maybe there is one or two).  There is a lot about the architectural
patterns, motivation and philosophy behind them (they *are* much more than
just a cookbook of arhitectural templates) and the _experience of applying
them_.  That experience in particular, that I did not see mentioned in any
of the software pattern books, is extremely interesting and brings a lot of
thought related to language extension, innovation, frameworks and
abstractions.  (In short, I enjoyed it a lot, though of course YMMV).

>But, sometimes, the thoughts and arguments (like some of the ideas they are
>about :) are not well founded, deeply considered, or exhibit a backward
>thinking or close-minded attitude (a bit of the stick-in-the-mud view).

And sometimes the thoughts and arguments perceived in a message are not at
all what the author had, and the sneering, or disdain or close-mindedness
are there just because one sees them.  Like those Rorchach tests.  One of
the best things one can do is imagine that the other poster is a talented,
open-minded and frendly Smalltalker who tries to help you appreciate the
things that she sees and you don't.  It may not be true, but it helps :)

Cheers,

--Vassili

--
Vassili Bykov
[hidden email]


Reply | Threaded
Open this post in threaded view
|

Re: Building a string from incompatible objects.

Vassili Bykov-3
In reply to this post by Bijan Parsia-2
Bijan Parsia wrote in message ...
>(Note I forget which version of Squeak this was released for. I'm pretty
>sure they plan to role it into the main release, as well as a Smalltalk-76
>simulator.)

ST-72 is pretty much version-independent.  It's nothing but a few classes to
implement the interpreter core plus a small system source file to load.  It
works in 2.7 and 2.8, that's for sure.  Dan said he had a ST-76 image when I
asked him at SqueakEnd'00, and might do something to bring it to life.  I
wouldn't hold my breath though, ST-76 is much closer to the current
Smalltalk so should be more of a curio than something to experiment with.

--Vassili


Reply | Threaded
Open this post in threaded view
|

Re: Building a string from incompatible objects.

Costas Menico-2
In reply to this post by David Simmons
"David Simmons" <[hidden email]> wrote:


>I'll bite, what the heck is a fluffer? And what did Bijan mean when he used
>the phrase "anti-fluff"?
>

If you ever watched Seinfeld you may recognize it as Seinfeldian.
Somehow this thread is becoming that.

Regards,

Costas


Reply | Threaded
Open this post in threaded view
|

Re: Building a string from incompatible objects.

Dave Harris
In reply to this post by Dave Harris
Bijan Parsia <[hidden email]> wrote (abridged):
> > I strongly feel that any asymmetric operation should have
> > an asymmetric operator (if it has an operator at all).
> > [... side effects ...]
>
> Well, #<< the bitshift has no side effects. Nor does #->
> the Association constructor.

Both are asymmetric, though. The bit about side-effects is just a very
strong kind of asymmetry.


> I'm curious as to what you thought about my symatry claim about most
> Smalltalk binary messages (i.e., that while you don't necessarily
> get the same result, swapping the argument and receiver usually
*makes
> sense*)? I don't know how valuable this property *really* is, but it
> seems reasonable.

I don't know of any counter-examples. Until you pointed it out, I
hadn't noticed it, so it is not important to me and I don't see any
benefit in it. The other languages I know don't have that constraint.
(Notably #<< in C++ and #@ in Eiffel.) In maths, A * B may be valid
but B * A not, eg if A and B are matrixes.

I would be more sympathetic to an argument that operators should not
have side-effects :-)


> I'm still wondering if it's *really* more readable, and what other
> operators would work to fill in the rest of operations. I mean, is
> it really worth replacing #print: with #<< and that's it?

Well, I am not suggesting we replace #print:. I am suggesting we
create a generalised #nextPut: or #add:, which is far more common.
That cropped up as a result of the two recent discussions.

Operators are not reserved to mathematical and logical operations. We
already have #@, #-> and #,. I believe some people add #? meaning
#ifNil: and app-specific uses sometimes crop up. I feel that operators
are pretty deep down in the box of tricks, but they are there to be
used if we need them.

The way in which #nextPut: is used seems ideally suited to an
operator. This is partly a matter of precedence. Currently I find I
frequently have to use brackets or semi-colons to force the intended
parse manually. You seem to disparage this argument as being about
"saving keystrokes". To me having to override default precedence of
#nextPut: frequently is a code smell telling us that the default
precedence is wrong. Language/library design at this level does
matter.

I've not really put my mind to carving up the rest of the library, but
not much else strikes me as being wrong. This is hardly surprising
given that people have been fiddling with Smalltalk for decades.

As I mentioned earlier, Eiffel uses #@ as a synonym for #at: and I
think that would have been a good idea for Smalltalk. They are even
pronounced the same; #@ is quite intention-revealing. The dictionary
lookup concept is fundamental and widely-used, and I often need
brackets with #at: expressions. However this is pretty much a
non-starter because of the prior use with Point.

So, yes, one new operator is all that's on the table.


> Aren't we now just looking for an operator for operators sake?
> Given the untowardness of many of the possibilities, I'm not
> sanguine of the chances for getting a decent family of operators
going.

I'm not sure what you mean. Given the decision to use an operator,
some concrete operator has to be chosen. That's all I was discussing
(while trying to draw out some general principles). If there is no
good candidate we should probably junk the idea, but I think #<+ is
good enough. We're only talking about one operator, not #++ *and* #<<
*and* #<+.

  Dave Harris, Nottingham, UK | "Weave a circle round him thrice,
      [hidden email]      |   And close your eyes with holy dread,
                              |  For he on honey dew hath fed
 http://www.bhresearch.co.uk/ |   And drunk the milk of Paradise."


Reply | Threaded
Open this post in threaded view
|

Re: Building a string from incompatible objects.

Dave Harris
In reply to this post by Dave Harris
<[hidden email]> (David Simmons) wrote (abridged):
> > I think the current compromise is a good one, and I should like
> > to see it more fully exploited.
>
> I may be confused here :-). Which "compromise" are you referring to?

I mean the current Smalltalk syntax, with its 3 levels of precedence,
as a compromise between the more austere syntax of (eg) Scheme, the
flexibility of early Smalltalk, the inflexibility of C++, and
complexity of many other languages.

By "other languages" I mean things like Cecil and (I believe) Haskell,
which allow you to define new operators with user-defined:

(a) precedence
(b) infix/prefix
(c) binding (left to right or right to left)

which strikes me as being too much. In a way, less readable than
allowing a totally different syntax inside some `'-type escape
mechanism, because then at least we know we are "not in Kansas any
more" when we read it.


> I've never read that paper; I'll have to find it (unless
> you perchance mail it to me :).

I got it from:
 
http://dev.acm.org/pubs/articles/proceedings/plan/154766/p69-kay/p69-k
ay.pdf

I assume it is generally available; the copyright notice says that
non-commercial copying is OK if the ACM are acknowledged. I'll suggest
it is added to the http://users.ipa.net/~dwighth/ site in case it
disappears from ACM.

  Dave Harris, Nottingham, UK | "Weave a circle round him thrice,
      [hidden email]      |   And close your eyes with holy dread,
                              |  For he on honey dew hath fed
 http://www.bhresearch.co.uk/ |   And drunk the milk of Paradise."


Reply | Threaded
Open this post in threaded view
|

Re: Smalltalk Community Opinions (was Re: Building a string from incompatible objects)

Bijan Parsia-2
In reply to this post by David Simmons
On Tue, 9 Jan 2001, David Simmons wrote:

> <[hidden email]> wrote in message
> news:[hidden email]...
> > On Mon, 08 Jan 2001 14:58:51 GMT, "Boris Popov" <[hidden email]>
> > wrote:
[snip]

> > >You are absolutely right , Costas. Smalltalk *is* an environment which
> *can*
> > >fullfill *developer* needs. I mean there are lots of possible
> enchancements
> > >in the minds of many developers , it's just that not all of them can fit
> > >into Smalltalk without making it cryptic and overcomplicated. Extensive
> use
> > >of ascii symbols and convenience methods in messages and constructions
> *can*
> > >make Smalltalk overcomplicated.

Notice the use of "can".

> Let's say we all appreciate your efforts
> and
> > >I am pretty sure that someone will now extend the streams (an strings)
> > >protocols with ">>"s , "++"s etc. But let's try not to make it standart.

If we can come up with a good, clean, coherent protocal, I don't see a big
problem in aiming to standardizing it. Experience in the field would be
nice first, of course.

[snip]
> > >useful ( I am not talking about string concatenation protocol only ) we
> > >can't make them the part of a standart right away.

Notice again the clear temperance of the remarks.

[snip]
> > If I read into this is what you are saying is, that we should not
> > tamper with the language as it exists any further.

That is a wildly, wildly uncharitible reading. It is not even implicit in
the text.

> There is nothing
> > else we should add or, this language needs. And if we need something
> > and maybe useful to everyone don't bother just keep it to yourself.

Hardly, "Share it on the wiki" doesn't *remotely* suggest "keep it for
youself."

If there is *any* hostility to new ideas or the needs of others, I think
it is coming from the other direction.

> Costas,
>
> <opinion>
> I've monitored this thread pretty much from the beginning. I don't
> understand the semi-antagonistic attitude some posters have had to your
> ideas (well actually I do, I just wish I didn't). You openly asked for
> advice and ideas, you proposed and explored many ideas in the spirit of good
> discourse.

Well, let me explain my current fully antagonistic attitude, which *is
not* what I started out with. (Side note: I wish that when folks make
these sorts of accusations, they would be a tad more specific about the
actual words that exhibit the negative property.)

I object to so-called arguments that go, "All Smalltalk (or Squeak
or...) needs is feature/structure/construct foo and it will be wildly
popular and you'll all be rich and happy." or "The reason Smalltalk is
dying is that it lacks feature foo." or "Smalltalk should be a living,
evolving thing, and it isn't if you fail to capitulate to my *ad hoc*,
poorly thought out suggestion."

Aside from the fact that there is *no* evidence presented for these claims
(they function merely as debate killing appeals to authority), they
presume values that aren't universally shared. I, for one, have no great
desire for "world domination". I do like that Smalltalk and its community
to be a thriving, healthy system, but it can do that while embracing, for
example, a non-C/Visual Basicish syntax. I've pointed to Ruby as one very
cool language for people who really don't want to learn or don't like
Smalltalkish syntax and would prefer something more Perl/Algolish, but are
very interested in Smalltalky semantics.

Now, suppose for a moment Ruby takes over the world. Cincom releases
RubyWorks and IBM VisualAgeRuby. (I don't think this is going to happen,
btw, but let's pretend.) Has Smalltalk necessarily "lost"? Is this a
tragedy for Smalltalk?

I don't *think* so, though it *may* be disruptive for many people and
institutions. I could adapt to Ruby *right now*, but I prefer not to. If I
have to use a "mainstream" language instead of Smalltalk, Prolog, Erlang,
or a Lisp, I'd prefer Ruby even to Python. Will I be sad if longtime
interesting Smalltalker's go and "join the Ruby camp"? Sure, if that means
we don't talk about interesting stuff anymore. But I'm happy if there's
interesting backflow from that community.

The case is clearly different if you have a certain kind of business (the
most obvious being a Smalltalk vender :)). But it's not uniformly bleak,
either.

So, resisting the flow of new ideas, even those "not invented here", and
resisting not-so-great ideas backed up by sleazy arguments are not the
same thing.

I get especially torqued off when people say, "You have to have
*maaaarketing*!" Or "Yes, this is *evil marketing*, but it's a *necessary*
evil." It's espeically frustrating when this is intoned in support of what
I think is *bad* (i.e., *ineffective*) marketing.

Why do people think that marketing is any easier than language design?
Plenty of ad campaigns fail in all sorts of non-obvious ways. I wouldn't
put forth a *serious* *dogmatic marketing argument without at least *some*
research into the particular situtation *and* a "sell-by" date.

Add unsupported, dogmatic claims with unsupported, *false* claims ("most
languages have autocoercing string concatinations") ("most people in this
thread agree with me"), etc. etc. and I don't see that the *ideas* are at
issue.

None of this entails that people who put forth such lines are bad, stupid,
mean or whatever people. But I don't see that a hostile attitude to such
argument styles is necessarily a serious vice. It's not necessarily a
virtue either, but expressing irritation does have *some* communicative
value.


> In that same spirit some people disagreed with some ideas (some other people
> chose to make comments that were not exactly in that spirit, and I for one
> wish they wouldn't expose their attitudes so plainly).

What do you make of Costas' reading of Boris's comment? I found it unfair,
hostile, and somewhat denigrating of Boris (though not *directly*).
 
> It's a great thing to have open hearty debate and discussion and voice one's
> opinion on the topic, its a whole other thing to criticize/denigrate the
> individuals participating in such discourse.

Yes, but let's be fair and open about it. Costas was fairly quick to
attribute attitudes and (lame) ideas to his opponents. I don't see that
the reverse was generally true. I'm *happy* to supply further specific
examples.

[snip]
> For a long time people have been asking what's the deal with Smalltalk, what
> can we do to make it more successful, why hasn't it become successful.

I think Smalltalk has been successful in a number of different ways. It's
continued influence on the industry is amazing. It seems to be supporting
a strong and healthy market.

> As to community and individual attitude about the Smalltalk language, it is,
> in my experience, a very sensitive thing among born-again or longtime users
> of Xerox/ParcPlace and/or its direct smalltalk derivatives.

Maybe. But having a different, grounded view of the success and criteria
of success doesn't make you an hyper-sensitive born-again or longtime
user.

(I'm neither, btw.)

And, as someone with such a view, it's not necessarily *surprising* when
people present claims that do not even take the possibility of your view
in to account *even when* presented with them. Where *is* the
objectionable arrogance in such exchanges?

Note that many people who disagreed with Costas' selector nevertheless
provided aid and advice on its implementation as well as pragmatic
arguments about its use. OTOH, he solicited, IIRC, "gut reactions" and
"judgments of taste" as to the use of his #++ proposal. Several of the "I
don't want Smalltalk to become ASCII soup" were really (or charitably read
as) "I don't find that to my taste". Costas himself, as I pointed out,
found the && (auto-coercing concatination with padding) operator not to
*his* taste (aka "fluff"), but provided no marketing, readability,
typability, etc. arguments *against* it.

So, if you ask "Do you like it?" and people say, "No, it's ugly?" what's
to object to?

[Hmm: I'm not sure if the above section is actually apropos to this
thread. I may be confusing it with another, but I'm too lazy to go back
and check at the moment :)]

 [snip]
> strength; and so too is their healthy resistance to change. As long as that
> resistance isn't blind or close minded.

Of course, but is this a problem *in this thread*?

[snip]
> But I have observed, that as a result, the "vocal" community sometimes
> pushes the implicit view that Smalltalk and "ParcPlace/Cincom" Smalltalk are
> one and the same thing, and when that happens and/or they implicitly sneer
> at any or all the other Smalltalk dialects that exist or treat them as
> inferior; the community and the language suffers.

I haven't seen that. Particularly in this thread. Pointers?

> I fully understand and respect when the Cincom Smalltalk employees want to
> do everything possible to push Cincom Smalltalk as the leading Smalltalk in
> every aspect. It's natural that they or any other Smalltalk dialect's
> employees (or developer/designers for open-source versions) want to take
> pride in their product and or see it have a successful, perhaps
> leading/dominant, position.

I certainly don't feel that way. I tend to point to Squeak things because
that's what I'm familar with. But, for example, I believe I brought
SmallScript into the discussion :)

> OTOH if the Smalltalk community doesn't maintain an open mind about ALL the
> Smalltalk dialect's or treats any of the supported dialects with an attitude
> of disdain (as I've seen done with Dolphin Smalltalk vis-a-vis Cincom)

Really? I mean at any serious level? Everyone seems to like Dolphin. But
it clearly has different design goals (and history) than VisualWorks (for
example). I do find a touch annoying when people say, "Well *Dolphin* uses
native widgets; VisualWorks should to!!" (Not that this happens all *that*
often.)

> then
> the language and its advocates will continue to suffer as Smalltalk has for
> the most recent five years of its long history.

The last year or two seem to be a healthy period. You don't find it so?

> The language itself is not sacrosanct, nor is any given dialect's
> implementation or any given dialect's development team an unspoken
> authoritative body for what is or is not "proper" for Smalltalk.

I didn't see anyone claim that. I certainly mentioned "Smalltalky" values
but the seem compatible with most of most implementations.

[snip]
> That having been said, the community itself is still not particularly
> unified (squeak still stays mostly in its own group).

Well, there's me, Lex, and loads of other folks :) Some people don't like
newsgroups.

> Comp.lang.smalltalk is
> not "comp.lang.smalltalk.cincom", and unfortunately we don't see the squeak
> community exhibiting any motivation or desire to move to a
> "comp.lang.smalltalk.squeak".

If we did, it would serve a different purpose, I think.

> I've seen that the Dolphin community felt the need for a separate group

Well, they started out as a private newsgroup on a private newsserver. I
don't know the history, but it could easily be because they wanted to be
able to focus on Dolphin (in a tech supporty kind of way) and it's not
trivial to get a new news group accepted.

IBM has a private VAST newsgroup, too.

> and
> I believe they are quite sensitive to some of the dialect bigotry that
> sometimes rears its head. Smalltalk/MT (which has some really great and
> unique features) often gets short-shrift here in this "dialect neutral"
> comp.lang.smalltalk group. As does Bistro, or Smalltalk/X, etc.

"Short-shrift" as in "not discussed" or "short-shrift" as in "denigrated
and dismissed". If the former, I think it's generall the job of users of
the dialects to rectify. If the latter, that's different, but I have'nt
seen all that much of it.

Squeak gets mocked of course, but we enjoy it :)

> Often enough, the "vocal" community members have limited awareness, or
> experience with these one or another dialects so they promote their primary
> dialect as if it were the only Smalltalk (and I'm sure I'm as guilty as
> anyone in this area). That response is natural, but it is unfortunate for
> Smalltalk as a whole, and in particular for the community of lurkers on
> comp.lang.smalltalk.

Ah. So it is mere unfamiliarity that's the primary problem?

> As the community and its "vocal" members go forward I believe it is
> important that they make every effort to allow and even encourage various
> ideas, disenting opinions.

This is why I hate unspecific euphamisms such as "vocal members": I can't
tell if it's meant to apply to me. How on earth am I do regulate my
behavior in response to criticism if it's totally unclear whether the
criticism applies? *If* I were to do the things you complain of, I'd
certainly think I should change what I do. But I'm both vocal (ahem...to
put it mildly) and unable to find myself in your descriptions. Nor do I
find the objects of your complaints in the other vocal members of this
thread (which, presumably, is what prompted this post), including yourself
;)

> And that they work to see beyond the
> patterns/habits they've acquired/developed in their own particular Smalltalk
> of choice.

And vice versa ("But Python does it *this* way and Python's more
popular.")

> There are many things inside of current Smalltalk implementations (including
> Cincom's, IBM, Squeak, QKS, etc.) that are merely happenstance of their day
> and would benefit from being redesigned (that includes both old and new
> capabilities).

Definitely. Does *anyone* dispute that?

> Unfortunately, some of the criticisms/arguments I've seen about new ideas
> are based primarily on familiarity with this happenstance stuff, or just on
> the notion that it is different from what the "proscribed" way/philosphy
> we've had "forever" is.

Well, I've certainly argued that gratuitious change to something
unfamiliar and arguably undesirable is not a good idea, particularly for
something like printing/string building. I've argued that Costas using #++
himself is not really a great idea if he intends to share code. But if he
derives *such* huge benefits from it that it eliminates the downsides as
far as he's concerned then my blessings, for what they're worth. That I
believe it *completely* unlikely that that's the situation is a different
story ;)
[snip]
> There are many new ideas that have been explored or provided in various
> dialects which might be of value to the community. Overall, in all my years
> in this community, it has been very open and good about this kind of thing
> and their resistance to change has primarily exhibited a healthy
> conservative approach.

Agreed. Note that I'm hoping to set up a structure for introducing
langauge extensions and libraries in a semi-formal way (short of
standards, more than mere posts) inspired by the Scheme Request For
Implementation (SRFI) model (see http://srfi.schemers.org/).

> But, sometimes, the thoughts and arguments (like some of the ideas they are
> about :) are not well founded, deeply considered, or exhibit a backward
> thinking or close-minded attitude (a bit of the stick-in-the-mud view).


Oh the humanity! ;)

> This thread has, unfortunately, exposed some of these kind of factors in
> individual and perhaps "vocal" community sentiment that have likely played a
> negative role in Smalltalk's successful growth vis-a-vis other languages.

Yes, this is not what I've seen. Pointers welcome.

> So, my personal message to you Costas is not to take this too personally.

Why he should take it personally *at all* is a mystery to me. If I make a
stupid claim or dumb argument I try not to blame the people who point out
my errors.

> I,
> for one, am encouraging you to keep exploring

Of course.

> and I thank you for bringing
> the line of discussion

Well, technically, he only raised the issue of #++. That sparked a number
of different replies, some of which turn the discussion toward more
general design issues.

> and your rich exploration of it to this forum.

Uhm. Now I have to be mean. I don't see that *Costas* had a rich
exploration, though there were many rich explorations in this thread.

Note, I don't think that this is a *personal* or *moral* failing...or an
assessemnt of Costas' general capabilities. But I strongly disagree with
the argumentative techniques he used and have, in *any forum*,
consistently strongly opposed them, and thus oppose the praise and
encouragement of them.

This should be *distinct* from discouraging Costas (or *anyone*) from
participating in the forum. Just as "I don't like #++ and don't think
it's a good idea" should be distinct from "Only a moron like you would
proposed something like #++...go back to your filthly, lame Visual Basic
world and leave us alone." which should be distinct from, "I don't care
for #++ and think you'll raise more problems than you'll solve, but here's
some ways to do it."

Cheers,
Bijan "The Sanctimonious Smalltalker" Parsia.


Reply | Threaded
Open this post in threaded view
|

Re: Building a string from incompatible objects.

smalltalker
In reply to this post by Bijan Parsia-2
On Sun, 7 Jan 2001 22:52:11 -0500, Bijan Parsia
<[hidden email]> wrote:

>On Sun, 7 Jan 2001, Costas Menico wrote:
>
>[snip]
>> >#+ is the standard way of concatenating Strings in Cincom's
>> >ObjectStudio. It automatically converts the parameter object to a
>> >String by sending the message #asString before actually concatenating.
>> >So you can write:
>> >'Please pay the following: $ ' + 10 + ' today ' + Date today.
>>
>> How come no one else brought this up?
>
>Because none of the other respondants thus far use ObjectStudio much if at
>all? Because it's nothing to get excited about?
Well, at least ObjectStudio got me hooked on Smalltalk. Even though
some might say that this is no wonder since I came from C++. ;-)

>> Is ObjectStudio not being used
>> anymore?
According to the traffic on comp.lang.smalltalk.objectstudio in recent
weeks one might think so. But I'm sure there must be others out
there...

>Actually, I would bet that use is growing somewhat now that Cincom is
>bundling it with VisualWorks and shifting gears to becoming
>a more general Smalltalk vendor. ObjectStudio was much more a vertical
>market app.
I'm not sure if its use is actually growing since the same unfriendly
licence policy of VisualWorks also applies to ObjectStudio (VW and OS
are bundled as Cincom Smalltalk). At least my company is currently
considering other Smalltalk alternatives due to that.

>From what I've heard, ObjectStudio is quite interesting but often -- for
>historical reasons -- rather non-standard. (I dearly hope that
>#+ isn't *instead of* #, but I'm not sure.) There is slow movement toward
>making it ANSI conformant, I believe.
Yes it's true, there are non-standard issues in ObjectStudio due to
its history. But given the fact that VW and VAST have been the market
leaders I'm not surprised if they are closer to the ANSI standard.

Regarding #+ instead of #,:
#, is available but most String concatenations in the base classes are
done with #+ and #++ and so does our code. But I have noticed that
more recent developments of Cincom now use #,.

And there is at least one non-standard feature in ObjectStudio which I
have not seen in any other Smalltalk but which I would prefer if it
was the standard. In ObjectStudio you normally define Array literals
using {} instead of #(). E.g.

ObjectStudio: {1 2 #SomeSymbol 'abc'}
Standard: #(1 2 SomeSymbol 'abc')

The obvious advantage is that within {} you can write Symbol literals
as you would in any other context, i.e. prefixed with #. What I like
in Smalltalk is that some simple yet powerful concepts are the
foundation of the language and are consistently applied throughout the
whole system (including if-then-else logic which follows the usual
receiver - message logic). But I feel that this consistency is broken
in the case of standard Array literals containing Symbols. Hardly the
end of the world but still...

Regards,
Paul Wallimann


Reply | Threaded
Open this post in threaded view
|

Re: Building a string from incompatible objects.

Vassili Bykov-3
[hidden email] wrote in message
<[hidden email]>...

>And there is at least one non-standard feature in ObjectStudio which I
>have not seen in any other Smalltalk but which I would prefer if it
>was the standard. In ObjectStudio you normally define Array literals
>using {} instead of #(). E.g.
>
>ObjectStudio: {1 2 #SomeSymbol 'abc'}
>Standard: #(1 2 SomeSymbol 'abc')
>
>The obvious advantage is that within {} you can write Symbol literals
>as you would in any other context, i.e. prefixed with #. What I like
>in Smalltalk is that some simple yet powerful concepts are the
>foundation of the language and are consistently applied throughout the
>whole system (including if-then-else logic which follows the usual
>receiver - message logic). But I feel that this consistency is broken
>in the case of standard Array literals containing Symbols. Hardly the
>end of the world but still...

You can prefix symbol literals with a # within #() in any Smalltalk, it's
just that you don't have to (unless they are symbol literals of the form
#'symbol with spaces').

{} is found in several Smalltalk implementations as an array constructor,
though with a meaning quite different from that of #(). It has a form of a
no-argument block, i.e. expects a sequence of expressions inside the braces.
They are evaluated and their results are used to populate the array. In
other words, {3 factorial. 3 + 4} is about the same as "(Array with: 3
factorial with: 3 + 4)".

--Vassili


Reply | Threaded
Open this post in threaded view
|

Re: Building a string from incompatible objects.

Eric Clayberg
In reply to this post by smalltalker
<[hidden email]> wrote in message
news:[hidden email]...
>
> The obvious advantage is that within {} you can write Symbol literals
> as you would in any other context, i.e. prefixed with #.

Writing Symbol literals prefixed with # within arrays is hardly unique to
ObjectStudio. Most (all?) modern Smalltalk implementations allow this.

-Eric


Reply | Threaded
Open this post in threaded view
|

Smalltalk Community Opinions

Bruce Samuelson
In reply to this post by David Simmons
David Simmons wrote:

<snip>

> -------
> SIDEBAR:
> -------
> I should also add that, historically, the vendors seem to have had minimal
> to no collaboration regarding their efforts to extend or alter Smalltalk the
> language or Smalltalk the common vernacular. There are changes that have
> been made to Smalltalk, there are inconsistencies among dialects, and there
> are things that are really worth consideration for availability among all
> dialects.
>
> I've been, perhaps to the annoyance of some, fairly strong/agressive in my
> efforts to evangelize the idea of exploring change and for ideas of
> standardization/extension (and especially vendor collaborative extension) of
> Smalltalk's capabilities.
>
> I wouldn't be surprised to find some people viewing some of my
> approach/dialogue as being downright arrogant, but it is sometimes hard to
> know how best to encourage exploration in this area (so breaking eggs to
> make the omelete is necessary). I've also learned that taking a bit of a
> stronger view than one really feels is sometimes necessary to "stir-the-pot"
> sufficiently to create a catalyst for discussion.

<snip>

Your efforts at improving Smalltalk "(and especially vendor collaborative
extension) of Smalltalk's capabilities" is anything but arrogant. I'd
say it is enlightened. Smalltalk could be advanced farther and faster
if the vendors would divide up the pie of extensions and each develop
a piece, in as dialect portable a manner as possible. Since you have
more of a vision for collaborating than is apparent among the other
vendors, perhaps you could arrange an exploratory session with them to
discuss the possibilites. A byproduct might be achieving more portability
between dialects.

Collaboration beyond ANSI Smalltalk would strengthen the group of small
Smalltalk vendors. Even big companies such as the major auto companies
collaborate, such as in developing B2B exchanges and industry standards.
Surely it must be easier for small companies to get together.


Reply | Threaded
Open this post in threaded view
|

Re: Smalltalk Community Opinions

Peter Hatch-2
Bruce Samuelson wrote:

>
> David Simmons wrote:
>
> <snip>
>
> > -------
> > SIDEBAR:
> > -------
> > I should also add that, historically, the vendors seem to have had minimal
> > to no collaboration regarding their efforts to extend or alter Smalltalk the
> > language or Smalltalk the common vernacular. There are changes that have
> > been made to Smalltalk, there are inconsistencies among dialects, and there
> > are things that are really worth consideration for availability among all
> > dialects.
> >
> > I've been, perhaps to the annoyance of some, fairly strong/agressive in my
> > efforts to evangelize the idea of exploring change and for ideas of
> > standardization/extension (and especially vendor collaborative extension) of
> > Smalltalk's capabilities.
> >
> > I wouldn't be surprised to find some people viewing some of my
> > approach/dialogue as being downright arrogant, but it is sometimes hard to
> > know how best to encourage exploration in this area (so breaking eggs to
> > make the omelete is necessary). I've also learned that taking a bit of a
> > stronger view than one really feels is sometimes necessary to "stir-the-pot"
> > sufficiently to create a catalyst for discussion.
>
> <snip>
>
> Your efforts at improving Smalltalk "(and especially vendor collaborative
> extension) of Smalltalk's capabilities" is anything but arrogant. I'd
> say it is enlightened. Smalltalk could be advanced farther and faster
> if the vendors would divide up the pie of extensions and each develop
> a piece, in as dialect portable a manner as possible. Since you have
> more of a vision for collaborating than is apparent among the other
> vendors, perhaps you could arrange an exploratory session with them to
> discuss the possibilites. A byproduct might be achieving more portability
> between dialects.
>
> Collaboration beyond ANSI Smalltalk would strengthen the group of small
> Smalltalk vendors. Even big companies such as the major auto companies
> collaborate, such as in developing B2B exchanges and industry standards.
> Surely it must be easier for small companies to get together.

100% on the mark.

David should if anything be even _more_ "arrogant" and "aggressive."
The fact is, he is in the very nice position of being able to not only
consider the technological outlook but to also *act on his opinions*
without having to battle through multiple layers of management hierarchy
(which is very much like having to wade through a tar pit...).

Some of us have to walk a mile in order to advance 10 feet.....

pete


Reply | Threaded
Open this post in threaded view
|

Re: Smalltalk Community Opinions (was Re: Building a string from incompatible objects)

Costas Menico-2
In reply to this post by Bijan Parsia-2
No to belabor the point but I think you have taken things a little too
personally.  I never insulted anyone intentionally. Maybe we have
cultural differences where something I said is insulting to you. I am
sorry if that was the case.

Regards,

Costas


Reply | Threaded
Open this post in threaded view
|

Re: Smalltalk Community Opinions (was Re: Building a string from incompatible objects)

Bijan Parsia-2
On Wed, 10 Jan 2001, Costas Menico wrote:

> No to belabor the point but I think you have taken things a little too
> personally.

To belabor the point, I really am *not* taking it personally. I don't
think you've attacked me or anyone else personally. I don't even think
you've *insulted* anyone. I do think you've misread some of what people
wrote in a rather frustrating way that tends to get my hackles up, but
that's hardly a mortal sin :)

>  I never insulted anyone intentionally. Maybe we have
> cultural differences where something I said is insulting to you. I am
> sorry if that was the case.

No need to be sorry! If cultural differences explain why you read what
people said the way you did then that would help explain why *you* may
have felt testy.

The reason I point to exactly where I think a misreading occured isn't to
rub anyone's *face* in it, but to provide useful feedback.

And please don't take my contrary-to-David-Simmons' assessment of your
material contribution to the thread as expressing a desire for you to shut
up and go away. It wasn't.

Cheers,
Bijan Parsia.


Reply | Threaded
Open this post in threaded view
|

Re: Building a string from incompatible objects.

smalltalker
In reply to this post by Vassili Bykov-3
On Tue, 9 Jan 2001 12:20:04 -0800, "Vassili Bykov"
<[hidden email]> wrote:

>[hidden email] wrote in message
><[hidden email]>...
>>And there is at least one non-standard feature in ObjectStudio which I
>>have not seen in any other Smalltalk but which I would prefer if it
>>was the standard. In ObjectStudio you normally define Array literals
>>using {} instead of #(). E.g.
>>
>>ObjectStudio: {1 2 #SomeSymbol 'abc'}
>>Standard: #(1 2 SomeSymbol 'abc')
>>
>>The obvious advantage is that within {} you can write Symbol literals
>>as you would in any other context, i.e. prefixed with #. What I like
>>in Smalltalk is that some simple yet powerful concepts are the
>>foundation of the language and are consistently applied throughout the
>>whole system (including if-then-else logic which follows the usual
>>receiver - message logic). But I feel that this consistency is broken
>>in the case of standard Array literals containing Symbols. Hardly the
>>end of the world but still...
>
>You can prefix symbol literals with a # within #() in any Smalltalk, it's
>just that you don't have to (unless they are symbol literals of the form
>#'symbol with spaces').

Yes, you're right. I have just checked with VW and Dolphin and it
works as expected. But again, ObjectStudio seems to deviate from the
standard as it does not allow # inside #().

But now you make me curious:
1) Is there an official way of defining Symbols in Array literals or
are both ways approved by the ANSI standard?

2) Do you know why #() was chosen for Array literals in the first
place? I mean # is normally used for denoting Symbols. Is there (maybe
historically) a connection between Symbols and Arrays apart from the
fact that both are Collections which would explain the use of # in
both cases? At least VW, Dolphin and OStudio do not evaluate to true
when I execute #(1 2 3) == #(1 2 3) in a Workspace whereas #Foo ==
#Foo does of course.

Paul


Reply | Threaded
Open this post in threaded view
|

Re: Building a string from incompatible objects.

David Simmons
<[hidden email]> wrote in message
news:[hidden email]...

> On Tue, 9 Jan 2001 12:20:04 -0800, "Vassili Bykov"
> <[hidden email]> wrote:
>
> >[hidden email] wrote in message
> ><[hidden email]>...
> >>And there is at least one non-standard feature in ObjectStudio which I
> >>have not seen in any other Smalltalk but which I would prefer if it
> >>was the standard. In ObjectStudio you normally define Array literals
> >>using {} instead of #(). E.g.
> >>
> >>ObjectStudio: {1 2 #SomeSymbol 'abc'}
> >>Standard: #(1 2 SomeSymbol 'abc')
> >>
> >>The obvious advantage is that within {} you can write Symbol literals
> >>as you would in any other context, i.e. prefixed with #. What I like
> >>in Smalltalk is that some simple yet powerful concepts are the
> >>foundation of the language and are consistently applied throughout the
> >>whole system (including if-then-else logic which follows the usual
> >>receiver - message logic). But I feel that this consistency is broken
> >>in the case of standard Array literals containing Symbols. Hardly the
> >>end of the world but still...
> >
> >You can prefix symbol literals with a # within #() in any Smalltalk, it's
> >just that you don't have to (unless they are symbol literals of the form
> >#'symbol with spaces').
>
> Yes, you're right. I have just checked with VW and Dolphin and it
> works as expected. But again, ObjectStudio seems to deviate from the
> standard as it does not allow # inside #().

QKS Smalltalk supports # inside nested literals.
    #(#(#(#())))
    "or"
    #(#abc #def nil #123 #'aSymbol' #'aSymbol%#''$@49' 'string' #())

When printed, array const literals are printed with all the # symbols
explicitly presented. There have been variants in QKS Smalltalk formatters
that only printed them where needed to disambiguate forms, but that approach
is no longer used. The same printer system also handles recursive references
to elements within any form of Array/List.

    |x| := {}.
    x add: x.    "{{* Recursive List -25855 *}}"

>
> But now you make me curious:
> 1) Is there an official way of defining Symbols in Array literals or
> are both ways approved by the ANSI standard?
>
> 2) Do you know why #() was chosen for Array literals in the first
> place? I mean # is normally used for denoting Symbols. Is there (maybe
> historically) a connection between Symbols and Arrays apart from the
> fact that both are Collections which would explain the use of # in
> both cases? At least VW, Dolphin and OStudio do not evaluate to true
> when I execute #(1 2 3) == #(1 2 3) in a Workspace whereas #Foo ==
> #Foo does of course.

Really. Hmmm.

My understanding is (was) that # denotes a const canonical literal. Shows
what I know? QKS Smalltalk was not derived from the Xerox ST-80 seeds so I
didn't know better ;)

    QKS Smalltalk always guaranteed (and the frameworks are
    designed assuming that), by definition, "#expr == #expr"
    should ALWAYS return true.

This rule/idea is the same for static literal consts of the form ##.
    ##someConstPoolOrNamespaceVariableOrOtherValue

QKS Smalltalk always generates #(...) as canonical literals.

    #aSymbol
    #<=> "or any other combination of unicode binary selector chars"
    #<><><><><<>> "a really long binary selector symbol"
    #'...arbitrary content const canonical literal symbol...'
    #(...anArrayConst canonical literal...)
    #{...aGUID/UUID const canonical literal...)

        o  The #{...} was extended in SmallScript to support the
           Cincom/VW path expression behavior (as per CampSmalltalk#1
           discussion w/Eliot Miranda). One of my technical issues
           with the path-literal form was the #== / const issues.
           The AOS Platform/SmallScript/QKS Smalltalk namespace
           system's lazy/demand loading module loading capabilities
           don't require (or use) this kind of path-literal.

    '...aString or StyledString const canonical literal...'

Note: The "const" behavior is runtime enforced for all the instances. I.e.,
attempting to write to the various indexed or structured storage (incl.
character) data areas generates an exception. The named slots are currently
writeable, but that may or may not be disabled. Similarly, attempting to
reshape (change behavior, etc) any object with the "const" property turned
on will generate an exception.

All these forms are managed by the AOS Platform/VM's literal table and, like
symbols, string-const-literals, guid-const-literals, etc. the gc (internal
finalizer system) informs the literals manager when they're no longer
referenced (unless their properties indicate they're a persistent gc-root in
which case they're never gc'ed).

The literals manager then removes them from the canonical literals
collection. If that collection has shrunk to have more than xx% it is then
resized to take less space and the elements are rehashed.

----
A more liberal interpretation than I used when I originally designed QKS
Smalltalk ~91, would be that the $# within source indicates that the value
is "statically" derived at compile time but is not necessarily constant or
canonical/unique. Based on what you've described, I would surmise that this
is the approach taken by the smalltalk dialects you've cited.

-- Dave Simmons [www.qks.com / www.smallscript.com]
  "Effectively solving a problem begins with how you express it."

>
> Paul


1234