Functional object-orientation (or objective functionalism?)

Knut Tveitane

Workshop (1.5 hours)Thursday: 10:45 - 12:15Bugaarden

Exercise files

Function-oriented programming (FOP, also called “functional programming”) has been the big new thing in program development for… yes, how many years? The paradigm has many and enthusiastic supporters in academic circles, but we have still not seen the massive transition from OOP happen in the “real world”. This has several reasons, but perhaps most importantly, it is extremely expensive to port existing systems – and not least existing developers – to a new programming paradigm.

Function-oriented programming has certainly some advantages. One of the reasons for its popularity in academia is that it is based on a branch of mathematics – lambda calculus – and that mathematical proof of its functionality therefore can be provided. For us ordinary developers, it is more important that FOP can provide benefits such as better thread security, better readability and fewer bugs.

So, instead of a full paradigm shift, is it possible to introduce some of the principles of FOP into our object-oriented programming everyday life?

Several object-oriented languages have begun to incorporate FOP-based functionality. C # has had this as a goal since version 3 (2007) and is a leader in the field. Some elements from FOP have become “first class citizens” in C #, in other areas semantic and syntactic changes have been made that enable us to write code in a more function-oriented way. This workshop will show how we can use these possibilities to write correct, readable and error-free code, by refactoring existing OOP code to a more function-oriented design.

Always remember: If all you have is a hammer, everything looks like a (thumb-)nail.

Some experience with object-oriented development is assumed. No prior knowledge of function-oriented programming required.

Please have Visual Studio 2019 (Community Edition) (or VS Code) and .Net 5/C#9 (or higher) installed on your laptop prior to the workshop.