[Prev][Next][Index][Thread]

Re: Why I don't use Dylan



"Bruce Hoult" <bruce@hoult.org> wrote in message
bruce-A57ABC.12083513072000@news.akl.ihug.co.nz">news:bruce-A57ABC.12083513072000@news.akl.ihug.co.nz...
> > Well I don't know about that. I'd say that a change in language is
> > smaller in effort to learn than a change in API.
>
> Except when they go together e.g. Java, Cocoa, SmallTalk.

   No way Bruce, you should come to one of my talks some time.

   I had _zero_ "real" programming experience prior to learning Cocoa, I
knew HyperCard and stuff like that.  I had been trying to break into "real"
programming for years, trying product after product in hopes of lowering the
bar to the point where I could get involved without a change of lifestyle.
I tried it all, yes, even Apple Dylan, but everything fell down at one point
or another and I was no closer than before.

  Then I tried Cocoa.  Five days later I was working on commercial code, and
shipped our product six months later.

  Cocoa, due to being self-contained, is _rediculously_ easy to learn.  I
disagree completely with your point above.

> Probably true.  Which well-designed language and libs that has acheived
> immense populatiry in the last decade do you have in mind?

  None.  I'm not sure what your point is here though.  As I said, this is a
popularity contest, the best tech rarely wins.

> 5?  I seem to recall starting to use CFront with MacApp in 1990 or so.

  Sure, and I was playing with MacApp 3 way back too.  However the market as
a whole was largely pure C until more recently than that.

> Anyway, the gist is that I don't know what the Obj-C runtime is like.

  Several things...

1) method calls based pointers to a class, then a hash lookup - the hash can
be changed at runtime
1a) method signatures are hashed off the method name and parameter _names_
(note!) and thus method overloading is not supported in the current runtime
(big problem IMHO).
2) class lookup via a similar hash, but only once and then cached in the
instance
3) "two try" dispatch, if the method isn't supported, try the method
"perform" instead, which everyone supports - zero effort forwarding and
other nifty features come from this
4) dynamic loading/unloading of basically everything.

  Missing...

1) GC
2) namespace support
3) ivars are not dynamic
4) no support for MI (likely a no-brainer with (2) though)

Maury





References: