|
76 | 76 | ◊par{ |
77 | 77 | The next meetup will take place on the 06.11.24 at the ◊link["https://itdesign.de/"]{itdesign office}, Friedrichstraße 12. |
78 | 78 | } |
79 | | - ◊ul[#:class "list-disc list-inside mx-2 my-4 sm:text-lg leading-relaxed"]{ |
80 | | - ◊li{18.45 Doors open & Welcome} |
81 | | - ◊li{◊strong{Really Functional Data Structures} (Marvin)} |
82 | | - ◊p[#:class "-ml-2 md:mx-8 mt-2 mb-6 italic text-base"]{ |
| 79 | + ◊div[#:class "mx-2 my-4 sm:text-lg leading-relaxed"]{ |
| 80 | + ◊orga{18:45 Doors open & Welcome} |
| 81 | + ◊p[#:class ""]{◊span[#:class "font-medium"]{Really Functional Data Structures} (Marvin)} |
| 82 | + ◊abstract{ |
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 | | - ◊li{Short break} |
86 | | - ◊li{◊strong{Decoupled by Default – Funktionale Programmierung in der Softwarearchitektur} (Markus)} |
87 | | - ◊p[#:class "-ml-2 md:mx-8 mt-2 mb-6 italic text-base"]{ |
88 | | - |
89 | | - Kopplung – das Maß der Abhängigkeiten zwischen Modulen – ist das |
90 | | - zentrale Konzept der Softwarearchitektur. Die herkömmliche Sicht auf |
91 | | - Kopplung ist die, dass hohe Kopplung dann entsteht, wenn man nicht |
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 | | - Kopplung, so scheint es, ist das Resultat von Unterlassung. Die |
96 | | - Kopplung wieder zu senken, erfordert dann ausdrückliche |
97 | | - Gegenmaßnahmen. Dieser Vortrag zeigt eine alternative Sichtweise: |
98 | | - Viele Arten von Kopplung entstehen aufgrund von Unzulänglichkeiten der |
99 | | - Programmiersprache. In funktionalen Sprachen treten diese |
100 | | - Kopplungsarten teilweise gar nicht auf oder zumindest ist die |
101 | | - Werkseinstellung dieser Sprachen dergestalt, dass Kopplung vermieden |
102 | | - wird. Das zeigen wir im Vortrag insbesondere mit Blick auf den Umgang |
103 | | - mit geteiltem Zustand und Plattformabhängigkeiten. Am Ende zeigen |
104 | | - wir, dass auch funktionale Programmierer nicht automatisch vor allen |
105 | | - Arten unnötiger Kopplung sicher sind. Wir zeigen, wie der Ansatz des |
106 | | - Denotational Design dort Abhilfe schaffen kann, indem die Semantik von |
107 | | - Schnittstellen in den Vordergrund gerückt wird. |
| 85 | + ◊orga{Short break} |
| 86 | + ◊p[#:class ""]{◊span[#:class "font-medium"]{Decoupled by Default – Funktionale Programmierung in der Softwarearchitektur} (Markus)} |
| 87 | + ◊abstract{ |
| 88 | + ◊p[#:class "my-2"]{Kopplung – das Maß der Abhängigkeiten zwischen Modulen – ist das zentrale Konzept der Softwarearchitektur. Die herkömmliche Sicht auf Kopplung ist die, dass hohe Kopplung dann entsteht, wenn man nicht aufpasst beim Programmieren: wenn man ◊span[#:class "font-medium"]{nicht} gegen explizite Schnittstellen programmiert, wenn man ◊span[#:class "font-medium"]{kein} Visitor-Pattern verwendet, wenn man ◊span[#:class "font-medium"]{nicht} Dependency Injection verwendet … |
| 89 | + } |
| 90 | + ◊p[#:class "my-2"]{ |
| 91 | + Kopplung, so scheint es, ist das Resultat von Unterlassung. Die Kopplung wieder zu senken, erfordert dann ausdrückliche Gegenmaßnahmen. |
| 92 | + } |
| 93 | + ◊p[#:class "my-2"]{ |
| 94 | + Dieser Vortrag zeigt eine alternative Sichtweise: Viele Arten von Kopplung entstehen aufgrund von Unzulänglichkeiten der Programmiersprache. In funktionalen Sprachen treten diese Kopplungsarten teilweise gar nicht auf oder zumindest ist die Werkseinstellung dieser Sprachen dergestalt, dass Kopplung vermieden wird. Das zeigen wir im Vortrag insbesondere mit Blick auf den Umgang mit geteiltem Zustand und Plattformabhängigkeiten. Am Ende zeigen wir, dass auch funktionale Programmierer nicht automatisch vor allen Arten unnötiger Kopplung sicher sind. Wir zeigen, wie der Ansatz des Denotational Design dort Abhilfe schaffen kann, indem die Semantik von Schnittstellen in den Vordergrund gerückt wird. |
| 95 | + } |
108 | 96 | } |
109 | | - ◊li{Food, talking, coding, whatever} |
110 | | - ◊li{22.00 End} |
| 97 | + ◊orga{Food, talking, coding, whatever} |
| 98 | + ◊orga{22.00 End} |
111 | 99 | } |
112 | 100 | } |
113 | 101 | ◊meetup[#:title "28.08.24"]{ |
114 | 102 | ◊par{ |
115 | 103 | This meetup took place on the 28.08.24 at the ◊link["https://itdesign.de/"]{itdesign office}, Friedrichstraße 12. |
116 | 104 | } |
117 | | - ◊ul[#:class "list-disc list-inside mx-2 my-4 sm:text-lg leading-relaxed"]{ |
118 | | - ◊li{18.45 Doors open & Welcome} |
119 | | - ◊li{◊link["https://haglobah.github.io/talks/2024-08-28/"]{Simple development environments with Nix} (Beat)} |
120 | | - ◊p[#:class "-ml-2 md:mx-8 mt-2 mb-6 italic text-base"]{ |
| 105 | + ◊div[#:class "mx-2 my-4 sm:text-lg leading-relaxed"]{ |
| 106 | + ◊orga{18.45 Doors open & Welcome} |
| 107 | + ◊p{◊link["https://haglobah.github.io/talks/2024-08-28/"]{◊span[#:class "font-medium"]{Simple development environments with Nix}} (Beat)} |
| 108 | + ◊abstract{ |
121 | 109 | 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. |
122 | 110 | } |
123 | | - ◊li{Short break} |
124 | | - ◊li{◊link["https://binderdavid.github.io/talks/VortragHAMT.pdf"]{Persistent Data Structures: From Lists to Hashmaps} (David)} |
125 | | - ◊p[#:class "-ml-2 md:mx-8 mt-2 mb-6 italic text-base"]{ |
| 111 | + ◊orga{Short break} |
| 112 | + ◊p{◊link["https://binderdavid.github.io/talks/VortragHAMT.pdf"]{◊span[#:class "font-medium"]{Persistent Data Structures: From Lists to Hashmaps}} (David)} |
| 113 | + ◊abstract{ |
126 | 114 | 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. |
127 | 115 | } |
128 | | - ◊li{Food, talking, coding, whatever} |
129 | | - ◊li{22.00 End} |
| 116 | + ◊orga{Food, talking, coding, whatever} |
| 117 | + ◊orga{22.00 End} |
130 | 118 | } |
131 | 119 | } |
132 | 120 | } |
|
0 commit comments