i have nothing to declare but my genius - brian foote · i have nothing to declare but my genius --...

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

Upload: others

Post on 25-Jun-2020

36 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: I Have Nothing to Declare But my Genius - Brian Foote · I Have Nothing to Declare but my Genius -- 9 Class Menagerie ¾ 1. Monitors ¾ 2. Encapsulators ¾ 3. Message Forwarding3

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

--oror--Late Binding as a Philosophy of Late Binding as a Philosophy of

LifeLifeBrian FooteBrian [email protected]@laputan.org

http://http://www.laputan.orgwww.laputan.org

Page 2: I Have Nothing to Declare But my Genius - Brian Foote · I Have Nothing to Declare but my Genius -- 9 Class Menagerie ¾ 1. Monitors ¾ 2. Encapsulators ¾ 3. Message Forwarding3

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

Why IWhy I’’m (Still) Herem (Still) HereThe Dynamic Vision The Dynamic Vision from James VI from James VI through George IIIthrough George IIIArchitectural Architectural Balkanization in the Balkanization in the PostPost--Linguistic EraLinguistic EraThe Future of The Future of Objects in a Global Objects in a Global UltrascaleUltrascale EcosphereEcosphere

Page 3: I Have Nothing to Declare But my Genius - Brian Foote · I Have Nothing to Declare but my Genius -- 9 Class Menagerie ¾ 1. Monitors ¾ 2. Encapsulators ¾ 3. Message Forwarding3

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 PIEGreat for Wrapping StuffGreat for Wrapping StuffModularityModularityApplication LevelApplication LevelComponent LevelComponent Level

Page 4: I Have Nothing to Declare But my Genius - Brian Foote · I Have Nothing to Declare but my Genius -- 9 Class Menagerie ¾ 1. Monitors ¾ 2. Encapsulators ¾ 3. Message Forwarding3

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 Deutsch and ShiffmanShiffmanSelf and HotspotSelf and HotspotA Cast of ThousandsA Cast of ThousandsThe The JITtersJITtersCompletsComplets

Page 5: I Have Nothing to Declare But my Genius - Brian Foote · I Have Nothing to Declare but my Genius -- 9 Class Menagerie ¾ 1. Monitors ¾ 2. Encapsulators ¾ 3. Message Forwarding3

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

SmalltalkSmalltalk--8080

Everything I know about Everything I know about OO I learned from the OO I learned from the ImageImageBrowsers / Browsers / IDEsIDEsWindows GUIsWindows GUIsDynamic Translation (Dynamic Translation (JITsJITs))Building Programs Out of Building Programs Out of ObjectsObjects

Page 6: I Have Nothing to Declare But my Genius - Brian Foote · I Have Nothing to Declare but my Genius -- 9 Class Menagerie ¾ 1. Monitors ¾ 2. Encapsulators ¾ 3. Message Forwarding3

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

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

ObjectObjectBehaviorBehaviorClassDescriptionClassDescriptionClassClassMetaclassMetaclassMethodMethodMethodDictionaryMethodDictionaryCompiledMethodCompiledMethodByteArrayByteArray

ContextContextMethodContextMethodContextBlockContextBlockContextMessageMessageProcessProcessProcessSchedulerProcessSchedulerSemaphoreSemaphoreSharedQueueSharedQueueCompilerCompilerSystemDictionarySystemDictionary

Page 7: I Have Nothing to Declare But my Genius - Brian Foote · I Have Nothing to Declare but my Genius -- 9 Class Menagerie ¾ 1. Monitors ¾ 2. Encapsulators ¾ 3. Message Forwarding3

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 TraditionTraditionPrograms able to access a Programs able to access a ““causally connectcausally connect””representation of representation of themselves themselves Self RepresentationSelf RepresentationIntrospection / IntercessionIntrospection / Intercession

Page 8: I Have Nothing to Declare But my Genius - Brian Foote · I Have Nothing to Declare but my Genius -- 9 Class Menagerie ¾ 1. Monitors ¾ 2. Encapsulators ¾ 3. Message Forwarding3

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

The ManifestThe Manifest

User ConfigurationUser ConfigurationEvolutionEvolutionA mapA mapA manifestA manifestUser configurable User configurable codecodeAd hoc reflectionAd hoc reflection

Page 9: I Have Nothing to Declare But my Genius - Brian Foote · I Have Nothing to Declare but my Genius -- 9 Class Menagerie ¾ 1. Monitors ¾ 2. Encapsulators ¾ 3. Message Forwarding3

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

