SlideShare a Scribd company logo
So You Think Objects Are Records
With Byte Codes On The Side?
                                   T
                                   h
                                   i
                                   n
                                   k
                                   A
                                   g
                                   a
                                   i
                                   n
Where Do Objects Fit?
    As a vehicle for implementing programs.




            So You Think Objects Are Records With Byte Codes On The Side?   2
Where Do Objects Fit?
    As a vehicle for implementing programs.
    As a vehicle for modeling actual business entities and
    the diverse, complex rules that govern their
    interpretation and use.




            So You Think Objects Are Records With Byte Codes On The Side?   3
How Do We View Objects?
   Traditional thinking holds that objects are the managers
   and clients of state stored in data base records.




           So You Think Objects Are Records With Byte Codes On The Side?   4
How Do We View Objects?
   Traditional thinking holds that objects are the managers
   and clients of state stored in data base records.
   An intuitively appealing conceptual model...




           So You Think Objects Are Records With Byte Codes On The Side?   5
How Do We View Objects?
   Traditional thinking holds that objects are the managers
   and clients of state stored in data base records.
   An intuitively appealing conceptual model...
   … that is inherently external to the data base.




           So You Think Objects Are Records With Byte Codes On The Side?   6
How Do We Implement Objects?
   Traditional thinking holds that objects are records with
   methods on the side.




           So You Think Objects Are Records With Byte Codes On The Side?   7
How Do We Implement Objects?
   Traditional thinking holds that objects are records with
   methods on the side.
   An intuitively appealing conceptual model...




           So You Think Objects Are Records With Byte Codes On The Side?   8
How Do We Implement Objects?
   Traditional thinking holds that objects are records with
   methods on the side.
   An intuitively appealing conceptual model...
   … that insists on viewing the world one individual at a
   time.




           So You Think Objects Are Records With Byte Codes On The Side?   9
So What’s Wrong With That?
   It may work for clients that consume relatively small
   amounts of data...




           So You Think Objects Are Records With Byte Codes On The Side?   10
So What’s Wrong With That?
   It may work for clients that consume relatively small
   amounts of data...
   It may work for programs…




           So You Think Objects Are Records With Byte Codes On The Side?   11
So What’s Wrong With That?
   It may work for clients that consume relatively small
   amounts of data...
   It may work for programs…
   … but it leaves the hard problem of implementing
   scaleable business objects, particularly entity objects, as
   an exercise for the ‘reader’.




            So You Think Objects Are Records With Byte Codes On The Side?   12
So Where Do We Go Next?
   Establishing Principles
   Starting At The Top
   Questioning Assumptions
   Developing a New Foundation




           So You Think Objects Are Records With Byte Codes On The Side?   13
Establishing Principles
    From an application perspective:
       comprehensibility
        » most applications we encounter are ultimately
          developed by involved, business knowledgeable users,
          not programmers.
       integration
        » solving interface and impedance matching problems
          is a jargon laden waste of time.



            So You Think Objects Are Records With Byte Codes On The Side?   14
Establishing Principles
    From a technology perspective:
       theory
        » a collection centric theory of operation is critical to
          achieving reliable application scalability and
          deployment.
      integration
        » solving interface and impedance matching problems
          is a jargon laden waste of time.



            So You Think Objects Are Records With Byte Codes On The Side?   15
Establishing Principles
    From any perspective:
       generality
        » most applications are a collection of many simple,
          hard problems.
        » it is impossible to overstate the complexity of even
          the simplest looking applications.




            So You Think Objects Are Records With Byte Codes On The Side?   16
Starting At The Top
    Without creating an application specific technology,
    start with an understanding of how entity based
    applications work and what needs to be in place in
    order to create them.




            So You Think Objects Are Records With Byte Codes On The Side?   17
For Example, …
                                           Account defineMethod: [ | getHoldingsOverlap |
   A mutual fund analysis                  !lowerPct <- pctEq * 0.8; !upperPct <- … ;
                                           holdings send: [security].
   system powered by our                     select: [type isEquity].
   technology needs to                       collectListElementsFrom: [holdings].
                                             groupedBy: [account].
   rank funds based on                       select: [pctEq >= ^my lowerPct
                                                && pctEq <= ^my upperPct].
   the overlap of their                      extendBy: [
   holdings with another,                       !xref <- ^my holdings;
                                                !ofactor <- groupList total: [
   arbitrarily chosen,                            percentOfPort min: (^my xref at: security.

   fund:                                        ]
                                                    percentOfPort)

                                             ].
                                             sortDown: [ofactor]
                                           ];

          So You Think Objects Are Records With Byte Codes On The Side?                    18
Collections Are Everywhere
                                             Account defineMethod: [ | getHoldingsOverlap |
    Query and collection                     !lowerPct <- pctEq * 0.8; !upperPct <- … ;
                                             holdings send: [security].
    operations are                             select: [type isEquity].
    embedded throughout                        collectListElementsFrom: [holdings].
                                               groupedBy: [account].
    this application’s logic,                  select: [pctEq >= ^my lowerPct
                                                  && pctEq <= ^my upperPct].
    not simply at the                          extendBy: [
    ‘database’ end of a data                      !xref <- ^my holdings;
                                                  !ofactor <- groupList total: [
    pipeline.                                       percentOfPort min: (^my xref at: security.
                                                      percentOfPort)
                                                  ]
                                               ].
                                               sortDown: [ofactor]
                                             ];

            So You Think Objects Are Records With Byte Codes On The Side?                    19
Detail Counts
                                             Account defineMethod: [ | getHoldingsOverlap |
    The collection level                     !lowerPct <- pctEq * 0.8; !upperPct <- … ;
                                             holdings send: [security].
    detail associated with                     select: [type isEquity].
    an object is just as                       collectListElementsFrom: [holdings].
                                               groupedBy: [account].
    important as its                           select: [pctEq >= ^my lowerPct
                                                  && pctEq <= ^my upperPct].
    summary information                        extendBy: [
    and must be just as                           !xref <- ^my holdings;
                                                  !ofactor <- groupList total: [
    easily accessible.                              percentOfPort min: (^my xref at: security.
                                                      percentOfPort)
                                                  ]
                                               ].
                                               sortDown: [ofactor]
                                             ];

            So You Think Objects Are Records With Byte Codes On The Side?                    20
Information Is Dynamic
                                             Account defineMethod: [ | getHoldingsOverlap |
    New collections of                       !lowerPct <- pctEq * 0.8; !upperPct <- … ;
                                             holdings send: [security].
    data, complete with                        select: [type isEquity].
    new and additional                         collectListElementsFrom: [holdings].
                                               groupedBy: [account].
    properties, need to be                     select: [pctEq >= ^my lowerPct
                                                  && pctEq <= ^my upperPct].
    created, used, and                         extendBy: [
    returned ‘on-the-fly’.                        !xref <- ^my holdings;
                                                  !ofactor <- groupList total: [
                                                    percentOfPort min: (^my xref at: security.
                                                      percentOfPort)
                                                  ]
                                               ].
                                               sortDown: [ofactor]
                                             ];

            So You Think Objects Are Records With Byte Codes On The Side?                    21
