125
I Have Nothing to I Have Nothing to Declare But my Declare But my Genius Genius -or- -or- Late Binding as a Late Binding as a Philosophy of Life Philosophy of Life Brian Foote Brian Foote [email protected] [email protected] http://www.laputan.org http://www.laputan.org

I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote [email protected]

Embed Size (px)

Citation preview

Page 1: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare I Have Nothing to Declare But my GeniusBut my Genius

-or--or-Late Binding as a Philosophy of Late Binding as a Philosophy of

LifeLifeBrian FooteBrian [email protected]@laputan.org

http://www.laputan.orghttp://www.laputan.org

Page 2: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my

Genius -- Genius -- 22

Why I’m (Still) HereWhy I’m (Still) Here The Dynamic Vision The Dynamic Vision

from James VI from James VI through George IIIthrough George III

Architectural Architectural Balkanization in the Balkanization in the Post-Linguistic EraPost-Linguistic Era

The Future of The Future of Objects in a Global Objects in a Global Ultrascale EcosphereUltrascale Ecosphere

Page 3: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my

Genius -- Genius -- 33

#1: Dynamic Polymorphism#1: Dynamic Polymorphism

What other kind is there?What other kind is there? Easy as PIEEasy as PIE Great for Wrapping StuffGreat for Wrapping Stuff ModularityModularity Application LevelApplication Level Component LevelComponent Level

Page 4: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my

Genius -- Genius -- 44

#2: Callipygian Compilation#2: Callipygian Compilation

Deutsch and ShiffmanDeutsch and Shiffman Self and HotspotSelf and Hotspot A Cast of ThousandsA Cast of Thousands The JITtersThe JITters CompletsComplets

Page 5: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my

Genius -- Genius -- 55

Smalltalk-80Smalltalk-80

Everything I know about Everything I know about OO I learned from the OO I learned from the ImageImage

Browsers / IDEsBrowsers / IDEs Windows GUIsWindows GUIs Dynamic Translation (JITs)Dynamic Translation (JITs) Building Programs Out of Building Programs Out of

ObjectsObjects

Page 6: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my

Genius -- Genius -- 66

A Language Built of First-Class A Language Built of First-Class ObjectsObjects

ObjectObject BehaviorBehavior ClassDescriptionClassDescription ClassClass MetaclassMetaclass MethodMethod MethodDictionaryMethodDictionary CompiledMethodCompiledMethod ByteArrayByteArray

ContextContext MethodContextMethodContext BlockContextBlockContext MessageMessage ProcessProcess ProcessSchedulerProcessScheduler SemaphoreSemaphore SharedQueueSharedQueue CompilerCompiler SystemDictionarySystemDictionary

Page 7: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my

Genius -- Genius -- 77

#3: Reflection#3: Reflection

Grew out of the Lisp Grew out of the Lisp TraditionTradition

Programs able to access a Programs able to access a “causally connect” “causally connect” representation of representation of themselves themselves

Self RepresentationSelf Representation Introspection / IntercessionIntrospection / Intercession

Page 8: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my

Genius -- Genius -- 88

The ManifestThe Manifest

User ConfigurationUser Configuration EvolutionEvolution A mapA map A manifestA manifest User configurable User configurable

codecode Ad hoc reflectionAd hoc reflection

Page 9: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my

Genius -- Genius -- 99

Class MenagerieClass Menagerie 1. Monitors1. Monitors 2. Encapsulators2. Encapsulators 3. Message Forwarding3. Message Forwarding 4. Property List Manipulations4. Property List Manipulations 5. Accessible Objects (Dicts=Records=Props)5. Accessible Objects (Dicts=Records=Props) 6. Multiple Views (Database style)6. Multiple Views (Database style) 7. Capabilities (Access Control)/OS Style 7. Capabilities (Access Control)/OS Style

ProtectionProtection 8. Multiple Inheritance8. Multiple Inheritance 9. Tracing9. Tracing 10. Debugging (Many Mentions)10. Debugging (Many Mentions) 11. Futures11. Futures 12. Remote (Distributed) Objects12. Remote (Distributed) Objects 13. Multitasking (transparent, perhaps)13. Multitasking (transparent, perhaps) 14. Constraints14. Constraints 15. Reflection15. Reflection 16. Part/Whole Relationships16. Part/Whole Relationships 17. Active Values17. Active Values

Active VariablesActive VariablesActive MessagesActive MessagesActive ReferencesActive References

18. "Smart" Variables18. "Smart" Variables 19. Lightweight (Anonymous) Classes19. Lightweight (Anonymous) Classes 20. Melds (Garlan & Kaiser)20. Melds (Garlan & Kaiser)

21. Actors/Daemons21. Actors/Daemons 22. Lazy Evaluation22. Lazy Evaluation 23. Caching Schemes23. Caching Schemes 24. Memo Memory Functions (as in POP2 and 24. Memo Memory Functions (as in POP2 and

friends)friends) 25. Read-Only Variables25. Read-Only Variables 26. Logging26. Logging 27. Metering/Statistics/Performance Data 27. Metering/Statistics/Performance Data