Class MenagerieClass Menagerie1. Monitors1. Monitors2. 2. EncapsulatorsEncapsulators3. Message Forwarding3. Message Forwarding4. Property List Manipulations4. Property List Manipulations5. Accessible Objects (5. Accessible Objects (DictsDicts=Records=Props)=Records=Props)6. Multiple Views (Database style)6. Multiple Views (Database style)7. Capabilities (Access Control)/OS Style 7. Capabilities (Access Control)/OS Style ProtectionProtection8. Multiple Inheritance8. Multiple Inheritance9. Tracing9. Tracing10. Debugging (Many Mentions)10. Debugging (Many Mentions)11. Futures11. Futures12. Remote (Distributed) Objects12. Remote (Distributed) Objects13. Multitasking (transparent, perhaps)13. Multitasking (transparent, perhaps)14. Constraints14. Constraints15. Reflection15. Reflection16. Part/Whole Relationships16. Part/Whole Relationships17. Active Values17. Active ValuesActive VariablesActive VariablesActive MessagesActive MessagesActive ReferencesActive References18. "Smart" Variables18. "Smart" Variables19. Lightweight (Anonymous) Classes19. Lightweight (Anonymous) Classes20. Melds (20. Melds (GarlanGarlan & Kaiser)& Kaiser)