Complexity Is Hidden
                                             Account defineMethod: [ | getHoldingsOverlap |
    Many complex details                     !lowerPct <- pctEq * 0.8; !upperPct <- … ;
                                             holdings send: [security].
    are hidden, including                      select: [type isEquity].
    the fact that important                    collectListElementsFrom: [holdings].
                                               groupedBy: [account].
    data used in even this                     select: [pctEq >= ^my lowerPct
                                                  && pctEq <= ^my upperPct].
    ‘simple’ application is                    extendBy: [
    time-varying and,                             !xref <- ^my holdings;
                                                  !ofactor <- groupList total: [
    therefore, context                              percentOfPort min: (^my xref at: security.

    sensitive.                                    ]
                                                      percentOfPort)

                                               ].
                                               sortDown: [ofactor]
                                             ];

            So You Think Objects Are Records With Byte Codes On The Side?                    22
Complexity Is Embeddable
   It is impossible to anticipate how encapsulated
   functionality will be used:

      TRoweFunds do: [^self getHoldingsOverlap first: 5 . do: […] ]

      ^today to: ^today - 1 years by: 1 quarterEnds. evaluate: [
        MagellanFund getHoldingsOverlap do: [ … ]
      ];




            So You Think Objects Are Records With Byte Codes On The Side?   23
Starting At The Top, Epilogue …
    The functionality required by entity based applications
    profoundly affects all of the technologies it touches
    without fitting neatly into any of them.




            So You Think Objects Are Records With Byte Codes On The Side?   24
… And Prologue:
   Time to start thinking outside the box and questioning
   assumptions, ...




           So You Think Objects Are Records With Byte Codes On The Side?   25
Questioning Assumptions
  From an application perspective:
    Entity based applications fit into a neat little
    box.
  From a technology perspective:
    That which an application sees and
    manipulates is the way it really works.




            So You Think Objects Are Records With Byte Codes On The Side?   26
Questioning Assumptions
  And its corollaries:
    Who said sets are defined by the elements they keep?
    Who said objects are records?




             So You Think Objects Are Records With Byte Codes On The Side?   27
Who said sets are defined by the
elements they keep?
    Sets have come to be known as ‘unique-ifers of things’.
    This operational definition is understandable given
    everyone’s intuitive concept of a set




            So You Think Objects Are Records With Byte Codes On The Side?   28
Set Elements Don’t Matter, …
    The intuitive definition of sets in terms of their
    elements imparts unnecessary structure.
    The structure it does impart is misplaced anyway.




             So You Think Objects Are Records With Byte Codes On The Side?   29
… And Sets Are Structureless
    A better intuitive definition
    for a set is that it is                       MySetOf3
    ‘collection of distinguishable
    things’, without reference to
    the particular things:
         my set of three things
         the Integers
                                                                              TheIntegers




              So You Think Objects Are Records With Byte Codes On The Side?           30
But Where Are The Elements?
   But where do you
   represent the fact that a                    MySetOf3

   particular set of three
   things ‘contains’ the
   elements {4, 14, 34}?


                                                                            TheIntegers




            So You Think Objects Are Records With Byte Codes On The Side?           31
In A Morphism, …
 m0
 1→4
                                              MySetOf3
 2 → 14
 3 → 34
                                                                          m0




                                                                               TheIntegers




          So You Think Objects Are Records With Byte Codes On The Side?                32
That, Along With The Set, Is
Unique Up To Isomorphism, …
 m0       i01         i02
 1→4      1→3         1→2
                                                 MySetOf3
 2 → 14   2→1         2→3
 3 → 34   3→2         3→1                        i01
 i10                  i12                                     i10          m0
 1→2                  1→3            i02   i20                       m1
 2→3                  2→1                              S1
 3→1                  3→2
 i20      i21         m2                                i12    i21
 1→3      1→2         1 → 34                                          m2        TheIntegers
 2→1      2→3         2→4
 3→2      3→1         3 → 14                                    S2



           So You Think Objects Are Records With Byte Codes On The Side?                33
Only Morphism Structure Matters
    The properties and internal structure of morphisms and
    families of morphisms:
       express constraints
       implement operations
       characterize transformations and relationships
       provide an algebraic framework
    These roles are not mutually exclusive.



            So You Think Objects Are Records With Byte Codes On The Side?   34
Morphisms Express Constraints
    Morphism structure
    expresses constraints:                        MySetOf3

       m0, as the ‘element’ specifier
       for MySetOf3, must be                                                  m0
       injective.



               m0
                                                                                   TheIntegers
               1→4
               2 → 14
               3 → 34


              So You Think Objects Are Records With Byte Codes On The Side?                35
Morphisms Implement Operations
   Morphism structure supports
   operation implementation:                     MySetOf3

      m1 = m0 º i10
                                                             i10             m0
      ∀j∈S1 m1[j] = m0[i10[j]]
                                                                   m1
                                                    S1

   i10        m0               m1
   1→2        1→4              1 → 14                                             TheIntegers
   2→3        2 → 14           2 → 34
   3→1        3 → 34           3→4



             So You Think Objects Are Records With Byte Codes On The Side?                36
Morphisms Characterize
Transformations and Relationships
 Composition                                       Product (Projection)
                                                               pr0
          g                f                                          pr1
                                                                      …
                                                               prn
              fºg


 Partition                                         Disjoint Union
 Values                          Elements                       in0
              v=kºe                                                   in1
                                                                       …
          k               e                                     inn

               Collections

                    So You Think Objects Are Records With Byte Codes On The Side?   37
Morphisms Characterize
Transformations and Relationships
 Instantiation                                    Deletion
             Sv0                                                    Sv0
                   in                                                     in

             Sv1                                                    Sv1



 Insertion                                        Join




                   So You Think Objects Are Records With Byte Codes On The Side?   38
So Where Are We?
   Structureless sets.
   Information bearing morphisms.
   What does this have to do with objects and data bases?




            So You Think Objects Are Records With Byte Codes On The Side?   39
Structureless Sets Denote Things
    Structureless sets
                                               Account
    represent sets of
    distinguishable things:                                                  AccountId

       the set of Account
       objects                                 Holding
       the set of Holding
       objects
                                                                             SecurityId
       the set of Security
       objects                                 Security



             So You Think Objects Are Records With Byte Codes On The Side?          40
Morphisms Hold Values
   Information bearing
                                            Account
   morphisms hold                                                id
   property values …                                                           AccountId


                                                                      accountId
                                            Holding
                                                                      securityId


                                                                               SecurityId
                                                                 id
                                            Security



          So You Think Objects Are Records With Byte Codes On The Side?               41
