Skip to content

Commit b36259e

Browse files
committed
updated motivation
1 parent 4ef4f9c commit b36259e

File tree

2 files changed

+8
-44
lines changed

2 files changed

+8
-44
lines changed

motivation.md

+3-37
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,5 @@
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.
42

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.
154

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.

slides.pdfpc

+5-7
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,11 @@ slides.pdf
77
[notes]
88
### 1
99
this is not going to be a talk about Scala
10-
engineering disciplines: 300 Watts power, withstand earthquake
11-
business apps pumping data: guarantees uncommon
12-
what the system will not do under any circumstances
13-
scalaz, shapeless, no IO, sorted list
14-
all this intimidating terminology that might be off-putting
15-
bad news: no easy way to enlightenment
16-
good news: first steps are easy
10+
not practical
11+
still relevant 10 years from now
12+
diverse community, some engineers, some mathematicians
13+
type lambda, soundness, Church encoding
14+
no time to explain, just give some background, pique interest, give pointers for your own exploration
1715

1816
### 2
1917
This is going to be a basic introduction

0 commit comments

Comments
 (0)