[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: OOBit
- From: Tim Mensch <tim-lua-l@...>
- Date: Wed, 29 Sep 2010 21:07:29 -0600
On 9/29/2010 8:36 PM, Sean Conner wrote:
I don't know exactly why, but I would bet a nickel that the "colon
call" is part of the equation.
I doubt that. Look at PHP and all the horrible inconsistencies it
has (equality testing [1], inconsistent function naming and
parameter order, single name space for the longest time, the use of
'\' to denote name spaces in contrast to every other langauge out
there) and yet people who otherwise wouldn't (or shouldn't) program,
program.
PHP sucks; no question. Your point of "batteries included" is a big part
of it, along with the fact that it's distributed with Apache (you said
"distributed with PHP," but I knew what you meant ;).
Unfortunately, I think the C-like (and therefore Java- and
Javascript-like) syntax of PHP is the other piece of the puzzle of its
extreme popularity. As Steve Yegge said, the "next big language" is
going to have a C-style syntax. [1] And I agree with him, as much as I
like (and will continue to use and promote) Lua.
I also don't buy the "newbies will be confused by this" argument;
anyone can get used to anything if they work at it. I knew of a
professional Bridge player [3][4] who wrote a Bridge program in 8088
assembly [5] because that's all he had at the time (and frankly, I
don't know any programmers who *like* 8088 Assembly (that is, if
they're familiar with it) because it's all special cases).
I'm not talking about newbies. At 13 I figured out Z-80 assembly
language and wrote a game on the TRS-80. So what?
I'm talking about handing my game to a producer/designer and saying,
"OK, go script me a dozen more levels like this." Peter points out that
a purpose-build mini language would be the thing to use, and I agree.
But I hate to slow down my whole game by using one of the dot syntax
forms (__call or coroutines) to access objects, so I need to go to the
other extreme and make sure that everything that's a call uses a colon.
And you know what? I can guarantee that producer/designer is STILL going
to make mistakes and use a dot, if anything in the game, ever, uses a
dot for access (to get values, for example). And then it's going to
crash, and he's not going to know why.
So, if I understand this, what you would like is that any function
defined in a table automatically receives its table as the "self"
argument when called. So, in OOLua (for lack of a better name):
No, you didn't understand. At least you missed an important point:
foo = { bar = function(x) self.x = x return x end , x = 0 }
print(foo.x) foo.bar(3) print(foo.x)
Defined this way, foo.bar(3) would fail with "attempt to index a
number," because it's being defined with "function" instead of "method"
or whatever the other keyword is supposed to be. The other ambiguities
were things that he presented, and are worth discussing.
The other half of this argument is changing the ":" to some other
character or sequence of characters to make it visually distinctive
from the ".". I personally don't mind the ':', and would prefer it
remain the ':' but I guess I could get used to it being '->' but I
wouldn't like it.
The OP was mostly concerned with "just making dot work," and I feel
that's the most elegant solution. Some folks objected to "->", and
frankly it's not pretty -- and though it does satisfy the "make it
different" criteria, I don't know that it would satisfy the "make it
easier for non-experts" criteria, since they still have to understand
the underlying semantics of when to use it.
Tim
[1] http://steve-yegge.blogspot.com/2007/02/next-big-language.html
- References:
- Re: OOBit, KHMan
- Re: OOBit, Nilson
- Re: OOBit, Christopher Eykamp
- Re: OOBit, Peter Sommerfeld
- Re: OOBit, Christopher Eykamp
- Re: OOBit, Peter Sommerfeld
- Re: OOBit, Tim Mensch
- Re: OOBit, Javier Guerra Giraldez
- Re: OOBit, Tim Mensch
- Re: OOBit, Nilson
- Re: OOBit, Sean Conner