… Including Navigational Values
  …including the values of
                                              Account
   navigational properties.                                        id
                                                                                 AccountId
                                               account

                                                                        accountId
                                              Holding
                                                                        securityId
                                               security
                                                                                 SecurityId
                                                                   id
                                              Security



            So You Think Objects Are Records With Byte Codes On The Side?               42
… Without Violating Theory
  …while remaining on
                                             Account
   firm theoretical                                               id
                                        account
   ground.                                                                      AccountId


                                                                       accountId
                                             Holding
                                                                       securityId


                                                                                SecurityId
                                       security
                                                                  id
                                             Security



           So You Think Objects Are Records With Byte Codes On The Side?               43
Properties Can Be Polymorphic
    Properties are usually
                                              Account
    polymorphic…                                                   id
                                                                                 AccountId
                                               account

                                                                        accountId
                                              Holding
                                                                        securityId
                                               security
                                                                                 SecurityId
                                                                   id
                                              Security



            So You Think Objects Are Records With Byte Codes On The Side?               44
So Morphisms Need Fine Structure
 Portfolio                          super
                                                              Account
             Aggregate
                                Index                                     id
                                                                                        AccountId
                 in0             in1              in2
                                                              Holding
account                                                                        accountId

                                                                               securityId
                                                        security
                                                                                        SecurityId
      … like disjoint union.                                              id
                                                        Security



                   So You Think Objects Are Records With Byte Codes On The Side?               45
Properties Can Be Time-Varying
    Properties often
                                               Account
    express time varying                                            id
    relationships.                              account
                                                                                  AccountId

    We won’t go there right                                              accountId
    now except to say that the                 Holding
                                                                         securityId
    fine structure gets even                    security
    richer.                                                                       SecurityId
                                                                    id
                                               Security
                                                                   price


             So You Think Objects Are Records With Byte Codes On The Side?               46
It Computes …
                                                                  Account
                                                                               id
                                             Partition
                                                                                             AccountId
                                                                       account
                                                        Compose                     accountId
                                                           Holding
 collectListElementsFrom: [holdings].                                               securityId
 groupedBy: [account].                                     security
    …
 extendBy: [                                                                                 SecurityId
    …                                                                          id
    !ofactor <- groupList total: […]                      Security
    …
 ];

                        So You Think Objects Are Records With Byte Codes On The Side?               47
In Parallel …
Portfolio                          super
                                                             Account
            Aggregate
                               Index                                     id
                                                                                       AccountId
                in0             in1              in2
                                                             Holding
                                                                              accountId

                                                                              securityId
                                                       security
                                                                                       SecurityId
               Compose/Join                                              id
                                                       Security



                  So You Think Objects Are Records With Byte Codes On The Side?               48
But All Of This Is Well Hidden …
                                            Account defineMethod: [ | getHoldingsOverlap |
    All a user sees is a                    !lowerPct <- pctEq * 0.8; !upperPct <- … ;
                                            holdings send: [security].
    conventional object                       select: [type isEquity].
    oriented programming                      collectListElementsFrom: [holdings].
                                              groupedBy: [account].
    language.                                 select: [pctEq >= ^my lowerPct
                                                 && pctEq <= ^my upperPct].
                                              extendBy: [
                                                 !xref <- ^my holdings;
                                                 !ofactor <- groupList total: [
                                                   percentOfPort min: (^my xref at: security.
                                                     percentOfPort)
                                                 ]
                                              ].
                                              sortDown: [ofactor]
                                            ];

           So You Think Objects Are Records With Byte Codes On The Side?                    49
This Is Necessarily An Overview
    What you have seen is an overview of a straightforward
    but non-trivial technology.
    The principles described here easily address the data
    definition and manipulation needs of a general purpose,
    integrated data base management, data base
    programming environment.




            So You Think Objects Are Records With Byte Codes On The Side?   50
Questioning Assumptions - Reprise
  From an application perspective:
    Entity based applications fit into a neat little
    box.
  From a technology perspective:
    That which an application sees and
    manipulates is the way it really works.




            So You Think Objects Are Records With Byte Codes On The Side?   51
By The Way, What Are Objects?
   The theory underlying all of this is Category Theory.
   By the way, objects are sub-categories of the concrete
   category Set.




            So You Think Objects Are Records With Byte Codes On The Side?   52
Where Are We?
   commercially proven
   solid theoretical underpinnings
   unified, inherently parallel data base programming
   language integration




           So You Think Objects Are Records With Byte Codes On The Side?   53
And, Of Course …
   Objects are records with byte codes on the side?


   It Ain’t Necessarily So.




             So You Think Objects Are Records With Byte Codes On The Side?   54

More Related Content

What's hot

Java Persistence Frameworks for MongoDB
Java Persistence Frameworks for MongoDBJava Persistence Frameworks for MongoDB
Java Persistence Frameworks for MongoDB
MongoDB
 
Java Persistence Frameworks for MongoDB
Java Persistence Frameworks for MongoDBJava Persistence Frameworks for MongoDB
Java Persistence Frameworks for MongoDB
Tobias Trelle
 
Java Development with MongoDB
Java Development with MongoDBJava Development with MongoDB
Java Development with MongoDB
Scott Hernandez
 
Objective-C Crash Course for Web Developers
Objective-C Crash Course for Web DevelopersObjective-C Crash Course for Web Developers
Objective-C Crash Course for Web Developers
Joris Verbogt
 
Devoxx08 - Nuxeo Core, JCR 2, CMIS
Devoxx08 - Nuxeo Core, JCR 2, CMIS Devoxx08 - Nuxeo Core, JCR 2, CMIS
Devoxx08 - Nuxeo Core, JCR 2, CMIS
Nuxeo
 
MongoDB + Java + Spring Data
MongoDB + Java + Spring DataMongoDB + Java + Spring Data
MongoDB + Java + Spring Data
Anton Sulzhenko
 
Start Wrap Episode 11: A New Rope
Start Wrap Episode 11: A New RopeStart Wrap Episode 11: A New Rope
Start Wrap Episode 11: A New Rope
Yung-Yu Chen
 
Paintfree Object-Document Mapping for MongoDB by Philipp Krenn
Paintfree Object-Document Mapping for MongoDB by Philipp KrennPaintfree Object-Document Mapping for MongoDB by Philipp Krenn
Paintfree Object-Document Mapping for MongoDB by Philipp Krenn
JavaDayUA
 
What do you mean, Backwards Compatibility?
What do you mean, Backwards Compatibility?What do you mean, Backwards Compatibility?
What do you mean, Backwards Compatibility?
Trisha Gee
 
Morphia, Spring Data & Co.
Morphia, Spring Data & Co.Morphia, Spring Data & Co.
Morphia, Spring Data & Co.
Tobias Trelle
 
iOS Session-2
iOS Session-2iOS Session-2
iOS Session-2
Hussain Behestee
 
