[#356209] Workaround for "conflict" between ARGV and gets? — RichardOnRails <RichardDummyMailbox58407@...>

gets looks to ARGV, if populated, for its source of data. That is its

9 messages 2010/02/01

[#356306] UTF8 hell — Xavier No謖le <xavier.noelle@...>

Hello,

15 messages 2010/02/02
[#356309] Re: [ENCODING] UTF8 hell — David Palm <dvdplm@...> 2010/02/02

> I fetch rows from an UTF8 database and try to work with the string. To

[#356317] Why Ruby? — Jim Maher <jdmaher@...>

I've asked several friends and associates (application developers) what

52 messages 2010/02/02

[#356433] Hashes versus Arrays — Jerome David Sallinger <imran.nazir@...>

Hello,

11 messages 2010/02/03

[#356439] rdoc_osx_dictionary 1.2.0 Released — Ryan Davis <ryand-ruby@...>

rdoc_osx_dictionary version 1.2.0 has been released!

14 messages 2010/02/03

[#356451] Error: uninitialized constant Mysql::Protocol::UNIXSocket — Shahab Qadeer <shahab_qadeer@...>

/!\ FAILSAFE /!\ Wed Feb 03 23:02:50 +0500 2010

15 messages 2010/02/03

[#356459] hooking subscript operations in a hash — Ralph Shnelvar <ralphs@...32.com>

In order to help debug something, I'd like to hook the hash subscript operation.

17 messages 2010/02/04
[#356461] Re: hooking subscript operations in a hash — Rick DeNatale <rick.denatale@...> 2010/02/04

On Wed, Feb 3, 2010 at 9:38 PM, Ralph Shnelvar <ralphs@dos32.com> wrote:

[#356462] Re: hooking subscript operations in a hash — Ralph Shnelvar <ralphs@...32.com> 2010/02/04

RD> On Wed, Feb 3, 2010 at 9:38 PM, Ralph Shnelvar <ralphs@dos32.com> wrote:

[#356489] Some noob questions — John Ydil <john.gendrot@...>

Hello Ruby friends!

29 messages 2010/02/04
[#356494] Re: Some noob questions — Robert Klemme <shortcutter@...> 2010/02/04

On 02/04/2010 11:58 AM, John Ydil wrote:

[#356568] Re: Some noob questions — Albert Schlef <albertschlef@...> 2010/02/04

Robert Klemme wrote:

[#356605] Re: Some noob questions — Robert Klemme <shortcutter@...> 2010/02/05

On 05.02.2010 00:10, Albert Schlef wrote:

[#356624] Re: Some noob questions — Albert Schlef <albertschlef@...> 2010/02/05

Robert Klemme wrote:

[#356626] Re: Some noob questions — Robert Klemme <shortcutter@...> 2010/02/05

On 02/05/2010 12:50 PM, Albert Schlef wrote:

[#356628] Re: Some noob questions — Albert Schlef <albertschlef@...> 2010/02/05

Robert Klemme wrote:

[#356665] Re: Some noob questions — Robert Klemme <shortcutter@...> 2010/02/05

On 02/05/2010 02:01 PM, Albert Schlef wrote:

[#356811] Re: Some noob questions — Aldric Giacomoni <aldric@...> 2010/02/08

Robert Klemme wrote:

[#356814] Re: Some noob questions — Robert Klemme <shortcutter@...> 2010/02/08

2010/2/8 Aldric Giacomoni <aldric@trevoke.net>:

[#356531] Finding duplicate records before creating using FasterCSV — John Mcleod <john.mcleod@...>

Hello all,

11 messages 2010/02/04

[#356563] Can Ruby Do This? — Mr Bubb <jcabraham@...>

In Perl, you can create a hash of arbitrary depth like so:

14 messages 2010/02/04

[#356685] Google AI Challenge at U of Waterloo — Forthminder <mentifex@...>

Contest runs from 4 February to 26 February 2010.

11 messages 2010/02/06

[#356716] match/scan does not return multiple matches — Michal Suchanek <hramrach@...>

Hello

12 messages 2010/02/06

[#356744] Honest opinion needed... — Schala Zeal <schalaalexiazeal@...>

I've been trying to find a scripting language to integrate into a game

15 messages 2010/02/07

[#356769] C embed assistance — Schala Zeal <schalaalexiazeal@...>

I was wondering if there was a site with reliable documentation covering

15 messages 2010/02/07

[#356792] Why no ++ and --? — Sonja Elen Kisa <sonja@...>

"foo += 1" somehow seems less elegant or pretty as "foo++".

27 messages 2010/02/08

[#356882] "Code must be Chunkable" — Intransition <transfire@...>

I watched Part 1 of this great lecture, and I just had to share:

46 messages 2010/02/08
[#356943] Re: "Code must be Chunkable" — Brian Candler <b.candler@...> 2010/02/09

Thomas Sawyer wrote:

[#357074] Re: "Code must be Chunkable" — Intransition <transfire@...> 2010/02/11

On Feb 9, 11:40 am, Brian Candler <b.cand...@pobox.com> wrote:

[#356944] Need Code to Create Directory Picking Dialog Box — Alex DeCaria <alex.decaria@...>

I have a Ruby program and want to be able to pick a directory using a

14 messages 2010/02/09

[#357030] Exit method? — Charlie Ca <artemisc360@...>

Hello World,

23 messages 2010/02/10
[#357033] Re: Exit method? — Marnen Laibow-Koser <marnen@...> 2010/02/10

Charlie Ca wrote:

[#357103] Can SWIN CommonDialog.openFilename() select multiple files? — Alex DeCaria <alex.decaria@...>

12 messages 2010/02/11

[#357170] how to detect used protocol (SOAP, JSON, XML etc.) — jeljer te Wies <jeljer@...>

Hi guys!.

15 messages 2010/02/12

[#357187] Is there a way to get a method to always run at the end of any descendent's initialize method? — Xeno Campanoli <xeno.campanoli@...>

I have an initialize method I want to run at the end of any daughter or

11 messages 2010/02/12

[#357249] Generating all possible combinations of a 5 digit pattern. — Zach Bartels <no@...>

This is probably childs play for most of you.. But I lack the

17 messages 2010/02/13

[#357446] Dia 1.1 released! — Robert Gleeson <rob@...>

Hey

17 messages 2010/02/16
[#357451] Re: Dia 1.1 released! — Daniel Berger <djberg96@...> 2010/02/16

[#357453] Re: Dia 1.1 released! — Robert Gleeson <rob@...> 2010/02/16

Dan --

[#357909] Re: Dia 1.1 released! — Robert Gleeson <rob@...> 2010/02/23

I'm just leaving an update:

[#357485] Tk on Windows and Mac OS X 10.6 — Eric Christopherson <echristopherson@...>

Is it possible to install Ruby Tk bindings on Windows with

37 messages 2010/02/16
[#357491] Re: Tk on Windows and Mac OS X 10.6 — Albert Schlef <albertschlef@...> 2010/02/16

Eric Christopherson wrote:

[#357492] Re: Tk on Windows and Mac OS X 10.6 — Eric Christopherson <echristopherson@...> 2010/02/17

On Tue, Feb 16, 2010 at 5:57 PM, Albert Schlef <albertschlef@gmail.com> wro=

[#357496] Re: Tk on Windows and Mac OS X 10.6 — Albert Schlef <albertschlef@...> 2010/02/17

Eric Christopherson wrote:

[#357548] Where is Ruby 1.9 'TK' library? — Alex DeCaria <alex.decaria@...>

Just installed Ruby 1.9 and tried to run one of my TK applications that

31 messages 2010/02/17
[#357559] Re: Where is Ruby 1.9 'TK' library? — Luis Lavena <luislavena@...> 2010/02/17

On Feb 17, 7:36=A0pm, Alex DeCaria <alex.deca...@millersville.edu>

[#357567] Re: Where is Ruby 1.9 'TK' library? — Eric Christopherson <echristopherson@...> 2010/02/17

On Wed, Feb 17, 2010 at 3:10 PM, Luis Lavena <luislavena@gmail.com> wrote:

[#357570] Re: Where is Ruby 1.9 'TK' library? — Roger Pack <rogerpack2005@...> 2010/02/17

> Luis, is it possible at all to *add* Tk bindings to a copy of Ruby

[#357572] Re: Where is Ruby 1.9 'TK' library? — Eric Christopherson <echristopherson@...> 2010/02/18

On Wed, Feb 17, 2010 at 5:40 PM, Roger Pack <rogerpack2005@gmail.com> wrote:

[#357577] Re: Where is Ruby 1.9 'TK' library? — Alex DeCaria <alex.decaria@...> 2010/02/18

Roger Pack wrote:

[#357583] Re: Where is Ruby 1.9 'TK' library? — Roger Pack <rogerpack2005@...> 2010/02/18

[#358598] Re: Where is Ruby 1.9 'TK' library? — Alex DeCaria <alex.decaria@...> 2010/03/05

Roger Pack wrote:

[#357617] strings combine — Roger Pack <rogerpack2005@...>

Shouldn't the following be a syntax error?

24 messages 2010/02/18
[#357618] Re: strings combine — Gary Wright <gwtmp01@...> 2010/02/18

[#357637] Re: strings combine — Roger Pack <rogerpack2005@...> 2010/02/18

[#357658] Re: strings combine — Robert Klemme <shortcutter@...> 2010/02/19

On 02/18/2010 11:32 PM, Roger Pack wrote:

[#357681] Re: strings combine — Raul Jara <raul.c.jara@...> 2010/02/19

This doesn't work if you assign the strings to variables though:

[#357683] Re: strings combine — Robert Klemme <shortcutter@...> 2010/02/19

2010/2/19 Raul Jara <raul.c.jara@gmail.com>:

[#357697] Re: strings combine — Raul Jara <raul.c.jara@...> 2010/02/19

Robert Klemme wrote:

[#357707] Re: strings combine — Robert Klemme <shortcutter@...> 2010/02/19

On 19.02.2010 17:40, Raul Jara wrote:

[#357716] Re: strings combine — Raul Jara <raul.c.jara@...> 2010/02/19

> Robert@babelfish ~

[#357621] RTranslate Gem (Open-URI) and Encoding — The Chromag <brent@...>

I'm using the rtranslate gem (sishen-rtranslate) to handle translating

12 messages 2010/02/18

[#357622] Ruby conditionals subtlety? — Farhad Farzaneh <ff@...>

Hi,

18 messages 2010/02/18
[#357630] Re: Ruby conditionals subtlety? — Ryan Davis <ryand-ruby@...> 2010/02/18

[#357632] Re: Ruby conditionals subtlety? — Farhad Farzaneh <ff@...> 2010/02/18

Ryan Davis wrote:

[#357641] Re: Ruby conditionals subtlety? — Ryan Davis <ryand-ruby@...> 2010/02/18

[#357642] Re: Ruby conditionals subtlety? — Farhad Farzaneh <ff@...> 2010/02/19

Ryan Davis wrote:

[#357678] Get Goolge Result — Sajjad Seyyed <treep_ir@...>

Hi

15 messages 2010/02/19

[#357878] Speed sprint — Benedikt Müller <benemue@...>

Hi

23 messages 2010/02/22

[#357899] Test::Unit Newbie Question regarding loops — Yotta Meter <spam@...>

With the following example:

13 messages 2010/02/23
[#357936] Re: Test::Unit Newbie Question regarding loops — Brian Candler <b.candler@...> 2010/02/23

Yotta Meter wrote:

[#357939] Re: Test::Unit Newbie Question regarding loops — Yotta Meter <spam@...> 2010/02/23

This is really the great idea I was looking for, thanks. Obviously I'm

[#357940] How do I set the encoding on a regexp ? — Perry Smith <pedzsan@...>

Title pretty much says it all. Here is a small sample program:

20 messages 2010/02/23
[#358010] Re: How do I set the encoding on a regexp ? — David Springer <dnspringer@...> 2010/02/24

Perry,

[#358060] Array index question — John Smith <ks1911shooter@...>

Question about an array. Say I have the following array...

12 messages 2010/02/25

[#358108] Installing Pg gem for PostGreSQL 8.4 — Saeed Bhuta <saeed.bhuta@...>

Hi All,

35 messages 2010/02/26
[#358114] Re: Installing Pg gem for PostGreSQL 8.4 — Shashank Tiwari <tshanky@...> 2010/02/26

Are you installing this on a mac, windows or a linux environment? You may

[#358116] Re: Installing Pg gem for PostGreSQL 8.4 — Saeed Bhuta <saeed.bhuta@...> 2010/02/26

Shashank Tiwari wrote:

[#358256] Re: Installing Pg gem for PostGreSQL 8.4 — Saeed Bhuta <saeed.bhuta@...> 2010/03/01

Saeed Bhuta wrote:

[#358269] Re: Installing Pg gem for PostGreSQL 8.4 — Reid Thompson <reid.thompson@...> 2010/03/01

On Mon, 2010-03-01 at 17:56 +0900, Saeed Bhuta wrote:

[#358278] Re: Installing Pg gem for PostGreSQL 8.4 — Saeed Bhuta <saeed.bhuta@...> 2010/03/01

Here is the result of the '$ dpkg --get-selections' command;

[#358288] Re: Installing Pg gem for PostGreSQL 8.4 — Reid Thompson <reid.thompson@...> 2010/03/01

On Mon, 2010-03-01 at 23:19 +0900, Saeed Bhuta wrote:

[#358289] Re: Installing Pg gem for PostGreSQL 8.4 — Saeed Bhuta <saeed.bhuta@...> 2010/03/01

Reid Thompson wrote:

[#358330] Re: Installing Pg gem for PostGreSQL 8.4 — Reid Thompson <reid.thompson@...> 2010/03/01

On Tue, 2010-03-02 at 00:58 +0900, Saeed Bhuta wrote:

[#358370] Re: Installing Pg gem for PostGreSQL 8.4 — Saeed Bhuta <saeed.bhuta@...> 2010/03/02

Reid Thompson wrote:

[#358386] Re: Installing Pg gem for PostGreSQL 8.4 — Reid Thompson <reid.thompson@...> 2010/03/02

On Tue, 2010-03-02 at 17:24 +0900, Saeed Bhuta wrote:

[#358387] Re: Installing Pg gem for PostGreSQL 8.4 — Saeed Bhuta <saeed.bhuta@...> 2010/03/02

Reid Thompson wrote:

[#358399] Re: Installing Pg gem for PostGreSQL 8.4 — Reid Thompson <reid.thompson@...> 2010/03/02

On Tue, 2010-03-02 at 23:09 +0900, Saeed Bhuta wrote:

[#358402] Re: Installing Pg gem for PostGreSQL 8.4 — Reid Thompson <reid.thompson@...> 2010/03/02

On Tue, 2010-03-02 at 11:23 -0500, Reid Thompson wrote:

[#358117] Music Theory (#229) — Daniel Moore <yahivin@...>

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

29 messages 2010/02/26
[#358430] Re: Music Theory (#229) — Ben Rho <dearbenj@...> 2010/03/03

Daniel X Moore wrote:

[#358444] Re: Music Theory (#229) — Daniel Moore <yahivin@...> 2010/03/03

Wow, this is some great discussion! Both piano and guitar chords are

[#358467] Re: Music Theory (#229) — Ben Rho <dearbenj@...> 2010/03/03

Daniel X Moore wrote:

[#358141] running a file — John Pasqa <jasello098@...>

ok, i'm writing a ruby program that interprets some text and does stuff

14 messages 2010/02/27

[#358204] Shoes? — Kurtis Rainbolt-greene <thinkwritemute@...>

Ok, so I'm getting back into GUI development and I want to use Ruby.

23 messages 2010/02/28
[#358205] Re: Shoes? — Howard Roberts <howardroberts@...> 2010/02/28

Kurtis Rainbolt-greene wrote:

[#358208] Re: Shoes? — Kurtis Rainbolt-greene <thinkwritemute@...> 2010/02/28

Howard Roberts wrote:

[#358228] Re: Shoes? — Ryan Davis <ryand-ruby@...> 2010/02/28

Re: "Code must be Chunkable"

From: James Coplien <jcoplien@...>
Date: 2010-02-19 17:20:15 UTC
List: ruby-talk #357705
Let me respond to bits of Marnen's excellent post at a time.

Marnen Laibow-Koser wrote:
> Thanks for replying!  I've probably injected myself into a debate that's 
> a bit over my head, but that's how learning happens.

For all of us


> James Coplien wrote:
>> Marnen Laibow-Koser wrote:
>>> James Coplien wrote:
>>> [...]
>> 
>>> I cannot imagine *not* representing a bank account as an object in a 
>>> bank software system.  The balance is part of such an object's state.
>> 
>> No. In every example I've seen, financial records are kept as audit 
>> trails that track deposits, withdrawals, interest accruals, etc. There 
>> is no "balance" sitting on a disk nor sitting in memory. The balance is 
>> computed as the sum of accruals, less the sum of decreases, against some 
>> baseline. All these data are in a database — but no balance.
> 
> That's implementation.  It is irrelevant to interface, no?

It affects the internal form of the system. That form is called its 
architecture: the parts and their relationships. Those parts have 
interfaces, and the way we think about them affects the way they are 
implemented in the code.

For example, if we implement a bank system in terms of incremental audit 
trails and dynamic association between those elements and roles that 
appear in dynamically created account Contexts, it's a much different 
design than if an Account is a data object. It shows through. Kent Beck 
has long argued that you can't hide a bad design behind a good 
interface. Brenda Laurel emphasizes the importance of the direct 
manipulation metaphor. Alan Kay talks about these objects as extensions 
of the images of your own mind. That is what DCI is trying to do.

More to the point, the way that the market thinks about them (the 
stakeholders) affects their rates of change. Much of design is about 
eliciting change points so that frequently changing stuff is easy to 
change, is localized, and is separated from the stuff that doesn't 
change so much. That isn't all in the interface, unfortunately. In fact, 
it is often just the opposite. Most of the interface of a Prius car is 
the same as that for an ordinary gasoline-powered automobile, but the 
internal architecture is radically different.


>> Let me reiterate my question, which yet goes unanswered here: Can you 
>> name me one, real, concrete system in real use, in a real financial 
>> institution, where the account is an object, and its field is a balance, 
>> within a system that manages the account itself?
> 
> First, your question probably goes unanswered because the only people 
> who could answer it are people who've worked on the proprietary systems 
> in question.  I have the impression that not much financial software is 
> open source.

O.K., well, I can speak for what I have seen in Saxo Bank, in Swiss Bank 
Chicago, in Swiss Bank London, in Allianz, in a large Danish pension 
company and in many other discussions with financial people at 
conferences. Even Ron Jeffries' XP book features a user story that 
describes an account balance in these terms. If you have done your 
domain analysis, these things are obvious to someone in the business.

Another obvious failure is that people designing a telecom system 
thinking that a phone call is an object. It isn't an object in any phone 
system I've seen. I've seen many inside AT&T and Western Electric, and 
publications from Bell Northern Research / Nortel indicate that also 
avoid this failure mode. The same was true at Avaya, AGCS, ... shall I 
go on?

The problem is that objects became really popular in the industry in 
about 1990 and now everything that is a Thing has to be an object. The 
naivté was fueled by early methodologists who told us a number of silly 
things: everything is an object; objects should be created in isolation; 
objects are the nouns in your requirements document; and so forth.

And so we have a claim here about accounts being objects, 
unsubstantiated in reality, but based in such an overwhelmingly strong 
mythology that it prompts multiple denials about the claim of how real 
systems implement this. It is a matter of maturity. It is easy to 
stumble into a great tool like Ruby and to look for ways to apply its 
class facilities to everything in site. But there are much more subtle 
structures at work here. What's really cool about Ruby is that rises 
even to this challenge. (Most languages can express DCI concepts in some 
degree. There's only one popular language that can't, and I'll let you 
figure that out. Class, that's your homework assignment for tomorrow.)

The popular, naive claim doesn't work in practice — which is why you 
don't see it in practice. Let's contemplate your account example with a 
balance as a member. What is the object's scope? Its lifetime? How many 
of these objects exist in a banking system? How is concurrency handled 
(that's the killer): when the actuaries and account holder and the bank 
want to access it at the same time? What is the scope and duration of a 
transaction in terms of the object? If you have transaction semantics 
(and all banks do, to avoid losing money under concurrency) what is the 
mapping from the object model to the transactional model and the 
relational model that usually supports it? Remember: Ontos and its 
cousins were largely failures, because they tried to stay in the 
paradigm of your grandfather's object-oriented architecture. The 
complexity just got out of hand.

DCI actually offers reasonable answers to all of these questions, 
because it's rooted in structures that can capture and express higher 
levels of complexity, both static and dynamic, than a POJO approach can. 
I think that's what got this thread started: I described a solution to a 
problem that is more complex than people can conceptualize using their 
grandfather's object-oriented programming, and understanding broke down. 
I think that people fail to understand it's a paradigm shift — but 
that's maybe a liability of taking one's understanding from a few hours 
of videotapes.


> Second, it's irrelevant whether balance is a field or a calculation, at 
> least if the uniform access principle is still to hold.


That claim holds only within a single contextual thread. Another set of 
immature foundations can be found in the Agile world where we are 
supposed to be focused on the customer. And most of the naive claims 
about accounts here come from that perspective. I can just read the user 
stories and use those to drive my design, using TDD or something else. 
Just find all the elements of all the interfaces and just organize them.

The fact is that most of the computation in a bank has nothing to do 
with someone who has an account, but who is in the back office managing 
investments or doing analyses. They're called actuaries in English. 
Actuaries care little about the status of your bank account. They care 
about the transactions.

There are many other sets of users who are looking at these data: 
auditors, tellers, ATM machines, other banks, the national bank, 
investors, loan officers, bank executives. All you need to do is to take 
all the responsibilities of all those stakeholders and divide them up 
into nice interfaces that give you nice objects that have nice coupling 
and cohesion. It's intractably complex.

DDD has recently drawn attention to the importance of unearthing domain 
concepts that are stable over time. They have little to do with the 
requirements of the stakeholders. Very few people understand that. The 
"dumb" data objects of DCI come from this domain analysis; they are 
often the model objects one finds in MVC. The intelligence that serves 
the actuaries, the accountants, the loan officers and everyone else play 
out in use cases that are defined in terms of roles — roles that are 
mapped onto the right domain objects at the right time by the right 
context.

The essence of an object-oriented system is that the mappings from roles 
to objects changes thousands or millions of times a second. Your 
grandfather's OO simulated a very weak version of that called inclusion 
polymorphism. The DCI mapping brings these dynamics to the surface.

> As a 
> hypothetical user of class Account, I want to be able to call 
> Account#balance and get a balance.  I don't care in the least what has 
> to go on to get me that balance.

So you don't care about its data. It is essentially a service, a 
computation. We collect those services together in DCI and call them 
Contexts. You instead are trying to convince me that they should be 
objects. O.K., a Context is an object by some definition, and if that's 
enough for us to agree, then we agree. But it is not a domain object — 
that creates an architecture where the pressure points of change are all 
in the wrong place. A simple domain analysis of a financial application 
will bear that out quickly.

More to the point, it is useful to distinguish between objects (as Dahl 
or Nygaard would recognize them) and the roles that they play. If 
programming language is to be about intentionality (communicating the 
design intent of the programmer) then we want the programming formalisms 
to carry this distinction forward. That's what DCI is: a set of 
formalisms that carry archetypical elements of human cognition and 
machine computation forward into the code.

Calling it an object is a little like calling it a thing. I want a 
little more insight from these labels.


> I think of an account as being an object. Doesn't that make it the 
> proper mental model for me?

No, you're a programmer. And that's O.K.: programmers are people, too, 
and we need to support ehir model. But, again, object orientation is all 
about capturing mental models in code, and we need to be attentive to 
stakeholders other than the programmer. Like Raskin said: The interface 
is the program. A user experience person would pursue this issue using 
the kind of question I posed in an earlier post, leading to the 
description (e.g., for a money transfer) that I think about things in 
terms of source accounts and destination accounts. Unfortunately, my 
bank doesn't have source accounts. I can conceptualize a source account, 
but can't create one, can't open one, can't find one. They're not
*objects*. They're protocols, or interfaces to objects. They're roles. 
Those, too, are part of our mental models. And they should be part of 
the code as well. If you look at where Rebecca Wirfs-Brock has taken 
responsibility-driven design, it is into this realm of roles. Objects 
don't have responsibilities; their roles do. That was the conversation 
that Trygve and I recall from his discussion with Rebecca on the deck of 
the Hurtigruten all those years ago. There are some additional concepts 
that we should be attentive to as well, including algorithms and the 
associations from roles to objects. DCI packages most of these in roles 
and Contexts.

If all you have learned is objects, then everything to you is an object. 
That is whey I said you might make a good student of Kant. A good 
exploration of end-user mental models shows that they are much more 
subtle. Introducing roles provides a much better match for this model 
and provides a much better foundation for good software structure than 
the pure object approach does. Trygve published some preliminary metrics 
about this on object-composition, and you might have a look at them and 
at the surrounding discussion.


> Uh, what?  You can't transfer money to your phone bill.  You can 
> transfer money to your account at the phone company -- and you can do so 
> precisely because it is (or behaves like) an account.

No, the entity I manipulate on my web page is exactly my phone bill. 
(Denmark has an advanced banking system, so maybe those of you in other 
countries still do this with checks to the phone company and so forth — 
but even for one of my accounts outside Europe, I can treat the phone 
bill as an entity.) That's my mental model. It's not that I'm paying the 
phone company; I pay my phone bill. No one says at the end of the month 
"I need to pay my phone company." They say "I need to pay my phone 
bill."


>> My point is that 
>> it doesn't have to be, and that in fact, very few accounts are. They 
>> rather are Contexts than Data objects.
> 
> And I really don't see where you come to that conclusion.
> 
>> 
>> This facet of the underpinnings of DCI is not about language expression, 
>> but of about how we think. That's the paradigm shift part.
> 
> Yes, but I so far do not agree with your premises here, which means I 
> can't agree with the paradigm that develops from them.  I'm certainly 
> willing to be convinced, though.

I'm still awaiting concrete examples that are different than those 
banking examples that provide much of the background for my premises. In 
any case, it shouldn't matter if you are trying to understand. Adopt my 
assumptions arbitrarily if it helps you see the ideas more clearly and I 
can provide the documentation later. I think that if you explore the 
real world you'll see that my assumptions hold.

I hope this helps. I really appreciate your specific and forceful 
questions — I think it helps me communicate my ideas more concretely.
-- 
Posted via http://www.ruby-forum.com/.

In This Thread