- Main slide plus the crazy slide - Foreward: Pls don't nitpick, pls pay close attention and keep the slides full screen or whatever, pls ask questions - Outline the sections - Show the quote about making people want to explore the ocean instead of forcing them to build boats - Perspective slide: Explain that the talk is not about haskell, "When trying to explain to someone why they should learn functional programming, there are many perspectives to try explain it from. For this discussion, I've settled on a very meta one. Perspective itself. This is not a talk about haskell, it's about viewing programming through different perspectives" - More on that in a second - Explain what FP is in words (define pure functions) - Ask wtf you would wanna do that - The best answer I have is "learning is good", "brain plasticity" - Show the paradigm diagrams - "while w're on the topic of looking at things through different perspectives.... imerative and declaritive are used to describe human languages. Programming languages are human languages too. In fact I prefer to think of them this way" - The same way learning a new human language can help your POV, so can learning a new programming paradigm - Discuss "Perspective, brain plasticity, relate to human language (emphasise that programming languages are also human languages). - Makes you a better communicator - By making programs declarative we remove the temporal dimension, which makes what the program does clearer and leaves our brains free to do other things - Bring it full circle to the "why would you wanna do that" - "functional programming is awesome because it doesn't give you the ability to do thing which other languages do" - "Liberties constrain, constraints liberate" - Imperative programming is not always the right tool - doing the same thing over and over but expecting different results can be considered madness - Enough philosophy mumbo jumbo - Show the x = x + 1 thing - "Do this Vs This is this" - Elaborate on perspective and how changing it can give you powerful new tools (infinite lists, atemporality for example) - Communication is key, and the functional paradigm is brilliant for this (expressivity) - Functional: Thinking -> Relations - Procedural: Thinking -> change - Jump to promises - Explain what they are not - Explain what they are trying to solve (actions that take random time to complete, or may fail) - Reveal that they allow you to write atemporal code which is why they work so well when dealing with asynchronous actions - Relate to Either type - Composition is key to getting things done - Pyramids, LIGO, LHC, McDonald's - Nature's greatest hack - Speed increase in computation is no longer mainly driven by Moore's law, it is mainly driven by the parallelisation of programs, once again we arrive at the need to write atemporal programs - FP lends it self to composition naturally