21. Actors/Daemons21. Actors/Daemons22. Lazy Evaluation22. Lazy Evaluation23. Caching Schemes23. Caching Schemes24. Memo Memory Functions (as in POP2 and 24. Memo Memory Functions (as in POP2 and friends)friends)25. Read25. Read--Only VariablesOnly Variables26. Logging26. Logging27. Metering/Statistics/Performance Data 27. Metering/Statistics/Performance Data CollectionCollection28. Component Delegation28. Component Delegation29. Atomic Objects/Actions29. Atomic Objects/Actions30. Protocol Translators/Adaptors30. Protocol Translators/Adaptors31. Open Systems (Protocol Negotiators?)31. Open Systems (Protocol Negotiators?)32. Multiple Inheritance Schemes32. Multiple Inheritance Schemes33. 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/Composition36. Prototypes (ala 36. Prototypes (ala BorningBorning))37. Modules (ala Wirfs37. Modules (ala Wirfs--Brock)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 - Brian Foote · I Have Nothing to Declare but my Genius -- 9 Class Menagerie ¾ 1. Monitors ¾ 2. Encapsulators ¾ 3. Message Forwarding3

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

Class MenagerieClass Menagerie41. Dynamic Class Changes41. Dynamic Class Changes42. Dynamic Class Construction42. Dynamic Class Construction43. "Smart" Paths (see Part/Whole)43. "Smart" Paths (see Part/Whole)44. Flavors (now CLOS)44. Flavors (now CLOS)--Style Method CombinationStyle Method Combination45. 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 Schemes47. X47. X--Style Substructure RedirectionStyle Substructure Redirection48. Event Dispatching (see Multimethods)48. Event Dispatching (see Multimethods)49. Alternate Memory Allocation Schemes49. Alternate Memory Allocation Schemes50. Multilevel (Virtual, in the OS sense) Object Allocation50. Multilevel (Virtual, in the OS sense) Object Allocation51. Sundry Dynamic and Other Optimizations (51. Sundry Dynamic and Other Optimizations (CointeCointe))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 (54. Planning/Supervisory Code (GeneserethGenesereth, others), others)55. Behavior Based Programming55. Behavior Based Programming56. Active Types56. Active Types57. Strategy Computation 57. Strategy Computation 58. Truth Maintenance58. Truth Maintenance59. Program Supervision59. Program Supervision60. Multiprocessor Load Balancing60. Multiprocessor Load Balancing

61. Active Values/Access Oriented Programming61. Active Values/Access Oriented Programming62. 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 semantics64. Smart Comments64. Smart Comments65. Logic Variables/Unification65. Logic Variables/Unification66. Agents66. Agents67. Virtual Time (Time Warp)67. Virtual Time (Time Warp)68. Version Management68. Version Management69. Garbage Collection69. Garbage Collection70. Persistent Objects70. Persistent Objects71. Active Protocols71. Active Protocols72. Algorithm animation72. Algorithm animation73. Language Level Viruses73. Language Level Viruses74. Program Transformation74. Program Transformation

Page 11: I Have Nothing to Declare But my Genius - Brian Foote · I Have Nothing to Declare but my Genius -- 9 Class Menagerie ¾ 1. Monitors ¾ 2. Encapsulators ¾ 3. Message Forwarding3

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| STANDARD--OBJECTOBJECT| | CONSTRUCTOR| | CONSTRUCTOR| | METHOD| | METHOD--COMBINATIONCOMBINATION| | | STANDARD| | | STANDARD--METHODMETHOD--COMBINATIONCOMBINATION| | | | LONG| | | | LONG--METHODMETHOD--COMBINATIONCOMBINATION| | | | SHORT| | | | SHORT--METHODMETHOD--COMBINATIONCOMBINATION| | PLIST| | PLIST--MIXINMIXIN| | | <...>| | | <...>| | DEFINITION| | DEFINITION--SOURCESOURCE--MIXINMIXIN| | | <...>| | | <...>| | METAOBJECT| | METAOBJECT| | | GENERIC| | | GENERIC--FUNCTIONFUNCTION| | | | STANDARD| | | | STANDARD--GENERICGENERIC--FUNCTIONFUNCTION| | | METHOD| | | METHOD| | | | TRACED| | | | TRACED--METHODMETHOD| | | | STANDARD| | | | STANDARD--METHODMETHOD| | | | | STANDARD| | | | | STANDARD--ACCESSORACCESSOR--METHODMETHOD| | | | | | STANDARD| | | | | | STANDARD--WRITERWRITER--METHODMETHOD| | | | | | STANDARD| | | | | | STANDARD--READERREADER--METHODMETHOD| | | SLOT| | | SLOT--DEFINITIONDEFINITION| | | | STANDARD| | | | STANDARD--SLOTSLOT--DEFINITIONDEFINITION| | | | | STANDARD| | | | | STANDARD--EFFECTIVEEFFECTIVE--SLOTSLOT--DEFINITIONDEFINITION| | | | | STANDARD| | | | | STANDARD--DIRECTDIRECT--SLOTSLOT--DEFINITIONDEFINITION| | | | EFFECTIVE| | | | EFFECTIVE--SLOTSLOT--DEFINITIONDEFINITION| | | | | STANDARD| | | | | STANDARD--EFFECTIVEEFFECTIVE--SLOTSLOT--DEFINITIONDEFINITION| | | | DIRECT| | | | DIRECT--SLOTSLOT--DEFINITIONDEFINITION| | | | | STANDARD| | | | | STANDARD--DIRECTDIRECT--SLOTSLOT--DEFINITIONDEFINITION| | | SPECIALIZER| | | SPECIALIZER| | | | EQL| | | | EQL--SPECIALIZERSPECIALIZER| | | | CLASS| | | | CLASS| | | | | PCL| | | | | PCL--CLASSCLASS| | | | | | BUILT| | | | | | BUILT--ININ--CLASSCLASS| | | | | | FORWARD| | | | | | FORWARD--REFERENCEDREFERENCED--CLASSCLASS| | | | | | STD| | | | | | STD--CLASSCLASS| | | | | | | FUNCALLABLE| | | | | | | FUNCALLABLE--STANDARDSTANDARD--CLASSCLASS| | | | | | | STANDARD| | | | | | | STANDARD--CLASSCLASS<That's all...><That's all...>May Day PCL HierarchyMay Day PCL Hierarchy

Page 12: I Have Nothing to Declare But my Genius - Brian Foote · I Have Nothing to Declare but my Genius -- 9 Class Menagerie ¾ 1. Monitors ¾ 2. Encapsulators ¾ 3. Message Forwarding3

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

Objects We BuiltObjects We BuiltMultiMethodMultiMethodSpecializerSpecializerClassSpecializerClassSpecializerEqualSpeciealizerEqualSpeciealizerGenericMessageGenericMessageMethodCombinationMethodCombinationDiscriminatingMethodDiscriminatingMethodQualifiers (#Before Qualifiers (#Before #After, etc.)#After, etc.)

SubStandardMethodCombinationSubStandardMethodCombinationSimpleMethodCombinationSimpleMethodCombinationBetaMethodCombinationBetaMethodCombinationDispatchingMethodCombinationDispatchingMethodCombination

Page 13: I Have Nothing to Declare But my Genius - Brian Foote · I Have Nothing to Declare but my Genius -- 9 Class Menagerie ¾ 1. Monitors ¾ 2. Encapsulators ¾ 3. Message Forwarding3

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 vogueA Glamorous World: Models A Glamorous World: Models …… ActorsActorsA strategic architecture reserveA strategic architecture reserve……

Page 14: I Have Nothing to Declare But my Genius - Brian Foote · I Have Nothing to Declare but my Genius -- 9 Class Menagerie ¾ 1. Monitors ¾ 2. Encapsulators ¾ 3. Message Forwarding3

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 - Brian Foote · I Have Nothing to Declare but my Genius -- 9 Class Menagerie ¾ 1. Monitors ¾ 2. Encapsulators ¾ 3. Message Forwarding3

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““MetaMeta”” considered harmfulconsidered harmful

Page 16: I Have Nothing to Declare But my Genius - Brian Foote · I Have Nothing to Declare but my Genius -- 9 Class Menagerie ¾ 1. Monitors ¾ 2. Encapsulators ¾ 3. Message Forwarding3

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 ObjectsObjectsOpen LanguagesOpen LanguagesOpen JITTERSOpen JITTERSA Framework For A Framework For LanguagesLanguagesCompile Time is any TimeCompile Time is any TimeLinguistic ImperialismLinguistic Imperialism

Page 17: I Have Nothing to Declare But my Genius - Brian Foote · I Have Nothing to Declare but my Genius -- 9 Class Menagerie ¾ 1. Monitors ¾ 2. Encapsulators ¾ 3. Message Forwarding3

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

The RealityThe RealityUtopian Monocultures were Utopian Monocultures were wonderful idea incubatorswonderful idea incubatorsMore pragmatic languages More pragmatic languages prevailedprevailedWe 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 othersothersThe Rise of Worse is BetterThe Rise of Worse is Better

Page 18: I Have Nothing to Declare But my Genius - Brian Foote · I Have Nothing to Declare but my Genius -- 9 Class Menagerie ¾ 1. Monitors ¾ 2. Encapsulators ¾ 3. Message Forwarding3

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

The Great Schism of The Great Schism of ‘‘9797

ObjectivistsObjectivistsAspectivistsAspectivistsPragmatistsPragmatistsFormalistsFormalists

Page 19: I Have Nothing to Declare But my Genius - Brian Foote · I Have Nothing to Declare but my Genius -- 9 Class Menagerie ¾ 1. Monitors ¾ 2. Encapsulators ¾ 3. Message Forwarding3

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

The MedusaThe Medusa

An An apparitionapparition so hideous so hideous that all who gaze upon that all who gaze upon her are turned to her are turned to stonestone……

"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/Spock/KollosKollos, , Is There in Is There in TruthTruth No No Beauty?Beauty?

Page 20: I Have Nothing to Declare But my Genius - Brian Foote · I Have Nothing to Declare but my Genius -- 9 Class Menagerie ¾ 1. Monitors ¾ 2. Encapsulators ¾ 3. Message Forwarding3

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 StarHow Star--Crossed 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 - Brian Foote · I Have Nothing to Declare but my Genius -- 9 Class Menagerie ¾ 1. Monitors ¾ 2. Encapsulators ¾ 3. Message Forwarding3

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 spaceshipspaceshipPerfectly good Perfectly good softwaresoftware onboardonboardSupport software working as Support software working as intendedintendedDived into Martian atmosphere, Dived into Martian atmosphere, just as it just as it was told towas told toThe culprit: a The culprit: a ““simplesimple”” unitunit conversionconversion

Page 22: I Have Nothing to Declare But my Genius - Brian Foote · I Have Nothing to Declare but my Genius -- 9 Class Menagerie ¾ 1. Monitors ¾ 2. Encapsulators ¾ 3. Message Forwarding3

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

The CarpetbaggersThe CarpetbaggersType TheoristsType TheoristsMethodologistsMethodologistsLanguages DesignersLanguages DesignersTestersTestersManagement ConsultantsManagement ConsultantsSystem IntegratorsSystem IntegratorsInterface Design Engineers?Interface Design Engineers?

Page 23: I Have Nothing to Declare But my Genius - Brian Foote · I Have Nothing to Declare but my Genius -- 9 Class Menagerie ¾ 1. Monitors ¾ 2. Encapsulators ¾ 3. Message Forwarding3

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, of a ground software file, ““Small ForcesSmall 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 - Brian Foote · I Have Nothing to Declare but my Genius -- 9 Class Menagerie ¾ 1. Monitors ¾ 2. Encapsulators ¾ 3. Message Forwarding3

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

Angular Momentum Angular Momentum DesaturationDesaturation

MCO uses both reaction MCO uses both reaction wheels and thrusters wheels and thrusters RWsRWs allow more precise allow more precise attitude controlattitude controlIn an ideal world, they never In an ideal world, they never saturatesaturateOn an ideal spacecraft, On an ideal spacecraft, there is no residualthere is no residualOn an ideal mission, On an ideal mission, residuals cancel outresiduals cancel outIn 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 - Brian Foote · I Have Nothing to Declare but my Genius -- 9 Class Menagerie ¾ 1. Monitors ¾ 2. Encapsulators ¾ 3. Message Forwarding3

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

How MCO was How MCO was ““LostLost””

Page 26: I Have Nothing to Declare But my Genius - Brian Foote · I Have Nothing to Declare but my Genius -- 9 Class Menagerie ¾ 1. Monitors ¾ 2. Encapsulators ¾ 3. Message Forwarding3

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 - Brian Foote · I Have Nothing to Declare but my Genius -- 9 Class Menagerie ¾ 1. Monitors ¾ 2. Encapsulators ¾ 3. Message Forwarding3

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 ImpulseF = maF = ma1 N = (1 kg)(1 m/s1 N = (1 kg)(1 m/s22))1 1 lbflbf = (1 slug)(1 ft/s= (1 slug)(1 ft/s22) ) 1 1 lbflbf = 32.174 = 32.174 lbmlbm (1 ft/s(1 ft/s22))1 1 lbflbf = 1 = 1 lbmlbm (32.174 ft/s(32.174 ft/s22))1 1 lbmlbm = .4536 kg= .4536 kg1 ft = .3048 m1 ft = .3048 m1 N = 4.448 1 N = 4.448 lbflbf1 N1 N--sec = 4.448 sec = 4.448 lbflbf--sec sec 4.448 = (32.174)(.3048)(.4536)4.448 = (32.174)(.3048)(.4536)1 N1 N--sec = 1 kgsec = 1 kg--m/sm/sN = kg (9.81 m/sN = kg (9.81 m/s22))

Weight = 32.174 Weight = 32.174 lbflbfMass = 1 slugMass = 1 slugMass = 32.174 Mass = 32.174 lbmlbmMass = 14.6 kgMass = 14.6 kgWeight = 143 NWeight = 143 N

Page 28: I Have Nothing to Declare But my Genius - Brian Foote · I Have Nothing to Declare but my Genius -- 9 Class Menagerie ¾ 1. Monitors ¾ 2. Encapsulators ¾ 3. Message Forwarding3

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

SM_FORCESSM_FORCESAlthough starting from MGSAlthough starting from MGS--heritage software, the heritage software, the

coded coded thrusterthruster equations had to be changed 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 - Brian Foote · I Have Nothing to Declare but my Genius -- 9 Class Menagerie ¾ 1. Monitors ¾ 2. Encapsulators ¾ 3. Message Forwarding3

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

A A TypelessTypeless Tragedy?Tragedy?

Metric units were in the SISMetric units were in the SISPaper is not executablePaper is not executableSIS was complied with under MGSSIS was complied with under MGSLMA is an English Unit shopLMA is an English Unit shopUnclear whether Unclear whether ““Whole ValuesWhole Values””would have helped catch this would have helped catch this problemproblemProgrammers are not executableProgrammers are not executable

Page 30: I Have Nothing to Declare But my Genius - Brian Foote · I Have Nothing to Declare but my Genius -- 9 Class Menagerie ¾ 1. Monitors ¾ 2. Encapsulators ¾ 3. Message Forwarding3

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 ““ReusedReused”” software software Just one more Just one more ““cutcut--nn--pastepaste”” horror horror storystory……All that paper, but yet the right All that paper, but yet the right information wasninformation wasn’’t before the right person t before the right person when it was sorely neededwhen it was sorely needed……

Page 31: I Have Nothing to Declare But my Genius - Brian Foote · I Have Nothing to Declare but my Genius -- 9 Class Menagerie ¾ 1. Monitors ¾ 2. Encapsulators ¾ 3. Message Forwarding3

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

If it If it ainain’’tt been testedbeen tested

Full endFull end--toto--end test never performedend test never performedPrograms were latePrograms were late““Olfactory MethodOlfactory Method”” not followednot followedPaper is not always the your weapon of Paper is not always the your weapon of choicechoiceManagers donManagers don’’t win games, players dot win games, players do

Page 32: I Have Nothing to Declare But my Genius - Brian Foote · I Have Nothing to Declare but my Genius -- 9 Class Menagerie ¾ 1. Monitors ¾ 2. Encapsulators ¾ 3. Message Forwarding3

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

The Olfactory MethodThe Olfactory MethodKent BeckKent Beck: May be Best Remembered as the Man : May be Best Remembered as the Man

Who brought Scatology and Software Who brought Scatology and Software Engineering togetherEngineering together……

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

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

Page 33: I Have Nothing to Declare But my Genius - Brian Foote · I Have Nothing to Declare but my Genius -- 9 Class Menagerie ¾ 1. Monitors ¾ 2. Encapsulators ¾ 3. Message Forwarding3

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 - Brian Foote · I Have Nothing to Declare but my Genius -- 9 Class Menagerie ¾ 1. Monitors ¾ 2. Encapsulators ¾ 3. Message Forwarding3

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 - Brian Foote · I Have Nothing to Declare but my Genius -- 9 Class Menagerie ¾ 1. Monitors ¾ 2. Encapsulators ¾ 3. Message Forwarding3

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

The EndThe End--toto--End PrincipleEnd Principle

Applies to programming languages tooApplies 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 - Brian Foote · I Have Nothing to Declare but my Genius -- 9 Class Menagerie ¾ 1. Monitors ¾ 2. Encapsulators ¾ 3. Message Forwarding3

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

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

name="booksname="books--byby--author"/>author"/><<xsl:templatexsl:template match="/"><bestsellersmatch="/"><bestsellers--list>list>

<<xsl:applyxsl:apply--templates select="/publisher/authors/author">templates select="/publisher/authors/author"><<xsl:sortxsl:sort select="select="sum(key('bookssum(key('books--byby--author', @id)/sold)"/>author', @id)/sold)"/><<xsl:sortxsl:sort select="select="last_namelast_name"/>"/>

</</xsl:applyxsl:apply--templates>templates></bestsellers</bestsellers--list></list></xsl:templatexsl:template>>

<<xsl:templatexsl:template match="author">match="author"><copy><copy>

<name><name><<xsl:valuexsl:value--of select="of select="last_namelast_name"/>,"/>,<<xsl:valuexsl:value--of select="of select="first_namefirst_name"/>"/>

</name></name><<total_publicationstotal_publications>>

<<xsl:valuexsl:value--of select="of select="count(key('bookscount(key('books--byby--author', @id))"/>author', @id))"/></</total_publicationstotal_publications>><<total_soldtotal_sold>>

<<xsl:valuexsl:value--of select="of select="sum(key('bookssum(key('books--byby--author', @id)/sold)"/>author', @id)/sold)"/></</total_soldtotal_sold>><rank><rank>

<<xsl:valuexsl:value--of select="position()"/>of select="position()"/></rank></rank>

</copy></copy></</xsl:templatexsl:template>>

</</xsl:stylesheetxsl:stylesheet>>

Page 37: I Have Nothing to Declare But my Genius - Brian Foote · I Have Nothing to Declare but my Genius -- 9 Class Menagerie ¾ 1. Monitors ¾ 2. Encapsulators ¾ 3. Message Forwarding3

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

The Post Linguistic EraThe Post Linguistic EraThe is a five hundred pound The is a five hundred pound gorilla in the roomgorilla in the roomThe Program Model is CentralThe Program Model is CentralThe ASCII is fungible, roundThe ASCII is fungible, round--trippabletrippableRepresentations are freely Representations are freely convertibleconvertiblePrograms built of objects can Programs built of objects can be be changedchangedAnything can be swapped Anything can be swapped outout……

Page 38: I Have Nothing to Declare But my Genius - Brian Foote · I Have Nothing to Declare but my Genius -- 9 Class Menagerie ¾ 1. Monitors ¾ 2. Encapsulators ¾ 3. Message Forwarding3

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 PlayDynamic 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 itit……

Page 39: I Have Nothing to Declare But my Genius - Brian Foote · I Have Nothing to Declare but my Genius -- 9 Class Menagerie ¾ 1. Monitors ¾ 2. Encapsulators ¾ 3. Message Forwarding3

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

MegafaunaMegafauna

Global NamespaceGlobal NamespaceThe ManifestThe ManifestPolymorphism, Reflection, Polymorphism, Reflection, JittingJittingVegetable, not AnimalVegetable, not AnimalRuntime Testing, Runtime Testing, Communication, MeteringCommunication, Metering

Page 40: I Have Nothing to Declare But my Genius - Brian Foote · I Have Nothing to Declare but my Genius -- 9 Class Menagerie ¾ 1. Monitors ¾ 2. Encapsulators ¾ 3. Message Forwarding3

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

Engineering TolerancesEngineering Tolerances

We canWe can’’t type each t type each line tree timesline tree times……We can leave in the We can leave in the goaliesgoalies……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 testobjects to self test……

Page 41: I Have Nothing to Declare But my Genius - Brian Foote · I Have Nothing to Declare but my Genius -- 9 Class Menagerie ¾ 1. Monitors ¾ 2. Encapsulators ¾ 3. Message Forwarding3

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 ObjectReusable Object--Oriented 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 objectprogrammers think about building object--oriented programsoriented programs

Page 42: I Have Nothing to Declare But my Genius - Brian Foote · I Have Nothing to Declare but my Genius -- 9 Class Menagerie ¾ 1. Monitors ¾ 2. Encapsulators ¾ 3. Message Forwarding3

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

The CornucopiaThe CornucopiaMooreMoore’’s Law has bought three, four s Law has bought three, four orders of magnitude in orders of magnitude in performanceperformanceWeWe’’ve squandered it on eyewashve squandered it on eyewashCanCan’’t we afford to leave the goal t we afford to leave the goal tender in?tender in?Testing shows the valueTesting shows the valueThose Those ““runtimeruntime”” type errorstype errors””? ? Welcome to the 21Welcome to the 21stst centurycenturyNetwork, DB, are slower than Network, DB, are slower than reflectionreflection

Page 43: I Have Nothing to Declare But my Genius - Brian Foote · I Have Nothing to Declare but my Genius -- 9 Class Menagerie ¾ 1. Monitors ¾ 2. Encapsulators ¾ 3. Message Forwarding3

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 1982ItIt’’s peanuts to keep this s peanuts to keep this stuff nowstuff now……ItIt’’s almost malpractice not s almost malpractice not toto……

Page 44: I Have Nothing to Declare But my Genius - Brian Foote · I Have Nothing to Declare but my Genius -- 9 Class Menagerie ¾ 1. Monitors ¾ 2. Encapsulators ¾ 3. Message Forwarding3

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 dimensionsdistinct dimensions……I donI don’’t care about mere declarations, I want to t care about mere declarations, I want to know what enforces themknow what enforces them……

Page 45: I Have Nothing to Declare But my Genius - Brian Foote · I Have Nothing to Declare but my Genius -- 9 Class Menagerie ¾ 1. Monitors ¾ 2. Encapsulators ¾ 3. Message Forwarding3

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

Embrace StuffEmbrace Stuff

Embrace FailureEmbrace FailureEmbrace DiversityEmbrace DiversityEmbrace RuntimeEmbrace RuntimeEmbrace HeterogeneityEmbrace HeterogeneityEmbrace ChangeEmbrace Change

Page 46: I Have Nothing to Declare But my Genius - Brian Foote · I Have Nothing to Declare but my Genius -- 9 Class Menagerie ¾ 1. Monitors ¾ 2. Encapsulators ¾ 3. Message Forwarding3

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 objectsAre easy to changeAre easy to changeAre easy to hardenAre easy to hardenAre virtual machinesAre virtual machinesAre configurable Are configurable machinesmachines

Page 47: I Have Nothing to Declare But my Genius - Brian Foote · I Have Nothing to Declare but my Genius -- 9 Class Menagerie ¾ 1. Monitors ¾ 2. Encapsulators ¾ 3. Message Forwarding3

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

The Holocene ExplosionThe Holocene Explosion

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

Page 48: I Have Nothing to Declare But my Genius - Brian Foote · I Have Nothing to Declare but my Genius -- 9 Class Menagerie ¾ 1. Monitors ¾ 2. Encapsulators ¾ 3. Message Forwarding3

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

The CobblerThe Cobbler’’s Childrens Children

Page 49: I Have Nothing to Declare But my Genius - Brian Foote · I Have Nothing to Declare but my Genius -- 9 Class Menagerie ¾ 1. Monitors ¾ 2. Encapsulators ¾ 3. Message Forwarding3

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