Groups | Search | Server Info | Keyboard shortcuts | Login | Register


Groups > comp.lang.forth > #22510

Re: The current object

From Bernd Paysan <bernd.paysan@gmx.de>
Newsgroups comp.lang.forth
Subject Re: The current object
Date 2013-05-11 21:31 +0200
Organization 1&1 Internet AG
Message-ID <kmm6b0$9bd$1@online.de> (permalink)
References (15 earlier) <518636ef$0$32111$14726298@news.sunsite.dk> <km6j0c$92g$1@online.de> <518a3875$0$32117$14726298@news.sunsite.dk> <kmei8v$s5l$1@online.de> <518b7d47$0$32115$14726298@news.sunsite.dk>

Show all headers | View raw


Doug Hoffman wrote:

> On 5/8/13 6:06 PM, Bernd Paysan wrote:
> 
>> ... ivars and methods are just
>> words inside an object context,
> 
> Not in FMS and other object systems.

You mean you refuse to think of them as that.  They are words.  They only 
work "in context" of an object.  Agreed?

>> and that we can use the same implementation
>> technique which resolves methods in a multiple-inheritance context to
>> resolve ivars in a multiple-inheritance context
> 
> You could.  I don't and wouldn't want that limitation.

Well, the limitation of properly handling instance variables in a MI context 
vs. not doing so is speed vs. doubled information.  So you cripple your 
system for speed?  Or you don't understand what I'm saying?  Treating ivars 
like methods means you are *more* flexible, not less!

Example: In Lua, objects are really tables.  Ivars and functions are one way 
or the other elements of the table.  The name serves as "index".

> FMS uses
> wordlists for ivars and xts for methods.  These are design decisions
> with reasons for each.

Sure.  As usual, engineering must make compromises.

>> class foo
>>    ivar x
>>    : &x ( -- addr ) x ;
>> end-class
>>
>> so that &x exports the ivar x.  What's the difference to making x public?
> 
> As was explained before, we need the ability to revise internal details
> of objects without breaking code that uses the objects.
> 
> class foo \ revised
>      bar y  \ y is an embedded object of class bar
>      : &x ( -- addr ) y someMessage x-offset + ;
> end-class

If you treat ivars like methods, you should be able to do that, anyways.  
However, if you don't, the thing above would not work.  &x is not some 
address somewhere, it is a way to access the ivar x with @ and ! and other 
memory words outside the method.

>> You need to access everything through the command line
>  > for debugging, so this separation isn't helpful.
> 
> That's like saying one should never use wordlists to cover definitions
> because it is then more difficult to debug those definitions.

???  If you are strict with information hiding, you will not get access at 
all!

> Writing/debugging OOP code is more work, that is true.  But the end
> result is worth it.

My experience is that debugging is where you spent the most time, so easing 
debugging is worth it.  As I had Lua as example above, the recommendation in 
Lua (which does not have any protection) is: "Therefore, Lua avoids too much 
redundancy and artificial restrictions. If you do not want to access 
something inside an object, just do not do it."

That's what I think is useful for Forth, too.

>> Data is code, and code is some sort of data,
> 
> Everything is "ones" and "zeros" too.  But we use computer programming
> languages to provide abstractions to enable writing programs.  Those
> abstractions are critically important, as are the differences between
> ivars and messages.

It made a knot into your brain, and now you are unable to untangle it.  In 
the Forth philosophy there is no line you can't cross if you need to.  Many 
other programming languages have lines which you can't cross.

-- 
Bernd Paysan
"If you want it done right, you have to do it yourself"
http://bernd-paysan.de/

Back to comp.lang.forth | Previous | NextPrevious in thread | Next in thread | Find similar


Thread

