1.Talk: Functional Vs OOP Mental Model (and Clojure)
👉 On a basic level, most us are aware about Pure Functions and in an advanced level, there are also Higher Order Functions that adds more ways of writing elegent code - which is possible through functional programming.
👉 OOP is mainly about
in which Application is an unit of Programming and follows 'Many Systems in One' mindset, where the Application is a balance of State and Behaviours added to it.
👉 FP is mainly about
in which Data and Function together are an unit of Programming and follows 'One System' mindset, where there will be functions which takes data and returns data.
👉 Some key ideas about Programming:
Even though Programming handles numeric operations and calculations, it is eventually for building Systems targeting a need i.e, an use case in a domain.
*Such a system should be fast enough to deliver what it is designed for.
*It has to be as per the Principles of reasoning (for a developer):
--Simple to collaborate on
--Simple to extend/evolve/maintain
--Simple to test
👉Immutability & State
Clojure has fundamentally: Identity & Values
Identity is like a placeholder or a variable which will have Value.
While the initial value of identity will remain unchanged(immutable), the consequent values will change over the time as program continues to evolve with new data. As the program retains the original value, it will be beneficial in the sense that developer can serve the result with the original value in mind as far as the program lasts.
Even if the developer wants the initial value to be changed, Clojure offers a way to do that too.
👉 Concurrency which is important for making Systems Scalable and Efficient is achieved through Clojure’s Software Transactional Memory.
*Clojure uses multi-version control concurrency through features such as atom, ref and agent.
*Expressions come in handy to be able to extract values from Data/Arguments passed.
*This can be better understood through Clojure Compilation process: Unlike in other languages, Clojure compiler has Reader which understand the data in terms of Clojure data structures only regardless of the type of data that gets passed.
👉 Writing Domain Specific Languages in Clojure is very easy.
👉 One of the Philosophies that Clojure follows is 'No breaking Changes.' Which means migrating code from one version to another version should be achieved without breaking/removing the parts of code so that there will be a flow in the process and this reduces the overheads caused by legacy code.
👉 end of the talk.
2.Talk: Intro to GraphQL with Apollo
Overall, it was a good meetup and looking forward to the next one! Thanks to those who hosted and attended. :)