This is the second article of two to introduce the term I’m suggesting of “first class procedure”. The first article provided a working example of the first class procedure to see them in action. This article delves into the detail and some theory on how the first class procedure has evolved.The evolution of the “first class procedure” starts with looking at the function.
We developers like abstraction. Without it, we could not build applications. Our programming disciplines even require that we code to abstractions and avoid coupling our code to detailed implementations.However, what is the right abstractions for your application?Sadly, the choice of abstractions really comes from our choice of framework. Frameworks are basically abstract solutions that we extend to solve our problem.Unfortunately frameworks, like Spring Boot,
Beyond Spring’s Dependency Injectiononly solving 1/5 of the Inversion of Control problem, Spring Reactive bases itself on the event loop. While there are other popular event loop driven solutions (NodeJS, Nginx), the single threaded event loop is a pendulum swing in the other direction from thread-per-request (thread pools). With event loops competing against thread-per-request is there not some pattern that underlies both of them? Well, actually yes!
The definition of Inversion of Control was presented in a paper published in 2015 (a free download is available here). The premise of the paper was “can we learn something from how businesses organise themselves and translate this into software design improvements?” Basically, businesses have been around a lot longer than software systems. So, how did businesses deal with problems, such as scale, before computers existed?So running