[REBOL] Re: What language am I looking for?
From: kenneth:nwinet at: 15-May-2001 20:44
Joel Neely said:
> You're certainly entitled to your quest, "to follow that star..."
Dulcinea shall not escape me! Although pictures of my fiancee standing next
to me don't seem to be enough for the INS, but that's another matter...
>The last two major efforts (of which I'm aware)
> aimed at building one-size-fits all languages produced PL/1 and
> ADA, and I don't know of very many people that even *use* either
> of those, much less regard them as "final solutions".
Which only proves that I am not alone in my quest (see, you can't discourage
a true knight errant ;-)
> > The highest item on MY list is, can I do that?
> > (With a minimum of grief.)
> My experience is that it depends VERY much on what the "that" is.
> I gave up trying to use REBOL for 2- and 3-dimensional array
> computation. The notation was too awkward and the performance
> just wasn't there.
Forgive me Joel, but that's the easy argument and you'll see it repeated in
various ways by many others. "We must use multiple tools because this tool
doesn't handle such and such a situation well." I don't know that I could
persuade anyone otherwise (or even myself... Heresy!) However, I believe I
have sound reasons for believing the quest not to be so foolish.
>REBOL is a work in progress...
...Ah, the possibilities...
>Speed.<snip>you won't be doing it in REBOL.
...today, tomorrow, maybe always...
>Binary compatibility with other languages. (Of course, you
>may not care, if you are looking for the One True Language.)
...yes and no...
>Being able to <snip> link them together
...when legacy code is an issue, but I'm willing to sacrifice this even
though I don't see any reason why I should have to...
Mainly the new language would meet my needs for new projects. Legacy code
eventually goes away... We might have to kick it a few times. ;-)
>REBOL can create functions, objects, etc. on-the-fly
...can't imagine any language being much good if you couldn't...
>how much the language designer wants to protect me from myself
>vs. give me the power to say what I want
Understood. My slant on this is the o/s should allocate resources and leave
me alone to do whatever in my sandbox.
> Does embedded SQL count as another language? ;-)
SQL of any flavor, yes indeed. Which very nicely allows me to express this
point. It would be a misconception to think that I am saying that having
access to the "One True Language" (that's a terrible phrase btw) means
throwing away or never using anything else. For example, years of work have
gone into making dbms engines more powerful. I want to take advantage of
that, not throw it away. Likewise, if some legacy code does something well,
I'd like to be able to call it. However, if I can do everything that SQL is
capable of doing using a simple and consistant syntax (I'm not suggesting
there is such a thing) then that's what I want to do.
> > What other things do I need that are not included? How do I
> > create a new widget that isn't already provided for me?
> "Use the source, Luke!" Look at how VID implements the basic
> set of widgets it offers, then look at the WinSkin demo, then
> try your hand at creating another widget.
This was a rhetorical Joel! But I do appreciate the thought.
> > Is there some intrisic reason a language must be so limited?
> Intrinsic to a specific language? If you design/implement it that
> way. Somehow intrinsic to the fundamental notion of "language"?
> Not really, but I truly believe there are tradeoffs in how our
> heads work -- see the sig below.
Your on, I pick simple and powerful :p ... uh ... one .... true
lang... SimPow! another language name is born (please tell me no one else
has already chosen it? Get the lawyers. Trademark attorneys... )
> > I think of languages of having only two intrinsic levels, machine
> > and virtual machine. Everything else seems to me to be an artificial
> > limitation.
> To me, even THAT ("machine" vs. "virtual machine") is artificial and
You are absolutely correct. However, let me continue my point. As you
pointed out, you can go below the machine level to the microcode level and
also build many layers of code/protocols above that. So why did I pick this
particular point? Because it is the point of machine dependance vs.
independance. If SimPow! is anything, it is machine independant. I would
even suggest that it contain a virtual machine language chosen to map
closely to actual machine language (but still machine independant.) Did
anybody ever use all 13 addressing modes of the 6502? Don't answer ;-)
> > So what are the barriers that prevent it from being capable of
> > major applications?
> > Can they be overcome by intelligent (and
> > careful) expansion of it's core features?
> Only to a certain extent. After some point of diminishing returns
> I've always found the effort of learning more "features" of an
> all-things-to-all-people language more trouble than that required
> to learn a new small language tightly focused on the task at hand.
Probably because the were features (we all know the correlation between
features and bugs ;-)
Does this mean the 'new small language tightly focused' has to be something
outside SimPow! (you're gona' hate me for coining this new world - but
somehow I had to get away from the 'One True Language' theme which doesn't
fit at all what I'm suggesting.)
> > I want to do everything in one language (a fool no doubt) and
> > have my challenges be the barriers I have to overcome outside
> > my language, not from within.
Well, now we no where that silly idea came from!!!
> Not a fool, but certainly an optimist! Look outside of programming
> for the experience of other disciplines.
> The only absolutely extensible "language" I know of is Mathematics,
> where you can make up notation suitable for the task at hand. But
> the various sub-branches of Mathematics have evolved their own
> "local dialects" for the various domains of activity, and haven't
> solved the problem of universally-consistent notation.
You are quite right. However, this is where my intuitive kicks in (and
could very well be wrong, I know I'm in the minority here. Good thing I'm
an INTJ.) My intuition tell me that computer programming is a finite area
of mathmatics. Really finite, we have only two digits in the whole thing!
I not suggesting we all start writing for a turing machine. What I am
saying is that I've used some general purpose languages that are far from
perfect, as have others, on a very broad range of subjects. Is it such a
stretch to imagine a language that is so powerful, simple and generally
useful that a very large percentage of a professional programmers tasks can
be handled by it. You can always find a case where a language can't fit
(any language, even machine language) because if the machine doesn't have
the resources, the task can't be done.
I'm not arguing perfection. I suggesting... that the quest is worthy.
> Physicists, chemists, and biologists are all presumably dealing
> with the same external, objective, real universe, but the issues
> with which each discipline deals exist on such different scales
> and levels that their "languages" for describing what they are
> doing are radically different.
...and yet, they often find themselves linked in surprising ways.
> If the only thing we ever did with computers was number-crunching,
> it would be perfectly OK for every other language to look like
> FORTRAN. In the 60's and 70's there was lots of attention given
> to "application-specific languages", and our discipline suffered
> from several cases of premature spec-freezing. By the time a
> newly-specified language could be implemented, our understanding
> of the problem domain had matured/changed enough that the ideas
> frozen in paper specs were no longer even vaguely optimal.
...and many more state changes are ahead of us I'm sure.
> flexibility/extensibility has a cost in notation and/or raw
I keep hearing you say it's a zero sum game (back to that sig again ;-)
> the relevant concepts get distilled into a more tightly-focused
> language with less (conceptual and implementational) overhead.
Then again, maybe not... So your saying there may still be room for
improvement (bashed that windmill a good one that time!)
> When I'm in scheme-and-dream mode, I *want* an extensible,
> expressive language. When I'm in get-the-production-server-up-
> -and-query-that-billion-row-database mode, I *need* a language
> implementation that is highly performance oriented
There are many anecdotal stories and much of life experience suggests it's
either/or... or is it? If I extend a language is it always on top of
performance robbing subfunctions? Isn't it equally possible to extend the
language close to the metal without suffering a huge performance hit?
Doctor, doctor, every time I add a new colon definition is slows me down.
It hurts, when I do this.
Don't do this.
> Thanks for the stimulating questions!!! I hope my musings in
> the vague direction of answers aren't too tedious/boring; they
> reflect my attempt to think about where REBOL fits into the
> world(s) I live in.
> "Programming languages: compact, powerful, simple ...
> Pick any two!" joel'dot'neely'at'fedex'dot'com
...and I follow all of your posts with interest.