Thanks FreeCodeCamp for publishing this course! I really enjoyed making this course and I personally love working with Elixir. Elixir is really awesome programming language and I hope the community too have fun learning it 😀
Thanks for making it! It's a great course. The explanation of the unlearning of object oriented programming was so enlightening, explained what I struggled to understand about object oriented, as I assumed a = 1 would mean 1 = a. Therefore, now I understand this difference between object oriented and functional, may I ask two questions: 1. Do you agree, is it correct to assume, given what you said about recursive mutation enabling scaling, that the use of state limited the scalability of the object oriented approach? 2. Given I'm now interested in learning functional programming, is it an advantage for me to have not become accustomed to the object oriented way of thinking? I always struggled with state, mainly because my learning hadn't got that far yet.
@@Sulayman.786 Thanks for your kind words. Let me try and answer your questions - 1) Generally OOP's & state management is not the problem, problem is the programming complexity brought by OOP's. Functional programming is much closer to mathematics and you can express computational models in a natural way and of course state management via non-mutable data types do help a lot in this. 2) Thinking functionally is surely an advantage, but it's an double edged sword. Initially you would want to do everything in a functional manner and then realize that the majority of technical debt in the world is in OOP and at some point you will have to use a OOP based language. The natural inclination for functional paradigm may discourage you from taking up OOP based language, but having functional knowledge will help in understanding OOPs better than others. Also, knowing a little bit of C/C++ and memory allocation will greatly help you in understanding OOP's. I wish you all the best!
I'm currently at 51:00 but I need to say it already, the instructor is amazing. I'm able to clearly understand the concepts and topics thanks to him. Elixir is a really cool language, thanks Octallium! Love from Brazil
Thank you for this. Prepping for my next job where they use Elixir - didn't realize you had a full course as I watched the first few lessons on your channel !
Documentation is pretty good, you don't need video content to learn if you go through the docs I would say, (I'm working in elixir since 2016 so trust me)
Thank you for the great tutorial on elixir !! 💙 Please make a tutorial on Phoenix 1.7 framework as well.. There aren't much tutorials on phoenix. especially the updated one (phoenix 1.7). That will be much appreciated ! Thanks again ! 😇
I tried following the concept of immutable until about 30 minutes into this video. But it is completely self-contradicting to say that a variable is immutable and then to show with "a = 2" that a is now 2 right after showing that "a =1" binds a to 1. To any level of logic, this example shows that a is not immutable. If a can be 1 and then right after that a can be 2, this is a demonstration of a variable that is obviously mutable. Using the pin operator to prevent mutation introduces another operator that establishes an immutable operation, but this is not the same as the variable being immutable.
I totally get your point, it can be confusing, but the subtle points to note here are - 1) "=" is a match operator not to be considered as an assignment operator, it's just matching the RHS & LHS. 2) "^" pin operator can be imagined as saying that, we don't want to just match, instead take the existing value bound to "a" and then match it with the RHS. 3) For e.g with immutability, let's consider this, suppose "a" is bound to a list and we have two functions func_1 and func_2, we pass "a" to both these functions and transform it, the value of "a" still remains the same, it does not mutate, instead func_1 and func_2 returns a new list.
variable is not the one which is immutable but data. Data is immutable in elixir and in this case where a = 1 the data is 1 , which means that 1 is immutable and it won't change. When you do a = 2 , the data here is 2 and what is happening is that instead of the variable "a" pointing to the old data which was 1, it is now pointing to the new data which is 2. You can't change 1 to 2 that is why data is immutable.
I have programming experience in Python and Go. Recently, I joined a startup company that is handling projects in Elixir. I bet this would be a good foundation for me. (To update my progress after completing this tutorial).
at end it's needed start point big bang, it not start from no step if you say before the 0 step their is step and so on for infinity, no thing will happen and you get void "nothing printed", because if their infinity switch depend on each other the lamp won't turn on
I have been thinking on Haskell for a while now and thinking of ways to simplify it enough so that everyone can understand. But I still find some barriers and trying to figure it out, but till then I hope you can enjoy Elixir and have a taste of the functional paradigm.
I noticed an issue in the sort_by section. I used different dates, and the sort didn't work properly. I struggled to figure out why it worked for you and not for me for a bit. Then I realized sorting by the day value of the date. It just appears to work for you because as the months increase in your dates so do the day values. If you were to, for example, change the date on your 'Grocery' value to ~D[2022-09-22] then run the sort that item would show up in your "sorted" list after the 2022-10-18 item. For it to work you need to explicitly tell it the sorter (i.e. Date). So the enum function should look like this: expense |> Enum.sort_by(& &1.date, Date)
Scala tries to be both, I feel it adds to the complexity. My general notion is more the choices, more the freedom, more the variations, more the complexity.
are these functions have return statement? because when i visualize a function recursively the function calls function inside another inside another inside another and so on
I am not sure about your question. Are you referring to return statement in a function or a recursive functions? I guess you are jumping a little ahead in the course, I have explained both of the scenarios in the course, let me give you a short idea here as well - 1) For return statements in a function, the last statement is automatically returned, there is no need of a special "return" keyword. 2) For recursive functions, please refer to the section on "Head & Tail Recursion", it will help you clear out everything.
Only this missing would be the mathematical proof that L in Loop are equal to L in primitive recursive so that my prof in complexity theory can go to computer science heaven 😅
These videos aren't good. Sorry, I'm sure the intention is good, but these don't teach programming properly. This basically covers information in the docs, and shows you how to make extremely simple things. Where's database connection, Phoenix framework, HTTP endpoints, 3rd party services, deploying elixir applications. Where's the concurrency and parralelism, process, supervisor trees, OTP, etc?
This course substantively is wonderful. Unfortunately, I can't concentrate on it because of the pronunciation/accent of the instructor. There is nothing I can do about it. But if it doesn't bother you, then use it, because it is indeed a great source of knowledge about Elixir!
I have composed my new mathematical discoveries as well as creative urdu literature in form of short book of 28 pages.Short introduction of book is available on youtube channel.
I think you have to use the following command to get executed your file instead of mix, which didn't worked: elixir -r lib/tutorials/recursion/print_digits.ex -e Tutoria ls.Recursion.PrintDigits.upto(3). This did worked for me.
Why learn any functional programming language in the first place? Theirs no market at all, but If you already made that decision Elixir is the most modern of them all, a better syntax and developer ergonomics.
@@viniciusmorgado9722 Thank you sir for your reply. But I couldn't understand the purpose of this language? Where it is use? Is it use in Machine learning or Web Development or Mobile application developing or Game developing? kindly brief/guide me properly. Thanks in advance.
@freecodecamp, @octallium I have defined a function as so for the exercise at 3:36:00 and it is working, but with the @spec defined as I have, it is giving me a compilation error. Please help. Thanks in advance :D @spec name_country_list([t()]) :: [[String.t(), String.t()]] def name_country_list(wonders) do wonders |> Enum.map( fn wonder -> [wonder.name, wonder.country] end ) end
Thanks FreeCodeCamp for publishing this course! I really enjoyed making this course and I personally love working with Elixir. Elixir is really awesome programming language and I hope the community too have fun learning it 😀
Could you clarify please how have you managed to do this 5-hour course if it's been posted 2 hours ago and you've posted your comment 2 hours ago?
Thanks for making it! It's a great course. The explanation of the unlearning of object oriented programming was so enlightening, explained what I struggled to understand about object oriented, as I assumed a = 1 would mean 1 = a. Therefore, now I understand this difference between object oriented and functional, may I ask two questions:
1. Do you agree, is it correct to assume, given what you said about recursive mutation enabling scaling, that the use of state limited the scalability of the object oriented approach?
2. Given I'm now interested in learning functional programming, is it an advantage for me to have not become accustomed to the object oriented way of thinking? I always struggled with state, mainly because my learning hadn't got that far yet.
@@jtrossione3475 pre-recorded? It wasn't even posted by him..
@@Sulayman.786 Thanks for your kind words. Let me try and answer your questions -
1) Generally OOP's & state management is not the problem, problem is the programming complexity brought by OOP's. Functional programming is much closer to mathematics and you can express computational models in a natural way and of course state management via non-mutable data types do help a lot in this.
2) Thinking functionally is surely an advantage, but it's an double edged sword. Initially you would want to do everything in a functional manner and then realize that the majority of technical debt in the world is in OOP and at some point you will have to use a OOP based language. The natural inclination for functional paradigm may discourage you from taking up OOP based language, but having functional knowledge will help in understanding OOPs better than others. Also, knowing a little bit of C/C++ and memory allocation will greatly help you in understanding OOP's.
I wish you all the best!
Been waiting for someone to do a course on elixir, any chance a follow up course using the Phoenix framework?
timeline is broken around 1 hour mark for about 40 minutes.
(0:50:25) Data Types - String
(1:45:29) Data Types - Charlist, Process & List
I'm currently at 51:00 but I need to say it already, the instructor is amazing. I'm able to clearly understand the concepts and topics thanks to him. Elixir is a really cool language, thanks Octallium! Love from Brazil
Thank you for this. Prepping for my next job where they use Elixir - didn't realize you had a full course as I watched the first few lessons on your channel !
So happy to see this, I was already feeling that this language didn't have much tutorial content on RUclips
Documentation is pretty good, you don't need video content to learn if you go through the docs I would say, (I'm working in elixir since 2016 so trust me)
@@coderide more like its not that popular, docs are good tho
Thank you for the great tutorial on elixir !! 💙 Please make a tutorial on Phoenix 1.7 framework as well.. There aren't much tutorials on phoenix. especially the updated one (phoenix 1.7). That will be much appreciated ! Thanks again ! 😇
even "Ash"
Thank you so much for this awesome course! I feel like it was a great introduction to Elixir and it definitely left me hungry to learn more :>
I tried following the concept of immutable until about 30 minutes into this video. But it is completely self-contradicting to say that a variable is immutable and then to show with "a = 2" that a is now 2 right after showing that "a =1" binds a to 1. To any level of logic, this example shows that a is not immutable. If a can be 1 and then right after that a can be 2, this is a demonstration of a variable that is obviously mutable. Using the pin operator to prevent mutation introduces another operator that establishes an immutable operation, but this is not the same as the variable being immutable.
I totally get your point, it can be confusing, but the subtle points to note here are -
1) "=" is a match operator not to be considered as an assignment operator, it's just matching the RHS & LHS.
2) "^" pin operator can be imagined as saying that, we don't want to just match, instead take the existing value bound to "a" and then match it with the RHS.
3) For e.g with immutability, let's consider this, suppose "a" is bound to a list and we have two functions func_1 and func_2, we pass "a" to both these functions and transform it, the value of "a" still remains the same, it does not mutate, instead func_1 and func_2 returns a new list.
variable is not the one which is immutable but data. Data is immutable in elixir and in this case where a = 1 the data is 1 , which means that 1 is immutable and it won't change. When you do a = 2 , the data here is 2 and what is happening is that instead of the variable "a" pointing to the old data which was 1, it is now pointing to the new data which is 2. You can't change 1 to 2 that is why data is immutable.
Pls Make Tutorials on Phoenix 1.7 with PostgressSQL database.
I have programming experience in Python and Go. Recently, I joined a startup company that is handling projects in Elixir. I bet this would be a good foundation for me. (To update my progress after completing this tutorial).
love that go-with-the-flow haha
I am at 41 minutes and so far it has already been very useful and informative, cheers
Thank you very much for an excellent video and I look forward to seeing the supplemental material in your repo.
my favorite programming language ❤❤❤❤❤
Why? What other languages did you try? How do you use them?
@@vudshpreyk its eloquent ,expressive and easy (if you remove macro)
What can you build using this language ?
@@codeWithBala web servers with very high concurrency capabilities
at end it's needed start point big bang, it not start from no step
if you say before the 0 step their is step and so on for infinity, no thing will happen and you get void "nothing printed", because if their infinity switch depend on each other the lamp won't turn on
I wish they did Haskell and Scala too!
Haskell and Idris would be dope
Elixir is funnier than Haskell
Great video but Project Stats - Implementing Mean appears twice. From 4:12:00 - 4:30:45 and 4:30:46 - 4:49:31.
I also got this far and noticed
Yeah. I got confused too.
It was a great learning experience of functional programming. Thank you for the course.
Please Please make a course on Functional Programming with Haskell.
I have been thinking on Haskell for a while now and thinking of ways to simplify it enough so that everyone can understand. But I still find some barriers and trying to figure it out, but till then I hope you can enjoy Elixir and have a taste of the functional paradigm.
Elixir is good for concurrency this is why developers goes for elixir.
@@riteshthakur9250 yeah sure I like Elixir too. But Haskell is different.
I was just looking for an elixir tutorial and google(not RUclips) notified me of this course dropping
switching between terminal, livebook, vscode for teaching the language is so hard to follow for me as a beginner
I noticed an issue in the sort_by section. I used different dates, and the sort didn't work properly. I struggled to figure out why it worked for you and not for me for a bit. Then I realized sorting by the day value of the date. It just appears to work for you because as the months increase in your dates so do the day values. If you were to, for example, change the date on your 'Grocery' value to ~D[2022-09-22] then run the sort that item would show up in your "sorted" list after the 2022-10-18 item. For it to work you need to explicitly tell it the sorter (i.e. Date). So the enum function should look like this: expense |> Enum.sort_by(& &1.date, Date)
Same here, just came to post about it. Without adding `,Date` the order is kind of random. Maybe he just got lucky lol.
Create a phoenix live view course as well
Please make an Ocaml course covering modules and higher order functions
Excellent presentation, very nicely explained.
Thank you!
Language construction should be optional depending on the needs of a project. If Elixir were both object oriented and functional, it would be a beast.
Scala tries to be both, I feel it adds to the complexity. My general notion is more the choices, more the freedom, more the variations, more the complexity.
Nice, I am reading the programmer passport elixir😆
This channel is so underrated …
Thank you sir, very useful lesson! Gotta learn Elixir!
thank you for this course!
Ok, now in this I'm really interested!
are these functions have return statement?
because when i visualize a function
recursively
the function calls function inside another inside another inside another and so on
I am not sure about your question. Are you referring to return statement in a function or a recursive functions? I guess you are jumping a little ahead in the course, I have explained both of the scenarios in the course, let me give you a short idea here as well -
1) For return statements in a function, the last statement is automatically returned, there is no need of a special "return" keyword.
2) For recursive functions, please refer to the section on "Head & Tail Recursion", it will help you clear out everything.
I would love to get to practice this....😊😊😊
Damn were you reading my mind i was just thinking about learning elixir today in the morning and now i open yt and see this 😂
Needed this😅
Great teacher
So, no one watched the video until the end to notice that the segment from 4:12:00 to 4:30:00 is repeated again from 4:30:00 to 4:49:00. hahaha
I was looking for your comment 😅
Thank you very much!
Elixir is life. Vai Brasil !!!
Only this missing would be the mathematical proof that L in Loop are equal to L in primitive recursive so that my prof in complexity theory can go to computer science heaven 😅
☺
Does Elixir have the concepts of monads, manoids, etc.?
monads are used in types. @type some_type(String.t()) :: String.t() | term
nice one.
can u make something on websockets sending message to particular user (just like whatsapp)?
Show example of programming of a till point in a supermarket for example. Thanks. Very nice
Elixir 🔥🔥🔥
let's goooooo
Real nice. ✅✅✅
woww
땡큐 thank you
let`s go Gleamlang
Thanks
great😍😍😍😍😍😍
pertamax
pertalite
premium
🤝🏼
omg !
No need to explain how recursive lists are done.
Just explain the common Enum functions.
You are giving people a headache.
Okay
These videos aren't good. Sorry, I'm sure the intention is good, but these don't teach programming properly. This basically covers information in the docs, and shows you how to make extremely simple things. Where's database connection, Phoenix framework, HTTP endpoints, 3rd party services, deploying elixir applications. Where's the concurrency and parralelism, process, supervisor trees, OTP, etc?
First 🎉🎉🎉🎉
This course substantively is wonderful. Unfortunately, I can't concentrate on it because of the pronunciation/accent of the instructor. There is nothing I can do about it. But if it doesn't bother you, then use it, because it is indeed a great source of knowledge about Elixir!
❤😂🎉😢😮😅😊
I have composed my new mathematical discoveries as well as creative urdu literature in form of short book of 28 pages.Short introduction of book is available on youtube channel.
zhina
ahhh the accent...
e
Bruh clash of clans
I think you have to use the following command to get executed your file instead of mix, which didn't worked:
elixir -r lib/tutorials/recursion/print_digits.ex -e Tutoria
ls.Recursion.PrintDigits.upto(3).
This did worked for me.
Actually I want to know why we learn Elixir?
Why learn any functional programming language in the first place? Theirs no market at all, but If you already made that decision Elixir is the most modern of them all, a better syntax and developer ergonomics.
@@viniciusmorgado9722 Thank you sir for your reply. But I couldn't understand the purpose of this language? Where it is use? Is it use in Machine learning or Web Development or Mobile application developing or Game developing? kindly brief/guide me properly.
Thanks in advance.
For clash of clans
@@toufiqulislam8575 its a multipurpose language...mainly for server,web framework with phoenix, iot with Nerves.
@freecodecamp, @octallium
I have defined a function as so for the exercise at 3:36:00 and it is working, but with the @spec defined as I have, it is giving me a compilation error. Please help. Thanks in advance :D
@spec name_country_list([t()]) :: [[String.t(), String.t()]]
def name_country_list(wonders) do
wonders
|> Enum.map( fn wonder -> [wonder.name, wonder.country] end )
end
This is the fix -> @spec name_country_list([t()]) :: [[String.t()]]
@@dhanushcode9892 yeah makes sense. Thanks buddy