Upgrade to Pro — share decks privately, control downloads, hide ads and more …

From Functional Languages to Functional Archite...

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for Juliano Alves Juliano Alves
December 28, 2020
110

From Functional Languages to Functional Architectures

Slides of my presentation for Codemotion 2020 (https://events.codemotion.com/conferences/online/2020/codemotion-online-tech-conference/)

Software tends to be organised in a similar way in different levels: methods in classes, classes in packages, packages in projects and so on. The OO approach defined a good amount of this standards. However, there are companies building massive systems out there, handling numerous requests in a functional way. Could the functional approach have any impact on architecture? Lambda functions, immutable databases and short-life infrastructure are a few examples. In this session you will see how the functional paradigm has impacted software architecture at a much deeper level than one can imagine

Avatar for Juliano Alves

Juliano Alves

December 28, 2020
Tweet

More Decks by Juliano Alves

Transcript

  1. Who am I? • Software Engineer, Searcher of perfect modularization,

    Lover of Functional Languages • The cool ones Scala, Clojure, Elixir • The "vintage" ones Java, C#, Python, Ruby @vonjuliano juliano-alves.com
  2. How do we organise that knowledge? "Software tends to be

    organised the same way, in different levels"
  3. SERVICE A SERVICE B SERVICE C SERVICE D SERVICE E

    SERVICE F SERVICE G SERVICE H SERVICE I
  4. final var album = new ArrayList<Picture>(); album.add(picture1); album.add(picture2); System.out.println(album); //

    [pic1, pic2] album.set(1, picture3); System.out.println(album); // [pic1, pic3]
  5. val album = List[Picture](picture1, picture2) println(album) // [pic1, pic2] album.updated(1,

    picture3) println(album) // [pic1, pic2] val newAlbum = album.updated(1, picture3) println(newAlbum) // [pic1, pic3]