CollectionCollection 28. Component Delegation28. Component Delegation 29. Atomic Objects/Actions29. Atomic Objects/Actions 30. Protocol Translators/Adaptors30. Protocol Translators/Adaptors 31. Open Systems (Protocol Negotiators?)31. Open Systems (Protocol Negotiators?) 32. Multiple Inheritance Schemes32. Multiple Inheritance Schemes 33. Delegated Inheritance (and other forms of 33. Delegated Inheritance (and other forms of

sharing)sharing) 34. Multimethods (and other generic dispatch 34. Multimethods (and other generic dispatch

schemes)schemes) 35. Method Combination/Composition35. Method Combination/Composition 36. Prototypes (ala Borning)36. Prototypes (ala Borning) 37. Modules (ala Wirfs-Brock)37. Modules (ala Wirfs-Brock) 38. Continuations? Catch/Throw?38. Continuations? Catch/Throw? 39. Exception Handling of various sorts...39. Exception Handling of various sorts... 40. Dynamic Behavior Changes40. Dynamic Behavior Changes

Page 10: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my

Genius -- Genius -- 1010

Class MenagerieClass Menagerie 41. Dynamic Class Changes41. Dynamic Class Changes 42. Dynamic Class Construction42. Dynamic Class Construction 43. "Smart" Paths (see Part/Whole)43. "Smart" Paths (see Part/Whole) 44. Flavors (now CLOS)-Style Method Combination44. Flavors (now CLOS)-Style Method Combination 45. Two Way Implicit Group Membership (like 45. Two Way Implicit Group Membership (like

Part/Whole?)Part/Whole?)(Perhaps encompassing the idea of "Enrollment" (Perhaps encompassing the idea of "Enrollment"

(Randall Smith))(Randall Smith)) 46. Implicit Coercion Schemes46. Implicit Coercion Schemes 47. X-Style Substructure Redirection47. X-Style Substructure Redirection 48. Event Dispatching (see Multimethods)48. Event Dispatching (see Multimethods) 49. Alternate Memory Allocation Schemes49. Alternate Memory Allocation Schemes 50. Multilevel (Virtual, in the OS sense) Object Allocation50. Multilevel (Virtual, in the OS sense) Object Allocation 51. Sundry Dynamic and Other Optimizations (Cointe)51. Sundry Dynamic and Other Optimizations (Cointe) 52. Escape Operators (see Continuations) (B. C. Smith)52. Escape Operators (see Continuations) (B. C. Smith) 53. "Deviant" Variable Passing Protocols (B. C. Smith)53. "Deviant" Variable Passing Protocols (B. C. Smith) 54. Planning/Supervisory Code (Genesereth, others)54. Planning/Supervisory Code (Genesereth, others) 55. Behavior Based Programming55. Behavior Based Programming 56. Active Types56. Active Types 57. Strategy Computation 57. Strategy Computation 58. Truth Maintenance58. Truth Maintenance 59. Program Supervision59. Program Supervision 60. Multiprocessor Load Balancing60. Multiprocessor Load Balancing

61. Active Values/Access Oriented Programming61. Active Values/Access Oriented Programming 62. Self Analysis (Code Walking) 62. Self Analysis (Code Walking) 63. Self description of a program's operational semantics63. Self description of a program's operational semantics 64. Smart Comments64. Smart Comments 65. Logic Variables/Unification65. Logic Variables/Unification 66. Agents66. Agents 67. Virtual Time (Time Warp)67. Virtual Time (Time Warp) 68. Version Management68. Version Management 69. Garbage Collection69. Garbage Collection 70. Persistent Objects70. Persistent Objects 71. Active Protocols71. Active Protocols 72. Algorithm animation72. Algorithm animation 73. Language Level Viruses73. Language Level Viruses 74. Program Transformation74. Program Transformation

Page 11: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my

Genius -- Genius -- 1111

