File size: 19,857 Bytes
2e5dac7
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
1
00:00:06,000 --> 00:00:06,000
Hello.

2
00:00:06,000 --> 00:00:11,000
The students that they were going to start, important and very interesting topic, I'm talking about

3
00:00:11,000 --> 00:00:16,000
functional programming and this lesson, we are going to understand what functional programming is.

4
00:00:16,000 --> 00:00:21,000
Well, understand how it is different from object oriented approach after this lesson.

5
00:00:21,000 --> 00:00:24,000
And you know what the difference between method and function is?

6
00:00:24,000 --> 00:00:30,000
And only after we will understand the basics of functional programming, we will talk about functional

7
00:00:30,000 --> 00:00:31,000
programming in Java.

8
00:00:31,000 --> 00:00:37,000
We are going to review Jaberi till function package and understand its structure will not have enough

9
00:00:37,000 --> 00:00:40,000
time to learn all types from that package today.

10
00:00:40,000 --> 00:00:44,000
But you will understand the structure of the package and what it exists for.

11
00:00:44,000 --> 00:00:49,000
The things that we are going to learn in this class and will help us to boost our learning of functional

12
00:00:49,000 --> 00:00:50,000
programming in Java.

13
00:00:51,000 --> 00:00:55,000
Let's start and let's understand first what is a functional programming.

14
00:00:56,000 --> 00:01:02,000
Functional programming is a programming paradigm where programs are constructed by applying and composing

15
00:01:02,000 --> 00:01:04,000
functions in functional programming.

16
00:01:04,000 --> 00:01:10,000
Functions are treated like the main core element of each program, and they can be assigned to variables

17
00:01:10,000 --> 00:01:14,000
and can be returned from the Massett, the same as other data type.

18
00:01:14,000 --> 00:01:16,000
To understand functional programming better.

19
00:01:16,000 --> 00:01:20,000
Let's discuss concepts that are specific to functional programming.

20
00:01:20,000 --> 00:01:23,000
The first concept is a concept of first class function.

21
00:01:24,000 --> 00:01:30,000
Usually this term is applied to programming language that can treat functions as first class citizens.

22
00:01:30,000 --> 00:01:36,000
That means language supports and functions as an argument to other functions, return and functions

23
00:01:36,000 --> 00:01:40,000
from other functions as value and assign functions to variables.

24
00:01:41,000 --> 00:01:45,000
The next concept that is related to functional programming is pure functions.

25
00:01:46,000 --> 00:01:48,000
These are functions that have following properties.

26
00:01:49,000 --> 00:01:53,000
The first one, its evaluation has no side effects.

27
00:01:53,000 --> 00:01:59,000
That means the function doesn't modify some state variable values outside the function.

28
00:02:00,000 --> 00:02:05,000
And the second property is that original value of pure function is the same for the same arguments.

29
00:02:05,000 --> 00:02:09,000
That means, given the same input, will always return the same output.

30
00:02:10,000 --> 00:02:11,000
This can be used for code.

31
00:02:11,000 --> 00:02:15,000
Optimization, for example, is a result of pure function is not used.

32
00:02:16,000 --> 00:02:18,000
It can be removed without affecting other expressions.

33
00:02:19,000 --> 00:02:25,000
That also means that pure functions are completely independent from outside state and can be used in

34
00:02:25,000 --> 00:02:27,000
parallel or asynchronously.

35
00:02:28,000 --> 00:02:34,000
It is easy to move them around in your code, making your programs more flexible and adaptable to future

36
00:02:34,000 --> 00:02:34,000
changes.

37
00:02:35,000 --> 00:02:40,000
The third concept of functional programming is a recursion and functional programming.

38
00:02:40,000 --> 00:02:42,000
There is no for and while loops.

39
00:02:42,000 --> 00:02:48,000
But what is used instead calling the same function from another function is called recursion and can

40
00:02:48,000 --> 00:02:50,000
be used for iteration.

41
00:02:50,000 --> 00:02:55,000
The fourth concept is that functional programs do not have assignment statements.

42
00:02:56,000 --> 00:03:01,000
That means the value of a variable is immutable and doesn't change state once it was defined.

43
00:03:02,000 --> 00:03:04,000
This is called referential transparency.

44
00:03:05,000 --> 00:03:08,000
The next concept in our list is lazy evaluation.

45
00:03:08,000 --> 00:03:09,000
What does that mean?

46
00:03:10,000 --> 00:03:16,000
Each programming language has strategies to evaluate code blocks and when we call a function, programming

47
00:03:16,000 --> 00:03:19,000
language should define the strategy to produce arguments.

48
00:03:19,000 --> 00:03:22,000
There are two possible main evaluation methods.

49
00:03:22,000 --> 00:03:29,000
They are strict, sometimes called EGA evaluation and non strict so-called lazy evaluation.

