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. Other Discussions
  3. The Insider News
  4. Object-Oriented Programming — The trillion dollar disaster

Object-Oriented Programming — The trillion dollar disaster

Scheduled Pinned Locked Moved The Insider News
com
28 Posts 13 Posters 0 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.
  • D Daniel Pfeffer

    David O'Neil wrote:

    In other words, say you create a word processor. The functional programming explanations I've seen indicate you have a 'document' in memory that might be 2 MB. If you add a letter to the document via a keystroke, in order to keep it immutable, you need to generate an entirely new 2 MB block with the added character, which becomes the 'new' document. The program always updates to that 'new' document, in order to eliminate mutability.

    One way might be to divide the document into smaller portions (e.g. paragraphs), each immutable, and a list of paragraphs. Updating a keystroke would then consist of (a) making a new copy of the paragraph, and (b) making a new copy of the list, which points to the new paragraph. Nowhere does it say that all the data in a functional program must consist of a single block.

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

    D Offline
    D Offline
    David ONeil
    wrote on last edited by
    #12

    Thank you.

    The forgotten roots of science | C++ Programming | DWinLib

    1 Reply Last reply
    0
    • R Rob Grainger

      The following is from the Roslyn code base, but does illustrate the kind of data structures involved... [Roslyn and my favorite persistent data structure – Alex Polozov](https://alexpolozov.com/blog/roslyn-and-my-favorite-persistent-data-structure/)

      "If you don't fail at least 90 percent of the time, you're not aiming high enough." Alan Kay.

      D Offline
      D Offline
      David ONeil
      wrote on last edited by
      #13

      Thank you.

      The forgotten roots of science | C++ Programming | DWinLib

      1 Reply Last reply
      0
      • K Kent Sharkey

        Code IQ[^]:

        Why it’s time to move on from OOP

        "OOPs!...I did it again"

        C Offline
        C Offline
        Chris Maunder
        wrote on last edited by
        #14

        That's a lot of words and claims but I'm still trying to find actual examples, especially in the "Real world examples, please!" sections. In any case Beta was better than VHS and JavaScript will end up ruling the world.

        cheers Chris Maunder

        1 Reply Last reply
        0
        • K Kent Sharkey

          Code IQ[^]:

          Why it’s time to move on from OOP

          "OOPs!...I did it again"

          B Offline
          B Offline
          BillWoodruff
          wrote on last edited by
          #15

          My comment on the article posted to the site:

          Quote:

          A gigantic cauldron of boiling spew delivered with the fervent self-righteousness of the true believer who has seen the Light (Erlang). A symphony of anger with hyperbole at top volume in crescendo after crescendo. yawn …

          I wonder if they will delete it ? I will admit that the article has reinforced my preexisting curiosity about what's so cool about FP. I already write code in C# that generates functions based on generic templates (not using reflection, or building Expressions), code that allows chaining of generic functions, merging, etc. Hopefully, I will locate some sober authors.

          «Where is the Life we have lost in living? Where is the wisdom we have lost in knowledge? Where is the knowledge we have lost in information?» T. S. Elliot

          B 1 Reply Last reply
          0
          • B BillWoodruff

            My comment on the article posted to the site:

            Quote:

            A gigantic cauldron of boiling spew delivered with the fervent self-righteousness of the true believer who has seen the Light (Erlang). A symphony of anger with hyperbole at top volume in crescendo after crescendo. yawn …

            I wonder if they will delete it ? I will admit that the article has reinforced my preexisting curiosity about what's so cool about FP. I already write code in C# that generates functions based on generic templates (not using reflection, or building Expressions), code that allows chaining of generic functions, merging, etc. Hopefully, I will locate some sober authors.

            «Where is the Life we have lost in living? Where is the wisdom we have lost in knowledge? Where is the knowledge we have lost in information?» T. S. Elliot

            B Offline
            B Offline
            Bernhard Hiller
            wrote on last edited by
            #16

            BillWoodruff wrote:

            the article has reinforced my preexisting curiosity about what's so cool about FP

            Recently I read Manning | Functional Programming in C#[^] which I found a great introduction. Not theory driven like Seemann's blog From design patterns to category theory[^] but more oriented to normal programming tasks. Still I have to get some more understanding of the Functional Paradigma, but that was a good start.

            Oh sanctissimi Wilhelmus, Theodorus, et Fredericus!

            B 1 Reply Last reply
            0
            • K Kent Sharkey

              Code IQ[^]:

              Why it’s time to move on from OOP

              "OOPs!...I did it again"

              B Offline
              B Offline
              Bernhard Hiller
              wrote on last edited by
              #17

              The bad thing with Functional Programming is: it is harder to grasp than Object-Oriented Programming. And most people actually fail with the basic ideas of OOP (e.g. SOLID)... Writing "class" on top of a bunch of lines of code is NOT OOP, but many people think so.

              Oh sanctissimi Wilhelmus, Theodorus, et Fredericus!

              J B 2 Replies Last reply
              0
              • B Bernhard Hiller

                The bad thing with Functional Programming is: it is harder to grasp than Object-Oriented Programming. And most people actually fail with the basic ideas of OOP (e.g. SOLID)... Writing "class" on top of a bunch of lines of code is NOT OOP, but many people think so.

                Oh sanctissimi Wilhelmus, Theodorus, et Fredericus!

                J Offline
                J Offline
                jesarg
                wrote on last edited by
                #18

                The worst thing about functional programming is its poor resilience to non-ideal development situations. When large organizations maintain code over long periods of time, non-ideal practices constantly leak in. Hurried developers updating confusing code may be bad for object-oriented code bases but is horrible-to-fatal for functional-style code.

                B 2 Replies Last reply
                0
                • B Bernhard Hiller

                  BillWoodruff wrote:

                  the article has reinforced my preexisting curiosity about what's so cool about FP

                  Recently I read Manning | Functional Programming in C#[^] which I found a great introduction. Not theory driven like Seemann's blog From design patterns to category theory[^] but more oriented to normal programming tasks. Still I have to get some more understanding of the Functional Paradigma, but that was a good start.

                  Oh sanctissimi Wilhelmus, Theodorus, et Fredericus!

                  B Offline
                  B Offline
                  BillWoodruff
                  wrote on last edited by
                  #19

                  Thanks, Bernhard; if you recommend it, I will read it :) I have "Real World Functional Programming: With Examples in F# and C#" by Tomas Petricek, Jon Skeet [^] waiting for my one-good-eyeball-to-screen ration :omg: Manning's site touts the book with this quote:

                  Quote:

                  From the Foreword: You will never look at your code in the same way again. Mads Torgersen, C# PM, Microsoft

                  cheers, Bill

                  «Where is the Life we have lost in living? Where is the wisdom we have lost in knowledge? Where is the knowledge we have lost in information?» T. S. Elliot

                  1 Reply Last reply
                  0
                  • B Bernhard Hiller

                    The bad thing with Functional Programming is: it is harder to grasp than Object-Oriented Programming. And most people actually fail with the basic ideas of OOP (e.g. SOLID)... Writing "class" on top of a bunch of lines of code is NOT OOP, but many people think so.

                    Oh sanctissimi Wilhelmus, Theodorus, et Fredericus!

                    B Offline
                    B Offline
                    BillWoodruff
                    wrote on last edited by
                    #20

                    I tend to think of OOP as a Platonic philosophy, a way to express "ideal/pure Forms" and their inclusive/exclusive/hierarchical relations. I really like SOLID as an Aristotelian "techne," a set of principles for how to structure the creation, use, interaction, of the (necessarily imperfect !) instances of those "Forms." While I see OOP as the best way to model hierarchies, I (currently) wonder how suited it is to typical modern multi-threaded apps driven by asynchronous events ... where any damn thing can happen any damn time :omg: Is it "right" to indict OOP with the charge of criminal mutability of state ... rather than indict the programmer who does not control access/mutability using the provided tools, such as ... in C# ... Linq, System.Collections.Immutable, and such pedestrian access modifiers as 'readonly ?

                    «Where is the Life we have lost in living? Where is the wisdom we have lost in knowledge? Where is the knowledge we have lost in information?» T. S. Elliot

                    1 Reply Last reply
                    0
                    • J jesarg

                      The worst thing about functional programming is its poor resilience to non-ideal development situations. When large organizations maintain code over long periods of time, non-ideal practices constantly leak in. Hurried developers updating confusing code may be bad for object-oriented code bases but is horrible-to-fatal for functional-style code.

                      B Offline
                      B Offline
                      BillWoodruff
                      wrote on last edited by
                      #21

                      jesarg wrote:

                      non-ideal development situations

                      I've never known any other type.

                      «Where is the Life we have lost in living? Where is the wisdom we have lost in knowledge? Where is the knowledge we have lost in information?» T. S. Elliot

                      1 Reply Last reply
                      0
                      • J jesarg

                        The worst thing about functional programming is its poor resilience to non-ideal development situations. When large organizations maintain code over long periods of time, non-ideal practices constantly leak in. Hurried developers updating confusing code may be bad for object-oriented code bases but is horrible-to-fatal for functional-style code.

                        B Offline
                        B Offline
                        BillWoodruff
                        wrote on last edited by
                        #22

                        jesarg wrote:

                        When large organizations maintain code over long periods of time, non-ideal practices constantly leak in. Hurried developers updating confusing code may be bad for object-oriented code bases but is horrible-to-fatal for functional-style code.

                        I would appreciate hearing about a specific case of this you have seen. What type of change to code unique to FP would cause problems that would not be flagged at compile time ?

                        «Where is the Life we have lost in living? Where is the wisdom we have lost in knowledge? Where is the knowledge we have lost in information?» T. S. Elliot

                        J 1 Reply Last reply
                        0
                        • B BillWoodruff

                          jesarg wrote:

                          When large organizations maintain code over long periods of time, non-ideal practices constantly leak in. Hurried developers updating confusing code may be bad for object-oriented code bases but is horrible-to-fatal for functional-style code.

                          I would appreciate hearing about a specific case of this you have seen. What type of change to code unique to FP would cause problems that would not be flagged at compile time ?

                          «Where is the Life we have lost in living? Where is the wisdom we have lost in knowledge? Where is the knowledge we have lost in information?» T. S. Elliot

                          J Offline
                          J Offline
                          jesarg
                          wrote on last edited by
                          #23

                          The first developer writes code. The second developer updates the code, despite slightly misunderstanding the first developer's code, making the resulting code confusing and prone to bugs. The third developer updates the code, while slightly misunderstanding the first developer's code, the second developer's code, and the second developer's misunderstanding of the first developer's code, making the resulting code more confusing and bug-prone. The fourth developer updates the code, seriously misunderstanding the first developer's code, the second developer's code, the third developer's code, the second developer's misunderstanding of the first developer's code, the third developer's misunderstanding of the first developer's code, the third developer's misunderstanding of the second developer's code, and the third developer's misunderstanding of the second developer's misunderstanding of the first developer's code. Etc. until maintenance is impossible, bugs never get fixed, and rewrites are demanded. This problem isn't unique to functional programming, but using a functional style amplifies the compounding negative effects (which is why start-ups have success stories of using functional languages and large organizations don't). When using more procedural styles, the negative side effects of not fully understanding the code being updated are lower. You can read about project successes and failures with LISP; they don't specifically mention the effect I described, but they seem to have experienced it nonetheless. http://www.paulgraham.com/avg.html https://www.quora.com/Does-Yahoo-Stores-previously-Viaweb-still-use-Lisp https://discuss.fogcreek.com/joelonsoftware/default.asp?cmd=show&ixPost=31402

                          B B 2 Replies Last reply
                          0
                          • J jesarg

                            The first developer writes code. The second developer updates the code, despite slightly misunderstanding the first developer's code, making the resulting code confusing and prone to bugs. The third developer updates the code, while slightly misunderstanding the first developer's code, the second developer's code, and the second developer's misunderstanding of the first developer's code, making the resulting code more confusing and bug-prone. The fourth developer updates the code, seriously misunderstanding the first developer's code, the second developer's code, the third developer's code, the second developer's misunderstanding of the first developer's code, the third developer's misunderstanding of the first developer's code, the third developer's misunderstanding of the second developer's code, and the third developer's misunderstanding of the second developer's misunderstanding of the first developer's code. Etc. until maintenance is impossible, bugs never get fixed, and rewrites are demanded. This problem isn't unique to functional programming, but using a functional style amplifies the compounding negative effects (which is why start-ups have success stories of using functional languages and large organizations don't). When using more procedural styles, the negative side effects of not fully understanding the code being updated are lower. You can read about project successes and failures with LISP; they don't specifically mention the effect I described, but they seem to have experienced it nonetheless. http://www.paulgraham.com/avg.html https://www.quora.com/Does-Yahoo-Stores-previously-Viaweb-still-use-Lisp https://discuss.fogcreek.com/joelonsoftware/default.asp?cmd=show&ixPost=31402

                            B Offline
                            B Offline
                            Bernhard Hiller
                            wrote on last edited by
                            #24

                            So in the end it boils down to a simple point: most programmers are not capable of grasping concepts which go beyond simple procedural statements (like if or switch or assignments).

                            Oh sanctissimi Wilhelmus, Theodorus, et Fredericus!

                            B J 2 Replies Last reply
                            0
                            • J jesarg

                              The first developer writes code. The second developer updates the code, despite slightly misunderstanding the first developer's code, making the resulting code confusing and prone to bugs. The third developer updates the code, while slightly misunderstanding the first developer's code, the second developer's code, and the second developer's misunderstanding of the first developer's code, making the resulting code more confusing and bug-prone. The fourth developer updates the code, seriously misunderstanding the first developer's code, the second developer's code, the third developer's code, the second developer's misunderstanding of the first developer's code, the third developer's misunderstanding of the first developer's code, the third developer's misunderstanding of the second developer's code, and the third developer's misunderstanding of the second developer's misunderstanding of the first developer's code. Etc. until maintenance is impossible, bugs never get fixed, and rewrites are demanded. This problem isn't unique to functional programming, but using a functional style amplifies the compounding negative effects (which is why start-ups have success stories of using functional languages and large organizations don't). When using more procedural styles, the negative side effects of not fully understanding the code being updated are lower. You can read about project successes and failures with LISP; they don't specifically mention the effect I described, but they seem to have experienced it nonetheless. http://www.paulgraham.com/avg.html https://www.quora.com/Does-Yahoo-Stores-previously-Viaweb-still-use-Lisp https://discuss.fogcreek.com/joelonsoftware/default.asp?cmd=show&ixPost=31402

                              B Offline
                              B Offline
                              BillWoodruff
                              wrote on last edited by
                              #25

                              I asked you for specifics, and you come up with this ? What you describe has nothing specific to do with either OOP or FP.

                              «Where is the Life we have lost in living? Where is the wisdom we have lost in knowledge? Where is the knowledge we have lost in information?» T. S. Elliot

                              1 Reply Last reply
                              0
                              • B Bernhard Hiller

                                So in the end it boils down to a simple point: most programmers are not capable of grasping concepts which go beyond simple procedural statements (like if or switch or assignments).

                                Oh sanctissimi Wilhelmus, Theodorus, et Fredericus!

                                B Offline
                                B Offline
                                BillWoodruff
                                wrote on last edited by
                                #26

                                @BHiller Or, it boils down to some programmers have a bias, a prejudice, for, or against, FP or OOP ... that they cannot articulate, or cannot describe any specific example they have actually encountered ? It is inevitable we have biases, and, it is a fact that many programmers tend to "fall in love" with their languages/tools to a certain degree, sometimes comically extreme ... I think of a hilarious encounter I had with a FORTH "messiah" in the 1970's. I like Gandhi's statement: "I want the winds of all the cultures to blow around my house, but I don't want to be knocked over by any of them." By the way, I hate VB :wtf:

                                «Where is the Life we have lost in living? Where is the wisdom we have lost in knowledge? Where is the knowledge we have lost in information?» T. S. Elliot

                                1 Reply Last reply
                                0
                                • B Bernhard Hiller

                                  So in the end it boils down to a simple point: most programmers are not capable of grasping concepts which go beyond simple procedural statements (like if or switch or assignments).

                                  Oh sanctissimi Wilhelmus, Theodorus, et Fredericus!

                                  J Offline
                                  J Offline
                                  jesarg
                                  wrote on last edited by
                                  #27

                                  The experts in functional programming run each over with messes just like the novices do. It boils down to functional programming giving people more power than they are likely to handle well.

                                  B 1 Reply Last reply
                                  0
                                  • J jesarg

                                    The experts in functional programming run each over with messes just like the novices do. It boils down to functional programming giving people more power than they are likely to handle well.

                                    B Offline
                                    B Offline
                                    Bernhard Hiller
                                    wrote on last edited by
                                    #28

                                    That's true for quite any programming language/paradigm, even FORTRAN.

                                    Oh sanctissimi Wilhelmus, Theodorus, et Fredericus!

                                    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