|
1 |
| -Hi, my name is MM and this is not going to be a talk about Scala. Given that |
2 |
| -this is Scala user group meetup, you might feel cheated, so let me remediate |
3 |
| -that by trying to explain why you might care anyway. |
| 1 | +Hello. This is not going to be a talk about Scala. This is not going to be a practical talk, in the sense that it is unlikely the ideas in it are going to make you a better developer in two days time, when you are back coding your current scala project. On the plus side, the concepts we will discuss will still be relevant a year from now and ten years from now. |
4 | 2 |
|
5 |
| -In engineering disciplines the designers of a given machine or structure can |
6 |
| -usually say something about its properties: this engine will generate 300 Watts |
7 |
| -of power, this building can withstand earthquake of magnitude 4 in Richter |
8 |
| -scale. I write software for a living -- mostly in Scala, nowadays. These are |
9 |
| -business applications that pump data from one place to the other, sometimes |
10 |
| -reshaping and recombining it on the way. In my experience, in this domain |
11 |
| -any absolute guarantees about the behaviour of the system are very uncommon. |
12 |
| -We use acceptance tests to check what the system *will* do, but as is the |
13 |
| -case with all example-based tests, it cannot provide guarantees as to what the |
14 |
| -system *will not*, under any circumstances, do. |
| 3 | +Scala community is diverse; people with background in down-to-earth enigneering intermingle with those well versed in mathematics and programming language theory. We tend to see terms such as "type lambda", "soundness", "Church encoding" etc. in discussions about language features and approaches to programming problems. |
15 | 4 |
|
16 |
| -Many of us have heard of scalaz and shapeless projects, and perhaps even about |
17 |
| -the principles of functional programming and dependently-typed programming those |
18 |
| -projects are based on. Those techniques purport to provide some guarantees about |
19 |
| -the software that we write: "this piece of code will never perform any IO" (not |
20 |
| -really possible in Scala), "this function will always yield a sorted list" and |
21 |
| -so on. However, for many run-of-the-mill programmers such as myself there is |
22 |
| -all this intimidating terminology that might be off-putting and stop |
23 |
| -us from taking advantage of those powerful tools. |
24 |
| - |
25 |
| -The bad news is, there is no easy way to enlightenment. Proper understanding of |
26 |
| -advanced functional and type-level techniques requires a lot of learning. |
27 |
| -The good news is that first steps in this learning are very easy. The fundamental |
28 |
| -formalism that underpins all of this, the lambda calculus, is really easy to get |
29 |
| -to grips with. This talk is meant to show you the lay of the lambda-land and |
30 |
| -give some pointers where to look next if you wanted to learn more. To be clear: |
31 |
| -there won't be any practice in it, you won't go away and think: "right, let's |
32 |
| -put it to use now". But hopefully, it will pique your interest in the subject |
33 |
| -and give some ideas where to go next. |
34 |
| - |
35 |
| --- plan of the talk |
36 |
| - |
37 |
| -I do not assume any theoretical background, just programming experience. The |
38 |
| -concepts we will discuss should be really straightforward, so if anything is |
39 |
| -unclear then please ask questions immediately. |
| 5 | +While this talk will not explain all those concepts -- 45 minutes, giver or take, are in now way sufficient -- it is meant to give you some background to formal methods as they relate to programming languages, present the lay of the land and inspire you to continue the exploration on your own. All I am hoping to do today is to pique your interest and give some pointers where to go next. |
0 commit comments