50
00:03:29,000 --> 00:03:32,000
What is the difference in strict evaluation?

51
00:03:32,000 --> 00:03:38,000
Arguments are processed immediately when we invoke a function and give a list of arguments.

52
00:03:38,000 --> 00:03:45,000
Each argument is processed and calculated before colon's a function, whereas in lazy evaluation expression,

53
00:03:45,000 --> 00:03:47,000
evaluation is deferred.

54
00:03:47,000 --> 00:03:53,000
Evaluation is delayed as long as possible until it is necessary to evaluate the expression to produce

55
00:03:53,000 --> 00:03:53,000
a result.

56
00:03:54,000 --> 00:03:58,000
That's only five key concepts in different literature.

57
00:03:58,000 --> 00:04:03,000
You can find the different list of concepts or just different names for the same concepts that I have

58
00:04:03,000 --> 00:04:04,000
just described.

59
00:04:04,000 --> 00:04:09,000
I would say that the list of the current concepts is enough to understand the functional programming.

60
00:04:09,000 --> 00:04:15,000
What advantages and disadvantages functional programming has been through professionals.

61
00:04:15,000 --> 00:04:21,000
We have to understand advantages and disadvantages of functional programming approach the disadvantages

62
00:04:21,000 --> 00:04:26,000
advantages it is worth to mention that because of using pure functions that don't change any state and

63
00:04:26,000 --> 00:04:33,000
are entirely dependent on the input, they are simple to understand the simplicity of functional programming

64
00:04:33,000 --> 00:04:35,000
is one of the advantages that is mentioned.

65
00:04:35,000 --> 00:04:36,000
Most often.

66
00:04:37,000 --> 00:04:40,000
The testing is easier than the bargain is.

67
00:04:40,000 --> 00:04:42,000
Easier is it is the first advantage.

68
00:04:42,000 --> 00:04:49,000
The second advantage is that because of the pure functions, implementation of concurrency is much easier.

69
00:04:49,000 --> 00:04:54,000
We shouldn't worry about state being changed from the different threats of execution in parallel.

70
00:04:55,000 --> 00:05:00,000
To be honest, these are the biggest advantages you can Google advantages of functional programming

71
00:05:00,000 --> 00:05:02,000
if you wish, but all of them can.

72
00:05:02,000 --> 00:05:08,000
Be grouped in these two advantages that are listed, somebody would also mention that programs are more

73
00:05:08,000 --> 00:05:11,000
concise and more bulletproof.

74
00:05:11,000 --> 00:05:16,000
But I would rather said that this is associated with a simplicity that we have just discussed and the

75
00:05:16,000 --> 00:05:18,000
logical benefits of PUA functions.

76
00:05:19,000 --> 00:05:24,000
Somebody would also notice that absence of classes in functional programming makes the program code

77
00:05:24,000 --> 00:05:25,000
easy to read.

78
00:05:26,000 --> 00:05:31,000
But in my humble opinion, these advantages depend on the type of software you develop.

79
00:05:31,000 --> 00:05:36,000
While functional programming works great for simple programs and for beginner programmers, I would

80
00:05:36,000 --> 00:05:41,000
like to see how people who write articles that functional programming is the best.

81
00:05:41,000 --> 00:05:46,000
I would love to see how they would implement some complex enterprise solutions that requires the mind

82
00:05:46,000 --> 00:05:49,000
driven design and object oriented approach.

83
00:05:50,000 --> 00:05:52,000
And remember, team, we are professionals.

84
00:05:52,000 --> 00:05:58,000
That's why we don't say that functional programming or object oriented approach is better than something

85
00:05:58,000 --> 00:05:58,000
else.

86
00:05:58,000 --> 00:06:04,000
We just say that each approach works the best for specific cases and we need to know when to apply a

87
00:06:04,000 --> 00:06:06,000
different approach if needed.

88
00:06:06,000 --> 00:06:11,000
Talking about these advantages of functional programming, I'd like to mention a few items here.

89
00:06:12,000 --> 00:06:17,000
The first thing that you probably might think of is that in case all values are immutable and functions

90
00:06:17,000 --> 00:06:22,000
doesn't change state that would cause significant performance issues during the processing of a big

91
00:06:22,000 --> 00:06:27,000
amount of data because a lot of values will be created that are not used.

92
00:06:27,000 --> 00:06:31,000
That would also require a specific mechanism for memory management.

93
00:06:31,000 --> 00:06:37,000
The second disadvantage is partially we talked through imagine that huge online store with customer

94
00:06:37,000 --> 00:06:43,000
management, personalized promotions, specific rules for discount management, affiliate program,

95
00:06:43,000 --> 00:06:45,000
warehouse management, etc..

96
00:06:45,000 --> 00:06:49,000
Imagine that this kind of program is written with only functions.