Lab Log Summer 2016 - Sheng Li
Lab Log Summer 2016 - Sheng LiLab Log Summer 2016 - Sheng Li
Lab Log Summer 2016 - Sheng Li
Sheng Li
 
Objective-C for iOS Application Development
Objective-C for iOS Application DevelopmentObjective-C for iOS Application Development
Objective-C for iOS Application Development
Dhaval Kaneria
 
CIS14: Developing with OAuth and OIDC Connect
CIS14: Developing with OAuth and OIDC ConnectCIS14: Developing with OAuth and OIDC Connect
CIS14: Developing with OAuth and OIDC Connect
CloudIDSummit
 
descriptive programming
descriptive programmingdescriptive programming
descriptive programming
Anand Dhana
 
Preon (J-Fall 2008)
Preon (J-Fall 2008)Preon (J-Fall 2008)
Preon (J-Fall 2008)
Wilfred Springer
 
iOS Development with Blocks
iOS Development with BlocksiOS Development with Blocks
iOS Development with Blocks
Jeff Kelley
 
One BSON to Rule Them
One BSON to Rule ThemOne BSON to Rule Them
One BSON to Rule Them
David Golden
 
iOS Basic
iOS BasiciOS Basic
iOS Basic
Duy Do Phan
 
C++ Chapter I
C++ Chapter IC++ Chapter I
C++ Chapter I
Sorn Chanratha
 

What's hot (20)

Java Persistence Frameworks for MongoDB
Java Persistence Frameworks for MongoDBJava Persistence Frameworks for MongoDB
Java Persistence Frameworks for MongoDB
 
Java Persistence Frameworks for MongoDB
Java Persistence Frameworks for MongoDBJava Persistence Frameworks for MongoDB
Java Persistence Frameworks for MongoDB
 
Java Development with MongoDB
Java Development with MongoDBJava Development with MongoDB
Java Development with MongoDB
 
Objective-C Crash Course for Web Developers
Objective-C Crash Course for Web DevelopersObjective-C Crash Course for Web Developers
Objective-C Crash Course for Web Developers
 
Devoxx08 - Nuxeo Core, JCR 2, CMIS
Devoxx08 - Nuxeo Core, JCR 2, CMIS Devoxx08 - Nuxeo Core, JCR 2, CMIS
Devoxx08 - Nuxeo Core, JCR 2, CMIS
 
MongoDB + Java + Spring Data
MongoDB + Java + Spring DataMongoDB + Java + Spring Data
MongoDB + Java + Spring Data
 
Start Wrap Episode 11: A New Rope
Start Wrap Episode 11: A New RopeStart Wrap Episode 11: A New Rope
Start Wrap Episode 11: A New Rope
 
Paintfree Object-Document Mapping for MongoDB by Philipp Krenn
Paintfree Object-Document Mapping for MongoDB by Philipp KrennPaintfree Object-Document Mapping for MongoDB by Philipp Krenn
Paintfree Object-Document Mapping for MongoDB by Philipp Krenn
 
What do you mean, Backwards Compatibility?
What do you mean, Backwards Compatibility?What do you mean, Backwards Compatibility?
What do you mean, Backwards Compatibility?
 
Morphia, Spring Data & Co.
Morphia, Spring Data & Co.Morphia, Spring Data & Co.
Morphia, Spring Data & Co.
 
iOS Session-2
iOS Session-2iOS Session-2
iOS Session-2
 
Lab Log Summer 2016 - Sheng Li
Lab Log Summer 2016 - Sheng LiLab Log Summer 2016 - Sheng Li
Lab Log Summer 2016 - Sheng Li
 
Objective-C for iOS Application Development
Objective-C for iOS Application DevelopmentObjective-C for iOS Application Development
Objective-C for iOS Application Development
 
CIS14: Developing with OAuth and OIDC Connect
CIS14: Developing with OAuth and OIDC ConnectCIS14: Developing with OAuth and OIDC Connect
CIS14: Developing with OAuth and OIDC Connect
 
descriptive programming
descriptive programmingdescriptive programming
descriptive programming
 
Preon (J-Fall 2008)
Preon (J-Fall 2008)Preon (J-Fall 2008)
Preon (J-Fall 2008)
 
iOS Development with Blocks
iOS Development with BlocksiOS Development with Blocks
iOS Development with Blocks
 
One BSON to Rule Them
One BSON to Rule ThemOne BSON to Rule Them
One BSON to Rule Them
 
iOS Basic
iOS BasiciOS Basic
iOS Basic
 
C++ Chapter I
C++ Chapter IC++ Chapter I
C++ Chapter I
 

Viewers also liked

Recommendations play @flipkart (3)
Recommendations play @flipkart (3)Recommendations play @flipkart (3)
Recommendations play @flipkart (3)
hava101
 
Baptcare Family and Community Services - client feedback 2015
Baptcare Family and Community Services - client feedback 2015Baptcare Family and Community Services - client feedback 2015
Baptcare Family and Community Services - client feedback 2015
Baptcare
 
Test kreative
Test kreativeTest kreative
Test kreative
Lina Fone
 
The simple hard problem of time
The simple hard problem of timeThe simple hard problem of time
The simple hard problem of time
Michael Caruso
 
Android fragmentation
Android fragmentationAndroid fragmentation
Android fragmentation
Jürgen Schmidt
 
02 cloocaチュートリアル(gr-sakura)
02 cloocaチュートリアル(gr-sakura)02 cloocaチュートリアル(gr-sakura)
02 cloocaチュートリアル(gr-sakura)Kenji Hisazumi
 
Baptcare Family & Community Services Client Feedback Results September 2012–D...
Baptcare Family & Community Services Client Feedback Results September 2012–D...Baptcare Family & Community Services Client Feedback Results September 2012–D...
Baptcare Family & Community Services Client Feedback Results September 2012–D...
Baptcare
 
Gardner's Multiple Intelligences
Gardner's Multiple IntelligencesGardner's Multiple Intelligences
Gardner's Multiple Intelligences
caseylashaek
 
Baptcare Family & Community Services Client Feedback Results September 2012–...
Baptcare Family & Community Services Client Feedback Results September 2012–...Baptcare Family & Community Services Client Feedback Results September 2012–...
Baptcare Family & Community Services Client Feedback Results September 2012–...
Baptcare
 
Rohit khare
Rohit khareRohit khare
Rohit khare
rohit_khare80
 
Reinforcement & Punishment
Reinforcement & PunishmentReinforcement & Punishment
Reinforcement & Punishment
caseylashaek
 
Recommendations play @flipkart
Recommendations play @flipkartRecommendations play @flipkart
Recommendations play @flipkart
hava101
 
Citadelle Gin
Citadelle GinCitadelle Gin
Citadelle Gin
COGNAC FERRAND
 
renewable sources of energy
renewable sources of energyrenewable sources of energy
renewable sources of energy
Remar Docor
 

Viewers also liked (16)

