Why Now?4:56 with Craig Dennis
Functional programming is catching on like wild fire.
In order to answer, why is functional programming so 0:00 hot right now, let's take a quick jog through history. 0:03 Let's start our journey way back in the 1930s and 0:07 take a look at some work that was going on that would lay the ground work 0:10 to help define programming as we know it today. 0:13 An investigation into the foundation of mathematics was going on. 0:17 This study led to the creation of a formal system named lambda calculus. 0:21 Here's where the functions I was talking about come into play pretty heavily. 0:25 You've probably seen them. 0:29 They're written like this, that swervy f. 0:30 This study made for some formal rules that were manually tested for decades. 0:33 And eventually it was decided to attempt to prove them using a computer. 0:38 Now we're talking about the 50s. 0:43 If you'll remember, this is a time when computers were ginormous, and 0:44 the amount of memory and processing power available was minuscule. 0:48 The technology just wasn't there. 0:53 Several languages spawned from these early days. 0:54 And these languages were not only used for mathematical proofing, but also for 0:57 early attempts at artificial intelligence. 1:01 These proven mathematical rules made it possible to express very complex ideas. 1:05 However, the rules were not always easy to implement in an efficient way. 1:10 Especially with the limited resources available. 1:15 Let's take a peek at one of these rules that we'll cover in great 1:18 detail throughout the course. 1:21 One of the main tenants of functional programming is that a function is pure. 1:23 That means that a function when called with the same arguments must 1:27 always return the same result, no matter what. 1:31 Enforcing the pure function rule arguably made things difficult to 1:34 make efficient with the computers at that time. 1:38 So, to deal with the efficiency challenge, a programming paradigm 1:41 based on how to efficiently communicate with the computer at a low level respond. 1:46 This style of programming is called Imperative. 1:51 It focuses specifically on the how to perform the operations. 1:54 Efficiency is controlled by storing State, 1:58 it deals with conditional branching and looping. 2:01 The order of execution matters. 2:04 Over time, sub processes for 2:06 grouping statements together began to appear to make things more readable. 2:08 These are the starts of what we will eventually know as methods. 2:13 And they are not pure, since state is stored and manipulated. 2:16 In the 80s and onward we saw a huge growth in imperative programming, 2:21 object oriented programming was born and very much embraced. 2:26 OOP allows us to make our code more understandable through encapsulation. 2:30 It minimizes the moving parts of the application. 2:35 As programming languages evolved, so did our hardware. 2:38 And you can now buy a USB key chain that 2:42 has more space then the most expensive machinery in the early days. 2:45 And not only do we have more memory, we have more computers. 2:50 The cloud has given us seemingly boundless access to the computer power that we need. 2:54 Our problems are more complex and our data is bigger and 2:59 more readily available and critical to our applications. 3:03 As we've shifted focus on dealing with these larger problems, 3:06 we've discovered that if we share the work across our many computers on the cloud, 3:10 or even across multiple processors cores, that we can take on just about any task. 3:15 The problem, though, now, almost ironically, is state. 3:21 Whomp whomp. 3:25 Once a program requires state to make it work correctly, the synchronization 3:27 amongst running programs is quite difficult to do efficiently, 3:32 if not impossible. 3:36 So things are starting to come full circle. 3:37 [SOUND] Functional programming is rearing its head because it can be easily ran in 3:40 our new environment as the functions are pure, and 3:45 you can split your program across many environments almost seamlessly. 3:48 All imperative languages that I can think of have started to have more functional 3:53 capabilities and Java [SOUND] has joined the game. 3:58 The simple explanation, and the one that you'll hear is that functional programming 4:00 deals with functions, and object oriented programming deals objects. 4:05 Java is now a hybrid. 4:09 So now that Java has the ability to perform many 4:12 functional programming concepts, it is really catching on. 4:15 It's slick, and I think you're gonna love it. 4:18 It's important to learn because technology is heading that way. 4:20 And more and more functional code is starting to show up on the scene. 4:23 Functional programming is starting beat the fact away to solve large problems. 4:28 Its acceptance is growing at a rapid pace in all languages. 4:33 Which brings me to the great news, the concepts that you learn here will 4:36 definitely translate to other languages that provide functional equivalence. 4:40 That reminds me, I am going to add pure here to the parking lot. 4:46 We'll explore that concept more here in a bit. 4:51 Are you ready to get started? 4:53 I know I am. 4:55
You need to sign up for Treehouse in order to download course files.Sign up