[REBOL] Re: Windows GUI apps: Rebol/SDK vs. Visual C++ 2003
From: greggirwin:mindspring at: 25-Jan-2003 17:11
Hi Jose,
(This ended up getting rather long-winded. My apologies. -G)
j> Imposible to do anything where performance matters.
I'd disagree with the use of "impossible" and "anything". Yes, there
are certainly things where REBOL is not up to the task,
performance-wise, but there are plenty of tasks where it is more than
up to the task as well. I know that my LCS implementation for creating
DIFFs is *hideously* slow in REBOL but I think that's the only thing I
have (non-graphics wise) that really sucks performance wise.
j> Any serious/complex (in terms of functionality) Windows app is written in C++.
You have to know that this statement is highly contestable. :)
j> C++ is a lot more than OO. There are many new concepts: STL, Generic
j> Programming, Design Patterns, Generic Patterns to build reusable libraries, ...
Yes, but those concepts don't apply only to C++. Large parts of the
what the STL covers are already included in REBOL and other
lanaguages. C++ and REBOL are just very different languages, with very
different goals.
j> Do not want to critizice but haven't found any new concept in Rebol that didn't
j> exist in OO or functional languages .
Very few new languages, or any software for that matter, contain something
that is completely original. Icon has generators and Eiffel has
Assertions as part of their fundamental design, or core tenet, but can
you say that those are new concepts? What gives a language its
personality, or flavor, is how its designer(s) take what they've
learned from experience (their own or others) and mix them with the
vision they have. The end result, how those concepts are applied and
how they fit together, is what largely determines whether we like a
language or not.
That said, I'd like it if others here would contribute - just for my
edification - their thoughts about some of the important concepts
REBOL is based on, and what other languages share those traits; either
here, or mail me directly if you want. Consider this an aside to the
main message. :)
Assembly language is very strong on the idea of code/data duality.
What other high level languages do it? REBOL is its own meta language.
What other languages do that? REBOL has a large number of native
datatypes, and the concept pseudo types (e.g. any-block!). Others?
Forth was sometimes called "a language construction kit" as much as a
language. REBOL elevates that concept explicitly with dialects. Do any
other languages? Other things you can think of?
OK, back to the message...
j> On the GUI side there might be lots of innovation but I don't know !
Yes and no for me. If we look at VID, we can say that it does some
things in neat ways, has its own share of warts, and does allow for
some new ways of looking at things. OTOH, if we look at VID as an
*example*, we might say that REBOL is innovative in how it supports
the idea of building new systems for describing user interfaces which
are tightly integrated with the core language.
j> I first read Carl's statement that OO wasn't it, and
j> messaging/dialects was a better paradigm, but really,
j> now, I think that you can use a tool like OO pccts,
j> http://www.antlr.org, and build any parser (for any
j> grammar) you want and for serious parsing I wouldn't
j> bet on Rebol's parse BNF. There is a lot more than
j> that and if you want to find a solution to an
j> important problem you have to dig deeper.
Sure, you can build a parser in just about any language. There are
lots of toolkits out there for various languages to do so. It's the
approach - the core view of how you build parsers - that's different
in REBOL, and why *I* like it *so* much more than other approaches. It
has its limits of course, but within those limits it is enormously
powerful IMO. I'm not sure what you mean by "serious" parsing though.
j> You can think using a piece of paper. The language is implementation.
Agreed; somewhat. :) I do lots of my design work on paper but I have
to translate those designs into working applications. Even if I'm working
on a design for which I have no idea what the implemenation language
will be, I will think in terms of *some* language - be it natural,
artificial, graphical, or what-have-you. If I'm working on a design
and I know what language I'm going to use to implement it, that will
influence the design heavily; I'm designing *for that language* after
all. If I speak only Basque, and it doesn't have any words to support
the concept of nuclear physics, it's going to be much harder to talk
about that subject in Basque.
A programming language serves two related purposes: it provides a
vehiclce for the programmer to specify actions to be executed, and it
provides a set of concepts for the programmer to use when thinking
about what can be done...the second aspect ideally requires a
language that is 'close to the problem to be solved' so that the
concepts of a solution can be expressed directly and concisely...
The language provides the programmer with a set of conceptual tools.
--Bjarnre Stroustrup
I don't mean to use that as an argument for REBOL, or against C++, but
it's something I greatly agree with completely and expresses my
feelings very well. Note also that I think we're still using REBOL
very much like we would any other language, and as that changes, the
differences - what makes it special - will become more apparent.
j> You're one of the top guys here so it doesn't sound good to hear
j> "when I really start to get it".
Sorry. I post a lot, and answer the easy questions when I can, but I'm
still just a babe in the woods with REBOL. For me, picking up the
basic syntax of a language isn't the hard part, it's learning how to
use it effectively that's the hard part. For some languages that isn't
a problem because you don't have many ways to express things or solve
problems. With REBOL, I often see huge gains when I refactor things,
or attack problems in a different way. "Getting it" applies to
individual solutions and also letting go of old habits from other
languages. My first cut at a problem, even if only mentally, still often
leans towards the obvious "brute force" approach I might need to use
elsewhere where a much more elegant REBOL solution will eventually find
its way out.
I don't want to sound all soft and fuzzy about this stuff. I take my
software development very seriously.
j> I don't believe that, the more you "talk" in a language the better
j> you communicate but you rarely do great things suddenly because you
j> use that language vs other ..
Yes, but talking in a language is different than thinking about how to
express yourself in a language. Imagine trying to write poetry, or
imagery-laden prose, in a language you're not deeply fluent in, even if
you can communicate in that language.
Thanks for posting. I don't mean to deter you from C++ in any way. Please
don't take my post as criticism in any way; take it to mean that I
care enough to think hard about why *I'm* using REBOL. :)
-- Gregg