97
00:06:49,000 --> 00:06:51,000
Would that really make code readable?

98
00:06:52,000 --> 00:06:55,000
Would that make the code easier to maintain and extend?

99
00:06:55,000 --> 00:07:01,000
Or onboarding of new engineer to the project will require a month or two for learning all functions

100
00:07:01,000 --> 00:07:02,000
that exist in the project.

101
00:07:03,000 --> 00:07:08,000
That's why among the disadvantages of functional programming sometimes mentioned that in particular

102
00:07:08,000 --> 00:07:13,000
cases, programs that are even with the help of only functions are hard to read.

103
00:07:14,000 --> 00:07:19,000
The third important disadvantage that is worth to mention is that while writing of pure functions might

104
00:07:19,000 --> 00:07:26,000
look easy, it is hard task to combine pure functions and make them work together to achieve some specific

105
00:07:26,000 --> 00:07:29,000
goal and integrate them with the rest of application.

106
00:07:30,000 --> 00:07:33,000
Now, you know, advantages and disadvantages of functional programming.

107
00:07:34,000 --> 00:07:37,000
Functional programming is a form of declarative programming.

108
00:07:37,000 --> 00:07:43,000
After you understood what a functional programming is, it will be easy for you to understand the definition

109
00:07:43,000 --> 00:07:44,000
of declarative programming.

110
00:07:45,000 --> 00:07:51,000
Declarative programming is a programming style of building the structure and elements of computer programs

111
00:07:51,000 --> 00:07:57,000
that express the logic of a computation without describing the order in which individual statements,

112
00:07:57,000 --> 00:08:01,000
instructions or function calls of program are executed or evaluated.

113
00:08:02,000 --> 00:08:08,000
Does it make sense now on the opposite of declarative programming, we have imperative programming in

114
00:08:08,000 --> 00:08:09,000
computer science.

115
00:08:09,000 --> 00:08:15,000
Imperative programming is a programming paradigm that uses statements that change a programs state.

116
00:08:15,000 --> 00:08:21,000
To make you understand imperative programming, I would like to use object oriented development approach

117
00:08:21,000 --> 00:08:21,000
as an example.

118
00:08:22,000 --> 00:08:27,000
We have objects that have state and masses to modify the state.

119
00:08:27,000 --> 00:08:33,000
Usually Java is considered to be an imperative programming language, and in Java we usually use term

120
00:08:33,000 --> 00:08:39,000
method instead of function to describe some specific block of code that can be executed.

121
00:08:39,000 --> 00:08:43,000
What is the difference between the function and method or this is the same?

122
00:08:44,000 --> 00:08:50,000
A function is a piece of code that is called by name and method is a piece of code that is called by

123
00:08:50,000 --> 00:08:53,000
name that is associated with an object.

124
00:08:53,000 --> 00:08:58,000
And I believe you can see that these two definitions are close, but not the same.

125
00:08:59,000 --> 00:09:01,000
There are two main points to consider here.

126
00:09:01,000 --> 00:09:05,000
The first one is that MassArt is called on the object.

127
00:09:05,000 --> 00:09:10,000
That's why Massager is considered to be closer to object oriented programming approach.

128
00:09:11,000 --> 00:09:15,000
Function can exist without any object and can be called independently.

129
00:09:16,000 --> 00:09:22,000
And the second point, the method is able to operate on data that describes the state of the object.

130
00:09:23,000 --> 00:09:26,000
Function works with arguments that are pastorate.

131
00:09:26,000 --> 00:09:27,000
Does it make sense?

132
00:09:28,000 --> 00:09:28,000
Help now?

133
00:09:28,000 --> 00:09:31,000
The difference between function and MassArt is clearer.

134
00:09:31,000 --> 00:09:34,000
Let's talk now about functional programming and Java.

135
00:09:35,000 --> 00:09:40,000
Functional programming was introduced in Java eight and I'd like to add more specifics here.

136
00:09:40,000 --> 00:09:43,000
In my opinion, it will sound correctly.

137
00:09:43,000 --> 00:09:47,000
It will say that functional like syntax was introduced in Java version eight.

138
00:09:48,000 --> 00:09:50,000
Java still remains imperative language.

139
00:09:51,000 --> 00:09:57,000
Java still uses object oriented approach, and even functional programming in Java is implemented in

140
00:09:57,000 --> 00:09:58,000
object oriented manner.

141
00:09:59,000 --> 00:10:00,000
That is really impressive.

142
00:10:01,000 --> 00:10:02,000
Java combines is.

143
00:10:02,000 --> 00:10:09,000
So declarant functions and it's pure object oriented style that deprives the Java feeling during the

144
00:10:09,000 --> 00:10:17,000
code in Java introduced syntax improvements, namely now we can use lambda expressions and methods references

145
00:10:17,000 --> 00:10:18,000
during the development.

