Whose Fish? - Theory and Concepts

This is a discussion on Whose Fish? - Theory and Concepts ; > > What is not "real world" about solving variance problems? There are > > plenty of business uses here. Oh wait, you must mean "real world", as > > in "Topmind's world". > > Actually, this puzzle is very ...

+ Reply to Thread
Page 2 of 12 FirstFirst 1 2 3 4 ... LastLast
Results 11 to 20 of 112

Whose Fish?

  1. Default Re: Whose Fish?

    > > What is not "real world" about solving variance problems? There are
    > > plenty of business uses here. Oh wait, you must mean "real world", as
    > > in "Topmind's world".

    >
    > Actually, this puzzle is very "real world" .
    > And here is a USA-specific example :


    It really is; but you have to be an abstract thinker to be able to
    look at a very specific problem (ex: "whose fish"), and be able to
    abstract it into a generic variance problem framework. The ability to
    solve this example is the ability to solve many "paying" i.e. business
    problems. In your example we're getting into US government level
    problems. Hooketh me up!!

    > In IEEE Spectrum last year (I don't recall if it was the issue focussing on
    > counter-terrorism or just a regular article - I think it was the former) ,
    > there was an article regarding a company who had a system that was building
    > an info base of facts akin to the puzzle, that could then establish
    > relationships between entities in the info base.
    >
    > This system was being used for intelligence/counter-terrorism purposes (the
    > system also had a good feature in that it was able to 'anonymise' the info
    > base so that the query/execution engine operated without revealing
    > human-valued data - names, addresses, acquaintances, bank accounts etc) .
    >
    > Regarding best implementation, declarative systems (logic programming etc)
    > are usually best-suited for solving problems akin to the puzzle
    >
    > [ Complaints about topmind always attempting to change the goal-posts
    > regarding any problem domain other than the ill-defined "biz app" ,
    > snipped but read and acknowledged. ]
    >
    > Regards,
    > Steven Perryman




  2. Default Re: Whose Fish?


    Jordan Marr wrote:
    > > It is *not* representative of the apps and issues I have faced. Maybe
    > > I live in a bubble somehow, but perhaps you do also. If I can be
    > > mislead, so can you. You are not the center of the universe; we each
    > > only have one lifetime to live.

    >
    > MOST of the business apps I have coded have been pretty straight
    > forward CRUD style apps, current project included. I'm not cocky
    > enough to say I've mastered those, but I feel pretty confident in
    > them.


    CRUD apps are often not trivial because they are often marred in tons
    of funny little business rules. I often consider business modeling the
    modeling of the current manager's/owner's/customer's personality and
    whims rather than a striving for a "one true" math or science.

    Sometimes techies will indeed say, "this is what the framework gives
    you and you will live with it", which simplifies developement (at
    least initially), but users are not happy with such.

    I will agree they were simpler in the pre-web days because desktop
    GUI's were easier and richer than the web equivalent (although harder
    to deploy), but funny little biz rules and exceptions to the rules
    still complicated things.

    If it was easy, it would all be automated by now. I find most CRUD
    abstractions fall prey to the 80/20 rule where the abstraction handles
    80% of the cases, but 20% muck it up and need nitty gritty diddling.

    > But I have also worked on some reallllly cool apps, and this example
    > could easily factor in to one of the cooler projects I aspire to work
    > on in my career. You know, the "fun stuff" that you still get paid
    > for. (Actually, I find all programming fun, even the CRUD stuff is
    > entertaining to me).
    >
    > It seems like your mission on here is to fix something that's not
    > broken. Most programmers already know how to program CRUD business
    > apps, so you're beating a dead horse.


    Many also do a bad job on them. They may "run", but maintainability is
    out the door.

    >
    > So let's go ahead and add "apps that deal with variance" to your ever
    > growing list of apps that PR can't deal with well.


    Reframe your example in terms of a fairly common business need/example
    instead of classroom back-page stuff, and maybe I will comment on it.
    Otherwise, failing to comment on it does not necessarily make PR flunk
    it. If it is a common biz need like you imply, then such a reframing
    should be fairly easy for you. Why produce shapes and animals when you
    can do invoices, orders, products, etc. to illustrate the same
    thing???

    > What is that now? Variance apps, drivers, reusable frameworks, CAD
    > based, and ANYTHING other that CRUD "business apps".


    Let's see your reusable CRUD framework that bends to user requirements
    well. Dispite the prevalence of CRUD, nobody has mastered such a
    framework. The most effective, or at least popular, solutions seemed
    to be things like Visual Basic and PowerBuilder that let one create
    crap fast. Businesses figure if the end result is always messy, you
    might as well make creating that mess a quicker process. If you have
    to go to the dentist for a root-c****, might as well take the short
    road.

    >
    > Nice. Where do I sign up?!
    >
    > Jordan


    -T-


  3. Default Re: Whose Fish?

    On 9 May 2007 22:04:13 -0700, topmind <topmind{}technologist.com>
    wrote:

    >
    >Jordan Marr wrote:
    >> > Personally, I don't think these kinds of puzzles are very useful for
    >> > comparing the real-world utility of paradigms.

    >>
    >> What is not "real world" about solving variance problems? There are
    >> plenty of business uses here. Oh wait, you must mean "real world", as
    >> in "Topmind's world".

    >
    >It is *not* representative of the apps and issues I have faced. Maybe
    >I live in a bubble somehow, but perhaps you do also. If I can be
    >mislead, so can you. You are not the center of the universe; we each
    >only have one lifetime to live.
    >


    Sorry I managed to delete the first few posts in the thread, so this
    post is really directed at the first one as well as this one.

    In my mind there are two issues that I have problems with. The first
    one is where someone is trying to convert a 'logic' problem to an OO
    one. I have an issue with this because to me, logic is not
    condusive to facilitating object oriented conceptualising which as far
    as I am concerned requires a great deal of fuzzyness.

    To me, logic will always equate to procedural thinking (and should not
    be equated to being a bad thing - it is, in its place a good thing).
    But I will say that to me an object may contain logic parts and in
    that regard one could also say that an object may contain procedural
    parts, but that does not mean to me that objects are always logical
    entities.

    I have noticed over the years that some people require contextual
    detail when doing OO and some people don't. I wonder if that culture
    defines whether someone does OO following rigerous methods and
    techniques (OO Principles) or if they just go with the flow so to
    speak. i.e. does the 'context' of ones culture (whether they are
    naturally high or low context people) affect the way people approach
    OO.


    The second issue more directly relates the problem being solved to the
    solution provided. That is, to me this type of problem (logic
    problems) are usually solved by some form of mathematical equation.
    I think that in software development I have always referred to these
    types of equations as 'algorithms' which are usually I think
    implemented in a single high level function call (often to a bunch of
    smaller detailed function calls). Given this, I cant say how one
    could claim to have developed an object oriented solution when
    implementing a single algorithm when the whole meta structure of
    executing an algorigm is nothing more (to me) than the procedural
    implementation of a logical set of steps (calculations). I think
    one could say they have used object oriented techniques to solve the
    problem (such as encapsulation, polymorphism and abstraction), but I
    dont think one should suggest that the result is in its nature object
    oriented, as I do not see an algorithm as being 'oriented towards
    objects' (its more oriented towards being a service) since it can be
    executed as a function/method call which to me at best perhaps is
    merely part of an object.





    ----------------
    AndyW,
    Mercenary Software Developer

  4. Default Re: Whose Fish?


    Jordan Marr wrote:
    > > Fine, if you are the one in a hundred who are actually writing an
    > > animal, shape, or device driver app, use OO.

    >
    > I don't write drivers, but writing reusable frameworks is basically
    > the same, and I do write those all the time. The idea is, instead of
    > solving a problem once in a very app specific way, you abstract and
    > encapsulate the solution to the problem in a OO way that is reusable
    > for ANY problem (especially including business domain problems!).


    "Reuse" has seemed to fall out of favor as a top claim of OOP.
    ("Making programs easier to change" seems to be the top claim by my
    observation in many debates, closely followed by "models human
    thinking better"[1].) Even OO proponents generally don't claim reuse
    improvement much anymore. If you wish to show OO being better reuse,
    be my guest.

    >
    > In fact, to solve this "unrealistic" problem, I reused my very own OO
    > <gasp!> reusable <gasp!> business framework<gasp!>, and I also created
    > a new reusable OO class that I will most certainly use at some point
    > in the future on a... you guessed it... business app!


    Sounds great. Now show the code and show how it kicks P/R's butt. I
    finished my example with runnable source code (R. Martin's payroll).
    Your turn. Verbal claims don't cut it here.

    >
    > Yeah, that's right, because the definition of "business app" really ==
    > "any project that is important enough to be funded". So I'm coming
    > out of this exercise ahead and more OO for the wear.
    >


    Not usable info.

    >
    > Jordan
    >


    [1] This is perhaps true on a relative scale. OO may indeed model some
    people's head better, but you can't assume everybody's head is the
    same. This issue is one of the reasons I chose "topmind" as my handle:
    because my head best fits Table Oriented Programming.

    -T-


  5. Default Re: Whose Fish?


    Daniel T. wrote:
    > topmind <topmind{}technologist.com> wrote:
    >
    > > On May 9, 11:32 am, Jordan Marr <jnm...{}hotmail.com> wrote:
    > > > > I have similar complaints about the shape, animal, and device-driver
    > > > > examples heavily used in OO books.
    > > >
    > > > Sentence should read:
    > > >
    > > > "I have similar complaints about the shape, animal, and device-driver
    > > > examples heavily used in *real-life*."

    > >
    > > Fine, if you are the one in a hundred who are actually writing an
    > > animal, shape, or device driver app, use OO.
    > >
    > > In biology, there are actually usually multiple candidate taxonomies
    > > such that it is not a clean tree. I think it would be better to keep
    > > such info in a database so that different researchers can access them
    > > with different tools rather than force them all to use Java or Python,
    > > etc.
    > >
    > > Further, most device driver writers are being outsourced to 3rd world
    > > anyhow. The further you are from end-user requirements, the more
    > > likely your job is to be offshored (for good or bad).

    >
    > I think it is important to remember why Simula was developed in the
    > first place. If your problem domain does not involve doing simulations,
    > then OO may very well not be appropriate.


    If the industry agreed that OO generally only shines for physical
    simulations and not push it into nearly all domains, then I would not
    be ranting against it. You may feel it is meant for mostly physical
    niches, but that is not the consensus among OO proponents

    -T-


  6. Default Re: Whose Fish?

    > > I don't write drivers, but writing reusable frameworks is basically
    > > the same, and I do write those all the time. The idea is, instead of
    > > solving a problem once in a very app specific way, you abstract and
    > > encapsulate the solution to the problem in a OO way that is reusable
    > > for ANY problem (especially including business domain problems!).

    >
    > "Reuse" has seemed to fall out of favor as a top claim of OOP.
    > ("Making programs easier to change" seems to be the top claim by my
    > observation in many debates, closely followed by "models human
    > thinking better"[1].) Even OO proponents generally don't claim reuse
    > improvement much anymore. If you wish to show OO being better reuse,
    > be my guest.


    These days every program consists of two or three parts:
    Language Framework: the framework of preexisting *reusable* classes
    provided by the language developer. This framework is OO and
    excercises the *reuse* that I am touting.

    User Frameworks: frameworks created by users. These can be pre-
    existing frameworks that were created before the project that are
    generic and abstract enough to be reused to solve the same kinds of
    problems continually. An example would be a business framework that
    encapsulates dealing with business validation rules. In my mind this
    also includes the business domain layer, which can serve multiple apps
    (but usually only serves one).

    The Application itself: This is where the procedural programming
    comes into play. This layer calls upon all the framework objects it
    needs to solve the needs of the application at hand.
    When I start an app I first check to see if the tools I need to solve
    the problem already exist in the language framework. If I need more
    tools, my next stop is to look in the public domain arena for well
    abstracted classes that are generic enough to be resued in my app.
    Finally, if none exist, I create my own reusable object.

    As an example, say my app requires that I pick a random number between
    1 and 10,000. First I would look to the language framework for a
    random number generator (which .net has one already). An object
    should have one purpose, and .net's random number generator does just
    that.. this allows it to be used in many projects.

    If a random generator did not exist, I would create my own reusable
    random generator class, and then plug it into my app.

    Now, what many non OO people would do is to write the random number
    generator algorithm directly inside their application layer
    somewhere... perhaps they parameterize it and put it in a method
    somewhere, or even worse, maybe they integrate the algorithm right in
    with the button even where it is required.

    > Sounds great. Now show the code and show how it kicks P/R's butt. I
    > finished my example with runnable source code (R. Martin's payroll).
    > Your turn. Verbal claims don't cut it here.


    OK, but I don't really have anywhere to post it unless I simply post
    the source here.

    Jordan


  7. Default Re: Whose Fish?

    > CRUD apps are often not trivial because they are often marred in tons
    > of funny little business rules. I often consider business modeling the
    > modeling of the current manager's/owner's/customer's personality and
    > whims rather than a striving for a "one true" math or science.
    >
    > Sometimes techies will indeed say, "this is what the framework gives
    > you and you will live with it", which simplifies developement (at
    > least initially), but users are not happy with such.


    Artificial constraints (technology or whatever) should never define
    the results. I believe the results should be stated ideally, and then
    everyone should strive to satisfy that goal.

    A good app meets every last one of the client's needs as stated in the
    specs, regardless of whether its P/R or OO.

    > I will agree they were simpler in the pre-web days because desktop
    > GUI's were easier and richer than the web equivalent (although harder
    > to deploy), but funny little biz rules and exceptions to the rules
    > still complicated things.


    Indeed.

    > If it was easy, it would all be automated by now. I find most CRUD
    > abstractions fall prey to the 80/20 rule where the abstraction handles
    > 80% of the cases, but 20% muck it up and need nitty gritty diddling.


    I agree.

    > > It seems like your mission on here is to fix something that's not
    > > broken. Most programmers already know how to program CRUD business
    > > apps, so you're beating a dead horse.

    >
    > Many also do a bad job on them. They may "run", but maintainability is
    > out the door.


    I agree, many do a horrible job. I always strive for maintainability
    while designing and coding a problem.. The temptation is always there
    to take a shortcut and simply solve the problem at the expense of
    future maintainability. But a little bit of forethought can really do
    a lot for the future of an app!

    > Reframe your example in terms of a fairly common business need/example
    > instead of classroom back-page stuff, and maybe I will comment on it.
    > Otherwise, failing to comment on it does not necessarily make PR flunk
    > it. If it is a common biz need like you imply, then such a reframing
    > should be fairly easy for you. Why produce shapes and animals when you
    > can do invoices, orders, products, etc. to illustrate the same
    > thing???


    Once again, you want me to conform to your conditions, and then,
    MAYBE, you will grace me with a comment! lol. That is rich!

    No, reframing that question would NOT be fairly easy, and I can see it
    would be a waste of my time, as you would probably just dismiss it for
    one reason or another.

    While I will not re create a perfectly good problem, I will suggest a
    possible variation of the problem and let your imagination do the
    rest:

    Consider the human genome project. Goals:
    - identify all the approximately 20,000-25,000 genes in human DNA
    - determine the sequences of the 3 billion chemical base pairs that
    make up human DNA
    - store this information in databases
    - improve tools for data ****ysis

    Notice they said "store" this information in a database. hehe.

    This problem is very similar to "whose fish", and you can't see why,
    I'm not telling you! ;^)

    > Let's see your reusable CRUD framework that bends to user requirements
    > well. Dispite the prevalence of CRUD, nobody has mastered such a
    > framework. The most effective, or at least popular, solutions seemed
    > to be things like Visual Basic and PowerBuilder that let one create
    > crap fast. Businesses figure if the end result is always messy, you
    > might as well make creating that mess a quicker process. If you have
    > to go to the dentist for a root-c****, might as well take the short
    > road.


    My apps bend just fine to user requirements. That's why I have so
    much time to debate with you.


    Jordan


  8. Default Re: Whose Fish?


    Jordan Marr wrote:
    > > > I don't write drivers, but writing reusable frameworks is basically
    > > > the same, and I do write those all the time. The idea is, instead of
    > > > solving a problem once in a very app specific way, you abstract and
    > > > encapsulate the solution to the problem in a OO way that is reusable
    > > > for ANY problem (especially including business domain problems!).

    > >
    > > "Reuse" has seemed to fall out of favor as a top claim of OOP.
    > > ("Making programs easier to change" seems to be the top claim by my
    > > observation in many debates, closely followed by "models human
    > > thinking better"[1].) Even OO proponents generally don't claim reuse
    > > improvement much anymore. If you wish to show OO being better reuse,
    > > be my guest.

    >
    > These days every program consists of two or three parts:
    > Language Framework: the framework of preexisting *reusable* classes
    > provided by the language developer. This framework is OO and
    > excercises the *reuse* that I am touting.
    >
    > User Frameworks: frameworks created by users. These can be pre-
    > existing frameworks that were created before the project that are
    > generic and abstract enough to be reused to solve the same kinds of
    > problems continually. An example would be a business framework that
    > encapsulates dealing with business validation rules. In my mind this
    > also includes the business domain layer, which can serve multiple apps
    > (but usually only serves one).
    >
    > The Application itself: This is where the procedural programming
    > comes into play. This layer calls upon all the framework objects it
    > needs to solve the needs of the application at hand.
    > When I start an app I first check to see if the tools I need to solve
    > the problem already exist in the language framework. If I need more
    > tools, my next stop is to look in the public domain arena for well
    > abstracted classes that are generic enough to be resued in my app.
    > Finally, if none exist, I create my own reusable object.
    >
    > As an example, say my app requires that I pick a random number between
    > 1 and 10,000. First I would look to the language framework for a
    > random number generator (which .net has one already). An object
    > should have one purpose, and .net's random number generator does just
    > that.. this allows it to be used in many projects.
    >
    > If a random generator did not exist, I would create my own reusable
    > random generator class, and then plug it into my app.
    >
    > Now, what many non OO people would do is to write the random number
    > generator algorithm directly inside their application layer
    > somewhere... perhaps they parameterize it and put it in a method
    > somewhere, or even worse, maybe they integrate the algorithm right in
    > with the button even where it is required.


    What is wrong with putting such in a function? An entire class is
    overkill. Also, as far as reuse, I lean toward mix-and-match "helpers
    instead of wrappers" because one-size-fits-all genericy is not a
    realizable goal I've found out the hard way. More on this:

    http://c2.com/cgi/wiki?HelpersInsteadOfWrappers

    >
    > > Sounds great. Now show the code and show how it kicks P/R's butt. I
    > > finished my example with runnable source code (R. Martin's payroll).
    > > Your turn. Verbal claims don't cut it here.

    >
    > OK, but I don't really have anywhere to post it unless I simply post
    > the source here.


    It's fairly easy to have your own web-log these days (if you don't
    mind annoying ads).

    >
    > Jordan


    -T-


  9. Default Re: Whose Fish?

    > In my mind there are two issues that I have problems with. The first
    > one is where someone is trying to convert a 'logic' problem to an OO
    > one. I have an issue with this because to me, logic is not
    > condusive to facilitating object oriented conceptualising which as far
    > as I am concerned requires a great deal of fuzzyness.
    >
    > To me, logic will always equate to procedural thinking (and should not
    > be equated to being a bad thing - it is, in its place a good thing).
    > But I will say that to me an object may contain logic parts and in
    > that regard one could also say that an object may contain procedural
    > parts, but that does not mean to me that objects are always logical
    > entities.


    Andy,
    In fact, all software applications have logic. They all have user
    input, some sort of logic processing on the input, and finally some
    sort of output, to the screen, printer, network, db, or somewhere. An
    OO software without any logic would simple be a abstracted model of
    the problem domain that didn't do anything!

    > I have noticed over the years that some people require contextual
    > detail when doing OO and some people don't. I wonder if that culture
    > defines whether someone does OO following rigerous methods and
    > techniques (OO Principles) or if they just go with the flow so to
    > speak. i.e. does the 'context' of ones culture (whether they are
    > naturally high or low context people) affect the way people approach
    > OO.


    I think that people who are not good at abstracting problems will
    definitely be more productive writing strictly procedural code. Of
    course they will have to master OO techniques only enough to
    understand how to utilize the OO framework tools that are already in
    place to help them. Those reusable framework tools are of course
    created by abstract thinkers who intended to create a generic tool to
    solve many peoples' problems, instead of the immediate issue at hand.

    > The second issue more directly relates the problem being solved to the
    > solution provided. That is, to me this type of problem (logic
    > problems) are usually solved by some form of mathematical equation.
    > I think that in software development I have always referred to these
    > types of equations as 'algorithms' which are usually I think
    > implemented in a single high level function call (often to a bunch of
    > smaller detailed function calls). Given this, I cant say how one
    > could claim to have developed an object oriented solution when
    > implementing a single algorithm when the whole meta structure of
    > executing an algorigm is nothing more (to me) than the procedural
    > implementation of a logical set of steps (calculations).


    It is all in how you percieve the problem domain and how you choose to
    model it.

    > I think
    > one could say they have used object oriented techniques to solve the
    > problem (such as encapsulation, polymorphism and abstraction), but I
    > dont think one should suggest that the result is in its nature object
    > oriented, as I do not see an algorithm as being 'oriented towards
    > objects' (its more oriented towards being a service) since it can be
    > executed as a function/method call which to me at best perhaps is
    > merely part of an object.


    Modelling the problem domain into software objects is IMO an OO
    solution.

    Jordan


  10. Default Re: Whose Fish?

    > > I think it is important to remember why Simula was developed in the
    > > first place. If your problem domain does not involve doing simulations,
    > > then OO may very well not be appropriate.

    >
    > If the industry agreed that OO generally only shines for physical
    > simulations and not push it into nearly all domains, then I would not
    > be ranting against it. You may feel it is meant for mostly physical
    > niches, but that is not the consensus among OO proponents


    All problems model the physical domain and can be modelled in an OO
    fashion.

    Jordan


+ Reply to Thread
Page 2 of 12 FirstFirst 1 2 3 4 ... LastLast

Similar Threads

  1. So long, and thanks for all the fish...
    By Application Development in forum basic.visual
    Replies: 5
    Last Post: 09-05-2007, 12:50 PM
  2. Whose Fish - OO solution
    By Application Development in forum Theory and Concepts
    Replies: 65
    Last Post: 06-21-2007, 10:33 AM
  3. Re: Fish Eye processing
    By Application Development in forum C
    Replies: 0
    Last Post: 05-31-2007, 06:08 PM
  4. Fish Lens Effect
    By Application Development in forum Adobe Tools
    Replies: 2
    Last Post: 09-05-2006, 03:47 PM
  5. Flailing Fish in Need Of Rescue
    By Application Development in forum PROLOG
    Replies: 0
    Last Post: 04-26-2006, 01:17 PM