Re: Went open source with my GA144 simulator written in Factor Doug Hoffman <glidedog@gmail.com> - 2013-04-29 06:26 -0400
  Re: Went open source with my GA144 simulator written in Factor Bernd Paysan <bernd.paysan@gmx.de> - 2013-04-29 21:07 +0200
    Re: Went open source with my GA144 simulator written in Factor Bernd Paysan <bernd.paysan@gmx.de> - 2013-04-29 22:01 +0200
      Re: Went open source with my GA144 simulator written in Factor Doug Hoffman <glidedog@gmail.com> - 2013-04-29 16:51 -0400
        Re: Went open source with my GA144 simulator written in Factor Bernd Paysan <bernd.paysan@gmx.de> - 2013-04-29 23:57 +0200
          Re: Went open source with my GA144 simulator written in Factor Andrew Haley <andrew29@littlepinkcloud.invalid> - 2013-04-29 17:24 -0500
            Re: Went open source with my GA144 simulator written in Factor Bernd Paysan <bernd.paysan@gmx.de> - 2013-04-30 02:16 +0200
              Re: Went open source with my GA144 simulator written in Factor Andrew Haley <andrew29@littlepinkcloud.invalid> - 2013-04-30 03:19 -0500
          Re: Went open source with my GA144 simulator written in Factor Doug Hoffman <glidedog@gmail.com> - 2013-04-29 18:40 -0400
          Re: Went open source with my GA144 simulator written in Factor Doug Hoffman <glidedog@gmail.com> - 2013-04-29 20:01 -0400
            Re: Went open source with my GA144 simulator written in Factor Bernd Paysan <bernd.paysan@gmx.de> - 2013-04-30 02:40 +0200
              Re: Went open source with my GA144 simulator written in Factor Doug Hoffman <glidedog@gmail.com> - 2013-05-01 08:58 -0400
                Re: Went open source with my GA144 simulator written in Factor Andrew Haley <andrew29@littlepinkcloud.invalid> - 2013-05-01 09:57 -0500
                Re: Went open source with my GA144 simulator written in Factor Doug Hoffman <glidedog@gmail.com> - 2013-05-02 04:24 -0400
                Re: Went open source with my GA144 simulator written in Factor Alex McDonald <blog@rivadpm.com> - 2013-05-01 07:58 -0700
                Re: Went open source with my GA144 simulator written in Factor Doug Hoffman <glidedog@gmail.com> - 2013-05-02 04:29 -0400
                Re: Went open source with my GA144 simulator written in Factor Alex McDonald <blog@rivadpm.com> - 2013-05-02 02:49 -0700
          Re: Went open source with my GA144 simulator written in Factor Doug Hoffman <glidedog@gmail.com> - 2013-05-01 08:54 -0400
            Re: Went open source with my GA144 simulator written in Factor Bernd Paysan <bernd.paysan@gmx.de> - 2013-05-01 23:59 +0200
      Re: Went open source with my GA144 simulator written in Factor Ron Aaron <rambamist@gmail.com> - 2013-04-30 06:05 +0300
      The current object (was: Went open source with my GA144 ...) anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2013-05-01 17:01 +0000
        Re: The current object (was: Went open source with my GA144 ...) albert@spenarnc.xs4all.nl (Albert van der Horst) - 2013-05-01 19:20 +0000
          Re: The current object (was: Went open source with my GA144 ...) anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2013-05-02 17:02 +0000
        Re: The current object (was: Went open source with my GA144 ...) Bernd Paysan <bernd.paysan@gmx.de> - 2013-05-02 02:12 +0200
          Re: The current object Doug Hoffman <glidedog@gmail.com> - 2013-05-02 04:52 -0400
          Re: The current object Andrew Haley <andrew29@littlepinkcloud.invalid> - 2013-05-02 04:31 -0500
            Re: The current object Bernd Paysan <bernd.paysan@gmx.de> - 2013-05-02 18:25 +0200
              Re: The current object anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2013-05-02 16:58 +0000
                Re: The current object Bernd Paysan <bernd.paysan@gmx.de> - 2013-05-02 22:26 +0200
                Re: The current object anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2013-05-06 14:52 +0000
                Re: The current object Bernd Paysan <bernd.paysan@gmx.de> - 2013-05-07 03:47 +0200
                Re: The current object anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2013-05-07 15:22 +0000
              Re: The current object Andrew Haley <andrew29@littlepinkcloud.invalid> - 2013-05-02 12:12 -0500
                Re: The current object Bernd Paysan <bernd.paysan@gmx.de> - 2013-05-02 21:56 +0200
                Re: The current object Andrew Haley <andrew29@littlepinkcloud.invalid> - 2013-05-03 03:19 -0500
                Re: The current object Doug Hoffman <glidedog@gmail.com> - 2013-05-03 06:54 -0400
          Re: The current object (was: Went open source with my GA144 ...) anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2013-05-02 14:28 +0000
            Re: The current object (was: Went open source with my GA144 ...) Bernd Paysan <bernd.paysan@gmx.de> - 2013-05-02 19:58 +0200
              Re: The current object (was: Went open source with my GA144 ...) anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2013-05-03 16:50 +0000
                Re: The current object (was: Went open source with my GA144 ...) Bernd Paysan <bernd.paysan@gmx.de> - 2013-05-04 18:58 +0200
                Re: The current object Andrew Haley <andrew29@littlepinkcloud.invalid> - 2013-05-04 13:35 -0500
                Re: The current object Bernd Paysan <bernd.paysan@gmx.de> - 2013-05-05 01:08 +0200
                Re: The current object Andrew Haley <andrew29@littlepinkcloud.invalid> - 2013-05-04 18:29 -0500
                Re: The current object Bernd Paysan <bernd.paysan@gmx.de> - 2013-05-05 03:00 +0200
                Re: The current object Andrew Haley <andrew29@littlepinkcloud.invalid> - 2013-05-05 03:48 -0500
                Re: The current object Bernd Paysan <bernd.paysan@gmx.de> - 2013-05-05 23:15 +0200
                Re: The current object Andrew Haley <andrew29@littlepinkcloud.invalid> - 2013-05-06 05:01 -0500
                Re: The current object Bernd Paysan <bernd.paysan@gmx.de> - 2013-05-07 03:23 +0200
                Re: The current object Andrew Haley <andrew29@littlepinkcloud.invalid> - 2013-05-07 03:39 -0500
                Re: The current object Bernd Paysan <bernd.paysan@gmx.de> - 2013-05-07 19:00 +0200
                Re: The current object Andrew Haley <andrew29@littlepinkcloud.invalid> - 2013-05-07 13:34 -0500
                Re: The current object Bernd Paysan <bernd.paysan@gmx.de> - 2013-05-07 22:00 +0200
                Re: The current object anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2013-05-08 07:26 +0000
                Re: The current object Doug Hoffman <glidedog@gmail.com> - 2013-05-05 06:39 -0400
                Re: The current object Andrew Haley <andrew29@littlepinkcloud.invalid> - 2013-05-05 09:15 -0500
                Re: The current object Paul Rubin <no.email@nospam.invalid> - 2013-05-05 09:25 -0700
                Re: The current object Andrew Haley <andrew29@littlepinkcloud.invalid> - 2013-05-05 11:43 -0500
                Re: The current object Paul Rubin <no.email@nospam.invalid> - 2013-05-05 09:59 -0700
                Re: The current object Andrew Haley <andrew29@littlepinkcloud.invalid> - 2013-05-06 05:06 -0500
                Re: The current object Mark Wills <forthfreak@gmail.com> - 2013-05-06 00:19 -0700
                Re: The current object "WJ" <w_a_x_man@yahoo.com> - 2013-05-13 22:45 +0000
                Re: The current object Doug Hoffman <glidedog@gmail.com> - 2013-05-05 06:39 -0400
                Re: The current object Bernd Paysan <bernd.paysan@gmx.de> - 2013-05-05 23:40 +0200
                Re: The current object Doug Hoffman <glidedog@gmail.com> - 2013-05-05 06:39 -0400
                Re: The current object Bernd Paysan <bernd.paysan@gmx.de> - 2013-05-05 23:29 +0200
                Re: The current object Andrew Haley <andrew29@littlepinkcloud.invalid> - 2013-05-06 05:10 -0500
                Re: The current object Doug Hoffman <glidedog@gmail.com> - 2013-05-08 07:35 -0400
                Re: The current object Bernd Paysan <bernd.paysan@gmx.de> - 2013-05-09 00:06 +0200
                Re: The current object Doug Hoffman <glidedog@gmail.com> - 2013-05-09 06:41 -0400
                Re: The current object Bernd Paysan <bernd.paysan@gmx.de> - 2013-05-11 21:31 +0200
                Re: The current object Doug Hoffman <glidedog@gmail.com> - 2013-05-12 07:40 -0400
                Re: The current object Bernd Paysan <bernd.paysan@gmx.de> - 2013-05-14 01:10 +0200
                Re: The current object Andrew Haley <andrew29@littlepinkcloud.invalid> - 2013-05-14 03:58 -0500
                Re: The current object anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2013-05-14 14:51 +0000
                Re: The current object Andrew Haley <andrew29@littlepinkcloud.invalid> - 2013-05-15 03:48 -0500
                Re: The current object Bernd Paysan <bernd.paysan@gmx.de> - 2013-05-14 18:37 +0200
                Re: The current object Andrew Haley <andrew29@littlepinkcloud.invalid> - 2013-05-14 14:42 -0500
                Re: The current object Bernd Paysan <bernd.paysan@gmx.de> - 2013-05-15 00:22 +0200
                Re: The current object Andrew Haley <andrew29@littlepinkcloud.invalid> - 2013-05-15 02:56 -0500
                Re: The current object stephenXXX@mpeforth.com (Stephen Pelc) - 2013-05-15 13:52 +0000
                Re: The current object Bernd Paysan <bernd.paysan@gmx.de> - 2013-05-15 17:58 +0200
                Re: The current object albert@spenarnc.xs4all.nl (Albert van der Horst) - 2013-05-17 14:01 +0000
                Re: The current object johno <email@address.com> - 2013-05-15 22:38 +0100
                Re: The current object Doug Hoffman <glidedog@gmail.com> - 2013-05-14 06:27 -0400
                Re: The current object albert@spenarnc.xs4all.nl (Albert van der Horst) - 2013-05-09 16:06 +0000
                Re: The current object (was: Went open source with my GA144 ...) anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2013-05-06 16:12 +0000
                Re: The current object (was: Went open source with my GA144 ...) Alex McDonald <blog@rivadpm.com> - 2013-05-06 10:25 -0700
                Re: The current object (was: Went open source with my GA144 ...) Bernd Paysan <bernd.paysan@gmx.de> - 2013-05-07 04:00 +0200
                Re: The current object (was: Went open source with my GA144 ...) anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2013-05-07 15:02 +0000
                Re: The current object (was: Went open source with my GA144 ...) Bernd Paysan <bernd.paysan@gmx.de> - 2013-05-07 04:09 +0200
                Re: The current object Andrew Haley <andrew29@littlepinkcloud.invalid> - 2013-05-07 03:41 -0500
                Re: The current object Bernd Paysan <bernd.paysan@gmx.de> - 2013-05-07 19:02 +0200
                Re: The current object (was: Went open source with my GA144 ...) anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2013-05-07 14:33 +0000
                Re: The current object (was: Went open source with my GA144 ...) Bernd Paysan <bernd.paysan@gmx.de> - 2013-05-07 19:40 +0200
              Re: The current object Bernd Paysan <bernd.paysan@gmx.de> - 2013-05-15 16:46 +0200
                Re: The current object Andrew Haley <andrew29@littlepinkcloud.invalid> - 2013-05-15 13:11 -0500
                Re: The current object Bernd Paysan <bernd.paysan@gmx.de> - 2013-05-15 23:23 +0200
                Re: The current object Andrew Haley <andrew29@littlepinkcloud.invalid> - 2013-05-16 02:24 -0500
                Re: The current object anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2013-05-16 13:55 +0000
                Re: The current object Bernd Paysan <bernd.paysan@gmx.de> - 2013-05-16 17:45 +0200
                Re: The current object Andrew Haley <andrew29@littlepinkcloud.invalid> - 2013-05-18 05:13 -0500
                Re: The current object Doug Hoffman <glidedog@gmail.com> - 2013-05-18 06:43 -0400
                Re: The current object Andrew Haley <andrew29@littlepinkcloud.invalid> - 2013-05-18 10:03 -0500
                Re: The current object Doug Hoffman <glidedog@gmail.com> - 2013-05-18 11:30 -0400
                Re: The current object Bernd Paysan <bernd.paysan@gmx.de> - 2013-05-19 01:20 +0200
                Re: The current object Andrew Haley <andrew29@littlepinkcloud.invalid> - 2013-05-19 12:33 -0500
                Re: The current object Bernd Paysan <bernd.paysan@gmx.de> - 2013-05-19 01:07 +0200
                Re: The current object Andrew Haley <andrew29@littlepinkcloud.invalid> - 2013-05-19 03:58 -0500
                OO dispatch (was: The current object) anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2013-05-16 14:07 +0000
                Re: OO dispatch Andrew Haley <andrew29@littlepinkcloud.invalid> - 2013-05-18 05:28 -0500
                Re: OO dispatch anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2013-05-20 11:28 +0000
                Re: OO dispatch Andrew Haley <andrew29@littlepinkcloud.invalid> - 2013-05-20 09:00 -0500
                Re: OO dispatch Bernd Paysan <bernd.paysan@gmx.de> - 2013-05-21 01:37 +0200
                Re: OO dispatch Andrew Haley <andrew29@littlepinkcloud.invalid> - 2013-05-21 03:21 -0500
                Re: OO dispatch anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2013-05-21 12:24 +0000
                Re: OO dispatch Andrew Haley <andrew29@littlepinkcloud.invalid> - 2013-05-21 10:18 -0500
                Re: OO dispatch anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2013-05-21 16:03 +0000
                Re: OO dispatch Andrew Haley <andrew29@littlepinkcloud.invalid> - 2013-05-21 12:55 -0500
                Re: OO dispatch Bernd Paysan <bernd.paysan@gmx.de> - 2013-05-29 00:00 +0200
                Re: OO dispatch Mark Wills <markrobertwills@yahoo.co.uk> - 2013-05-28 15:49 -0700

csiph-web