Recommendations play @flipkart (3)
Recommendations play @flipkart (3)Recommendations play @flipkart (3)
Recommendations play @flipkart (3)
 
Baptcare Family and Community Services - client feedback 2015
Baptcare Family and Community Services - client feedback 2015Baptcare Family and Community Services - client feedback 2015
Baptcare Family and Community Services - client feedback 2015
 
Test kreative
Test kreativeTest kreative
Test kreative
 
The simple hard problem of time
The simple hard problem of timeThe simple hard problem of time
The simple hard problem of time
 
Rpp matematika
Rpp matematikaRpp matematika
Rpp matematika
 
Android fragmentation
Android fragmentationAndroid fragmentation
Android fragmentation
 
02 cloocaチュートリアル(gr-sakura)
02 cloocaチュートリアル(gr-sakura)02 cloocaチュートリアル(gr-sakura)
02 cloocaチュートリアル(gr-sakura)
 
Baptcare Family & Community Services Client Feedback Results September 2012–D...
Baptcare Family & Community Services Client Feedback Results September 2012–D...Baptcare Family & Community Services Client Feedback Results September 2012–D...
Baptcare Family & Community Services Client Feedback Results September 2012–D...
 
Gardner's Multiple Intelligences
Gardner's Multiple IntelligencesGardner's Multiple Intelligences
Gardner's Multiple Intelligences
 
Baptcare Family & Community Services Client Feedback Results September 2012–...
Baptcare Family & Community Services Client Feedback Results September 2012–...Baptcare Family & Community Services Client Feedback Results September 2012–...
Baptcare Family & Community Services Client Feedback Results September 2012–...
 
Rohit khare
Rohit khareRohit khare
Rohit khare
 
Reinforcement & Punishment
Reinforcement & PunishmentReinforcement & Punishment
Reinforcement & Punishment
 
Rape1
Rape1Rape1
Rape1
 
Recommendations play @flipkart
Recommendations play @flipkartRecommendations play @flipkart
Recommendations play @flipkart
 
Citadelle Gin
Citadelle GinCitadelle Gin
Citadelle Gin
 
renewable sources of energy
renewable sources of energyrenewable sources of energy
renewable sources of energy
 

Similar to Objects arent records with byte codes on the side

Approaches for application request throttling - dotNetCologne
Approaches for application request throttling - dotNetCologneApproaches for application request throttling - dotNetCologne
Approaches for application request throttling - dotNetCologne
Maarten Balliauw
 
Coding Naked 2023
Coding Naked 2023Coding Naked 2023
Coding Naked 2023
Caleb Jenkins
 
ConFoo Montreal - Approaches for application request throttling
ConFoo Montreal - Approaches for application request throttlingConFoo Montreal - Approaches for application request throttling
ConFoo Montreal - Approaches for application request throttling
Maarten Balliauw
 
Approaches for application request throttling - Cloud Developer Days Poland
Approaches for application request throttling - Cloud Developer Days PolandApproaches for application request throttling - Cloud Developer Days Poland
Approaches for application request throttling - Cloud Developer Days Poland
Maarten Balliauw
 
OpenERP Technical Memento
OpenERP Technical MementoOpenERP Technical Memento
OpenERP Technical Memento
Odoo
 
iPhone Workshop Mobile Monday Ahmedabad
iPhone Workshop Mobile Monday AhmedabadiPhone Workshop Mobile Monday Ahmedabad
iPhone Workshop Mobile Monday Ahmedabad
momoahmedabad
 
Code instrumentation
Code instrumentationCode instrumentation
Code instrumentation
Mennan Tekbir
 
Modular Web Applications With Netzke
Modular Web Applications With NetzkeModular Web Applications With Netzke
Modular Web Applications With Netzke
netzke
 
Can We Trust the Libraries We Use?
Can We Trust the Libraries We Use?Can We Trust the Libraries We Use?
Can We Trust the Libraries We Use?
Andrey Karpov
 
Tdd,Ioc
Tdd,IocTdd,Ioc
PoEAA by Example
PoEAA by ExamplePoEAA by Example
PoEAA by Example
Paulo Gandra de Sousa
 
Patterns of Enterprise Application Architecture (by example)
Patterns of Enterprise Application Architecture (by example)Patterns of Enterprise Application Architecture (by example)
Patterns of Enterprise Application Architecture (by example)
Paulo Gandra de Sousa
 
Using eBPF to Measure the k8s Cluster Health
Using eBPF to Measure the k8s Cluster HealthUsing eBPF to Measure the k8s Cluster Health
Using eBPF to Measure the k8s Cluster Health
ScyllaDB
 
Gene Hynson [InfluxData] | How We Built the MQTT Native Collector | InfluxDay...
Gene Hynson [InfluxData] | How We Built the MQTT Native Collector | InfluxDay...Gene Hynson [InfluxData] | How We Built the MQTT Native Collector | InfluxDay...
Gene Hynson [InfluxData] | How We Built the MQTT Native Collector | InfluxDay...
InfluxData
 
Introduction to aop
Introduction to aopIntroduction to aop
Introduction to aop
Dror Helper
 
Cluj.py Meetup: Extending Python in C
Cluj.py Meetup: Extending Python in CCluj.py Meetup: Extending Python in C
Cluj.py Meetup: Extending Python in C
Steffen Wenz
 
Building an Observability Platform in 389 Difficult Steps
Building an Observability Platform in 389 Difficult StepsBuilding an Observability Platform in 389 Difficult Steps
Building an Observability Platform in 389 Difficult Steps
DigitalOcean
 
Python business intelligence (PyData 2012 talk)
Python business intelligence (PyData 2012 talk)Python business intelligence (PyData 2012 talk)
Python business intelligence (PyData 2012 talk)
Stefan Urbanek
 
Java Hurdling: Obstacles and Techniques in Java Client Penetration-Testing
Java Hurdling: Obstacles and Techniques in Java Client Penetration-TestingJava Hurdling: Obstacles and Techniques in Java Client Penetration-Testing
Java Hurdling: Obstacles and Techniques in Java Client Penetration-Testing
Tal Melamed
 
Big data analysis in python @ PyCon.tw 2013
Big data analysis in python @ PyCon.tw 2013Big data analysis in python @ PyCon.tw 2013
Big data analysis in python @ PyCon.tw 2013
Jimmy Lai
 

Similar to Objects arent records with byte codes on the side (20)

Approaches for application request throttling - dotNetCologne
Approaches for application request throttling - dotNetCologneApproaches for application request throttling - dotNetCologne
Approaches for application request throttling - dotNetCologne
 
Coding Naked 2023
Coding Naked 2023Coding Naked 2023
Coding Naked 2023
 
ConFoo Montreal - Approaches for application request throttling
ConFoo Montreal - Approaches for application request throttlingConFoo Montreal - Approaches for application request throttling
ConFoo Montreal - Approaches for application request throttling
 
