The best software engineers are those who are not locked into a particular toolset, or the ecosystem thereof. This is one of my first presentations; an opinionated take on the different programming paradigms and the frameworks which implement them.
another so as to simulate a set of real world phenomena. The four major principles of object orientation: • Encapsulation • Data Abstraction • Inheritance • Polymorphism OOP is about encapsulating mutable state
for the machine • Written by declaring how things should be. • Expresses the logic of a computation without defining or describing its control flow • Programming on an abstraction
operations. • There is state littered everywhere; mainly global state • Computer runs the instructions in the order it sees them • …comes from Latin’s impero ~ English’s emperor
of facts and a set of axioms • The axioms and clauses may have arguments For example, one could define the relation consumes(A, B), meaning that A consumes B. One could then establish a set of facts [stored in a database], and query these facts for truth. Example of facts database food(rice). food(beans). fuel(firewood). food(gasoline). consumes(human, rice). consumes(car, gasoline). consumes(human, beans). /* What consumes gasoline? */ ?- consumes(What, gasoline). What = car.
predefined channels. • Concerned with data-flow • Each application is a self-sufficient component which receives messages (input) and performs some transformation NoFlo Analog Clock in Javascript
of the commands • Remember state somehow Functional • Mutable state is dangerous • Computation. Mathematics. Functions. Pure functions. Declarative • See my facts • This is what I want • Figure it out, computer! Baseline Irreducible Paradigms All others are derived from these