CLOS and the MOPCLOS and the MOPTT| STANDARD-OBJECT| STANDARD-OBJECT| | CONSTRUCTOR| | CONSTRUCTOR| | METHOD-COMBINATION| | METHOD-COMBINATION| | | STANDARD-METHOD-COMBINATION| | | STANDARD-METHOD-COMBINATION| | | | LONG-METHOD-COMBINATION| | | | LONG-METHOD-COMBINATION| | | | SHORT-METHOD-COMBINATION| | | | SHORT-METHOD-COMBINATION| | PLIST-MIXIN| | PLIST-MIXIN| | | <...>| | | <...>| | DEFINITION-SOURCE-MIXIN| | DEFINITION-SOURCE-MIXIN| | | <...>| | | <...>| | METAOBJECT| | METAOBJECT| | | GENERIC-FUNCTION| | | GENERIC-FUNCTION| | | | STANDARD-GENERIC-FUNCTION| | | | STANDARD-GENERIC-FUNCTION| | | METHOD| | | METHOD| | | | TRACED-METHOD| | | | TRACED-METHOD| | | | STANDARD-METHOD| | | | STANDARD-METHOD| | | | | STANDARD-ACCESSOR-METHOD| | | | | STANDARD-ACCESSOR-METHOD| | | | | | STANDARD-WRITER-METHOD| | | | | | STANDARD-WRITER-METHOD| | | | | | STANDARD-READER-METHOD| | | | | | STANDARD-READER-METHOD| | | SLOT-DEFINITION| | | SLOT-DEFINITION| | | | STANDARD-SLOT-DEFINITION| | | | STANDARD-SLOT-DEFINITION| | | | | STANDARD-EFFECTIVE-SLOT-DEFINITION| | | | | STANDARD-EFFECTIVE-SLOT-DEFINITION| | | | | STANDARD-DIRECT-SLOT-DEFINITION| | | | | STANDARD-DIRECT-SLOT-DEFINITION| | | | EFFECTIVE-SLOT-DEFINITION| | | | EFFECTIVE-SLOT-DEFINITION| | | | | STANDARD-EFFECTIVE-SLOT-DEFINITION| | | | | STANDARD-EFFECTIVE-SLOT-DEFINITION| | | | DIRECT-SLOT-DEFINITION| | | | DIRECT-SLOT-DEFINITION| | | | | STANDARD-DIRECT-SLOT-DEFINITION| | | | | STANDARD-DIRECT-SLOT-DEFINITION| | | SPECIALIZER| | | SPECIALIZER| | | | EQL-SPECIALIZER| | | | EQL-SPECIALIZER| | | | CLASS| | | | CLASS| | | | | PCL-CLASS| | | | | PCL-CLASS| | | | | | BUILT-IN-CLASS| | | | | | BUILT-IN-CLASS| | | | | | FORWARD-REFERENCED-CLASS| | | | | | FORWARD-REFERENCED-CLASS| | | | | | STD-CLASS| | | | | | STD-CLASS| | | | | | | FUNCALLABLE-STANDARD-CLASS| | | | | | | FUNCALLABLE-STANDARD-CLASS| | | | | | | STANDARD-CLASS| | | | | | | STANDARD-CLASS<That's all...><That's all...>May Day PCL HierarchyMay Day PCL Hierarchy

Page 12: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my

Genius -- Genius -- 1212