Approaches for application request throttling - Cloud Developer Days Poland
Approaches for application request throttling - Cloud Developer Days PolandApproaches for application request throttling - Cloud Developer Days Poland
Approaches for application request throttling - Cloud Developer Days Poland
 
OpenERP Technical Memento
OpenERP Technical MementoOpenERP Technical Memento
OpenERP Technical Memento
 
iPhone Workshop Mobile Monday Ahmedabad
iPhone Workshop Mobile Monday AhmedabadiPhone Workshop Mobile Monday Ahmedabad
iPhone Workshop Mobile Monday Ahmedabad
 
Code instrumentation
Code instrumentationCode instrumentation
Code instrumentation
 
Modular Web Applications With Netzke
Modular Web Applications With NetzkeModular Web Applications With Netzke
Modular Web Applications With Netzke
 
Can We Trust the Libraries We Use?
Can We Trust the Libraries We Use?Can We Trust the Libraries We Use?
Can We Trust the Libraries We Use?
 
Tdd,Ioc
Tdd,IocTdd,Ioc
Tdd,Ioc
 
PoEAA by Example
PoEAA by ExamplePoEAA by Example
PoEAA by Example
 
Patterns of Enterprise Application Architecture (by example)
Patterns of Enterprise Application Architecture (by example)Patterns of Enterprise Application Architecture (by example)
Patterns of Enterprise Application Architecture (by example)
 
Using eBPF to Measure the k8s Cluster Health
Using eBPF to Measure the k8s Cluster HealthUsing eBPF to Measure the k8s Cluster Health
Using eBPF to Measure the k8s Cluster Health
 
Gene Hynson [InfluxData] | How We Built the MQTT Native Collector | InfluxDay...
Gene Hynson [InfluxData] | How We Built the MQTT Native Collector | InfluxDay...Gene Hynson [InfluxData] | How We Built the MQTT Native Collector | InfluxDay...
Gene Hynson [InfluxData] | How We Built the MQTT Native Collector | InfluxDay...
 
Introduction to aop
Introduction to aopIntroduction to aop
Introduction to aop
 
Cluj.py Meetup: Extending Python in C
Cluj.py Meetup: Extending Python in CCluj.py Meetup: Extending Python in C
Cluj.py Meetup: Extending Python in C
 
Building an Observability Platform in 389 Difficult Steps
Building an Observability Platform in 389 Difficult StepsBuilding an Observability Platform in 389 Difficult Steps
Building an Observability Platform in 389 Difficult Steps
 
Python business intelligence (PyData 2012 talk)
Python business intelligence (PyData 2012 talk)Python business intelligence (PyData 2012 talk)
Python business intelligence (PyData 2012 talk)
 
Java Hurdling: Obstacles and Techniques in Java Client Penetration-Testing
Java Hurdling: Obstacles and Techniques in Java Client Penetration-TestingJava Hurdling: Obstacles and Techniques in Java Client Penetration-Testing
Java Hurdling: Obstacles and Techniques in Java Client Penetration-Testing
 
Big data analysis in python @ PyCon.tw 2013
Big data analysis in python @ PyCon.tw 2013Big data analysis in python @ PyCon.tw 2013
Big data analysis in python @ PyCon.tw 2013
 

Recently uploaded

Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with SlackLet's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
shyamraj55
 
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
Edge AI and Vision Alliance
 
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Aggregage
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
Neo4j
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
DianaGray10
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Paige Cruz
 
20 Comprehensive Checklist of Designing and Developing a Website
20 Comprehensive Checklist of Designing and Developing a Website20 Comprehensive Checklist of Designing and Developing a Website
20 Comprehensive Checklist of Designing and Developing a Website
Pixlogix Infotech
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
Kari Kakkonen
 
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
Neo4j
 
Large Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial ApplicationsLarge Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial Applications
Rohit Gautam
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
Neo4j
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
Octavian Nadolu
 
RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
KAMESHS29
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Malak Abu Hammad
 
Building RAG with self-deployed Milvus vector database and Snowpark Container...
Building RAG with self-deployed Milvus vector database and Snowpark Container...Building RAG with self-deployed Milvus vector database and Snowpark Container...
Building RAG with self-deployed Milvus vector database and Snowpark Container...
Zilliz
 
Full-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalizationFull-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalization
Zilliz
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
sonjaschweigert1
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
innovationoecd
 
Data structures and Algorithms in Python.pdf
Data structures and Algorithms in Python.pdfData structures and Algorithms in Python.pdf
Data structures and Algorithms in Python.pdf
TIPNGVN2
 
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
Neo4j
 

Recently uploaded (20)

Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with SlackLet's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
 
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
 
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
 
20 Comprehensive Checklist of Designing and Developing a Website
20 Comprehensive Checklist of Designing and Developing a Website20 Comprehensive Checklist of Designing and Developing a Website
20 Comprehensive Checklist of Designing and Developing a Website
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
 
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
 
Large Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial ApplicationsLarge Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial Applications
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
 
RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
 
Building RAG with self-deployed Milvus vector database and Snowpark Container...
Building RAG with self-deployed Milvus vector database and Snowpark Container...Building RAG with self-deployed Milvus vector database and Snowpark Container...
Building RAG with self-deployed Milvus vector database and Snowpark Container...
 
Full-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalizationFull-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalization
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
 
Data structures and Algorithms in Python.pdf
Data structures and Algorithms in Python.pdfData structures and Algorithms in Python.pdf
Data structures and Algorithms in Python.pdf
 
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
 