146
00:10:19,000 --> 00:10:21,000
We're going to learn what is this?

147
00:10:21,000 --> 00:10:22,000
And a separate lesson.

148
00:10:22,000 --> 00:10:27,000
And we'll practice in writing our own lambda expressions and create references.

149
00:10:27,000 --> 00:10:33,000
Java also introduced new package with the language function that's called an overview of this package

150
00:10:33,000 --> 00:10:35,000
to understand what was introduced there.

151
00:10:36,000 --> 00:10:40,000
And here you can see official documentation of your function package.

152
00:10:40,000 --> 00:10:42,000
Why do we need it in this package?

153
00:10:42,000 --> 00:10:44,000
Functional interfaces are grouped.

154
00:10:45,000 --> 00:10:47,000
What are functional interfaces?

155
00:10:47,000 --> 00:10:54,000
In short, every interface that declares only one abstract method is a functional interface in our next

156
00:10:54,000 --> 00:10:54,000
lesson.

157
00:10:54,000 --> 00:10:58,000
So we are going to learn in detail what functional interfaces are.

158
00:10:58,000 --> 00:11:01,000
But for this lesson, it is enough to imagine interfaces.

159
00:11:01,000 --> 00:11:04,000
It always has only one abstract method.

160
00:11:04,000 --> 00:11:08,000
And when I will say functional interface, you will understand what I am talking about.

161
00:11:09,000 --> 00:11:14,000
The functional interfaces provide target types for lambda expressions and methods references.

162
00:11:14,000 --> 00:11:16,000
Let me explain this in simple words.

163
00:11:17,000 --> 00:11:23,000
This package group, all types that can be used during the declaring of lambda expressions and method

164
00:11:23,000 --> 00:11:30,000
references, all types in this package follow specific naming convention and this is specified here,

165
00:11:31,000 --> 00:11:35,000
will not learn this right now because in my opinion it is better to learn during the practice.

166
00:11:36,000 --> 00:11:39,000
You can see that this package was introduced in Java version eight.

167
00:11:40,000 --> 00:11:43,000
And here you can see a list of types that we are going to learn.

168
00:11:44,000 --> 00:11:47,000
Clear explanations written right here next to type name.

169
00:11:48,000 --> 00:11:52,000
I can leave the link to this documentation in attachments to the lesson and you would read it after

170
00:11:52,000 --> 00:11:53,000
the lesson.

171
00:11:53,000 --> 00:11:59,000
Don't try to understand everything because we are going to have lessons that will teach you how to work

172
00:11:59,000 --> 00:12:00,000
with types from this package.

173
00:12:01,000 --> 00:12:04,000
But you can try to understand why we need some types here.

174
00:12:04,000 --> 00:12:07,000
For example, here you can even see a function type.

175
00:12:08,000 --> 00:12:13,000
This type is developed to represent the function that accepts one argument and produces a result.

176
00:12:14,000 --> 00:12:19,000
While learning stream API will use some of these types to declare a lambda expressions.

177
00:12:19,000 --> 00:12:25,000
And now when you can see the whole list of types that allows us to create an object of these types,

178
00:12:25,000 --> 00:12:27,000
you can understand why.

179
00:12:27,000 --> 00:12:32,000
A few minutes ago I said that functional programming Java implemented with a feeling of object oriented

180
00:12:32,000 --> 00:12:33,000
paradigm.

181
00:12:34,000 --> 00:12:39,000
You can see that function is also a separate type and I can create an object of function type.

182
00:12:40,000 --> 00:12:45,000
I believe this information is more than enough to understand what functional programming is and what

183
00:12:45,000 --> 00:12:46,000
we are going to learn.

184
00:12:46,000 --> 00:12:51,000
Let's recap what we have learned today, that iminent what functional programming is.

185
00:12:51,000 --> 00:12:54,000
We discussed main concepts of functional programming.

186
00:12:54,000 --> 00:12:58,000
After that, we discussed advantages and disadvantages of functional programming.

187
00:12:59,000 --> 00:13:03,000
Also today, we learned what is imperative and declarative programming.

188
00:13:03,000 --> 00:13:07,000
We learned what the difference between the function and the method is.

189
00:13:08,000 --> 00:13:13,000
And at the end of the lesson, I told you what functional programming in Java is and hold an overview

190
00:13:13,000 --> 00:13:15,000
of Jabbawockeez function package.

191
00:13:16,000 --> 00:13:21,000
I believe now we have enough theoretical knowledge to practice our learning of functional programming

192
00:13:21,000 --> 00:13:21,000
in Java.

193
00:13:22,000 --> 00:13:25,000
That's all what I wanted to discuss with you during this lesson.

194
00:13:25,000 --> 00:13:26,000
Thanks a lot for your attention.

195
00:13:27,000 --> 00:13:28,000
See you in the next lesson.