Objects We BuiltObjects We Built MultiMethodMultiMethod SpecializerSpecializer ClassSpecializerClassSpecializer EqualSpeciealizerEqualSpeciealizer GenericMessageGenericMessage MethodCombinationMethodCombination DiscriminatingMethodDiscriminatingMethod Qualifiers (#Before Qualifiers (#Before

#After, etc.)#After, etc.)

SubStandardMethodCombinationSubStandardMethodCombination SimpleMethodCombinationSimpleMethodCombination BetaMethodCombinationBetaMethodCombination DispatchingMethodCombinationDispatchingMethodCombination

Page 13: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my

Genius -- Genius -- 1313

ActorsActors

Asynchrony is only now coming into vogueAsynchrony is only now coming into vogue A Glamorous World: Models … ActorsA Glamorous World: Models … Actors A strategic architecture reserve…A strategic architecture reserve…

Page 14: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my

Genius -- Genius -- 1414

Page 15: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my

Genius -- Genius -- 1515

One of These is TrueOne of These is True

Meta considered harmfulMeta considered harmful

““Meta” considered harmfulMeta” considered harmful

Page 16: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my

Genius -- Genius -- 1616

The VisionThe Vision

Languages Built out of Languages Built out of ObjectsObjects

Open LanguagesOpen Languages Open JITTERSOpen JITTERS A Framework For A Framework For

LanguagesLanguages Compile Time is any TimeCompile Time is any Time Linguistic ImperialismLinguistic Imperialism

Page 17: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my

Genius -- Genius -- 1717

The RealityThe Reality

Utopian Monocultures were Utopian Monocultures were wonderful idea incubatorswonderful idea incubators

More pragmatic languages More pragmatic languages prevailedprevailed

We live in a heterogeneous We live in a heterogeneous polyglot world polyglot world

We need to play well with We need to play well with othersothers

The Rise of Worse is BetterThe Rise of Worse is Better

Page 18: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my

Genius -- Genius -- 1818

The Great Schism of ‘97The Great Schism of ‘97

ObjectivistsObjectivists AspectivistsAspectivists PragmatistsPragmatists FormalistsFormalists

Page 19: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my

Genius -- Genius -- 1919

The MedusaThe Medusa

An apparition so hideous An apparition so hideous that all who gaze upon that all who gaze upon her are turned to her are turned to stone…stone…

"This thing you call language, "This thing you call language, though...most remarkable. You though...most remarkable. You depend on it for so very much, but is depend on it for so very much, but is any one of you really its master?" any one of you really its master?"

-- Spock/Kollos, -- Spock/Kollos, Is There in Truth No Is There in Truth No Beauty?Beauty?

Page 20: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my

Genius -- Genius -- 2020

Of Slugs and BugsOf Slugs and Bugs

How Star-Crossed How Star-Crossed Software Lost the Mars Software Lost the Mars

Climate OrbiterClimate Orbiter

The fault, dear Brutus, is not in our stars, But in ourselves, that we are underlings

Page 21: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my

Genius -- Genius -- 2121

A Comic Book Tragedy?A Comic Book Tragedy?

Perfectly good Perfectly good spaceshipspaceship Perfectly good Perfectly good softwaresoftware onboard onboard Support software working as Support software working as intendedintended Dived into Martian atmosphere, Dived into Martian atmosphere, just as it just as it

was told towas told to The culprit: a “simple” The culprit: a “simple” unitunit conversionconversion

Page 22: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my

Genius -- Genius -- 2222

The CarpetbaggersThe Carpetbaggers Type TheoristsType Theorists MethodologistsMethodologists Languages DesignersLanguages Designers TestersTesters Management ConsultantsManagement Consultants System IntegratorsSystem Integrators Interface Design Engineers?Interface Design Engineers?

Page 23: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my

Genius -- Genius -- 2323

The Root CauseThe Root Cause

The failure to use metric units in the coding The failure to use metric units in the coding of a ground software file, “Small Forces” of a ground software file, “Small Forces” used in trajectory models. Specifically, used in trajectory models. Specifically, thruster performance data in English units thruster performance data in English units rather than metric units was used in the rather than metric units was used in the software application code titled software application code titled SM_FORCES (small forces).SM_FORCES (small forces).

Page 24: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my

Genius -- Genius -- 2424

Angular Momentum DesaturationAngular Momentum Desaturation

MCO uses both reaction MCO uses both reaction wheels and thrusters wheels and thrusters

RWs allow more precise RWs allow more precise attitude controlattitude control

In an ideal world, they never In an ideal world, they never saturatesaturate

On an ideal spacecraft, On an ideal spacecraft, there is no residualthere is no residual

On an ideal mission, On an ideal mission, residuals cancel outresiduals cancel out

In an ideal model, these are In an ideal model, these are properly accounted forproperly accounted for

Page 25: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my

Genius -- Genius -- 2525

How MCO was “Lost”How MCO was “Lost”

Page 26: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my

Genius -- Genius -- 2626

Dollars and FrancsDollars and Francs

Page 27: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my

Genius -- Genius -- 2727

Mass, Weight, Force and ImpulseMass, Weight, Force and Impulse F = maF = ma 1 N = (1 kg)(1 m/s1 N = (1 kg)(1 m/s22)) 1 lbf = (1 slug)(1 ft/s1 lbf = (1 slug)(1 ft/s22) ) 1 lbf = 32.174 lbm (1 ft/s1 lbf = 32.174 lbm (1 ft/s22)) 1 lbf = 1 lbm (32.174 ft/s1 lbf = 1 lbm (32.174 ft/s22)) 1 lbm = .4536 kg1 lbm = .4536 kg 1 ft = .3048 m1 ft = .3048 m 1 N = 4.448 lbf1 N = 4.448 lbf 1 N-sec = 4.448 lbf-sec 1 N-sec = 4.448 lbf-sec 4.448 = (32.174)(.3048)(.4536)4.448 = (32.174)(.3048)(.4536) 1 N-sec = 1 kg-m/s1 N-sec = 1 kg-m/s N = kg (9.81 m/sN = kg (9.81 m/s22))

Weight = 32.174 lbfWeight = 32.174 lbf Mass = 1 slugMass = 1 slug Mass = 32.174 lbmMass = 32.174 lbm Mass = 14.6 kgMass = 14.6 kg Weight = 143 NWeight = 143 N

Page 28: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my

Genius -- Genius -- 2828

SM_FORCESSM_FORCES

Although starting from MGS-heritage software, the Although starting from MGS-heritage software, the coded thruster equations had to be changed coded thruster equations had to be changed

because of the different size RCS thruster that because of the different size RCS thruster that MCO employed. As luck would have it, the 4.45 MCO employed. As luck would have it, the 4.45 conversion factor, although conversion factor, although correctlycorrectly included in included in the MGS equation by the previous development the MGS equation by the previous development

team, was not immediately team, was not immediately identifiableidentifiable by by inspection (being buried in the equation) or inspection (being buried in the equation) or commented code in an obvious way that the commented code in an obvious way that the

MCO team recognized it.MCO team recognized it.

Page 29: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my

Genius -- Genius -- 2929

A Typeless Tragedy?A Typeless Tragedy?

Metric units were in the SISMetric units were in the SIS Paper is not executablePaper is not executable SIS was complied with under MGSSIS was complied with under MGS LMA is an English Unit shopLMA is an English Unit shop Unclear whether “Whole Values” Unclear whether “Whole Values”

would have helped catch this would have helped catch this problemproblem

Programmers are not executableProgrammers are not executable

Page 30: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my

Genius -- Genius -- 3030

A Hatchet JobA Hatchet Job

MCO: Faster Better Cheaper (pick two)MCO: Faster Better Cheaper (pick two) Reused instruments Reused instruments ““Reused” software Reused” software Just one more “cut-n-paste” horror Just one more “cut-n-paste” horror

story…story… All that paper, but yet the right All that paper, but yet the right

information wasn’t before the right person information wasn’t before the right person when it was sorely needed…when it was sorely needed…

Page 31: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my

Genius -- Genius -- 3131

If it ain’t been testedIf it ain’t been tested

Full end-to-end test never performedFull end-to-end test never performed Programs were latePrograms were late ““Olfactory Method” not followedOlfactory Method” not followed Paper is not always the your weapon of Paper is not always the your weapon of

choicechoice Managers don’t win games, players doManagers don’t win games, players do

Page 32: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my

Genius -- Genius -- 3232

The Olfactory MethodThe Olfactory Method

Kent Beck: May be Best Remembered as the Man Kent Beck: May be Best Remembered as the Man Who brought Scatology and Software Who brought Scatology and Software Engineering together…Engineering together…

If it stinks, change it!If it stinks, change it!--Grandma Beck--Grandma Beck

Code Smells are (not so) subtle indications a piece Code Smells are (not so) subtle indications a piece of code is in need of attention… …and is a likely of code is in need of attention… …and is a likely candidate for refactoring…candidate for refactoring…

Page 33: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my

Genius -- Genius -- 3333

My JourneyMy Journey

Units?Units? Types?Types? Metadata?Metadata? Process?Process? Testing?Testing? ……Mud!Mud!

Page 34: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my

Genius -- Genius -- 3434

A $327 Million Fireworks DisplayA $327 Million Fireworks Display…in the night time Martian sky, watched by no one…

-- 23 September, 1999

Page 35: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my

Genius -- Genius -- 3535

The End-to-End PrincipleThe End-to-End Principle

Applies to programming languages too…Applies to programming languages too… Why dote if you have to do it over?Why dote if you have to do it over? Types build of real first class runtime Types build of real first class runtime

objects can be customizedobjects can be customized

Page 36: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my

Genius -- Genius -- 3636

XSLT ExampleXSLT Example<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"><xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"><xsl:key match="/publisher/books/book" use="author-ref/@ref"<xsl:key match="/publisher/books/book" use="author-ref/@ref"

name="books-by-author"/>name="books-by-author"/><xsl:template match="/"><bestsellers-list><xsl:template match="/"><bestsellers-list>

  <xsl:apply-templates select="/publisher/authors/author">  <xsl:apply-templates select="/publisher/authors/author">    <xsl:sort select="sum(key('books-by-author', @id)/sold)"/>    <xsl:sort select="sum(key('books-by-author', @id)/sold)"/>    <xsl:sort select="last_name"/>    <xsl:sort select="last_name"/>  </xsl:apply-templates>  </xsl:apply-templates></bestsellers-list></xsl:template></bestsellers-list></xsl:template>

<xsl:template match="author"><xsl:template match="author">  <copy>  <copy>    <name>    <name>      <xsl:value-of select="last_name"/>,      <xsl:value-of select="last_name"/>,      <xsl:value-of select="first_name"/>      <xsl:value-of select="first_name"/>    </name>    </name>    <total_publications>    <total_publications>      <xsl:value-of select="count(key('books-by-author', @id))"/>      <xsl:value-of select="count(key('books-by-author', @id))"/>    </total_publications>    </total_publications>    <total_sold>    <total_sold>      <xsl:value-of select="sum(key('books-by-author', @id)/sold)"/>      <xsl:value-of select="sum(key('books-by-author', @id)/sold)"/>    </total_sold>    </total_sold>    <rank>    <rank>      <xsl:value-of select="position()"/>      <xsl:value-of select="position()"/>    </rank>    </rank>  </copy>  </copy></xsl:template></xsl:template>

</xsl:stylesheet></xsl:stylesheet>

Page 37: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my

Genius -- Genius -- 3737

The Post Linguistic EraThe Post Linguistic Era

The is a five hundred pound The is a five hundred pound gorilla in the roomgorilla in the room

The Program Model is CentralThe Program Model is Central The ASCII is fungible, round- The ASCII is fungible, round-

trippabletrippable Representations are freely Representations are freely

convertibleconvertible Programs built of objects can Programs built of objects can

be be changedchanged Anything can be swapped Anything can be swapped

out…out…

Page 38: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my

Genius -- Genius -- 3838

Building Program Out of ObjectsBuilding Program Out of Objects

Monitoring, Debugging, Tracing, etc.Monitoring, Debugging, Tracing, etc. Patterns are all in PlayPatterns are all in Play Dynamic Objects Models and Frameworks Dynamic Objects Models and Frameworks

Grow into Programming Languages Grow into Programming Languages You can debug, edit, browse, you name You can debug, edit, browse, you name

it…it…

Page 39: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my

Genius -- Genius -- 3939

MegafaunaMegafauna

Global NamespaceGlobal Namespace The ManifestThe Manifest Polymorphism, Reflection, Polymorphism, Reflection,

JittingJitting Vegetable, not AnimalVegetable, not Animal Runtime Testing, Runtime Testing,

Communication, MeteringCommunication, Metering

Page 40: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my

Genius -- Genius -- 4040

Engineering TolerancesEngineering Tolerances

We can’t type each We can’t type each line tree times…line tree times…

We can leave in the We can leave in the goalies…goalies…

What are we thinking What are we thinking taking them out?taking them out?

We can engineer our We can engineer our objects to self test…objects to self test…

Page 41: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my

Genius -- Genius -- 4141

The Gang of FourThe Gang of FourDesign PatternsDesign Patterns: Elements of : Elements of

Reusable Object-Oriented Reusable Object-Oriented SoftwareSoftware

Erich Gamma, Richard Helm, Ralph Johnson, Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissidesand John Vlissides

A landmark book that changed the way A landmark book that changed the way programmers think about building object-programmers think about building object-oriented programsoriented programs

Page 42: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my

Genius -- Genius -- 4242

The CornucopiaThe Cornucopia

Moore’s Law has bought three, four Moore’s Law has bought three, four orders of magnitude in orders of magnitude in performanceperformance

We’ve squandered it on eyewashWe’ve squandered it on eyewash Can’t we afford to leave the goal Can’t we afford to leave the goal

tender in?tender in? Testing shows the valueTesting shows the value Those “runtime” type errors”? Those “runtime” type errors”?

Welcome to the 21Welcome to the 21stst century century Network, DB, are slower than Network, DB, are slower than

reflectionreflection

Page 43: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my

Genius -- Genius -- 4343

The Frugal Fussbudgets of The Frugal Fussbudgets of FormalismFormalism

Static languages throw Static languages throw away all the information we away all the information we need at runtime. Why???need at runtime. Why???

This made some sense … This made some sense … in 1982in 1982

It’s peanuts to keep this It’s peanuts to keep this stuff now…stuff now…

It’s almost malpractice not It’s almost malpractice not to…to…

Page 44: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my

Genius -- Genius -- 4444

Dynamic Types are Strong TypesDynamic Types are Strong Types

Weak vs. Strong and Static vs. Dynamic are Weak vs. Strong and Static vs. Dynamic are distinct dimensions…distinct dimensions…

I don’t care about mere declarations, I want to I don’t care about mere declarations, I want to know what enforces them…know what enforces them…

Page 45: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my

Genius -- Genius -- 4545

Embrace StuffEmbrace Stuff

Embrace FailureEmbrace Failure Embrace DiversityEmbrace Diversity Embrace RuntimeEmbrace Runtime Embrace HeterogeneityEmbrace Heterogeneity Embrace ChangeEmbrace Change

Page 46: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my

Genius -- Genius -- 4646

Soft MachinesSoft Machines

Are made of objectsAre made of objects Are easy to changeAre easy to change Are easy to hardenAre easy to harden Are virtual machinesAre virtual machines Are configurable Are configurable

machinesmachines

Page 47: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my

Genius -- Genius -- 4747

The Holocene ExplosionThe Holocene Explosion

IntegrationIntegration Brokers and Reflection …Brokers and Reflection … CORBA?CORBA? SOM!SOM!

Page 48: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my

Genius -- Genius -- 4848

The Cobbler’s ChildrenThe Cobbler’s Children

Page 49: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my

Genius -- Genius -- 4949

Page 50: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 5050

Page 51: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 5151

LessonsLessons Utopian Vision was Utopian Vision was Building Languages of Building Languages of

ObjectsObjects The Power of The Power of

MultimethodsMultimethods

Page 52: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 5252

Possible TopicsPossible Topics End to EndEnd to End MCOMCO The MedusaThe Medusa The Blind Men and the ElephantThe Blind Men and the Elephant JITJIT Building Languages out of ObjectsBuilding Languages out of Objects First Class all the WayFirst Class all the Way ReflectionReflection Dynamic PolymorphismDynamic Polymorphism Names Spaces are Global…Names Spaces are Global… Architecture, Artifact, and ArtificeArchitecture, Artifact, and Artifice Why am I Here?Why am I Here? The Glory of The ImageThe Glory of The Image I Have Nothing to DeclareI Have Nothing to Declare Newton Bohr Darwin and the Cobbler’s ChildrenNewton Bohr Darwin and the Cobbler’s Children Empty NetEmpty Net

Page 53: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 5353

ReflectionReflection

The ManifestThe Manifest Building Programs out of ObjectsBuilding Programs out of Objects Programs are ObjectsPrograms are Objects

Page 54: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 5454

The JittersThe Jitters

Compile Time is any time…Compile Time is any time… Putting down the landing gearPutting down the landing gear Compile once / run anywhere? Failed? Compile once / run anywhere? Failed?

How true is that?How true is that?

Page 55: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 5555

Meta Won, Objects LostMeta Won, Objects Lost

Meta and ManifestsMeta and ManifestsReflection and GUIsReflection and GUIsAdaptive Object ModelsAdaptive Object ModelsSoft MachinesSoft Machines

Page 56: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 5656

Write it Three TimesWrite it Three Times

Spend a few cyclesSpend a few cycles Spend some RAMSpend some RAM Cycles and RAM / Space are the raw Cycles and RAM / Space are the raw

materials we have to work with…materials we have to work with… Instead, we’ve been in fantasy land…Instead, we’ve been in fantasy land…

Page 57: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 5757

Architectural BalkanizationArchitectural Balkanization

In the Post Linguistic EraIn the Post Linguistic Era

Page 58: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 5858

What’s a Language?What’s a Language?

Why worship ChomskyWhy worship Chomsky Why sling ASCII?Why sling ASCII? What about Models?What about Models? Why write programs that write programs?Why write programs that write programs?

Page 59: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 5959

Polymorphism Polymorphism

Starts with ModularityStarts with Modularity Moves on to OO LanguagesMoves on to OO Languages Next Level: ComponentsNext Level: Components

Page 60: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 6060

MetadataMetadata

Program ConfigurationProgram Configuration CheckingChecking Typing…Typing… Evaluation Evaluation LanguageLanguage

Page 61: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 6161

Our Own Private PottersvilleOur Own Private Pottersville

Page 62: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

Efficient Multimethods in a Efficient Multimethods in a Single Dispatch LanguageSingle Dispatch Language

Brian FooteBrian Foote

Ralph JohnsonRalph JohnsonDept. of Computer ScienceDept. of Computer Science

University of Illinois at Urbana-ChampaignUniversity of Illinois at Urbana-Champaign

201 N. Goodwin, Urbana, IL 61801, USA201 N. Goodwin, Urbana, IL 61801, USA

[email protected] [email protected] [email protected]@cs.uiuc.edu

James NobleJames NobleSchool of Mathematical and Computing SciencesSchool of Mathematical and Computing Sciences

Victoria University of WellingtonVictoria University of Wellington

P.O. Box 600, Wellington, New ZealandP.O. Box 600, Wellington, New Zealand

[email protected] [email protected]

Page 63: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 6363

LandmarksLandmarks Motivation for MultimethodsMotivation for Multimethods Syntax MattersSyntax Matters A Tale of Two MOPsA Tale of Two MOPs Two ImplementationsTwo Implementations Enduring SignificanceEnduring Significance

Page 64: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 6464

Page 65: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 6565

Dan IngallsDan Ingalls

Page 66: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 6666

The Church of PolymorphismThe Church of Polymorphism

The Great SchismThe Great Schism AspectivismAspectivism ObjectivismObjectivism

Page 67: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 6767

AnachronismsAnachronisms

Programs as TextPrograms as Text Closed World AnalysisClosed World Analysis Obsession with Performance / EfficiencyObsession with Performance / Efficiency

Page 68: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 6868

Page 69: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 6969

The Cobbler’s ChildrenThe Cobbler’s Children

Page 70: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 7070

The Gordian KnotThe Gordian Knot

Page 71: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 7171

The Gang of FourThe Gang of FourDesign PatternsDesign Patterns: Elements of : Elements of

Reusable Object-Oriented Reusable Object-Oriented SoftwareSoftware

Erich Gamma, Richard Helm, Ralph Johnson, Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissidesand John Vlissides

A landmark book that changed the way A landmark book that changed the way programmers think about building object-programmers think about building object-oriented programsoriented programs

Page 72: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 7272

Patterns are Dispatches from the Patterns are Dispatches from the Trenches about What WorksTrenches about What Works

Academics Feed the Novelty VampiresAcademics Feed the Novelty Vampires

Secrets are Important to IndustrySecrets are Important to Industry

Page 73: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 7373

Page 74: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 7474

Page 75: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 7575

Page 76: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 7676

Dan IngallsDan Ingalls

Page 77: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 7777

The Church of PolymorphismThe Church of Polymorphism

The Great SchismThe Great Schism AspectivismAspectivism ObjectivismObjectivism

Page 78: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 7878

AnachronismsAnachronisms

Programs as TextPrograms as Text Closed World AnalysisClosed World Analysis Obsession with Performance / EfficiencyObsession with Performance / Efficiency

Page 79: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 7979

Page 80: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 8080

The Cobbler’s ChildrenThe Cobbler’s Children

Page 81: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 8181

The Gordian KnotThe Gordian Knot

Page 82: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 8282

The Gang of FourThe Gang of FourDesign PatternsDesign Patterns: Elements of : Elements of

Reusable Object-Oriented Reusable Object-Oriented SoftwareSoftware

Erich Gamma, Richard Helm, Ralph Johnson, Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissidesand John Vlissides

A landmark book that changed the way A landmark book that changed the way programmers think about building object-programmers think about building object-oriented programsoriented programs

Page 83: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 8383

Patterns are Dispatches from the Patterns are Dispatches from the Trenches about What WorksTrenches about What Works

Academics Feed the Novelty VampiresAcademics Feed the Novelty Vampires

Secrets are Important to IndustrySecrets are Important to Industry

Page 84: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 8484

Page 85: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 8585

Page 86: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 8686

Page 87: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 8787

Dan IngallsDan Ingalls

Page 88: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 8888

The Church of PolymorphismThe Church of Polymorphism

The Great SchismThe Great Schism AspectivismAspectivism ObjectivismObjectivism

Page 89: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 8989

AnachronismsAnachronisms

Programs as TextPrograms as Text Closed World AnalysisClosed World Analysis Obsession with Performance / EfficiencyObsession with Performance / Efficiency

Page 90: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 9090

Page 91: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 9191

The Cobbler’s ChildrenThe Cobbler’s Children

Page 92: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 9292

The Gordian KnotThe Gordian Knot

Page 93: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 9393

The Gang of FourThe Gang of FourDesign PatternsDesign Patterns: Elements of : Elements of

Reusable Object-Oriented Reusable Object-Oriented SoftwareSoftware

Erich Gamma, Richard Helm, Ralph Johnson, Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissidesand John Vlissides

A landmark book that changed the way A landmark book that changed the way programmers think about building object-programmers think about building object-oriented programsoriented programs

Page 94: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 9494

Patterns are Dispatches from the Patterns are Dispatches from the Trenches about What WorksTrenches about What Works

Academics Feed the Novelty VampiresAcademics Feed the Novelty Vampires

Secrets are Important to IndustrySecrets are Important to Industry

Page 95: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 9595

Page 96: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 9696

Page 97: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 9797

Page 98: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 9898

Dan IngallsDan Ingalls

Page 99: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 9999

The Church of PolymorphismThe Church of Polymorphism

The Great SchismThe Great Schism AspectivismAspectivism ObjectivismObjectivism

Page 100: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 100100

AnachronismsAnachronisms

Programs as TextPrograms as Text Closed World AnalysisClosed World Analysis Obsession with Performance / EfficiencyObsession with Performance / Efficiency

Page 101: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 101101

Page 102: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 102102

The Cobbler’s ChildrenThe Cobbler’s Children

Page 103: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 103103

The Gordian KnotThe Gordian Knot

Page 104: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 104104

The Gang of FourThe Gang of FourDesign PatternsDesign Patterns: Elements of : Elements of

Reusable Object-Oriented Reusable Object-Oriented SoftwareSoftware

Erich Gamma, Richard Helm, Ralph Johnson, Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissidesand John Vlissides

A landmark book that changed the way A landmark book that changed the way programmers think about building object-programmers think about building object-oriented programsoriented programs

Page 105: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 105105

Patterns are Dispatches from the Patterns are Dispatches from the Trenches about What WorksTrenches about What Works

Academics Feed the Novelty VampiresAcademics Feed the Novelty Vampires

Secrets are Important to IndustrySecrets are Important to Industry

Page 106: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 106106

Page 107: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my

Genius -- Genius -- 107107

Page 108: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 108108

Page 109: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 109109

Page 110: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 110110

Dan IngallsDan Ingalls

Page 111: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 111111

The Church of PolymorphismThe Church of Polymorphism

The Great SchismThe Great Schism AspectivismAspectivism ObjectivismObjectivism

Page 112: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 112112

AnachronismsAnachronisms

Programs as TextPrograms as Text Closed World AnalysisClosed World Analysis Obsession with Performance / EfficiencyObsession with Performance / Efficiency

Page 113: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 113113

Page 114: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 114114

The Cobbler’s ChildrenThe Cobbler’s Children

Page 115: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 115115

The Gordian KnotThe Gordian Knot

Page 116: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 116116

The Gang of FourThe Gang of FourDesign PatternsDesign Patterns: Elements of : Elements of

Reusable Object-Oriented Reusable Object-Oriented SoftwareSoftware

Erich Gamma, Richard Helm, Ralph Johnson, Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissidesand John Vlissides

A landmark book that changed the way A landmark book that changed the way programmers think about building object-programmers think about building object-oriented programsoriented programs

Page 117: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 117117

Patterns are Dispatches from the Patterns are Dispatches from the Trenches about What WorksTrenches about What Works

Academics Feed the Novelty VampiresAcademics Feed the Novelty Vampires

Secrets are Important to IndustrySecrets are Important to Industry

Page 118: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 118118

Page 119: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 119119

Page 120: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 120120

Page 121: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 121121

Dan IngallsDan Ingalls

Page 122: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 122122

The Church of PolymorphismThe Church of Polymorphism

The Great SchismThe Great Schism AspectivismAspectivism ObjectivismObjectivism

Page 123: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 123123

The Church of PolymorphismThe Church of Polymorphism

The Great SchismThe Great Schism AspectivismAspectivism ObjectivismObjectivism

Page 124: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my

Genius -- Genius -- 124124

I don't build in I don't build in order to have order to have clients. I clients. I have clients have clients in order to in order to build.build.

--Ayn Rand--Ayn Rand

Page 125: I Have Nothing to Declare But my Genius -or- Late Binding as a Philosophy of Life Brian Foote Brian Foote foote@laputan.org

I Have Nothing to Declare but my I Have Nothing to Declare but my

Genius -- Genius -- 125125