Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. The Lounge
  3. OO is not all that and a bag of chips

OO is not all that and a bag of chips

Scheduled Pinned Locked Moved The Lounge
c++sysadminooptutoriallearning
112 Posts 36 Posters 50 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • P patvdwal

    Ok, my bad haha

    H Offline
    H Offline
    honey the codewitch
    wrote on last edited by
    #83

    it was worth it. Thanks for the link :)

    Real programmers use butterflies

    1 Reply Last reply
    0
    • H honey the codewitch

      generic programming is something anyone can learn easily for about $25-$30 using Accelerated C++ - too bad it's not a textbook

      Real programmers use butterflies

      C Offline
      C Offline
      CPallini
      wrote on last edited by
      #84

      That's self-teaching. Professors, on the other hand, exist for different purpose (produce chaos in student minds).

      1 Reply Last reply
      0
      • E englebart

        I think you are giving too much credit with the "mud". Mud + straw bricks will last a very long time! More like straw huts with a few sticks. This is making me think of software before memory protection. I imagine a village with thatched roofs side by side by side. Each house is an app. The thatched roofs are the ram for that app. The village is the whole machine. A fire in one house would rapidly jump roofs and take out the entire village.

        D Offline
        D Offline
        Daniel Pfeffer
        wrote on last edited by
        #85

        englebart wrote:

        Mud + straw bricks will last a very long time!

        Yes, in the right climate. It is not well suited to climates with heavy rains. This is beside the point. No modern architect would seriously consider using mud (or mud + straw) for a building, and likewise no future software engineer would think of using the techniques (or lack of them :sigh: ) used in most current software.

        Freedom is the freedom to say that two plus two make four. If that is granted, all else follows. -- 6079 Smith W.

        S 1 Reply Last reply
        0
        • H honey the codewitch

          Disclaimer: Unpopular opinion A lot of coders spend a lot of lines of code dividing things into tiny steps which they then make whole classes for and abstract everything to the Nth degree, often even when the abstraction is not helpful. Back when I was a green coder, I used to write OO code somewhat like this. Then C++ changed me. I stopped relying on objects so much. This bled over into other languages. Now my code is about expedience. For example, I created a little HTTP server that does the request/response cycle in a single method, with two support structs instead of a dozen classes. My code is smaller, faster, easy enough to understand if you aren't a beginner and overall better for it. It's getting to the point where I think OO is an ill conceived paradigm - and not even because it's Broken As Designed (it's not) but because it gets way overused to the point where the dev world may have been better off with something else.

          Real programmers use butterflies

          B Offline
          B Offline
          Bitbeisser
          wrote on last edited by
          #86

          I don't think that OO in general is "ill conceived" but I do agree that is by far overused and misused since it was "invented". There are certainly benefits to encapsulate both code and data, and to some degree, abstraction can help to make code more readable and thus maintainable. But in far too many cases, this leads nowadays just to a royal mess where people do this ad nauseam, creating totally unreadable and incomprehensible code (beside the original coder, at the time they creating that piece of code) and are even proud of it. It's simply has turned into "too much of a good thing"...

          H 1 Reply Last reply
          0
          • T Tom Deketelaere

            I wouldn't be so sure. For one off my previous jobs I had to write a program that calculates the thickness (not sure if that's the word) for glass so that it could support a given weight. When I asked the structural engineer about how to implement the formula for this, so a step by step calculation he replied: I have no idea I just enter the numbers in this program and it gives me the solution. So this structural engineer was entirely counting on a programmer (who I hope was counting on a actual structural engineer) somewhere.

            Tom

            R Offline
            R Offline
            Robert Not The Pirate
            wrote on last edited by
            #87

            I had similar experience early in my career and now have another. I worked on a banking application where I needed to calculate APR (annual percentage rate). I asked several mortgage bankers how they do the calculation, not a one knew. Each stated the rate was on the docs they received from the intake clerk. I asked the clerk, she said she used her mortgage calculator, a hand held device. Currently, I am investigating solar panels for my home. I have 4 companies responding each with proposing different configurations despite using the same utilization rates published by my electric provider. Accuracy, it appears, is in the math of the beholder.

            1 Reply Last reply
            0
            • B Bitbeisser

              I don't think that OO in general is "ill conceived" but I do agree that is by far overused and misused since it was "invented". There are certainly benefits to encapsulate both code and data, and to some degree, abstraction can help to make code more readable and thus maintainable. But in far too many cases, this leads nowadays just to a royal mess where people do this ad nauseam, creating totally unreadable and incomprehensible code (beside the original coder, at the time they creating that piece of code) and are even proud of it. It's simply has turned into "too much of a good thing"...

              H Offline
              H Offline
              honey the codewitch
              wrote on last edited by
              #88

              That's why i say it was ill conceived. At least perhaps. Is software development better or worse off because of it? I'm not so sure it's better. I don't know though.

              Real programmers use butterflies

              1 Reply Last reply
              0
              • C CPallini

                Let's face it: C is a successful programming language. C++ has its drawbacks. Java is a pile of crap. In this regard, how good is OOP? :-D

                M Offline
                M Offline
                mark pi
                wrote on last edited by
                #89

                Any tool even a lame one is as good as a person using it. OOP is great when used and applied correctly.

                C 1 Reply Last reply
                0
                • P patvdwal

                  Agree... More and more I'm starting to think we have been going the wrong way. The article that really had me started thinking about this was this one: https://medium.com/better-programming/object-oriented-programming-the-trillion-dollar-disaster-92a4b666c7c7 Excellent article. The simplest pieces of code we try to make so abstract that at some point it doesn't make sense anymore and gets hard to understand. You end op with classes like: OrderManagerProviderOrchestrator or OrderFactoryStrategy. And all of this because, you know, SOLID, KISS, abstraction, dependency injection, blah blah blah,... We spend so much time making code that way, making it independent, scaleable, etc. But in the end, whenever some change it necessary: oh no, this means we have to refactor everything!

                  M Offline
                  M Offline
                  mark pi
                  wrote on last edited by
                  #90

                  the main take away from this article could be summarized like: " I’m not criticizing Alan Kay’s OOP — he is a genius. I wish OOP was implemented the way he designed it. I’m criticizing the modern Java/C# approach to OOP..." The second thing: the article writer talks about OOP and there no mentioning about one of the best OO system -- Smalltalk which was a result of Alan's efforts at Zerox PARC.

                  P 1 Reply Last reply
                  0
                  • M Mike Winiberg

                    I found much the same - although it was C++ that finally convinced me that OO wasn't 'all that' 8) After 'objectifying' some intricate real-world code (for an airline/shipping booking system) I realised that in order to get the behaviour of the objects right I was creating what were in effect object 'global' variables that could (due to inheritance) easily get accidentally 'hidden' by a variable with the same name in the dependent module. In other words - because it was a legal thing to do in C++ - variable scope could be overridden without warning (fortunately compilers these days do warn about such things). When the fiasco that was manipulators (which I used extensively!) hit when going from Ver1 to Ver2, which then got corrected again in Ver3 (FFS!) I decided that C++ and its vision of OO was getting far more complex and difficult to manage correctly (for me anyway - my failing perhaps, not the language itself?) that I switched to Java for my next OO projects. Very verbose cf C++ but much more stable at the level I was using. However, other programmers of long-standing who I respect have gradually formed similar views to mine about OO and C++ in particular so I don't feel too downhearted. 8) Quite by chance all my work now is in either Visual Basic for Applications (Access), SQL Server or Python, so go figure! If I had to go back to something close to the machine I would almost certainly go for C rather than C++ (or maybe Go etc).

                    M Offline
                    M Offline
                    mark pi
                    wrote on last edited by
                    #91

                    Guys you are all complaining about C++ and it's idiosyncrasies, no OPP. C++ is not OOP !

                    1 Reply Last reply
                    0
                    • H honey the codewitch

                      But also, with the failure rate of software I'm glad we don't build bridges and skyscrapers. :laugh:

                      Real programmers use butterflies

                      G Offline
                      G Offline
                      Gary R Wheeler
                      wrote on last edited by
                      #92

                      Air traffic control, aircraft avionics Medical equipment Law enforcement communications Defense electronics and C3I Manufacturing controls, especially for food and medication ... All of these applications and many more have profound human health and safety implications. We build much more than bridges and skyscrapers.

                      Software Zen: delete this;

                      H 1 Reply Last reply
                      0
                      • G Gary R Wheeler

                        Air traffic control, aircraft avionics Medical equipment Law enforcement communications Defense electronics and C3I Manufacturing controls, especially for food and medication ... All of these applications and many more have profound human health and safety implications. We build much more than bridges and skyscrapers.

                        Software Zen: delete this;

                        H Offline
                        H Offline
                        honey the codewitch
                        wrote on last edited by
                        #93

                        fair point. :)

                        Real programmers use butterflies

                        1 Reply Last reply
                        0
                        • H honey the codewitch

                          Disclaimer: Unpopular opinion A lot of coders spend a lot of lines of code dividing things into tiny steps which they then make whole classes for and abstract everything to the Nth degree, often even when the abstraction is not helpful. Back when I was a green coder, I used to write OO code somewhat like this. Then C++ changed me. I stopped relying on objects so much. This bled over into other languages. Now my code is about expedience. For example, I created a little HTTP server that does the request/response cycle in a single method, with two support structs instead of a dozen classes. My code is smaller, faster, easy enough to understand if you aren't a beginner and overall better for it. It's getting to the point where I think OO is an ill conceived paradigm - and not even because it's Broken As Designed (it's not) but because it gets way overused to the point where the dev world may have been better off with something else.

                          Real programmers use butterflies

                          G Offline
                          G Offline
                          Gary R Wheeler
                          wrote on last edited by
                          #94

                          honey the codewitch wrote:

                          A lot of coders spend a lot of lines of code dividing things into tiny steps which they then make whole classes for and abstract everything to the Nth degree, often even when the abstraction is not helpful.

                          They're doing it wrong. Deciding what things or processes to abstract and how to divvy things up isn't difficult to do once you know how, but learning it can be painful. It took me over ten years to acquire the background to be able to handle some things. There are a lot of developers out there who simply never get it. They end up blindly applying one or more approaches from Design Patterns[^] or other cookbooks. They finally reach steady state as one trick ponies (apologies to Paul Simon) where every problem is a nail, and they've got the hammer with which to beat it to death.

                          Software Zen: delete this;

                          H 1 Reply Last reply
                          0
                          • G Gary R Wheeler

                            honey the codewitch wrote:

                            A lot of coders spend a lot of lines of code dividing things into tiny steps which they then make whole classes for and abstract everything to the Nth degree, often even when the abstraction is not helpful.

                            They're doing it wrong. Deciding what things or processes to abstract and how to divvy things up isn't difficult to do once you know how, but learning it can be painful. It took me over ten years to acquire the background to be able to handle some things. There are a lot of developers out there who simply never get it. They end up blindly applying one or more approaches from Design Patterns[^] or other cookbooks. They finally reach steady state as one trick ponies (apologies to Paul Simon) where every problem is a nail, and they've got the hammer with which to beat it to death.

                            Software Zen: delete this;

                            H Offline
                            H Offline
                            honey the codewitch
                            wrote on last edited by
                            #95

                            I agree with that. I did some hard time as a software architect. :)

                            Real programmers use butterflies

                            1 Reply Last reply
                            0
                            • M mark pi

                              Any tool even a lame one is as good as a person using it. OOP is great when used and applied correctly.

                              C Offline
                              C Offline
                              CPallini
                              wrote on last edited by
                              #96

                              You know, the right tool for the right job. For certain jobs OOP is simply not the right tool.

                              1 Reply Last reply
                              0
                              • M mark pi

                                the main take away from this article could be summarized like: " I’m not criticizing Alan Kay’s OOP — he is a genius. I wish OOP was implemented the way he designed it. I’m criticizing the modern Java/C# approach to OOP..." The second thing: the article writer talks about OOP and there no mentioning about one of the best OO system -- Smalltalk which was a result of Alan's efforts at Zerox PARC.

                                P Offline
                                P Offline
                                patvdwal
                                wrote on last edited by
                                #97

                                Maybe you were too quick in summarizing it: "Yes, of course Smalltalk is a proper OOP language — however, it is not in wide use. Both Smalltalk and Erlang make use of OOP the way it was originally intended by its inventor, Alan Kay."

                                1 Reply Last reply
                                0
                                • H honey the codewitch

                                  Disclaimer: Unpopular opinion A lot of coders spend a lot of lines of code dividing things into tiny steps which they then make whole classes for and abstract everything to the Nth degree, often even when the abstraction is not helpful. Back when I was a green coder, I used to write OO code somewhat like this. Then C++ changed me. I stopped relying on objects so much. This bled over into other languages. Now my code is about expedience. For example, I created a little HTTP server that does the request/response cycle in a single method, with two support structs instead of a dozen classes. My code is smaller, faster, easy enough to understand if you aren't a beginner and overall better for it. It's getting to the point where I think OO is an ill conceived paradigm - and not even because it's Broken As Designed (it's not) but because it gets way overused to the point where the dev world may have been better off with something else.

                                  Real programmers use butterflies

                                  R Offline
                                  R Offline
                                  rjmoses
                                  wrote on last edited by
                                  #98

                                  Coincidentally, I was tripping through a large C++ program (about 100,000 LOC) to make some relatively minor enhancements. The original architect(s) of this program did a fantastic job of using all the features of C++ including lambdas, auto's, executable code in header files, virtual functions, just to name a few. The frigging code was terribly difficult to follow! But what was the major hindrance was the exorbitant use of getters/setters between classes. A lot of the code looked like:

                                  bool Var;
                                  .....
                                  bool ClassName::isVarSet()

                                  {

                                  return Var;

                                  }

                                  using 6 lines on the screen. Alwfully tough to read and comprehend. Caused me to start hating C++.

                                  H 1 Reply Last reply
                                  0
                                  • Greg UtasG Greg Utas

                                    This is speculation, but my guess is no. For one thing, they're very different application domains. And although it's easy to hoot at 18000 classes, we should hoot at the managers and the corporate culture, not the developers. It could undoubtedly be done with 20% of the staff if only they had a clue whom to keep. But when you have the revenues of this lot, productivity is irrelevant. I've seen similar things. Design documents (before coding, in a waterfall methodology) running to hundreds of pages. FFS, I've never stayed true to anything beyond a high-level design that could be described in 20 pages. When something has 18000 classes, either there';s no architect or there are way too many. I don't recall which, but one of the currently fashionable methodologies says that there shouldn't be architects. Utter drivel unless it's a very small group of skilled developers that agree on the design.

                                    Robust Services Core | Software Techniques for Lemmings | Articles

                                    M Offline
                                    M Offline
                                    Martin ISDN
                                    wrote on last edited by
                                    #99

                                    Thanks for your time. Greetings

                                    1 Reply Last reply
                                    0
                                    • M milo xml

                                      I think you'd be surprised at how many rely on Autocad to do their structural calculations for them.

                                      S Offline
                                      S Offline
                                      Stefan_Lang
                                      wrote on last edited by
                                      #100

                                      I knew* one Mobile company who thought it would be a good idea to use Lotus Notes to manage their Telecom infrastructure. *Deliberately using past tense here...

                                      GOTOs are a bit like wire coat hangers: they tend to breed in the darkness, such that where there once were few, eventually there are many, and the program's architecture collapses beneath them. (Fran Poretto)

                                      M 1 Reply Last reply
                                      0
                                      • D Daniel Pfeffer

                                        englebart wrote:

                                        Mud + straw bricks will last a very long time!

                                        Yes, in the right climate. It is not well suited to climates with heavy rains. This is beside the point. No modern architect would seriously consider using mud (or mud + straw) for a building, and likewise no future software engineer would think of using the techniques (or lack of them :sigh: ) used in most current software.

                                        Freedom is the freedom to say that two plus two make four. If that is granted, all else follows. -- 6079 Smith W.

                                        S Offline
                                        S Offline
                                        Stefan_Lang
                                        wrote on last edited by
                                        #101

                                        Clay is actually a very good building material and it's used occasionally to construct ecological buildings. See for example Clay Houses - Resilient Fireproof Unique and Attractive[^] That said, it's advantages are so impressive that it's hard to understand why it's not used more widely.

                                        GOTOs are a bit like wire coat hangers: they tend to breed in the darkness, such that where there once were few, eventually there are many, and the program's architecture collapses beneath them. (Fran Poretto)

                                        D 1 Reply Last reply
                                        0
                                        • S Stefan_Lang

                                          I knew* one Mobile company who thought it would be a good idea to use Lotus Notes to manage their Telecom infrastructure. *Deliberately using past tense here...

                                          GOTOs are a bit like wire coat hangers: they tend to breed in the darkness, such that where there once were few, eventually there are many, and the program's architecture collapses beneath them. (Fran Poretto)

                                          M Offline
                                          M Offline
                                          milo xml
                                          wrote on last edited by
                                          #102

                                          We had Lotus Notes here... I've never been so grateful to migrate to gmail.

                                          1 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Categories
                                          • Recent
                                          • Tags
                                          • Popular
                                          • World
                                          • Users
                                          • Groups