Orient Programming? What is Object–Orientation? What is Functional Programming? What’s a programming paradigm, and where can I buy one? Graham Lee *–Oriented Programming
Point radius :: float, float → float Point radius(x, y) = x2 + y2 Point angle :: float, float → float Point angle(x, y) = arctan(x/y) Graham Lee *–Oriented Programming
Point :: float, float → operation → Function Point(x, y) is a Constructor for an object, p p(operation) is a Message, which takes a Selector and returns a Method. Point (r, θ) could also be a Constructor. . . Graham Lee *–Oriented Programming
a compiler that takes source code in some language and creates an executable. If it encounters malformed source code, it should report an error and should not produce an executable. Graham Lee *–Oriented Programming
Compiler +compile(source:String,errorReporter:ErrorReporter): Optional<Executable> ErrorReporter +reportError(error:CompilerError): void Graham Lee *–Oriented Programming
happened? We took functions describing points, and applied the principles of functional programming until what we had were objects. We took an object describing a compiler, and applied the principles of object–oriented programming until what we had were functions. Graham Lee *–Oriented Programming
describes your thought process The tools can constrain you, they can’t lead your thought. You’re going to have to bring your own thinking. Graham Lee *–Oriented Programming