Objects arent records with byte codes on the side

  • 1. So You Think Objects Are Records With Byte Codes On The Side? T h i n k A g a i n
  • 2. Where Do Objects Fit? As a vehicle for implementing programs. So You Think Objects Are Records With Byte Codes On The Side? 2
  • 3. Where Do Objects Fit? As a vehicle for implementing programs. As a vehicle for modeling actual business entities and the diverse, complex rules that govern their interpretation and use. So You Think Objects Are Records With Byte Codes On The Side? 3
  • 4. How Do We View Objects? Traditional thinking holds that objects are the managers and clients of state stored in data base records. So You Think Objects Are Records With Byte Codes On The Side? 4
  • 5. How Do We View Objects? Traditional thinking holds that objects are the managers and clients of state stored in data base records. An intuitively appealing conceptual model... So You Think Objects Are Records With Byte Codes On The Side? 5
  • 6. How Do We View Objects? Traditional thinking holds that objects are the managers and clients of state stored in data base records. An intuitively appealing conceptual model... … that is inherently external to the data base. So You Think Objects Are Records With Byte Codes On The Side? 6
  • 7. How Do We Implement Objects? Traditional thinking holds that objects are records with methods on the side. So You Think Objects Are Records With Byte Codes On The Side? 7
  • 8. How Do We Implement Objects? Traditional thinking holds that objects are records with methods on the side. An intuitively appealing conceptual model... So You Think Objects Are Records With Byte Codes On The Side? 8
  • 9. How Do We Implement Objects? Traditional thinking holds that objects are records with methods on the side. An intuitively appealing conceptual model... … that insists on viewing the world one individual at a time. So You Think Objects Are Records With Byte Codes On The Side? 9
  • 10. So What’s Wrong With That? It may work for clients that consume relatively small amounts of data... So You Think Objects Are Records With Byte Codes On The Side? 10
  • 11. So What’s Wrong With That? It may work for clients that consume relatively small amounts of data... It may work for programs… So You Think Objects Are Records With Byte Codes On The Side? 11
  • 12. So What’s Wrong With That? It may work for clients that consume relatively small amounts of data... It may work for programs… … but it leaves the hard problem of implementing scaleable business objects, particularly entity objects, as an exercise for the ‘reader’. So You Think Objects Are Records With Byte Codes On The Side? 12
  • 13. So Where Do We Go Next? Establishing Principles Starting At The Top Questioning Assumptions Developing a New Foundation So You Think Objects Are Records With Byte Codes On The Side? 13
  • 14. Establishing Principles From an application perspective: comprehensibility » most applications we encounter are ultimately developed by involved, business knowledgeable users, not programmers. integration » solving interface and impedance matching problems is a jargon laden waste of time. So You Think Objects Are Records With Byte Codes On The Side? 14
  • 15. Establishing Principles From a technology perspective: theory » a collection centric theory of operation is critical to achieving reliable application scalability and deployment. integration » solving interface and impedance matching problems is a jargon laden waste of time. So You Think Objects Are Records With Byte Codes On The Side? 15
  • 16. Establishing Principles From any perspective: generality » most applications are a collection of many simple, hard problems. » it is impossible to overstate the complexity of even the simplest looking applications. So You Think Objects Are Records With Byte Codes On The Side? 16
  • 17. Starting At The Top Without creating an application specific technology, start with an understanding of how entity based applications work and what needs to be in place in order to create them. So You Think Objects Are Records With Byte Codes On The Side? 17
  • 18. For Example, … Account defineMethod: [ | getHoldingsOverlap | A mutual fund analysis !lowerPct <- pctEq * 0.8; !upperPct <- … ; holdings send: [security]. system powered by our select: [type isEquity]. technology needs to collectListElementsFrom: [holdings]. groupedBy: [account]. rank funds based on select: [pctEq >= ^my lowerPct && pctEq <= ^my upperPct]. the overlap of their extendBy: [ holdings with another, !xref <- ^my holdings; !ofactor <- groupList total: [ arbitrarily chosen, percentOfPort min: (^my xref at: security. fund: ] percentOfPort) ]. sortDown: [ofactor] ]; So You Think Objects Are Records With Byte Codes On The Side? 18
  • 19. Collections Are Everywhere Account defineMethod: [ | getHoldingsOverlap | Query and collection !lowerPct <- pctEq * 0.8; !upperPct <- … ; holdings send: [security]. operations are select: [type isEquity]. embedded throughout collectListElementsFrom: [holdings]. groupedBy: [account]. this application’s logic, select: [pctEq >= ^my lowerPct && pctEq <= ^my upperPct]. not simply at the extendBy: [ ‘database’ end of a data !xref <- ^my holdings; !ofactor <- groupList total: [ pipeline. percentOfPort min: (^my xref at: security. percentOfPort) ] ]. sortDown: [ofactor] ]; So You Think Objects Are Records With Byte Codes On The Side? 19
  • 20. Detail Counts Account defineMethod: [ | getHoldingsOverlap | The collection level !lowerPct <- pctEq * 0.8; !upperPct <- … ; holdings send: [security]. detail associated with select: [type isEquity]. an object is just as collectListElementsFrom: [holdings]. groupedBy: [account]. important as its select: [pctEq >= ^my lowerPct && pctEq <= ^my upperPct]. summary information extendBy: [ and must be just as !xref <- ^my holdings; !ofactor <- groupList total: [ easily accessible. percentOfPort min: (^my xref at: security. percentOfPort) ] ]. sortDown: [ofactor] ]; So You Think Objects Are Records With Byte Codes On The Side? 20
  • 21. Information Is Dynamic Account defineMethod: [ | getHoldingsOverlap | New collections of !lowerPct <- pctEq * 0.8; !upperPct <- … ; holdings send: [security]. data, complete with select: [type isEquity]. new and additional collectListElementsFrom: [holdings]. groupedBy: [account]. properties, need to be select: [pctEq >= ^my lowerPct && pctEq <= ^my upperPct]. created, used, and extendBy: [ returned ‘on-the-fly’. !xref <- ^my holdings; !ofactor <- groupList total: [ percentOfPort min: (^my xref at: security. percentOfPort) ] ]. sortDown: [ofactor] ]; So You Think Objects Are Records With Byte Codes On The Side? 21
  • 22. Complexity Is Hidden Account defineMethod: [ | getHoldingsOverlap | Many complex details !lowerPct <- pctEq * 0.8; !upperPct <- … ; holdings send: [security]. are hidden, including select: [type isEquity]. the fact that important collectListElementsFrom: [holdings]. groupedBy: [account]. data used in even this select: [pctEq >= ^my lowerPct && pctEq <= ^my upperPct]. ‘simple’ application is extendBy: [ time-varying and, !xref <- ^my holdings; !ofactor <- groupList total: [ therefore, context percentOfPort min: (^my xref at: security. sensitive. ] percentOfPort) ]. sortDown: [ofactor] ]; So You Think Objects Are Records With Byte Codes On The Side? 22
  • 23. Complexity Is Embeddable It is impossible to anticipate how encapsulated functionality will be used: TRoweFunds do: [^self getHoldingsOverlap first: 5 . do: […] ] ^today to: ^today - 1 years by: 1 quarterEnds. evaluate: [ MagellanFund getHoldingsOverlap do: [ … ] ]; So You Think Objects Are Records With Byte Codes On The Side? 23
  • 24. Starting At The Top, Epilogue … The functionality required by entity based applications profoundly affects all of the technologies it touches without fitting neatly into any of them. So You Think Objects Are Records With Byte Codes On The Side? 24
  • 25. … And Prologue: Time to start thinking outside the box and questioning assumptions, ... So You Think Objects Are Records With Byte Codes On The Side? 25
  • 26. Questioning Assumptions From an application perspective: Entity based applications fit into a neat little box. From a technology perspective: That which an application sees and manipulates is the way it really works. So You Think Objects Are Records With Byte Codes On The Side? 26
  • 27. Questioning Assumptions And its corollaries: Who said sets are defined by the elements they keep? Who said objects are records? So You Think Objects Are Records With Byte Codes On The Side? 27
  • 28. Who said sets are defined by the elements they keep? Sets have come to be known as ‘unique-ifers of things’. This operational definition is understandable given everyone’s intuitive concept of a set So You Think Objects Are Records With Byte Codes On The Side? 28
  • 29. Set Elements Don’t Matter, … The intuitive definition of sets in terms of their elements imparts unnecessary structure. The structure it does impart is misplaced anyway. So You Think Objects Are Records With Byte Codes On The Side? 29
  • 30. … And Sets Are Structureless A better intuitive definition for a set is that it is MySetOf3 ‘collection of distinguishable things’, without reference to the particular things: my set of three things the Integers TheIntegers So You Think Objects Are Records With Byte Codes On The Side? 30
  • 31. But Where Are The Elements? But where do you represent the fact that a MySetOf3 particular set of three things ‘contains’ the elements {4, 14, 34}? TheIntegers So You Think Objects Are Records With Byte Codes On The Side? 31
  • 32. In A Morphism, … m0 1→4 MySetOf3 2 → 14 3 → 34 m0 TheIntegers So You Think Objects Are Records With Byte Codes On The Side? 32
  • 33. That, Along With The Set, Is Unique Up To Isomorphism, … m0 i01 i02 1→4 1→3 1→2 MySetOf3 2 → 14 2→1 2→3 3 → 34 3→2 3→1 i01 i10 i12 i10 m0 1→2 1→3 i02 i20 m1 2→3 2→1 S1 3→1 3→2 i20 i21 m2 i12 i21 1→3 1→2 1 → 34 m2 TheIntegers 2→1 2→3 2→4 3→2 3→1 3 → 14 S2 So You Think Objects Are Records With Byte Codes On The Side? 33
  • 34. Only Morphism Structure Matters The properties and internal structure of morphisms and families of morphisms: express constraints implement operations characterize transformations and relationships provide an algebraic framework These roles are not mutually exclusive. So You Think Objects Are Records With Byte Codes On The Side? 34
  • 35. Morphisms Express Constraints Morphism structure expresses constraints: MySetOf3 m0, as the ‘element’ specifier for MySetOf3, must be m0 injective. m0 TheIntegers 1→4 2 → 14 3 → 34 So You Think Objects Are Records With Byte Codes On The Side? 35
  • 36. Morphisms Implement Operations Morphism structure supports operation implementation: MySetOf3 m1 = m0 º i10 i10 m0 ∀j∈S1 m1[j] = m0[i10[j]] m1 S1 i10 m0 m1 1→2 1→4 1 → 14 TheIntegers 2→3 2 → 14 2 → 34 3→1 3 → 34 3→4 So You Think Objects Are Records With Byte Codes On The Side? 36
  • 37. Morphisms Characterize Transformations and Relationships Composition Product (Projection) pr0 g f pr1 … prn fºg Partition Disjoint Union Values Elements in0 v=kºe in1 … k e inn Collections So You Think Objects Are Records With Byte Codes On The Side? 37
  • 38. Morphisms Characterize Transformations and Relationships Instantiation Deletion Sv0 Sv0 in in Sv1 Sv1 Insertion Join So You Think Objects Are Records With Byte Codes On The Side? 38
  • 39. So Where Are We? Structureless sets. Information bearing morphisms. What does this have to do with objects and data bases? So You Think Objects Are Records With Byte Codes On The Side? 39
  • 40. Structureless Sets Denote Things Structureless sets Account represent sets of distinguishable things: AccountId the set of Account objects Holding the set of Holding objects SecurityId the set of Security objects Security So You Think Objects Are Records With Byte Codes On The Side? 40
  • 41. Morphisms Hold Values Information bearing Account morphisms hold id property values … AccountId accountId Holding securityId SecurityId id Security So You Think Objects Are Records With Byte Codes On The Side? 41
  • 42. … Including Navigational Values …including the values of Account navigational properties. id AccountId account accountId Holding securityId security SecurityId id Security So You Think Objects Are Records With Byte Codes On The Side? 42
  • 43. … Without Violating Theory …while remaining on Account firm theoretical id account ground. AccountId accountId Holding securityId SecurityId security id Security So You Think Objects Are Records With Byte Codes On The Side? 43
  • 44. Properties Can Be Polymorphic Properties are usually Account polymorphic… id AccountId account accountId Holding securityId security SecurityId id Security So You Think Objects Are Records With Byte Codes On The Side? 44
  • 45. So Morphisms Need Fine Structure Portfolio super Account Aggregate Index id AccountId in0 in1 in2 Holding account accountId securityId security SecurityId … like disjoint union. id Security So You Think Objects Are Records With Byte Codes On The Side? 45
  • 46. Properties Can Be Time-Varying Properties often Account express time varying id relationships. account AccountId We won’t go there right accountId now except to say that the Holding securityId fine structure gets even security richer. SecurityId id Security price So You Think Objects Are Records With Byte Codes On The Side? 46
  • 47. It Computes … Account id Partition AccountId account Compose accountId Holding collectListElementsFrom: [holdings]. securityId groupedBy: [account]. security … extendBy: [ SecurityId … id !ofactor <- groupList total: […] Security … ]; So You Think Objects Are Records With Byte Codes On The Side? 47
  • 48. In Parallel … Portfolio super Account Aggregate Index id AccountId in0 in1 in2 Holding accountId securityId security SecurityId Compose/Join id Security So You Think Objects Are Records With Byte Codes On The Side? 48
  • 49. But All Of This Is Well Hidden … Account defineMethod: [ | getHoldingsOverlap | All a user sees is a !lowerPct <- pctEq * 0.8; !upperPct <- … ; holdings send: [security]. conventional object select: [type isEquity]. oriented programming collectListElementsFrom: [holdings]. groupedBy: [account]. language. select: [pctEq >= ^my lowerPct && pctEq <= ^my upperPct]. extendBy: [ !xref <- ^my holdings; !ofactor <- groupList total: [ percentOfPort min: (^my xref at: security. percentOfPort) ] ]. sortDown: [ofactor] ]; So You Think Objects Are Records With Byte Codes On The Side? 49
  • 50. This Is Necessarily An Overview What you have seen is an overview of a straightforward but non-trivial technology. The principles described here easily address the data definition and manipulation needs of a general purpose, integrated data base management, data base programming environment. So You Think Objects Are Records With Byte Codes On The Side? 50
  • 51. Questioning Assumptions - Reprise From an application perspective: Entity based applications fit into a neat little box. From a technology perspective: That which an application sees and manipulates is the way it really works. So You Think Objects Are Records With Byte Codes On The Side? 51
  • 52. By The Way, What Are Objects? The theory underlying all of this is Category Theory. By the way, objects are sub-categories of the concrete category Set. So You Think Objects Are Records With Byte Codes On The Side? 52
  • 53. Where Are We? commercially proven solid theoretical underpinnings unified, inherently parallel data base programming language integration So You Think Objects Are Records With Byte Codes On The Side? 53
  • 54. And, Of Course … Objects are records with byte codes on the side? It Ain’t Necessarily So. So You Think Objects Are Records With Byte Codes On The Side? 54