Objects, Relationships, Systems, And Processes

  • Comments posted to this topic are about the item Objects, Relationships, Systems, And Processes

  • Interesting post and point of view.

    I am not sure that an OOP approach is necessary to see the relationships that exist in SQL server. Or perhaps more accurately, I understood those relationships long before I was ever introduced to OOP as a concept. Perhaps holistic is more descriptive?

    Buy the ticket, take the ride. -- Hunter S. Thompson

  • It's a good write-up of a progression on that kind of thing. But it doesn't necessarily take years to go that route. If you understand how thinking works, things like postulated vs experiential knowledge, then learning these types of things can be very, very fast.

    Property of The Thread

    "Nobody knows the age of the human race, but everyone agrees it's old enough to know better." - Anon

  • Thanks for this - an interesting post with at the very least some excellent starting points for thinking about databases in different ways.

    That said (with regards to your section on objects), I think it's important to recognise that relational systems work on very different principles to true object-oriented programming languages. The two models deal with identity in very different ways and relational schemas are not a good natural match for polymorphic design - as I understand it, these issues contribute to the practical issue of object-relational impedance.

    There are rich mathematical and logical underpinnings to relational database design which (while I'm sure this is not your intention), I'd hate to see anyone misunderstand as being analogous to the principles of Object Oriented design.

  • This was an interesting look at things, but some of it does not fit my experience.

    For instance, I did not start by looking at anything in databases by anology to objects. I had a background in mathematics and found it very natural to think of them in terms of sets and draw anologies to set theory. I mastered OOP later and then I saw parallels between database entities and OOP entities, but I was also acutely aware of the limitations of those anologies (ORMs exist specifically to help hide some of those differences when it is convenient...)

    Also, you seem to imply this is a more or less one way evolution, but it seems more iterative. To look at the example you gave of "The progression is similar to grade school where we first learned letters, then words, then reading sentences and stories. The order cannot be reversed. " You are right, the order can't really be reversed, but neither is it a linear progression. My daughter is in the early stages of learning to read. She mostly knows the alphabet, but still gets some of them wrong. But she can recognize a few words on sight. She hasn't read her first full sentence yet, but she can speak and listen to sentences, and she has heard stories, so she has concepts of them. And she will not be ready to read MacBeth when she starts reading Dr. Seuss, because she will first need to go back and learn more words and more about sentence and story structure.

    For that matter, I still learn new letters (calculus uses a lot of Greek letters, and transfinites use Hebrew lettes), new words, and even new things about sentence structure (http://timothyawiseman.wordpress.com/2012/07/09/writing-about-sql-server/). My learning about reading and writing continues at all of those levels.

    Timothy A Wiseman
    SQL Blog: http://timothyawiseman.wordpress.com/

  • My article was about the huge milestones in life marked by a radically different point of view center-of-gravity due to learning, experience, boredom, and finally awareness of a higher order. There will be many exceptions and fractally occuring smaller patterns of this great pattern.

    I agree with everyone here that Relational Theory is different from OOP Theory. My point in the article was to show that I no longer "see" a table as a table but as part of a subsystem or design pattern of tables. I see stored procedures as methods bound to data (table). I see indexes as attributes of a table. These ways of seeing are radically different from a "things" procedural mindset.

    Earlier levels are never lost. One may always "regress" to seeing simpler levels such as seeing individual characters in words in a sentence. The article is mostly about the brain rising to complexity, mastering and simplifying it, and then moving to higher levels of mastery. But someone without mastery can only conceptually "see" higher levels without actually experiencing it and living it.

    The real proof is when you are experiencing all areas of your life in a relationships fashion or a systems fashion. When there is a car accident in front of you, do you focus on the car in front of you or do you focus on flowing lanes and alternate routes? When you purchase a book, are you thinking of who is getting the money, the environment impact, the storage space, the time involved in reading it, the resale value? When purchasing food, do you consider if the seller is behaving responsibly or if the food is toxic or unhealthy long term for your body? Is the spent money staying in your community or being centralized to a few corporate heads? These aren't just topics for protesters but events affecting the stability of systems everywhere.

  • You certainly provide a lot to think about, and thank you for the quick response.

    But I still must respectfully disagree on at least some points. I don't experience "all areas of your life in a relationships fashion or a systems fashion." Rather I move up and down the levels of abstraction constantly, sometimes consciously and sometimes sub-consciously. When I am playing with my kids, I am often more concern about being "in the moment" to borrow an overused phrase and then I don't think I'm viewing the situation in either fashion. I'm just playing with my kids. But when I play Go, I am definitely looking at the board in a system-centered fashion. When I program, I go back and forth between those and purely functional forms of abstraction, and occasionally step outside of all of those to ask questions like "What should my actual goal be right now?"

    And I thought one of your questions was telling, "When you purchase a book, are you thinking of who is getting the money, the environment impact, the storage space, the time involved in reading it, the resale value?" I've thought about all of those, and more (who owns the copyright? When will it expire? What was the licensing agreement? How much of this can I legally quote? I happen to be in law school.), but at different times. Normally, I'm thinking of the content and how interesting it. Then when I think about buying it, I have a cost benefit and I have to think about if I will have time to read it, if its worth the purchase price, and if I have room for it on my shelf. So, those things always come up before I buy, but not all at once, its almost in a series. I normally don't think about environmental impact, resale, or the license, but I do in the right context. If its a textbook, I think about the resale. I pretty much never think about environmental impact or the licenses involved in any particular book I'm buying, but I might grab a handy book as an example when I am discussing those things with classmates or friends. I don't think of them as higher or lower modes of thought, just context dependent ones.

    When I think about SQL, I also bounce between metaphors. For me, its most natural to see tables as sets of sets which are then connected by various logical relationships. With a background in set theory and formal logic (I came to the computer science discipline of relational theory later, but it is tightly related to set theory) this seems very natural to me. Seeing stored procedures as methods seems unnatural to me (especially on those occasions when I write a stored procedure which takes a table name as a parameter and can act on a number of tables with dynamic SQL...), but I use that metaphor sometimes especially when I working with SQL and an OOP language.

    But I don't see either of those as a higher level or ever feel like I am regressing. It seems more like I am looking at the same thing from different angles. Sometimes one is more useful than the other. Neither fully captures reality, but both represent metaphors that are useful at times.

    Timothy A Wiseman
    SQL Blog: http://timothyawiseman.wordpress.com/

  • Consciousness is horrendously bad at multitasking. We must see each viewpoint sequentially. We also generally use the easiest tool for the job so playing with the kids does not require systems level thinking. Children don't have the ability to think in complexity so it would be inappropriate to talk to them at that level.

    XP (extreme programming) requires two programmers to work together on a task. One focuses on the details or object level while the other programmer focuses on the system level. One writes code while the other provides insights on the constraints and environment.

    When I say systems thinking is "higher" I just mean it comes later evolutionarily. Perhaps it is easier to accept that the MORE viewpoints one is capable of having, the BETTER for guaranteeing survivability, flexibility, and understanding. Ultimately knowing all viewpoints and holding no viewpoint is the most powerful and unbiased state to be in.

    We grow through differentiation and integration. We advance from subjective to objective. We move from slavery to mastery. We expand in our circles of love to encompass more of the world. These are all just models to help point the way of personal evolution. The models are not the territory: leave too much out and they become useless, add too much and they cease to be models.

    Here is a seminal work on personal evolution which in my opinion is one of the greatest contributions of the 20th century: http://www.clarewgraves.com/articles_content/1974_Futurist/1974_Futurist.html

Viewing 8 posts - 1 through 7 (of 7 total)

You must be logged in to reply to this topic. Login to reply