[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: