Functional Programming with Elixir - Full Course

Поделиться
HTML-код
  • Опубликовано: 12 сен 2024

Комментарии • 116

  • @octallium
    @octallium Год назад +117

    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 😀

    • @jtrossione3475
      @jtrossione3475 Год назад

      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?

    • @Sulayman.786
      @Sulayman.786 Год назад +1

      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
      @Sulayman.786 Год назад +1

      @@jtrossione3475 pre-recorded? It wasn't even posted by him..

    • @octallium
      @octallium Год назад +3

      @@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!

    • @zscoder
      @zscoder Год назад +3

      Been waiting for someone to do a course on elixir, any chance a follow up course using the Phoenix framework?

  • @YilmazDurmaz
    @YilmazDurmaz Год назад +27

    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

  • @Redyf
    @Redyf Месяц назад +3

    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

  • @EricShans
    @EricShans 11 месяцев назад +10

    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 !

  • @muhammadtaimoor876
    @muhammadtaimoor876 Год назад +24

    So happy to see this, I was already feeling that this language didn't have much tutorial content on RUclips

    • @coderide
      @coderide 11 месяцев назад +5

      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)

    • @sharkpyro93
      @sharkpyro93 11 месяцев назад

      @@coderide more like its not that popular, docs are good tho

  • @adityanr5654
    @adityanr5654 Год назад +14

    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 ! 😇

    • @xade8381
      @xade8381 8 месяцев назад +1

      even "Ash"

  • @bbhoxe
    @bbhoxe 11 месяцев назад +4

    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 :>

  • @tamirhalperin2404
    @tamirhalperin2404 7 месяцев назад +4

    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.

    • @octallium
      @octallium 6 месяцев назад +1

      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.

    • @hnfsrj
      @hnfsrj 3 дня назад

      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.

  • @vishnuvirat2501
    @vishnuvirat2501 Год назад +8

    Pls Make Tutorials on Phoenix 1.7 with PostgressSQL database.

  • @_beekay
    @_beekay Месяц назад

    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).

  • @llampp
    @llampp Год назад +5

    love that go-with-the-flow haha

  • @mumk
    @mumk 11 месяцев назад +2

    I am at 41 minutes and so far it has already been very useful and informative, cheers

  • @biscotty6669
    @biscotty6669 26 дней назад

    Thank you very much for an excellent video and I look forward to seeing the supplemental material in your repo.

  • @ibrahimshehuibrahim918
    @ibrahimshehuibrahim918 Год назад +8

    my favorite programming language ❤❤❤❤❤

    • @vudshpreyk
      @vudshpreyk Год назад

      Why? What other languages did you try? How do you use them?

    • @ibrahimshehuibrahim918
      @ibrahimshehuibrahim918 Год назад +2

      @@vudshpreyk its eloquent ,expressive and easy (if you remove macro)

    • @codeWithBala
      @codeWithBala Год назад

      What can you build using this language ?

    • @hnfsrj
      @hnfsrj 3 дня назад

      @@codeWithBala web servers with very high concurrency capabilities

  • @user-be4zi9kw6h
    @user-be4zi9kw6h 3 месяца назад

    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

  • @uzbx103
    @uzbx103 Год назад +12

    I wish they did Haskell and Scala too!

    • @blacktipe9922
      @blacktipe9922 Год назад

      Haskell and Idris would be dope

    • @dogsandogs
      @dogsandogs Год назад +3

      Elixir is funnier than Haskell

  • @latitudeadjustment2251
    @latitudeadjustment2251 Год назад +4

    Great video but Project Stats - Implementing Mean appears twice. From 4:12:00 - 4:30:45 and 4:30:46 - 4:49:31.

  • @user-ym1eh1wf2j
    @user-ym1eh1wf2j Год назад +1

    It was a great learning experience of functional programming. Thank you for the course.

  • @RohitSingh-du8jx
    @RohitSingh-du8jx Год назад +5

    Please Please make a course on Functional Programming with Haskell.

    • @octallium
      @octallium Год назад +1

      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.

    • @riteshthakur9250
      @riteshthakur9250 Год назад +1

      Elixir is good for concurrency this is why developers goes for elixir.

    • @RohitSingh-du8jx
      @RohitSingh-du8jx Год назад

      @@riteshthakur9250 yeah sure I like Elixir too. But Haskell is different.

  • @tyronenorth6644
    @tyronenorth6644 Год назад +1

    I was just looking for an elixir tutorial and google(not RUclips) notified me of this course dropping

  • @ZackZack-bj6kr
    @ZackZack-bj6kr 4 месяца назад +2

    switching between terminal, livebook, vscode for teaching the language is so hard to follow for me as a beginner

  • @paulromer7808
    @paulromer7808 2 месяца назад

    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)

    • @biscotty6669
      @biscotty6669 27 дней назад

      Same here, just came to post about it. Without adding `,Date` the order is kind of random. Maybe he just got lucky lol.

  • @pallabroy8800
    @pallabroy8800 Год назад +4

    Create a phoenix live view course as well

  • @debajyatidey9468
    @debajyatidey9468 Год назад +1

    Please make an Ocaml course covering modules and higher order functions

  • @dr.milindkulkarni7661
    @dr.milindkulkarni7661 Год назад +2

    Excellent presentation, very nicely explained.

  • @AllForNutrition
    @AllForNutrition 10 месяцев назад +1

    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.

    • @octallium
      @octallium 9 месяцев назад +3

      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.

  • @rock1ee
    @rock1ee Год назад +3

    Nice, I am reading the programmer passport elixir😆

  • @anythingforclicks
    @anythingforclicks Год назад +2

    This channel is so underrated …

  • @Alex138-x
    @Alex138-x Год назад

    Thank you sir, very useful lesson! Gotta learn Elixir!

  • @tsblankets
    @tsblankets 5 месяцев назад

    thank you for this course!

  • @edbrito-swdev
    @edbrito-swdev Год назад

    Ok, now in this I'm really interested!

  • @LoneWolfCodingProfessional
    @LoneWolfCodingProfessional Год назад +1

    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

    • @octallium
      @octallium Год назад

      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.

  • @jordanyoung1836
    @jordanyoung1836 Год назад +1

    I would love to get to practice this....😊😊😊

  • @saadhabashneh5587
    @saadhabashneh5587 Год назад

    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 😂

  • @harishvadaparty
    @harishvadaparty Год назад +1

    Needed this😅

  • @davidarnold1881
    @davidarnold1881 Год назад +1

    Great teacher

  • @tkmyigit6857
    @tkmyigit6857 4 месяца назад +2

    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

    • @Fantas-TIK
      @Fantas-TIK 5 дней назад

      I was looking for your comment 😅

  • @tianmingguo8271
    @tianmingguo8271 3 месяца назад

    Thank you very much!

  • @MarcosVMSoares
    @MarcosVMSoares Год назад +8

    Elixir is life. Vai Brasil !!!

  • @BreakerGandalfStyle
    @BreakerGandalfStyle 11 месяцев назад +1

    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 😅

  • @PS-dp8yg
    @PS-dp8yg Год назад

    Does Elixir have the concepts of monads, manoids, etc.?

    • @blacktipe9922
      @blacktipe9922 Год назад

      monads are used in types. @type some_type(String.t()) :: String.t() | term

  • @masoomsanadi
    @masoomsanadi Месяц назад

    nice one.
    can u make something on websockets sending message to particular user (just like whatsapp)?

  • @mobidick6064
    @mobidick6064 Год назад +1

    Show example of programming of a till point in a supermarket for example. Thanks. Very nice

  • @johnubz1989
    @johnubz1989 Год назад +1

    Elixir 🔥🔥🔥

  • @thelasthusserlian4342
    @thelasthusserlian4342 Год назад

    let's goooooo

  • @SkyFly19853
    @SkyFly19853 Год назад

    Real nice. ✅✅✅

  • @tharulinsara7136
    @tharulinsara7136 Год назад +1

    woww

  • @doxxx93
    @doxxx93 Год назад

    땡큐 thank you

  • @olekollo7875
    @olekollo7875 4 месяца назад

    let`s go Gleamlang

  • @kapnobatai27
    @kapnobatai27 Год назад

    Thanks

  • @tharulinsara7136
    @tharulinsara7136 Год назад

    great😍😍😍😍😍😍

  • @baegopado
    @baegopado Год назад +1

    pertamax

  • @nachocode2002
    @nachocode2002 Год назад

    🤝🏼

  • @Lucas-bh3et
    @Lucas-bh3et Год назад

    omg !

  • @pantrypoints
    @pantrypoints 11 месяцев назад +2

    No need to explain how recursive lists are done.
    Just explain the common Enum functions.
    You are giving people a headache.

  • @pesh4k
    @pesh4k Год назад

    Okay

  • @stevenstone307
    @stevenstone307 11 месяцев назад

    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?

  • @kratosAk4700
    @kratosAk4700 Год назад +1

    First 🎉🎉🎉🎉

  • @coder_one
    @coder_one Год назад +4

    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!

  • @user-ce4ws7jx6c
    @user-ce4ws7jx6c Год назад

    ❤😂🎉😢😮😅😊

  • @muhammadrazatharaj
    @muhammadrazatharaj Год назад

    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.

  • @tsunningwah3471
    @tsunningwah3471 5 месяцев назад

    zhina

  • @jatlineur
    @jatlineur Месяц назад

    ahhh the accent...

  • @tsunningwah3471
    @tsunningwah3471 5 месяцев назад

    e

  • @susayman3536
    @susayman3536 Год назад

    Bruh clash of clans

  • @epicurehermit4354
    @epicurehermit4354 Год назад

    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.

  • @toufiqulislam8575
    @toufiqulislam8575 Год назад +4

    Actually I want to know why we learn Elixir?

    • @viniciusmorgado9722
      @viniciusmorgado9722 Год назад

      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.

    • @toufiqulislam8575
      @toufiqulislam8575 Год назад

      @@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.

    • @susayman3536
      @susayman3536 Год назад

      For clash of clans

    • @CarrotBoy9
      @CarrotBoy9 Год назад +4

      @@toufiqulislam8575 its a multipurpose language...mainly for server,web framework with phoenix, iot with Nerves.

  • @re1konn
    @re1konn Год назад

    @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

    • @dhanushcode9892
      @dhanushcode9892 5 месяцев назад +1

      This is the fix -> @spec name_country_list([t()]) :: [[String.t()]]

    • @re1konn
      @re1konn 5 месяцев назад +1

      @@dhanushcode9892 yeah makes sense. Thanks buddy