Upload
mervyn-webster
View
240
Download
5
Tags:
Embed Size (px)
Citation preview
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
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
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
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
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
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
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
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
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
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
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
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
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…
I Have Nothing to Declare but my I Have Nothing to Declare but my
Genius -- Genius -- 1414
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
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
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
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
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?
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
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
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?
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).
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
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”
I Have Nothing to Declare but my I Have Nothing to Declare but my
Genius -- Genius -- 2626
Dollars and FrancsDollars and Francs
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
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.
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
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…
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
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…
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!
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
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
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>
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…
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…
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
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…
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
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
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…
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…
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
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
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!
I Have Nothing to Declare but my I Have Nothing to Declare but my
Genius -- Genius -- 4848
The Cobbler’s ChildrenThe Cobbler’s Children
I Have Nothing to Declare but my I Have Nothing to Declare but my
Genius -- Genius -- 4949
I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 5050
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
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
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
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?
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
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…
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
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?
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
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
I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 6161
Our Own Private PottersvilleOur Own Private Pottersville
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
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
I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 6464
I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 6565
Dan IngallsDan Ingalls
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
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
I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 6868
I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 6969
The Cobbler’s ChildrenThe Cobbler’s Children
I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 7070
The Gordian KnotThe Gordian Knot
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
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
I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 7373
I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 7474
I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 7575
I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 7676
Dan IngallsDan Ingalls
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
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
I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 7979
I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 8080
The Cobbler’s ChildrenThe Cobbler’s Children
I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 8181
The Gordian KnotThe Gordian Knot
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
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
I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 8484
I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 8585
I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 8686
I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 8787
Dan IngallsDan Ingalls
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
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
I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 9090
I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 9191
The Cobbler’s ChildrenThe Cobbler’s Children
I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 9292
The Gordian KnotThe Gordian Knot
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
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
I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 9595
I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 9696
I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 9797
I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 9898
Dan IngallsDan Ingalls
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
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
I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 101101
I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 102102
The Cobbler’s ChildrenThe Cobbler’s Children
I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 103103
The Gordian KnotThe Gordian Knot
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
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
I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 106106
I Have Nothing to Declare but my I Have Nothing to Declare but my
Genius -- Genius -- 107107
I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 108108
I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 109109
I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 110110
Dan IngallsDan Ingalls
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
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
I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 113113
I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 114114
The Cobbler’s ChildrenThe Cobbler’s Children
I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 115115
The Gordian KnotThe Gordian Knot
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
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
I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 118118
I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 119119
I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 120120
I Have Nothing to Declare but my I Have Nothing to Declare but my Genius -- Genius -- 121121
Dan IngallsDan Ingalls
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
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
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
I Have Nothing to Declare but my I Have Nothing to Declare but my
Genius -- Genius -- 125125