Non-pipeline component programming
Paulo Pinto via Digitalmars-d
digitalmars-d at puremagic.com
Thu Sep 4 07:05:48 PDT 2014
On Thursday, 4 September 2014 at 10:12:13 UTC, Chris wrote:
> On Wednesday, 12 February 2014 at 17:38:30 UTC, H. S. Teoh
> wrote:
>
>>
>> I would say that while it's insightful to apply different
>> paradigms to
>> solve the same problem, one shouldn't make the mistake of
>> shoehorning
>> *everything* into the same approach. This is what Java does
>> with OO, for
>> example, to the detriment of every other paradigm, and
>> frankly, after a
>> while all those singleton classes with static methods just
>> start to
>> smell more and more like ways of working around the OO rather
>> than with
>> it.
>
> I found myself using singelton classes more and more until I
> decided it was time to drop a strict OO approach.
In Smalltalk and Eiffel, where everything is an object this tends
not to
be a problem, because they lack modules anyway.
So objects with class methods play the role of modules in a way
that doesn't feel so strange like in Java and C#. Which given its
package support, it would be more natural to associate certain
code with the package, not with objects.
C# extension methods feel funny because of their requirement to
be encapsulated into a (dummy) class, for example.
>
>> Having said that, though, the component approach is highly
>> applicable,
>> often in unexpected areas and unexpected ways, esp. when you
>> couple it
>> with D's range-based concept. There are certainly algorithms
>> where it
>> makes more sense to treat your data as a graph rather than a
>> linear
>> sequence of nodes, but it's also true that a good percentage
>> of all code
>> is just variations on linear processing, so pipelined
>> component-style
>> programming would definitely be applicable in many places.
>>
>> And nothing says you can't intermix component-style code with
>> OO, or
>> something else.
>
> That's what I've been doing for the last 1 1/2 years. I use
> classes where it makes _sense_, not as the ruling paradigm,
> then add structs (components), ranges and templates. The good
> thing about the freedom D offers is that it encourages you to
> think about the fundamental logic of your program and use
> tailor made solutions for a given problem - instead of a one
> size fits all approach that is bound to lead you down a cul de
> sac. In a way D has given the power back to the programmer's
> brain.
This was actually my first issue when I learned OO in Turbo
Pascal 5.5,
my first OO language.
It was a learning process to understand what should become an
object, and
what should stay as usual procedural (functions/records/units)
code.
Regarding component programming in general, this used to be a
good book on the subject. Only read the first edition (based in
Component Pascal), the second was updated to more "modern"
languages.
http://www.amazon.com/Component-Software-Object-Oriented-Programming-Addison-Wesley/dp/032175302X
--
Paulo
More information about the Digitalmars-d
mailing list