WEBVTT

00:00:00.000 --> 00:00:07.120 align:middle line:90%


00:00:07.120 --> 00:00:08.860 align:middle line:84%
SIMON THOMPSON: The real
world is concurrent,

00:00:08.860 --> 00:00:11.560 align:middle line:84%
it's natural to think of
different activities going on

00:00:11.560 --> 00:00:14.920 align:middle line:84%
independently, interacting
only by passing information

00:00:14.920 --> 00:00:16.750 align:middle line:90%
between them.

00:00:16.750 --> 00:00:19.300 align:middle line:84%
In a similar way, this
is a great way of writing

00:00:19.300 --> 00:00:20.350 align:middle line:90%
programs.

00:00:20.350 --> 00:00:23.200 align:middle line:84%
We think of writing programs
as a collection of separate

00:00:23.200 --> 00:00:27.125 align:middle line:84%
processes which only
communicate by passing messages.

00:00:27.125 --> 00:00:29.500 align:middle line:84%
And this was the model that
the Ericsson programming team

00:00:29.500 --> 00:00:32.860 align:middle line:84%
chose to use when they wanted
to build the ideal programming

00:00:32.860 --> 00:00:36.745 align:middle line:84%
language for programming
telecom systems.

00:00:36.745 --> 00:00:39.760 align:middle line:84%
Erlang is now used to program
all sorts of web-scale

00:00:39.760 --> 00:00:43.630 align:middle line:84%
applications which need to
be fault tolerant, robust,

00:00:43.630 --> 00:00:44.990 align:middle line:90%
and reliable.

00:00:44.990 --> 00:00:47.710 align:middle line:84%
For example, it's been used
to program the WhatsApp

00:00:47.710 --> 00:00:52.600 align:middle line:84%
Messenger which processes
billions of messages a day.

00:00:52.600 --> 00:00:57.010 align:middle line:84%
Why is Erlang concurrency having
such an impact at the moment?

00:00:57.010 --> 00:01:00.130 align:middle line:84%
It provides a clean model for
programs that interact with

00:01:00.130 --> 00:01:03.370 align:middle line:84%
the world, where we have
multiple requests coming

00:01:03.370 --> 00:01:04.930 align:middle line:90%
in, for example.

00:01:04.930 --> 00:01:07.840 align:middle line:84%
These can be handled by multiple
processes inside an Erlang

00:01:07.840 --> 00:01:09.930 align:middle line:90%
virtual machine.

00:01:09.930 --> 00:01:12.430 align:middle line:84%
Erlang also maps very
well onto modern hardware.

00:01:12.430 --> 00:01:15.490 align:middle line:84%
We can see processes being
executed concurrently

00:01:15.490 --> 00:01:18.730 align:middle line:84%
on a multi-core chip,
and also the Erlang model

00:01:18.730 --> 00:01:21.280 align:middle line:84%
scales to work in
a distributed way

00:01:21.280 --> 00:01:24.130 align:middle line:90%
across a network of processes.

00:01:24.130 --> 00:01:26.620 align:middle line:84%
We expect you've got some
programming experience coming

00:01:26.620 --> 00:01:28.600 align:middle line:84%
into this course
and we'll teach you

00:01:28.600 --> 00:01:33.340 align:middle line:84%
the basics of concurrency,
scalability, and robustness.

00:01:33.340 --> 00:01:36.610 align:middle line:84%
We also expect that you can
write simple Erlang functions,

00:01:36.610 --> 00:01:38.440 align:middle line:84%
put them into
modules, and run them.

00:01:38.440 --> 00:01:41.740 align:middle line:84%
Once you've installed Erlang,
you'll be able to write some

00:01:41.740 --> 00:01:44.320 align:middle line:84%
programs that put these
ideas into practise.

00:01:44.320 --> 00:01:47.080 align:middle line:84%
As well as myself,
Joe Armstrong,

00:01:47.080 --> 00:01:49.330 align:middle line:84%
who's one of the
inventors of Erlang,

00:01:49.330 --> 00:01:52.480 align:middle line:84%
and Francesco Cesarini, who is
a founder of Erlang Solutions,

00:01:52.480 --> 00:01:55.820 align:middle line:84%
a big consultancy company in
the area, will be helping us.

00:01:55.820 --> 00:01:59.890 align:middle line:84%
They'll present sessions
and they'll also, with myself,

00:01:59.890 --> 00:02:01.420 align:middle line:84%
be taking part in
some wide-ranging

00:02:01.420 --> 00:02:04.420 align:middle line:84%
discussions about Erlang
and concurrent programming

00:02:04.420 --> 00:02:06.264 align:middle line:90%
in general.

00:02:06.264 --> 00:02:08.680 align:middle line:84%
At the end of three weeks, you
should have an appreciation

00:02:08.680 --> 00:02:10.815 align:middle line:84%
of message passing
concurrency in Erlang,

00:02:10.815 --> 00:02:13.870 align:middle line:84%
also how to build robust
and scalable systems

00:02:13.870 --> 00:02:15.500 align:middle line:90%
in Erlang and OTP.

00:02:15.500 --> 00:02:19.150 align:middle line:84%
And you'll also have experience
of writing Erlang concurrent

00:02:19.150 --> 00:02:21.360 align:middle line:90%
programs for yourself.

00:02:21.360 --> 00:02:27.414 align:middle line:90%