[why-REBOL] Pros and Cons / what's so special
[1/17] from: greggirwin:mindspring at: 23-Jun-2004 14:12
Hi Mauro,
MF> Do you think rebol can provide the same functionalities with less
MF> resources?
Yes. Carl mentioned on the View 1.3 project, after reviewing some
internals, that the View graphics engine is like a miser trying to
save pennies, while VID is like the government spending millions.
Base, for example, doesn't have a very large memory footprint (~600K).
With proper docs about how things work at the lower levels, and how to
avoid waste, I imagine we could create some much more efficient UI
dialects and toolkits. Now, efficiency has multiple meanings. I don't
know that we could create one that takes a little code as VID, or is
as flexible, but it would be something different for those that want
it.
MF> Can you think you can make a tool like Opera/Mozilla with rebol?
I can imagine making an effective and efficient browser, but I wouldn't
try to emulate current browsers in the process. i.e. I might not try to
build a standards-compliant HTML rendering engine in REBOL.
MF> Yet, you can blame them for being huge and somewhat slow, but they win
MF> hands down when speaking about features and easiness of use.
My problem with Mozilla (and I do try to use it as much as I can) is
that when I minimize it for some time, it takes forrrr-ever to wake
back up. I like a lot of other things about it, but that single fault
bugs the heck out of me.
MF> Maybe I'll get flamed here, but... I'm just realistic.
OK, I'll flame you. :)
MF> Rebol is a good scripting tool. But it is just a simple tool.
It *is* a simple tool; that's one of its greatest strengths. It is
much more than "*just* a simple tool" though, IMO. Even if it *were*
just a simple tool, simple tools are often the best kind.
MF> Whatever you say about rebol can be said about every other scripting
MF> language.
This argument is just too easy to counter; if I may list just a few
things that differentiate REBOL from other languages:
PARSE (and all that it implies)
protocols
datatypes
cross-platform GUI system
human friendly syntax
reasonable size
code/data duality
first class language capabilities
console
HELP and SOURCE functions
comes pre-built from the factory
(and you can't say "there are libraries..." for other languages,
because whether a library exists right now for REBOL doesn't say
anything about the language)
Now, some languages may have one or more of those features, but show
me another one that has them all (or even more than a couple of them).
If you look at *just that list* of items, those things are so
incredibly important to me that REBOL has, for better or worse,
ruined
a lot of other languages for me. I'm not blind to its faults,
but none of them are show-stoppers IMO. The tools are there to do
almost anything we need.
Also, don't forget that REBOL isn't a scripting language, nor is it a
programming language (though their site uses that term now, for
marketing reasons I presume); it is a messaging language. While it can
compete with other programming and scripting languages (so much so
that we're having this discussion :), they can't compete with it on
its turf: the semantic exchange of information between people and
machines.
MF> And some of them are much more "advanced" than rebol (some of
MF> them have modularity capacities and can be fully integrated into the
MF> native OS).
I'm glad you quoted "advanced". :) HTML is one of the least advanced
languages I've ever seen, but look what's been done with it. RT has
mentioned that module support may be released someday, but REBOL
isn't, at this time, targeted at building large systems that would
benefit most from that.
OS integration will add size and complexity. I don't envy RT fighting
the desire to add these things to appease people in the short term.
Holding fast to simplicity isn't easy.
REBOL may not be perfect, but I'm not letting its flaws get in the way
of doing great things (or trying) with it.
(I hope that flame wasn't too harsh :)
-- Gregg
[2/17] from: bry:itnisk at: 24-Jun-2004 10:01
MF> Whatever you say about rebol can be said about every other scripting
MF> language.
Is this a variant of the old canard, all programming languages are the same?
> PARSE (and all that it implies)
I'm curious what do you consider to be an 'implication' of Parse? When I think
of implication in the context of a programming language I do not think of
implied uses for parts of the language, but implied ideas about the problem
domains to which the language is applied and implications about the nature of
programming itself.
> protocols
this is something that I think libraries, if included in the distribution of
the
language, can give equivalency to rebol's.
that I might have to do an import statement to use that library doesn't really
bother me.
> cross-platform GUI system
benefit
> human friendly syntax
this is a mirage, to do simple things yeah like send [bry--itnisk--com] 'hi', my
mother can use rebol, but even when it gets to the point of an automated
mailing
list the human friendly syntax is not going to be simple enough for her. At
that
point it means the human friendly syntax is just another programming language,
and if that's the case it can be in the way of understanding for someone who is
used to languages in the C family for example. The lack of true variables etc.
all these things can stand in the way of understanding. As an example yesterday
I had to debug some php, I've only done one major php project in my life,
translating from a large asp application, and that was a long time ago. I do
not
know the language at all, however I know the family of languages, I saw fairly
quickly that there were some things that were likely to be syntactical errors,
such as something like this do if(...){}
I thought, what is that do doing all alone there, is that allowed? well of
course it wasn't, it should have been a do{}while();
there were some other syntactical errors regarding concatenation, and one
logical error.
you tell someone who isn't used to Rebol about how understandable it is, with
its human friendly syntax, and then give them some clever code, for example
that
article you did on O'reilly where I remember you said you did some stuff a
particular way because people would be thinkking "WOW, how did he do that" well
all that is an argument against the human friendly syntax.
Currently I'm learning J, it has a very human unfriendly syntax. I don't really
find that any more of a problem.
> reasonable size
do you mean reasonable size in the size of the language implementation, don't
know if that matters for most things, if you mean reasonable size in the
context
of the amount of code one has to write to do things yes this is always a
benefit.
> console
> HELP and SOURCE functions
> comes pre-built from the factory
lots of languages have these last three. Does comes pre-built from the factory
have to do with there being only one implementer? There can be Lisps that come
pre-built from the factory.
> Now, some languages may have one or more of those features, but show
> me another one that has them all (or even more than a couple of them).
<<quoted lines omitted: 6>>
> its turf: the semantic exchange of information between people and
> machines.
I don't know exactly what you mean by semantic exchange here, it sounds like
some more human friendly syntax, when I think of messaging language I think of
Erlang or E. Languages with support for concurrency, languages with support for
contracts between senders and receivers, in which a message between processes
itself is a datatype. I don't know, I just use Rebol to do
stuff like, get all my emails, filter them with simple rules, change them to
xml, save to folder x, or upload following set of files. Automated scripting
stuff that I think it is well suited for because it can be run cross-platform.
I
do see stuff get built in Rebol all the time that I think is cool stuff, but
hell I see stuff that gets built in all languages all the time that I think is
cool stuff. I haven't really seen anything built in rebol, other than the async
protocol, that has given me reason to reconsider the usages I think it most
appropriate for. However maybe this is a difficult thing to do.
[3/17] from: g:santilli:tiscalinet:it at: 24-Jun-2004 12:18
Hi bry,
On Thursday, June 24, 2004, 10:01:51 AM, you wrote:
>> PARSE (and all that it implies)
bic> I'm curious what do you consider to be an 'implication' of Parse? When I think
bic> of implication in the context of a programming language I do not think of
bic> implied uses for parts of the language, but implied ideas about the problem
bic> domains to which the language is applied and
bic> implications about the nature of
bic> programming itself.
PARSE is an example of what the other languages do not have -
dialect. PARSE is a dialect to build dialects too, so it's not
like "hey I have this cool module to parse strings". It's the
concept, not the function --- other languages are not value-based
do they can't have PARSE.
>> protocols
bic> this is something that I think libraries, if included in the distribution of
bic> the
bic> language, can give equivalency to rebol's.
bic> that I might have to do an import statement to use that library doesn't really
bic> bother me.
Same here --- it's the concept of a PORT as a series abstraction.
Some languages have similar things but they are not as simple and
general.
>> human friendly syntax
bic> this is a mirage, to do simple things yeah like send [bry--itnisk--com] 'hi', my
Wrong, it's not the "scripting language" syntax to be "human
friendly". Not all humans are programmers so that wouldn't be that
useful. It's the values that have a human friendly syntax. How do
you write a date in other languages? How do you write a URL? See,
most languages do not have the concepts at all either.
>> reasonable size
bic> do you mean reasonable size in the size of the language implementation, don't
bic> know if that matters for most things, if you mean reasonable size in the
bic> context
bic> of the amount of code one has to write to do things yes this is always a
bic> benefit.
Both. The size of the interpreter shows how elegant its design is.
An elegant design is ALWAYS a benefit.
Regards,
Gabriele.
--
Gabriele Santilli <[g--santilli--tiscalinet--it]> -- REBOL Programmer
Amiga Group Italia sez. L'Aquila --- SOON: http://www.rebol.it/
[4/17] from: nitsch-lists:netcologne at: 24-Jun-2004 21:24
On Donnerstag, 24. Juni 2004 10:01, [bry--itnisk--com] wrote:
> MF> Whatever you say about rebol can be said about every other scripting
> MF> language.
<<quoted lines omitted: 6>>
> the problem domains to which the language is applied and implications about
> the nature of programming itself.
Parse & blocks in Rebol, pattern-matching & messages in Erlang; Prolog, Lisp,
Smalltalk or Fuzzy-logic are parts of C? :)
> > protocols
>
> this is something that I think libraries, if included in the distribution
> of the
> language, can give equivalency to rebol's.
> that I might have to do an import statement to use that library doesn't
> really bother me.
>
Its about the interface. Some users of other languages now point to rebols
send
and say "why do we need all this setup-messages?"
About protocols, they have all the same job and they do it with the same
interface. Thats the difficulty with libraries, sending data through email
does not look like putting data in a file.
> > cross-platform GUI system
> benefit
<<quoted lines omitted: 3>>
> mailing
> list the human friendly syntax is not going to be simple enough for her.
TeX was simple enough for a lot of secretaries, and prefered IIRC. You may
underestimate the IQ of your mother. Maybe a communication-problem. ;)
> At
> that
> point it means the human friendly syntax is just another programming
> language, and if that's the case it can be in the way of understanding for
> someone who is used to languages in the C family for example. The lack of
> true variables etc. all these things can stand in the way of understanding.
One reason for such communication-problems: did you show her variables before,
and other such stuff? may trigger: I never will understand variables.. ->
programming-languages look like this -> Rebol looks like a
programming-language..
> As an example yesterday I had to debug some php, I've only done one major
> php project in my life, translating from a large asp application, and that
<<quoted lines omitted: 4>>
> I thought, what is that do doing all alone there, is that allowed? well of
> course it wasn't, it should have been a do{}while();
Now think as mother you once had to learn that, instead of
until[..]
> there were some other syntactical errors regarding concatenation, and one
> logical error.
>
You have done a major php-project and still not got the language? Maybe you
should try rebol, the concatenation-rules may be simpler. first thing one
does IIRC. ;)
> you tell someone who isn't used to Rebol about how understandable it is,
> with its human friendly syntax, and then give them some clever code, for
> example that
> article you did on O'reilly where I remember you said you did some stuff a
> particular way because people would be thinkking "WOW, how did he do that"
> well all that is an argument against the human friendly syntax.
>
I assume php with its c-syntax allows me to show increments deep in
expressions and such and call myself clever?
But to me its more about writing some code, instead of reading that of others.
And then not have to think to much about concatenating. complicated code is
then plugged in as protocols, no need to think about it, all reacts the same.
OK, some 5-liners-demos needed to show the diferences.
> Currently I'm learning J, it has a very human unfriendly syntax. I don't
> really find that any more of a problem.
>
Some lines above you said non-c-syntax is a huge problem with rebol. Now some
lines later you learned that much? ;))
> > reasonable size
>
> do you mean reasonable size in the size of the language implementation,
> don't know if that matters for most things, if you mean reasonable size in
> the context
> of the amount of code one has to write to do things yes this is always a
> benefit.
>
Or amount of what one has to learn. BTW download-sizes matter today.
> > console
> > HELP and SOURCE functions
> > comes pre-built from the factory
>
> lots of languages have these last three. Does comes pre-built from the
> factory have to do with there being only one implementer? There can be
> Lisps that come pre-built from the factory.
Gabriele mentioned Lisps as beeing comperable. But:
> > Now, some languages may have one or more of those features, but show
> > me another one that has them all (or even more than a couple of them).
> > If you look at *just that list* of items, those things are so
> > incredibly important to me that REBOL has, for better or worse,
> > "ruined" a lot of other languages for me.
> >
Lots of exclamation-marks here! Gabriele wants a combination of all this
features. Is there a lisp which can do all? I mean, ok, there is, once i
understand how to code emacs.. ;)
> > it is a messaging language. While it can
> > compete with other programming and scripting languages (so much so
<<quoted lines omitted: 11>>
> scripting stuff that I think it is well suited for because it can be run
> cross-platform.
Ahem. You get messages, filter messages, convert messages, store messages,
upload files (kind of messages) and do not realize you are dealing with
messages? Maybe you should set up some concurrency and contracts first to
feel more awe? ;) As for erlang, yes, very cool, but meant to turn a lot of
computers in a single one, lets call it a "multi-machine-application".
Messaging between such applications, or even humans, is a bit harder. and
here they resort to rebol-style: translating to email, html etc, and having a
featureless but quick tcl-style gui. Which is enough to visualize messages,
its main purpose. Citing Gabriele again: "the semantic exchange of
information between people and machines"
I admit E i don't know yet.
[5/17] from: greggirwin:mindspring at: 24-Jun-2004 15:22
Hi bry,
This turned out a bit lengthy, but don't take the length of my reply
as an "attack". I like it when people put me on the spot to justify
my views on REBOL; it helps me to see other views; it helps me to take
a step back and think about things in detail. Also, if this is
disjointed, I wrote a bit this morning, then finished while eating
lunch.
>> PARSE (and all that it implies)
bic> I'm curious what do you consider to be an 'implication' of Parse?
The ability to create dialects--whether new and novel, or for parsing
existing data--using a pseudo-BNF description; no lexx, no yacc, can
use either string or block format depending on whether you need
complete control or want to leverage the ability to parse any data
that fits within REBOL's lexical space.
bic> When I think of implication in the context of a programming
bic> language I do not think of implied uses for parts of the
bic> language, but implied ideas about the problem domains to which
bic> the language is applied and implications about the nature of
bic> programming itself.
Yes, REBOL is meant to facilitate the exchange of information. To
understand that information--which will describe many and varied
things--you need to be able to adapt to many problem domains. This
extends one of the basic idioms in Forth development: build up a
vocabulary with which you can describe the solution to the problem.
It's a language creation toolkit. Other languages (Lisp, Forth, Logo,
OCaml, etc.) also let you do this kind of thing, but not in ways that
are as easy as REBOL. This is important because there are going to be
thousands of dialects, so more people need to be able to create them,
not just the .001% who are true language/parsing geeks.
>> protocols
bic> this is something that I think libraries, if included in the
bic> distribution of the language, can give equivalency to rebol's.
bic> that I might have to do an import statement to use that library
bic> doesn't really bother me.
1) How many languages integrate them seamlessly? For example, in
most languages, the syntax to use them is different than for
files, varies between protocol types, and/or requires that you
instantiate a different kind of object after *you* figure out
what the protocol is by analyzing the string that represents
a URL.
I'm not saying they don't exist, but let's list them.
2) You don't mind doing the import, but now you also have to make
sure your users have that module if you deploy the app, correct?
3) The scheme/protocol model in REBOL is open for new protocols to
be added, so you can integrate new, perhaps novel, schemes that
work just like native ones--there is no visible difference.
(Yes, this could use more docs, like other areas...)
>> human friendly syntax
bic> this is a mirage, to do simple things yeah like send
bic> [bry--itnisk--com] 'hi', my mother can use rebol, but even when it
bic> gets to the point of an automated mailing list the human friendly
bic> syntax is not going to be simple enough for her. At that point it
bic> means the human friendly syntax is just another programming
bic> language
Let's not confuse the language's syntax with the problem of complex
application development, those are two separate issues. Human friendly
syntax won't make normal people "real programmers"; Normal people care
only about the end result. We have a number of normal people on the
list who do amazing things with REBOL. No, not everyone will want to,
but REBOL is like BASIC in that it can be used by hobbysists and
people who have a need for simple applications.
Using your example, for the sake of argument, I think a lot of people
*would* be able to do this kind of thing:
mailbox: [
scheme: 'pop
user: 'project1
host: "mail.xxx.org"
smtp: "smtp.yyy.com"
pass: "gregg"
address: [project1--xxx--org]
]
list: [[foo--bar--com][baz--foo--com]]
box: open mailbox
while [not empty? box] [
message: import-email first box
send/only list message/content
remove box
]
bic> , and if that's the case it can be in the way of understanding
bic> for someone who is used to languages in the C family for example.
bic> The lack of true variables etc. all these things can stand in the
bic> way of understanding.
It's a catch-22 because, as long as people think in terms of other
languages, that stands in their way of understanding REBOL. If REBOL
worked like other languages, there wouldn't be any point to it. There
is some validity when people question the need for new languages upon
looking at languages that aren't so very different from what's come
before.
You certainly gain leverage across languages that are similar, hence
the power of REBOL dialects and, for those coming from Lisp, Forth, or
Logo, they get the benefit you cite. That is, someone coming from Logo
could make a lot more sense of REBOL than PHP.
bic> you tell someone who isn't used to Rebol about how understandable
bic> it is, with its human friendly syntax, and then give them some
bic> clever code...
Again, you're comparing apples and oranges. Clever code has nothing to
do with how human friendly REBOL's syntax is. "Human friendly", to me,
means things like:
* The syntax rules are minimal and easy to understand, without
a lot of special cases to remember
* There is as little line-noise as possible
* It doesn't require extreme verbosity or terseness
* It uses words you could guess with a bit of common sense
(e.g. 'append vs 'strcat, <> vs !=)
* Lists start at 1; they aren't numbered 0 to n-1
* It doesn't require you to give it a lot of detail if you
don't think you need to. e.g. for quickie apps, do I need
to declare and specify types for all variables?
bic> Currently I'm learning J, it has a very human unfriendly syntax.
bic> I don't really find that any more of a problem.
Maybe you don't (I haven't looked at it), but could a smart
non-programmer (e.g. we have a couple doctors on this list) grok it
and do productive work with it?
>> reasonable size
bic> do you mean reasonable size in the size of the language
bic> implementation, don't know if that matters for most things...
That's what I meant, and it matters to *me*! It's "perceived value"
though. The original VB runtime was ~265K, big for the time (1991) and
I used the QEVBDBF library (another ~375K) for a commercial app I
built. I didn't mind at all because they provided enormous value to
me. Same for the old QB compiler. It didn't produce the smallest EXEs,
but it was a lot better than using C.
Also, I'm on slow dialup out in the country, so size matters a lot to
me as an end user.
I agree that a lot of people *don't* care about this, but some of that
is ignorance about alternatives. If all you read are mainstream trade
rags, Java and .NET are the norm, so you may not know what could be
done with toolset of, for example, REBOL+PowerBASIC.
bic> Does comes pre-built from the factory have to do with there being
bic> only one implementer? There can be Lisps that come pre-built from
bic> the factory.
Pre-built, meaning there is a compiled version available from a
reference standard source. Anything that avoids the "oh, you need to
build it with *this* option, which our distro doesn't use" issue.
bic> I don't know exactly what you mean by semantic exchange here
It means I can send a message from one place to another, and someone
on the other end can understand its meaning. The big deal here is
that, with REBOL, you can make the same message easily understood by
both people and machines.
bic> I haven't really seen anything built in rebol, other than the
bic> async protocol, that has given me reason to reconsider the usages
bic> I think it most appropriate for. However maybe this is a
bic> difficult thing to do.
Have you seen any of the following:
AltME
IOS
Rugby
Temple
PDF-maker
NREN-Detective (incl. its installer)
ReViewer
Q
RASH
Konka
Oldes' SWF-dialect
Organised
any of Allen, Cyphre, or Oldes' games
Vanilla, Andrew or Volker's Wiki tools, Graham's VIDWiki
Etienne's skin system
Oldes'(?) texture generator
FTPGadget
SlashView
Bo's backup app
The REBOL.org librarian desktop app
Graphic demos from Cyphre, Oldes, or Anton
Advanced algorithm implementations and tools
from Ladislav, Romano, Jan Skibinski, and
others
Advanced UI styles from Cyphre and others
Cyphre's translator
Thanks for listening!
-- Gregg
[6/17] from: carl:cybercraft at: 25-Jun-2004 11:38
>>> human friendly syntax
>bic> this is a mirage, to do simple things yeah like send
<<quoted lines omitted: 27>>
> remove box
> ]
I'm not so sure. The first question would be "What's scheme mean?" They could cut and
paste it though.
There'a a paradox with REBOL, in that what makes it a simple language is not obvious
till you've used it a while. But saying "It's just blocks filled with datatypes" doesn't
really cut it as an explanation. I think a good book could be written which would show
why it's simple, but it'd require people to read it from cover to cover, and I don't
think people read programming book like that. :)
Being a scripting language makes it accessable though - the script is the program is
the source. That'll be an advantage with the browser plugin. As with HTML, people will
think "I might we able to do that - or blag it and tweak it to do what I want.", when
they figure out where the source is for the program that's just started running in their
browser. And they'll be thinking that because it seems more readable than JavaScript,
nevermind what you've got to do to produce something in Java or Flash. (This is the
first Flash tutorial Google will point you towards... http://www.echoecho.com/flash.htm
Would you call that accessable?)
Text rules, I think. I'm sure those interpreted BASICs in the first personal computers
were a major part of what kick-started this industry, (not to mention Microsoft.) And
HTML is text too, thus we have the Web. (I don't know about PDAs though. Were they
ever thought to be easy to program? If so, what with?)
>bic> I haven't really seen anything built in rebol, other than the
>bic> async protocol, that has given me reason to reconsider the usages
<<quoted lines omitted: 27>>
> Advanced UI styles from Cyphre and others
> Cyphre's translator
And add to that Phil Bevan's readmail, which I'm using to write this. It's a work-in-progress
and pretty raw in spots, (such as in this text-area where I'm typing - no wheel-mouse
support and block-marking doesn't scroll the text), but it is a usable mailer, and if
something really starts to annoy me I can get into the code and try and work out a fix.
Yes, that's only possible if you know REBOL, but unless you're using open-source apps,
knowing C or C++ or whatever won't help you with a typical Windows' app, will it?
-- Carl Read
[7/17] from: greggirwin:mindspring at: 24-Jun-2004 22:23
Hi Carl,
CR> I'm not so sure. The first question would be "What's scheme
CR> mean?" They could cut and paste it though.
Right, I didn't mean that someone would sit down and just write that
off the top of their head, but that it's manageable by a casual user.
CR> And add to that Phil Bevan's readmail, which I'm using to write this.
ACK! Sorry Phil! I'm sure I missed some other important ones as well.
-- Gregg
[8/17] from: moliad:aei:ca at: 25-Jun-2004 0:56
Hi,
I'm coming out of the black for one mail... I'm doing so little programming
these days, hence my silence on the list... I'm on vacation, just turned 29
today and am doing intensive work on the house, so its hard to put time on the
favorite hobby...
> article you did on O'reilly where I remember you said you did some stuff a
> particular way because people would be thinkking "WOW, how did he do that"
well
> all that is an argument against the human friendly syntax.
yep and shakespear isn't for everyone either.
although macbeth and harry poter are both books which contain magic, and written
in english (of a different dialect ;-) they are not intended for the same
audience.
in rebol, you can express the same problem in different ways.
in most other languages, there is really only one way to build anything.
in how many other languages can you redefine/extend the function definition
statement... even with python, you still can only define a function in one way.
can you create an unless if it does not exist?
can you use code as data (and vice-versa).
> I
> do see stuff get built in Rebol all the time that I think is cool stuff, but
> hell I see stuff that gets built in all languages all the time that I think is
> cool stuff. I haven't really seen anything built in rebol, other than the
async
> protocol, that has given me reason to reconsider the usages I think it most
> appropriate for. However maybe this is a difficult thing to do.
I have had to implement the same things in more than one language and
generally, especially if there is a ui involved, rebol takes less than half the
time to implement and it generally goes beyond the original design.
a series is a series. a port is a port. so many things work at that level that
you forget that you are accessing an ftp port or a disk... a string or a block
of loaded values. do you realise that if someone types an ftp url within a file
load, that rebol will try to load it without your having to fiddle around with
an ftp module or read about how to enable the ftp support, or rather HOW to get
ftp to work.
For many things, rebol does not go beyond other languages, it just does more of
it consistently. You only nead to learn how series work ONCE (and they are
pretty natural, IMHO) then you can use some or all the series concepts on:
strings, lists, hashes, ports, blocks, paths, tuples, decimals, pairs, dates and
more.
not all datatypes use the complete series functionality, but any functionality
it supports will be consistent ACROSS ALL types.
python has a COMPLETELY independent structure for strings, lists, tupples, time,
decimals, dates, networking, etc. you nead to learn each one FROM scratch,
because they don't reuse the same ideology on any one.
That is one reson I prefer rebol. learn once, reuse many.
-MAx
[9/17] from: antonr:lexicon at: 25-Jun-2004 17:04
I've been mucking about with Maya5's MEL language,
which can be used to create and manipulate 3D objects
in the Maya program.
It's a rude shock to go back to such a language.
It's like unix shell scripting mixed with c-language
and a bunch of datatypes that don't play all that nicely
with each other.
I don't want to bag the language too much because it
can do a lot, but the limitations of the traditional syntax
and other things are really holding it back.
Now I have learned rebol it is clear to me that such a
language technology should not be wasted. These ideas must
spread to other languages. (Such a process is slow of course.)
Anyway, here is an line from this MEL language:
print ("w = " + $w + " h = " + $h + " max_dist = " + $max_dist);
and a rebol equivalent:
print [{w =} w {h =} h {max_dist =} max_dist]
Now, you might think "that's not such an amazing win", but
now I will ask you to check each line to see if there is
an error in the syntax. Is there? ;)
How long did it take to verify each line?
Just a small example. I was fighting with variable scope as well.. guh.
I would like to see MEL reimplemented with rebol as core, and
new datatypes to handle matrices and all those complex data sets
which are useful for 3D information storage and manipulation.
Of course, one would have to convince the Maya people to do that,
and I doubt they would do it, as they already have a big investment
in the current language, and it would probably take about 5 years just
to grow the new language back to the capability they have at the moment.
Anton.
[10/17] from: bry:itnisk at: 25-Jun-2004 10:21
> TeX was simple enough for a lot of secretaries, and prefered IIRC. You may
> underestimate the IQ of your mother. Maybe a communication-problem. ;)
nope, I think though the problem is not so much syntax for most people, it is
the problem of concepts, programming languages will sooner or later deal with
many of the same underlying concepts. it's the concepts in many cases that are
the difficulty not syntax.
> One reason for such communication-problems: did you show her variables
> before,
nope.
> > As an example yesterday I had to debug some php, I've only done one major
> > php project in my life, translating from a large asp application, and
<<quoted lines omitted: 10>>
> Now think as mother you once had to learn that, instead of
> until[..]
again, it's the concept, I don't think do{}while(); is that big a problem in
comparison to until.
> > there were some other syntactical errors regarding concatenation, and one
> > logical error.
> >
>
> You have done a major php-project and still not got the language? Maybe you
>
> should try rebol, the concatenation-rules may be simpler. first thing one
> does IIRC. ;)
>
I do use Rebol, I use it for administrative scripting, I think there may be
some
communication problems here Volker. The major php-project was translation from
a
major asp project (I think I said that somewhere) as such it was not as
difficult as starting a major project from scratch in the language, it was also
a relative long time ago. The goal of the php was not to transfer the project
to
php and use that as the platform from thereon in, it was just to provide a
translation of the project so that people could choose to transfer their data
between platforms. Of course it helped that much of the business logic was
handled in some cross platform components, so that the php, asp code was
operating at a very abstract level. Given these facts I can be said to have
familiarity with the language but not expertise
> > you tell someone who isn't used to Rebol about how understandable it is,
> > with its human friendly syntax, and then give them some clever code, for
<<quoted lines omitted: 7>>
> Some lines above you said non-c-syntax is a huge problem with rebol. Now some
> lines later you learned that much? ;))
I didn't say it was problem for me, I said that the whole human friendly syntax
was a mirage. As soon as you get to doing the actual things that any programmer
is going to want to do, other than sending john a message "hi", or
reading/writing a http page, or any of the simple demos, you are in an area
where the syntax is unfriendly enough that you do not grasp immediately what it
means(immediate understanding being based on immersion in english). At that
point the human friendly syntax means nothing to me, it's a programming syntax,
and for some programmers who are familiar with specific families of languages,
for example the ubiquitous C style languages, its lack of familiarity makes it
less friendly than a familiar language. I happen to really like uncommon
languages, especially ones that I think fit a specific problem domain. So I
don't have as much of a problem (I have some problems of course with languages
that are unique in that if I leave them alone for a time coming back into them
will take a lot longer to reacquaint myself than if I leave a C derived
language
alone, this is however a small problem). Other people may have a larger
problem.
> > > reasonable size
> >
<<quoted lines omitted: 10>>
> feel more awe? ;) As for erlang, yes, very cool, but meant to turn a lot of
> computers in a single one, lets call it a "multi-machine-application".
Well that can be one usage of erlang, why can it be one usage of erlang, because
it has a concept of messages, messages between processes etc. Your definition of
message up there seems to be general enough that pretty much any language can be
a messaging language. In Rebol if I want anything like that I have to pretty
much open a port and monitor it. Fair enough, that's what you have to do in most
languages, but I just can't consider it a 'messaging language' because when I
think of messaging language then it means the language has built in simple
semantics to start processes, shutdown processes from the process that started
it, send a message to a waiting process, query a process for state, etc. That
Rebol is not a messaging language as I understand it is not a lethal hit against
Rebol, in point of fact I recommend Rebol pretty much everywhere I go. I just
don't think it's the best thing for every job.
[11/17] from: bry:itnisk at: 25-Jun-2004 11:06
> >Using your example, for the sake of argument, I think a lot of people
> >*would* be able to do this kind of thing:
<<quoted lines omitted: 16>>
> I'm not so sure. The first question would be "What's scheme mean?" They
> could cut and paste it though.
Yeah, and once you get to cut and paste a lot of people can do a lot of things.
If this were my first time looking at this, it might be difficult, I would say,
okay mailbox is the email address I'm reading, all that's fine. okay that
while[] means I'm gonna loop through the mailbox until its empty. first and
remove however might not exactly leap out to me as being the most important
operative words in this loop. I would have to go look that up. This might be
described as linguistic pollution on my part, but anyway I think it affects
people the same way when they start.
> >
> >Have you seen any of the following:
> >
> > AltME
There are parts of AltME that just bug the hell out of me, navigation wise.
especially a couple months ago when I had tennis elbow and I could not navigate
through it without a great amount of pain. This was not the only problem
although as I don't have AltME here, and I'm sure my installation at home is
probably screwed, having had to reinstall windows last week I doubt that I could
give an accurate rundown of the interface problems I encountered. The problems
however were of a nature that my experience with Rebol have shown me to be, if
not insoluble, difficult to solve, and thus relatively unrewarding to a
programmer for the amount of time put into them. For me as a user however they
were problems I needed solved.
> > IOS
IOS is admittedly great. I suppose I should add that to Async.
> > Temple
no
> > PDF-maker
This is problematic, I have quite a bit of expertise in XSL-FO, and various
XSL-FO processors, Also some with Erlang's ErlGuten. I always need to make pdfs
from xml data. I need to support international character sets. Text
directionality. Since I've had to build print-on demand capable systems I have
high requirements not just on what kinds of pdf can be output, but also on the
pdf-making process' interoperability with other processes. PDF-Maker is good,
but it wouldn't fulfill my needs, and my needs are such that I wouldn't
consider
building a system for fulfilling them in Rebol.
> > Oldes' SWF-dialect
Somewhat similar to PDF-maker, I have a number of tools I use together that
give me quite a bit of control over flash creation. Although as a general rule I
don't have to do a lot of that.
> > NREN-Detective (incl. its installer)
no, okay looks nice, not sure yet that it would be the kind of thing I would not
have considered appropriate for developing in Rebol.
[12/17] from: g:santilli:tiscalinet:it at: 25-Jun-2004 14:17
Hi bry,
On Friday, June 25, 2004, 11:06:35 AM, you wrote:
>> >Using your example, for the sake of argument, I think a lot of people
>> >*would* be able to do this kind of thing:
<<quoted lines omitted: 17>>
>> I'm not so sure. The first question would be "What's scheme mean?" They
>> could cut and paste it though.
bic> Yeah, and once you get to cut and paste a lot of people can do a lot of things.
bic> If this were my first time looking at this, it might be difficult, I would say,
Again, I disagree, the point is not "human friendly syntax" when
writing programs. It's the syntax of values that is human
friendly.
Regards,
Gabriele.
--
Gabriele Santilli <[g--santilli--tiscalinet--it]> -- REBOL Programmer
Amiga Group Italia sez. L'Aquila --- SOON: http://www.rebol.it/
[13/17] from: greggirwin:mindspring at: 25-Jun-2004 11:48
Hi bry,
>> > mailbox: [
>> > ...
>> > ]
>>
bic> If this were my first time looking at this, it might be difficult, I would say,
If it were your first time looking at it, I wouldn't expect it to be
easy; I wouldn't expect it to make *any* sense if you weren't already
a programmer. My point was that REBOL has a low barrier of entry WRT
the effort required to learn and follow the basic rules, in order to
do something useful. Of course, when you get further from shore, it
gets deep and may be too advanced for you, but you can stay in the
shallows all your life and still have a great time. :)
bic> There are parts of AltME that just bug the hell out of me, navigation wise.
OK, but that has nothing to do with the fact that it was written in
REBOL; look at the functionality it provides.
I listed examples to address your statement:
"I just use Rebol to do stuff like, get all my emails, filter them
with simple rules, change them to xml, save to folder x, or upload
following set of files. Automated scripting stuff...I haven't
really seen anything built in rebol, other than the async
protocol, that has given me reason to reconsider the usages I
think it most appropriate for."
>> > PDF-maker
bic> ...PDF-Maker is good, but it wouldn't fulfill my needs, and my
bic> needs are such that I wouldn't consider building a system for
bic> fulfilling them in Rebol.
Have you sent Gabriele feedback about what your needs are for it, or
looked at enhancing it yourself?
What tools do you use for this task (just out of curiosity)?
>> > NREN-Detective (incl. its installer)
bic> no, okay looks nice, not sure yet that it would be the kind of
bic> thing I would not have considered appropriate for developing in
bic> Rebol.
The nice looks hide all the work that it is doing. :) It is a fully
localizable, cross-platform, network testing tool that has a support
system (built in REBOL) that does auto-updates and supports a
build-on-demand portal for multiple OSs.
I realized I also forgot Cerebrus in my list of things, and Graham's
new P2P file sharing prototype (XFT).
-- Gregg
[14/17] from: bry:itnisk at: 25-Jun-2004 21:17
> bic> There are parts of AltME that just bug the hell out of me, navigation
> wise.
>
> OK, but that has nothing to do with the fact that it was written in
> REBOL; look at the functionality it provides.
I think it does, some of my navigation problems have to do with keyboard
navigation, which in Rebol from looking at various keyboard hooking routines to
get control keys etc. can be somewhat tedious, I think that the tedium is what
explains the lack of reasonable keyboard navigation in rebol apps I've seen.
When you have a lot of different possible functionality to implement you tend
to
focus on 1. what is particularly easy to implement 2. what will really wow
people about my application
If some things are common, unnoticed until needed, and seldomly needed, or
needed only be a subset of clients, you tend not to build them. When I was
using
AltME I was in a hell of a lot of pain, because of the tennis elbow I was
suffering from and this also made other non-keyboard navigational issues more
of
a thorn for me. But for most people who use AltME I bet it doesn't even come
up.
> >> > PDF-maker
> bic> ...PDF-Maker is good, but it wouldn't fulfill my needs, and my
> bic> needs are such that I wouldn't consider building a system for
> bic> fulfilling them in Rebol.
>
> Have you sent Gabriele feedback about what your needs are for it, or
> looked at enhancing it yourself?
I think actually this is the problem that comes up with Rebol for me a lot, and
why I don't think of it for major things, because most of my work revolves
around quite heavy duty usage of XML. not simple xml, I mean that I need xml
support that will make it easy for me to seperate out namespaces, handle dtds,
unicode, and so forth. And hell, I don't have much time to build support for
what I need with Rebol because I can't take a couple weeks off to do it. Right
now I'm working one job full time, and me and some partners have a possible
project that would start next month, and run for three months, building a
cross-media management system - publishing, intranet, internet, possibly other
stuff, like blogs, etc. for a large airline's cargo division (it would only be
taking three months approx. since we already have all the components we would
be
building, so it's just a question of customizing, but still).
But anyway, so that's one thing I need all the time is xml support, this is why
I use XSL-FO for my pdf generation, as that is an xml-based language for
describing paginated media.
> What tools do you use for this task (just out of curiosity)?
>
In the system I built we support multiple xml input formats, xhtml, svg,
Docbook, TEI, VCard in xml format, RDF, etc. etc. We have a couple forms, built
in VB, which the user can use to assemble all the different document types they
are working with at the moment, set page dimensions etc. for each document type,
load in styles(we implemented a css like language that users could use to
write styles for their XSL-FO rather than having to deal with xslt or something
else) This css-based styles is combined with xslt to output xsl-fo. The xsl-fo
is then fed to a user chosen xsl-fo processor. There is the possibility of
saving the whole process using a macro and then running the styling process
over another set of documents. There is also another variation where the user
interface is not the client side vb form, but a web client, for a print on
demand solution - this is without the macro ability.
Both also support scripting of the xml files using a stack-based inline macro
language we developed, since the language is described with namespaced xml
markup, it follows that the applications we use have to be able to handle the
xml and the namespaces relatively easy.
We may have to build something for a korean cargo company later this year/early
next year, if so we are going to have to have support for south east asian
character sets, luckily there is an xsl-fo processor that supports all unicode
charsets, that being Antenna House. This is something I need obviously, support
for character sets, support for directionality of text, if we have a customer
that needs that we don't have to worry about building something new we just say,
oh yes, $3,000 more please thanks.
Because of the applications processor independence we can basically get it to
work with any xsl-fo processor.
This is of course part of a suite of media management tools, currently however
this is my part time job, when we get an order we do stuff with it, right now my
main work is still all xml related, but mainly governmental standardising work.
And damn it is draining.
[15/17] from: krobillard:san:rr at: 25-Jun-2004 14:49
On Friday 25 June 2004 00:04, Anton Rolls wrote:
> I've been mucking about with Maya5's MEL language,
> which can be used to create and manipulate 3D objects
<<quoted lines omitted: 3>>
> and a bunch of datatypes that don't play all that nicely
> with each other.
I was told once that the interpreter for MEL is actually PERL. I'd guess
that's probably true considering the way you often build commands using
strings (like in your example).
> I would like to see MEL reimplemented with rebol as core, and
> new datatypes to handle matrices and all those complex data sets
> which are useful for 3D information storage and manipulation.
This was exactly what I wanted to do with a 3D modeler I was working on many
years ago. Since we cannot embed and extend the REBOL interpreter, however,
this is all but impossible.
> Of course, one would have to convince the Maya people to do that,
> and I doubt they would do it, as they already have a big investment
> in the current language, and it would probably take about 5 years just
> to grow the new language back to the capability they have at the moment.
Heh, not ever going to happen. They really need to rewrite Maya completely
from scratch to get rid of a number of design flaws, but then it wouldn't be
Maya anymore.
-Karl
[16/17] from: moliad:aei:ca at: 29-Jun-2004 7:29
Anton,
You do know that you can eval() code in MEL, right?
well, use that more and you'll see that you can use some rebol tricks in it
too!
MEL programmers read carefully!
if you didn't know, you can program maya USING REBOL / CORE :-)
no fancy tricks, no plugins needed... you simply open a command port in maya,
like so:
// ----------- in MAYA ---------------
commandPort -n ":3044"
// ----------------------------------------
the actual port number is irrelevent, as long as it is not already opened. And
then open a tcp port in rebol, and send it your mel commands directly through
the port. If you are on unix, you can even use named ports.
;-------------- IN REBOL --------------
maya: open/lines tcp://localhost:3044
insert maya "sphere"
;------------------------------------------
in theory, you should see the sphere appear in the maya software.
also note that all return values are returned afterwards to the client port!
so, after the previous command you can do:
;-------------- IN REBOL --------------
>> print first maya
nurbsSphere1 makeNurbSphere1
;-----------------------------------------
This has the advantages that you can use OBJECTS to manipulate your datasets
and just build up little mel commands to manipulate them. If you are
comfortable, in building up maya nodes as data placeholders, you can easily keep
a node with an added id string or int attribute to reference your objects in the
rebol world and do all your "real" programming in rebol. If you want, you can
create stubs in your objects which mimic the MEL commands (using refinements for
the switches :-) and do all the logic in rebol, and whatever goes or retrieves
data from the MEL sides, gets converted by the stub routines, so that you stay
focused on the rebol side.
if you do all the "doing" in rebol and only call MEL's "connectAttr()",
addAttr()
, "getAttr()" and "setAttr()" via rebol, you already halved your
coding time for sure. !!! imagine, you can use REBOL WINDOWS to make interfaces
for your maya tools :-) you miss out on the fancy maya ui classes, but if
your' just doing lists, fields, buttons and stuff, you can get away with a lot
in VID, much quicker IMHO.
the only caveat I know is that maya's tcp buffer is only 4096 bytes, so don't
send a large return command over the port ("ls" for example), unless you know
that the return will be a manageable amount of data, cause maya will close the
port if you overrun the buffer.
HTH !
-MAx
[17/17] from: moliad:aei:ca at: 29-Jun-2004 7:39
I forget the "+" about once in twice, everytime I use python or MEL.
-MAx
Notes
- Quoted lines have been omitted from some messages.
View the message alone to see the lines that have been omitted