Transcript from the "Introduction" Lesson
[00:00:28] So just a couple words about myself, I am a software developer and developer advocate. I do not have a formal computer science background, I studied philosophy and was an English teacher before I got into coding. And so, when I started working in software development, I found that different programming paradigms, different styles or mindsets for coding were really interesting to me, perhaps because of that philosophy background.
[00:00:55] And functional programming in particular, just was really cool when I first learned about it. So what I would like to do with you all today is take you along on some of the things that I learned in my journey as a newbie functional programmer, just starting out. And really just focus on wrapping our heads around functional programming in its most basic form, so that we can then go on and continue our learning journey with other great courses on front end masters with other great books and resources that are out there and be in really good shape to continue diving into functional programming after this course.
[00:02:08] And I'm gonna say a little bit more later why I think that it's such a great fit for functional code. And so we're going to talk about some of these concepts like pure functions, we're gonna talk about side effects and why we want to avoid them, we're gonna talk about treating programs as pipelines through which data flows between functions.
[00:02:30] And we're gonna be talking about some of these words that we might have heard but don't really understand yet like higher order functions, or first class functions, things like closure and currying and whatnot. Our focus is not gonna be on the terminology so much, but again, on those core ideas, we're gonna talk about immutability and changing data in a way that's functional, that works with functional programming.
[00:02:55] And we're gonna get some hands on practice with some coding exercises, that will allow us to hopefully grapple with those concepts and ask any questions and talk to each other about how we can wrap our heads around some of these tricky ideas. What we're not gonna be doing today [LAUGH] Is covering everything there is in the world to know about functional programming, not possible.
[00:03:21] And you could definitely spend your life studying this stuff plenty of people have and will continue to. But we're gonna just again, get those basics under our belts so that we can go on and continue learning everything you could ever possibly know about functional programming, although, again, it'll take you a lifetime.
[00:03:39] Again, we're not gonna really focus on the jargon, we'll look at a few terms that are helpful to know, and helpful to understand what to google for, but we're gonna focus more on those ideas instead of the academic mathematical side of things. But at the end of the day, you'll be in really good shape to go on and dive in deeper to that mathematical notation and things like that.
[00:04:24] So, today, what we're gonna be doing is a lot of coding in our browser. This course, and all of the exercises that we're gonna be doing are written in a platform called observable which you're looking at right now. What we're seeing right here, is a observable notebook. Now, I full disclosure I work at observable as a developer advocate.
[00:05:17] And what's really great about observable is it's reactive, as you enter new code, you get the rest of your programs updated instantly. Actually, this is powered by functional concepts under the hood. We're not gonna dig into that, but if you're curious, you can read more about how observable works.
[00:05:35] You don't need an observable account to do the coursework today, you can edit all of the code right in your browser. However, if you do wanna save your progress, if you want to save the copy your own copies of the notebooks that we're going to be looking at today, you can sign up for a free account, totally free.
[00:05:55] You can log in with your GitHub or your Twitter or Google accounts, there's a big signup button at the top right of the pages that we'll see here. And you can create a copy of each of our exercise notebooks called a fork, that is your own place to play with and change and refer back to however you want.
[00:06:46] And that will bring you to a page with all the different slides and exercises that we're gonna work through today. I'm gonna be taking us through one by one, so hopefully it will be clear where we are in the course. But if at any point, anybody has a question about what notebook we're looking at or which exercise we're working in, please don't hesitate to ask.
[00:07:31] Wow, so, much stuff, but hopefully this is going to be functional programming. So, hopefully time will fly and we will get through all of this stuff in just a single day. So just really quickly to go over the plan for the day, we're gonna start out by taking a kind of step back and thinking about what functional programming even is.
[00:07:56] And it turns out that it is actually one basic idea that everything else follows from which we will then through the rest of the day kind of explore in more depth. So once we establish that main idea, we're gonna take a look at some additional tools and techniques that make working in functional programming a lot easier, things like recursion, things like higher order functions.
[00:08:24] We're gonna talk about closure what that means and why it's useful. We're gonna talk about building programs out of function, so, composing or merging functions together to create more complex programs. And we're gonna talk about immutable data and why it is sort of goes hand in hand with functional programming.
[00:09:13] They're all in the order that we're gonna walk through them in the course.