[STUFF] "Why OOP Reminds Me of Communism..."

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • MoaLaiSkirulais
    ^^(V)^^
    • 08-07-2003
    • 23268

    #1

    [STUFF] "Why OOP Reminds Me of Communism..."

    Cliche-Oriented Programming



    "Economic communism spread like wildfire in the first half of the 20th century because it had such appealing ideals and ideas. Like OO, these ideals were very seductive on paper. Intellectuals all over the world were drawn in by its concepts in droves. However, the complexities and dynamism of human nature proved not to favor economic communism as a productive model when it hit the road of the real world. It was the test of the real world that deflated the socialism hype, not intellectual analysis for the most part.


    Perhaps economic communism allows for more equality, but mostly by making everybody equally poor. Further, it forms a kind of "social currency" based on schmoosing and favoritism that is nearly impossible to objectively measure and tax. Thus, it is still not really class-less, but simply makes classes harder to measure because the "currency" is mostly social in nature. In other words, it does not eliminate inequality, but instead makes it harder to identify.
    [img]/carne/diablo/media/stalin.gif[/img]


    I am frankly jealous of OOP's cliches; or to be more specific, jealous of OOP's "cliche-ability". The cliches sound so convincing on first impression, yet take many pages and many tedious change-scenario analyses to de-hype. Like socialism, bashing capitalistic greed is easy to do and makes for great, gut-level sound-bytes. A counter-argument to such is rather long, and assumes a decent education and attention span. Take this quote from a top-ranking comment from a slashdot.com discussion about an earlier version of this very website:


    "[OOP] allows you to specify several functions, abstractly, that are required for a class to implement the Interface. The implementation of these functions is class-specific: for example, all clothes implement the Wearable interface, but you would not want underwear and shoes to have the same implementation of Wear(). However, in [OOP], you may specify a function to take a Wearable object, and [may] not need to specify any further. This abstraction level is why OOP does, in fact, better model the real world."



    I believe the catchy sound-byte quality of this analogy is part of the reason why the message was ranked so high by the readers. It is hard to compete with a paradigm that is so photogenic from a cliche standpoint.

    Here is a summarized debunking of the clothing example: Modeling (clothing) products using hierarchies instead of sets is often problematic on a large scale, and OOP has nothing better than p/r for set management. Sets are more general-purpose than trees, and thus more adaptable to unexpected changes and orthogonal trait management. Further, most information about the products would be parameterized (factored into attributes) and stored in a database and set up so that operators (non-programmers) could key in data about clothing without having to write OOP classes."



    fuente: Object Oriented Programming Oversold!
  • Nagual Bones
    Son of the Bard
    • 14-04-2003
    • 21698

    #2
    NORMAL

    print(a + b)

    BLOATED

    am = new math.ArithmeticManager()
    opA = new math.Operand((float) a)
    opB = new math.Operand((float) b)
    am.addOperand(opA)
    am.addOperand(opB)
    am.operator = new math.operators.Addition()
    am.executeMathOperation()
    system.io.output.print(am.mathOperationResult())



    jaujuau es tan asi


    El camino del nagual...

    You become what you believe.

    Comentario

    • MNEP
      salieris de charly
      • 25-04-2004
      • 16886

      #3
      Tardaría 20 años en comprenderlo.

      Comentario

      • MoaLaiSkirulais
        ^^(V)^^
        • 08-07-2003
        • 23268

        #4
        Originalmente publicado por Boneslayer
        NORMAL

        print(a + b)

        BLOATED

        am = new math.ArithmeticManager()
        opA = new math.Operand((float) a)
        opB = new math.Operand((float) b)
        am.addOperand(opA)
        am.addOperand(opB)
        am.operator = new math.operators.Addition()
        am.executeMathOperation()
        system.io.output.print(am.mathOperationResult())



        jaujuau es tan asi
        jaua no lei esa.... futuro debate...

        Comentario

        • Piluex
          Away
          • 10-10-2004
          • 3038

          #5
          Lo mejor siempre esta en usar lenguajes que permitan hacer lo que se te cante el orto, como lo hago yo con c++.

          Comentario

          Trabajando...