This is Raul Miller's Typepad Profile.
Join Typepad and start following Raul Miller's activity
Join Now!
Already a member? Sign In
Raul Miller
Recent Activity
The issue which strikes me about this kind of hypothetical problem is how little attention is typically paid to the actual decision making process. Here we have some obvious alternatives (get the people off of the track, use the brakes in the trolley) and the typical excuse for disallowing those alternatives is "not enough time" or maybe "the brakes are malfunctioning". So that must mean we have very little time to make the observations about this situation and then act on them. But that kind of limitation should introduce a new issue: how can we be so sure? If we have almost no time to act, how can we be sure that our observations are accurate and complete? If we are talking about a military approach -- we accept that things are bad and we are trying deal with that (we are trying to to minimize destruction in a bad situation) -- then we do not question the premises, we accept them at face value and go for the smallest immediate body count. However, if we are talking about a civilian approach -- this is part of a larger situation, which needs to be dealt with -- then it's not at all clear that the situation being proposed is the situation which needs to be addressed. And, I like the cases presented on this page, because they hint at the scope of these issues. But really it goes way beyond this: That trolley should never have been allowed to get into this situation in the first place, and neither should the people. In other words, this could be an example of what can happen when you are taking action long after you should have gotten involved, or it could be an example of what you might think is happening when you think you know more than you really know.
Toggle Commented Jun 17, 2012 on Trolley Problems at
1 reply
First off, from my point of view, lazy sequences are the moral equivalent, in data structures, of i/o. While in one sense, they are "pure", they have an inherently time-dependent nature and an external dependency which you need to eliminate before they can be completely valid: Hypothetically speaking, if you evaluate [1..] it's going to stop sooner or later. It will never reach infinity -- you'll get a machine failure before then if you let it run long enough. The valuable part of this expression, then, is not the generator that counts up indefinitely, it's the (contained) function which maps generator state to values. So, anyways, this dichotomy between what I see as the useful parts of a lazy system and what I see as the parts that are i/o related make talking about the relationship between OO and FP a bit stilted for me. That said: it has been my general experience that pushing regular, simple computations into my computational "leaf nodes" and bringing irregular "application specific" computations up to towards my computational "root nodes" tends to result in a simple to understand and maintain system and a system that performs well. But, also: in my experience, the "information hiding" aspect of "encapsulation" tends to result in sub-optimal modularity. If nothing else, it's hard to debug hidden information. But sometimes "optimal modularity" is not a worthwhile goal. For example, when work involves "independent administrative entities" you need clear agreements on how they work together, and you need well defined interfaces and standards. And, OO can be a really good model for how to design these interfaces. If you can make FP fit the problem, it can be an even better model (simpler to work with, and simpler to understand), but that depends on the people you are working with and the nature of the problem -- it's not always practical to completely specify all of the relevant information that the system depends on. Anyways, ultimately the "goodness" of a system is a people issue as much as it's an architectural issue.
Raul Miller is now following The Typepad Team
Mar 21, 2012