<!DOCTYPE html>
<html>
<head>
<title></title>
<style type="text/css">p.MsoNormal,p.MsoNoSpacing{margin:0}</style>
</head>
<body><div>Hello all,<br></div>
<div><br></div>
<div>Last evening, Pillar hosted one of their Plugged-In events - they hosted Dr. Venkat Subramaniam<br></div>
<div><br></div>
<div>His talk centered around using the new (to Java) lambda construct to refactor code. I went to see his thoughts on how to break problems down.<br></div>
<div><br></div>
<div>Key takeaways : <br></div>
<div><br></div>
<div>Simple and familiar is not the same<br></div>
<div><br></div>
<div>Cuteness is not sustainable<br></div>
<div><br></div>
<div>Functional programming = lazy evaluation + functional composition<br></div>
<div><br></div>
<div>David Wheeler - "All problems in computer science can be solved by another level of indirection."<br></div>
<div><br></div>
<div>Procedural programming = pointers for indirection<br></div>
<div>Object Oriented programming = polymorphism for indirection<br></div>
<div>Function programming = lambda for indirection<br></div>
<div><br></div>
<div>Haskell is the laziest language ever <br></div>
<div><br></div>
<div>There was a demonstration of "Execute Around Method Pattern" from Ken Beck's Smalltalk Best Practices <-- highly recommended for better understanding of functional thinking<br></div>
<div><br></div>
<div>He answered my question - functional programming, while it greatly reduces errors due to a smaller cognitive load, is not a magic bullet. You can write bad code in any language<br></div>
<div><br></div>
<div>He also feels that "reactive" programming is the future. <br></div>
<div><br></div>
<div>The speaker's website : agiledeveloper.com - go to the Downloads link for articles and presentations, etc.<br></div>
<div><br></div>
<div>I noticed that there were copies of the book Functional Programming in Java being passed around up front.<br></div>
<div><br></div>
<div>===============================<br></div>
<div><br></div>
<div>Pythonista debriefing : <br></div>
<div><br></div>
<div>Most of what was demonstrated involves problems that the native Python language already solves. <br></div>
<div><br></div>
<div>Highly recommended to review Brandon Rhodes talk at PyOhio 2012: here he breaks down the traditional Gang of Four patterns to see if and how they apply to Python - <a href="https://www.youtube.com/watch?v=Er5K_nR5lDQ&list=PLxd96E9IxfZV4N548nzmzqauC1XmJ5fgD">https://www.youtube.com/watch?v=Er5K_nR5lDQ&list=PLxd96E9IxfZV4N548nzmzqauC1XmJ5fgD</a><br></div>
<div> <br></div>
<div>Also, amongst Pythonistas, the book "Learn You a Haskell for Great Good" is highly recommended<br></div>
<div><br></div>
<div>Smalltalk did influence the design of Python. Objective-C as well. At around the same time, there was a modeling language called Simula, and that is where C++ got its object model (and may as well be the root of all evil....)<br></div>
</body>
</html>