|
79 | 79 | ◊ul[#:class "list-disc list-inside mx-2 my-4 sm:text-lg leading-relaxed"]{ |
80 | 80 | ◊li{18.45 Doors open & Welcome} |
81 | 81 | ◊li{◊strong{Really Functional Data Structures} (Marvin)} |
82 | | - ◊p[#:class "ml-10 my-2 italic text-base"]{ |
| 82 | + ◊p[#:class "-ml-2 md:mx-8 mt-2 mb-6 italic text-base"]{ |
83 | 83 | Last time, David showed us functional data structures in the form of persistent data structures. In this talk, I want to show you data structures that are defined entirely by functions themselves - no classes, structs, bitmaps, etc.! Knowing about such structures not only tickles the brain, but can also lead to a better intuition for solving problems functionally. Furthermore, one of the data structures shown can be used for space-efficient encodings of fractals and fun animations. |
84 | 84 | } |
85 | 85 | ◊li{Short break} |
86 | 86 | ◊li{◊strong{Decoupled by Default – Funktionale Programmierung in der Softwarearchitektur} (Markus)} |
87 | | - ◊p[#:class "ml-10 my-2 italic text-base"]{ |
| 87 | + ◊p[#:class "-ml-2 md:mx-8 mt-2 mb-6 italic text-base"]{ |
88 | 88 |
|
89 | 89 | Kopplung – das Maß der Abhängigkeiten zwischen Modulen – ist das |
90 | 90 | zentrale Konzept der Softwarearchitektur. Die herkömmliche Sicht auf |
91 | 91 | Kopplung ist die, dass hohe Kopplung dann entsteht, wenn man nicht |
92 | | - aufpasst beim Programmieren: wenn man ◊em{nicht} gegen explizite |
93 | | - Schnittstellen programmiert, wenn man ◊em{kein} Visitor-Pattern |
94 | | - verwendet, wenn man ◊em{nicht} Dependency Injection verwendet … |
| 92 | + aufpasst beim Programmieren: wenn man ◊span[#:class "font-medium"]{nicht} gegen explizite |
| 93 | + Schnittstellen programmiert, wenn man ◊span[#:class "font-medium"]{kein} Visitor-Pattern |
| 94 | + verwendet, wenn man ◊span[#:class "font-medium"]{nicht} Dependency Injection verwendet … |
95 | 95 | Kopplung, so scheint es, ist das Resultat von Unterlassung. Die |
96 | 96 | Kopplung wieder zu senken, erfordert dann ausdrückliche |
97 | 97 | Gegenmaßnahmen. Dieser Vortrag zeigt eine alternative Sichtweise: |
|
105 | 105 | Arten unnötiger Kopplung sicher sind. Wir zeigen, wie der Ansatz des |
106 | 106 | Denotational Design dort Abhilfe schaffen kann, indem die Semantik von |
107 | 107 | Schnittstellen in den Vordergrund gerückt wird. |
108 | | - |
109 | 108 | } |
110 | 109 | ◊li{Food, talking, coding, whatever} |
111 | 110 | ◊li{22.00 End} |
|
118 | 117 | ◊ul[#:class "list-disc list-inside mx-2 my-4 sm:text-lg leading-relaxed"]{ |
119 | 118 | ◊li{18.45 Doors open & Welcome} |
120 | 119 | ◊li{◊link["https://haglobah.github.io/talks/2024-08-28/"]{Simple development environments with Nix} (Beat)} |
121 | | - ◊p[#:class "ml-10 my-2 italic text-base"]{ |
| 120 | + ◊p[#:class "-ml-2 md:mx-8 mt-2 mb-6 italic text-base"]{ |
122 | 121 | Setting up development environments is more complex than it should be. Nix makes entering development environments as easy as running nix develop, making them simple and reproducible. This talk explores what an ideal workflow could look like and walks through a project setup with Nix, outlining its benefits and deficiencies. |
123 | 122 | } |
124 | 123 | ◊li{Short break} |
125 | 124 | ◊li{◊link["https://binderdavid.github.io/talks/VortragHAMT.pdf"]{Persistent Data Structures: From Lists to Hashmaps} (David)} |
126 | | - ◊p[#:class "ml-10 my-2 italic text-base"]{ |
| 125 | + ◊p[#:class "-ml-2 md:mx-8 mt-2 mb-6 italic text-base"]{ |
127 | 126 | Functional programmers cannot use the same data structures and algorithms that imperative programmers are used to. Functional data structures make it easier to reason about what our code does, but have different performance characteristics. This talk will introduce some of the basic and advanced techniques we use when we implement functional data structures efficiently. |
128 | 127 | } |
129 | 128 | ◊li{Food, talking, coding, whatever} |
|
0 commit comments