Erlang Programming Language - Computerphile

Introducing Erlang - with Francesco Cesarini Technical Director of Erlang Solutions.
/ computerphile
/ computer_phile
This video was filmed and edited by Sean Riley.
Computer Science at the University of Nottingham: bit.ly/nottscomputer
Computerphile is a sister project to Brady Haran's Numberphile. More at www.bradyharan.com

Пікірлер: 440

  • @linz4213
    @linz42134 жыл бұрын

    The animation for pattern matching and recursion is major milestone in computer science education

  • @patternwhisperer4048

    @patternwhisperer4048

    4 жыл бұрын

    ... I mean ive seen animations similar to it in my undergrad several years ago already

  • @Oladipupo_

    @Oladipupo_

    4 жыл бұрын

    @@patternwhisperer4048 My man I never did, I had to visual myself, I was lucky that I had it easy

  • @custardtart1312

    @custardtart1312

    2 жыл бұрын

    @@patternwhisperer4048 I saw it as an embryo in 1971

  • @goodtechdoor

    @goodtechdoor

    7 ай бұрын

    Epic !

  • @leedeffebach3504
    @leedeffebach35044 жыл бұрын

    Haven't done erlang but just recently learned elixir. Elixir is erlangs child basically. It's awesome, if you haven't tried it yet try it now.

  • @elliott8175

    @elliott8175

    3 жыл бұрын

    So when Elixir crashes then Erlang gets a notification? =P

  • @Nehpets94

    @Nehpets94

    3 жыл бұрын

    It's a BEAM language. There's a lot of them, but I think Elixir is probably going to be the one to push this paradigm forward.

  • @dandan7884

    @dandan7884

    3 жыл бұрын

    @@Nehpets94 like ruby

  • @rickhackro

    @rickhackro

    2 жыл бұрын

    I was already tempted...

  • @stnhld2841

    @stnhld2841

    2 жыл бұрын

    RabbitMQ is written in Erlang. Elixir is very cool.

  • @shotovar
    @shotovar4 жыл бұрын

    I met this man at ElixirConfLA 2019, I've gotta say he is a genius in terms of Erlang.

  • @cat47

    @cat47

    5 ай бұрын

    did i ask?

  • @kalebbruwer
    @kalebbruwer4 жыл бұрын

    So it's encouraged to skip error checking? _I was born for this_

  • @lpil

    @lpil

    4 жыл бұрын

    You are encouraged to check for _expected_ errors. Unexpected errors are to be handled non-locally, though design of your supervision tree. The reality of Erlang programming is that you spend more time than average thinking about error and failure, but it obscures your business logic less, and your code is more reliable.

  • @IIARROWS

    @IIARROWS

    4 жыл бұрын

    If you are a bad programmer, you can do that on every programming language. Don't be an asshole.

  • @whossname4399

    @whossname4399

    4 жыл бұрын

    @@lpil I feel this is something that needs to be made more explicit to beginers. It took me a while to figure out what 'let it crash' actually meant.

  • @whossname4399

    @whossname4399

    4 жыл бұрын

    @@IIARROWS if you think he was being an asshole you probably don't understand what he is saying. The language design encourages you to think about the system behaviour for your error conditions while also reducing the amount of code you write for handling those errors.

  • @mikew2229

    @mikew2229

    4 жыл бұрын

    Erlang OTP has the concept of supervisor that monitor and restart its process if one is crashed. Over catching errors usually makes life very hard to locate the real line of bug code is.

  • @StickySli
    @StickySli3 жыл бұрын

    I'm starting to love this language more each day. On the other hand, my teacher handed us an assignment to make an industrial elevator lift (without doors or human safety checks) simulation through Erlang. It is quite easy to wrap your head around this problem: The elevator requires a motor, the motor can only go at one speed in two directions and can only sense when it reaches the top or bottom. The elevator also requires a single sensor for each floor. Basically, each sensor is its own process, and talks to a supervisor which then talks to the motor. The elevator also requires a button cabinet. Imagine that each button when pressed, sens a signal, to the elevator master supervisor. Then, the master supervisor can light on or off the button. There is also a display because why not. The motor is easy to implement with a finite-state machine, and the master sensor will have to distribute its slave sensors. Can you see now? With what you learned from this video it is quite simple to get a grasp on how the process tree looks like. Erlang is so fun!

  • @brainless3651

    @brainless3651

    3 жыл бұрын

    Nice

  • @ruhtam8971

    @ruhtam8971

    2 жыл бұрын

    Please share the solution in github and link it here if you can spare some time. I want to learn this too

  • @StickySli

    @StickySli

    2 жыл бұрын

    @@ruhtam8971 Since this lab work was handed to my teacher, it is now the university intellectual property and I cannot post the solution. I will have to ask my teacher if I'm allowed to share the code. He will most likely say no to my question because it was the last project for this course and other students might plagiarize my own work. I hope you understand my situation.

  • @ruhtam8971

    @ruhtam8971

    2 жыл бұрын

    @@StickySli okay then I'll attempt a solution on my own taking inspiration from your explanations. Thank you

  • @StickySli

    @StickySli

    2 жыл бұрын

    @@ruhtam8971 You should start with "P1" if you are a newbie to Erlang. The difficulty increases quite a lot afterwards, specially with the other lab works. I hope you have a great day sir!

  • @armin_hammer_studios
    @armin_hammer_studios4 жыл бұрын

    Absolutely love Erlang and all of the material Joe Armstrong has online. Anybody interested in computer science in general should watch Joe's online talks. RIP Joe, you are a hero to me and countless others.

  • @mellertid
    @mellertid2 жыл бұрын

    Ericsson really made impressive progress all over Telecom, from mechanical switch modules through Erlang to Bluetooth.

  • @KlojoVidjo
    @KlojoVidjo4 жыл бұрын

    Douglas Adams: Click, click, hum. Click, hum, click, hum, click, hum. Click, click, click, click, click, hum. Hmmm. A low level supervising program woke up a slightly higher level supervising program deep in the ship's semi-somnolent cyberbrain and reported to it that whenever it went click all it got was a hum. The higher level supervising program asked it what it was supposed to get, and the low level supervising program said that it couldn't remember exactly, but thought it was probably more of a sort of distant satisfied sigh, wasn't it? It didn't know what this hum was. Click, hum, click, hum. That was all it was getting. The higher level supervising program considered this and didn't like it. It asked the low level supervising program what exactly it was supervising and the low level supervising program said it couldn't remember that either, just that it was something that was meant to go click, sigh every ten years or so, which usually happened without fail. It had tried to consult its error look-up table but couldn't find it, which was why it had alerted the higher level supervising program to the problem. The higher level supervising program went to consult one of its own look-up tables to find out what the low level supervising program was meant to be supervising. It couldn't find the look-up table. Odd.

  • @Anaximander29A
    @Anaximander29A4 жыл бұрын

    We had to use this language in university to write algorithms and datastructures. At first I was like wtf, but then after a while I really started to dig it. The ability to write implicit if-cases just with function headers makes it very elegant imo.

  • @NaumRusomarov

    @NaumRusomarov

    4 жыл бұрын

    Fun fact. You can in theory just use case- and if-statements for flow control without even touching pattern matching in the function headers, but the code very quickly becomes unwieldy because of the static variables; (recursive) loops done like this are quite hilarious. It's a fun exercise to see how far you can push the language by limiting some of its features.

  • @AndersJackson

    @AndersJackson

    4 жыл бұрын

    First Erlang was written in Prolog, so that was the part that came from Prolog.

  • @contingenceBoston
    @contingenceBoston4 жыл бұрын

    This is surprisingly easy to wrap one's head around. Rad.

  • @hauleth

    @hauleth

    4 жыл бұрын

    At its core Erlang is very simple language. The problem is that this language requires a little bit different approach to thinking, and this is the "hard part".

  • @caw25sha
    @caw25sha4 жыл бұрын

    I worked on a system written in C# with 120 threads (don't ask!) and Erlang would have been brilliant for that. Great video.

  • @unvergebeneid
    @unvergebeneid4 жыл бұрын

    This was brilliant! I had always wondered what made Erlang so special!

  • @jsonkody

    @jsonkody

    3 ай бұрын

    Yes, it's indeed very special and it's a shame that it does not have the attention it deserves. Now with Elixir it slowly changing.

  • @ankk98
    @ankk983 жыл бұрын

    Declarative programing Let the code fail (No guard clauss) Runs on virtual machine Seperate process for every task Fault tolerance Scalability Can run in a cluster of machines and pass messages

  • @lpil
    @lpil4 жыл бұрын

  • @LucienHughes

    @LucienHughes

    4 жыл бұрын

    He slightly reminds me of Jose Mourinho

  • @keedt

    @keedt

    4 жыл бұрын

    @@LucienHughes jose mourinho minus the ego

  • @KentHambrock
    @KentHambrock3 жыл бұрын

    I've been learning Erlang over the last two weeks and I love it. It's so weird, but so damned fast to code in.

  • @caw25sha
    @caw25sha4 жыл бұрын

    Can we please have another video with source code for a simple working program, and see it in action? I'm really impressed and intrigued by Erlang and want to know more.

  • @unknownunknown9160

    @unknownunknown9160

    4 жыл бұрын

    caw25sha I’d suggest looking into Elixir

  • @johnjoyce

    @johnjoyce

    4 жыл бұрын

    More Erlang and some Elixir

  • @PaulaJBean

    @PaulaJBean

    4 жыл бұрын

    A video about Elixir, then?

  • @ryan.winchester

    @ryan.winchester

    4 жыл бұрын

    Look up on KZread: Erlang The Movie

  • @mrhivefive

    @mrhivefive

    4 жыл бұрын

    Search for this presentation on KZread. GOTO 2019 • The Soul of Erlang and Elixir • Saša Jurić

  • @billfrug
    @billfrug2 жыл бұрын

    Beautiful language in my opinion.

  • @lifelover69
    @lifelover694 жыл бұрын

    Awesome intro to erlang, I'm very motivated to learn more, thank you!

  • @amirhasanbasic2193
    @amirhasanbasic21934 жыл бұрын

    You are hitting bang on with the last few videos, really interesting.

  • @hereallyfast
    @hereallyfast2 жыл бұрын

    I have a question. What are we doing? Why have I learned object oriented programming? This is awesome. This is next level

  • @jabuci
    @jabuci2 жыл бұрын

    Every word of his was golden. I enjoyed listening to him. Thanks!

  • @borntolose_livetowin
    @borntolose_livetowin3 жыл бұрын

    Erlang got my curiosity because it reminds of a city called Erlangen, but after watching this video - Erlang has my attention.

  • @callumstewart5891
    @callumstewart58914 жыл бұрын

    It's all coming back to me now! Flashbacks ftw!

  • @danceswithdirt7197

    @danceswithdirt7197

    4 жыл бұрын

    Yeah! I wrote a chat server/client in Erlang during my university days. I love Erlang.

  • @callumstewart5891

    @callumstewart5891

    4 жыл бұрын

    @@danceswithdirt7197 I did that too! Well, maybe not for a chatbot, but I did something with it. I prefer Haskell, personally though.

  • @AndersJackson

    @AndersJackson

    4 жыл бұрын

    Yes, we did a computation server, that was able to move around for updates etc. We did that in Uppsala university around 1995 (some thing, don't remember). It had computation server management in Erlang and solving the problem with Prolog. :-)

  • @rembautimes8808
    @rembautimes88082 ай бұрын

    This was an amazing talk. Thanks - mind opener on different programming paradigm

  • @qzbnyv
    @qzbnyv4 жыл бұрын

    I'd like to see a comparison of the concurrency in Erlang (in more details) with Haskell's model, where Haskell's threads spawned with forkIO are also described similarly as "lightweight" (...but the communication between them in Haskell is done through the MVar data type and/or STM's TVar type). STM (Software Transactional Memory) in Haskell would probably be a great video on its own. Maybe another one for Graham Hutton? :)

  • @lpil

    @lpil

    4 жыл бұрын

    They are similar in many ways but one key way in which they are different is the garbage collection. Haskell's GC time cost is linear with the amount of memory used by all threads and can have large pauses for global GC. Erlang's GC is performed on a per-thread basis and as a result there is never any global pause. Erlang programs tend to have a much better 99th percentile latency than those written in Haskell, Java, etc.

  • @lpil

    @lpil

    4 жыл бұрын

    Another key point is that pervasive use of timeouts and assertions means that deadlocks are much rarer and are something that can be recovered from, while in Haskell it would cause the whole program to crash. Erlang has much better runtime error handling properties, though less ability to prevent runtime errors than Haskell due to lack of a static type system.

  • @davidmccrea1232
    @davidmccrea12323 жыл бұрын

    What an elegant design for error handling

  • @NikolajLepka
    @NikolajLepka4 жыл бұрын

    erlang! one of my favourites :D good to see it get some attention

  • @benouattara6249
    @benouattara62494 жыл бұрын

    please ask this man to create a full course

  • @mikopiko
    @mikopiko4 жыл бұрын

    The BEAM vm is really powerful, thank you Erlang!

  • @AtticusBleep
    @AtticusBleep4 жыл бұрын

    So what does his shirt say at the bottom?!

  • @keedt

    @keedt

    4 жыл бұрын

    let it crash

  • @arvind31459

    @arvind31459

    4 жыл бұрын

    Camera man is an intern

  • 4 жыл бұрын

    Wash at 40C

  • @QtmMtrlzr
    @QtmMtrlzr4 жыл бұрын

    Erlang sounds pretty interesting, thanks for this explanation

  • @zecekobold2140
    @zecekobold21404 жыл бұрын

    This is the best lecture on apoptosis on youtube.

  • @JockeTF
    @JockeTF4 жыл бұрын

    Excellent explanation! Thank you!

  • @typograf62
    @typograf624 жыл бұрын

    An impressive explanation.

  • @jaszynek7640
    @jaszynek76404 жыл бұрын

    I`m C++ and Erlang dev, Erlang supports actor model which is imo safest and easiest to maintain and scale up solution in design of concurrent systems, unfortunately it is not fast enough so there is a need to implement actor model in C++, and what was elegant and clean in Erlang becomes nightmare in C++.

  • @ristekostadinov2820
    @ristekostadinov28204 жыл бұрын

    Joe Armstrong was legend, rest in peace

  • @mikew2229

    @mikew2229

    4 жыл бұрын

    Riste Kostadinov the death cause of Joe is so strange, someone could never got infected such disease and passed away that quick

  • @jhbonarius
    @jhbonarius4 жыл бұрын

    I've been programming in hardware description languages like VHDL and Verilog for many many years now, and it sounds like Erlang is very similar in architecture.

  • @kreuner11

    @kreuner11

    2 жыл бұрын

    Maybe because it's functional, so you explain what the result should be rather than the steps to achieve it?

  • @jms019
    @jms0194 жыл бұрын

    Maybe reference the original Erlang movie which demonstrates process failure and live module replacement quite well

  • @jsonkody
    @jsonkody3 ай бұрын

    By the way, it's funny that Elixir/Erlang are considered functional languages (which they indeed are), but by implementing the actor model with message passing, they actually adhere more closely to the original OOP concept as Alan Kay intended it than many 'modern' OOP languages like Java.

  • @GuitarWithBrett
    @GuitarWithBrett11 ай бұрын

    Good stuff , use elixir at my work and this is a great breakdown of Erlang

  • @hcblue
    @hcblue4 жыл бұрын

    Message passing, share-nothing design, and supervisors sound kinda cool, but what am I missing here? It would be lovely to get into the tradeoffs of Erlang's design (which, as with everything else in engineering, has a cost).

  • @PaulaJBean

    @PaulaJBean

    4 жыл бұрын

    It might be more difficult to find Erlang developers than JavaScript developers. They might cost more. Some people find Erlang's syntax ugly and/or unreadable. Luckily, there is Elixir.

  • @hauleth

    @hauleth

    4 жыл бұрын

    It needs some accustoming to be able to properly work with OTP (the supervisor thing in the video). Also as @Paula said, there are not that much developers, so it can be problem for some companies as well.

  • @vanaesthetics3336
    @vanaesthetics33362 жыл бұрын

    Cool video! Thanks for sharing

  • @StanSensei
    @StanSensei3 жыл бұрын

    This guy makes programming sound cool.

  • @ataksnajpera
    @ataksnajpera4 жыл бұрын

    This process isolation looks very similar to what chrome and firefox browsers are doing from some time. They also spawn multiple instances and then communicate via messages. Also when one card crashes it will not hang whole browser. Supervisor process will simply terminate crashed process.

  • @gang_albanii

    @gang_albanii

    9 ай бұрын

    yeah! but browsers do it for security primairly

  • @MrManafon
    @MrManafon4 жыл бұрын

    A language created for todays web.

  • @rasmichael
    @rasmichael4 жыл бұрын

    I'm getting a flash-back! Long live the AXE!

  • @noahwilliams8996
    @noahwilliams89964 жыл бұрын

    This is really amazing. I want to write code in Erlang now.

  • @JSDudeca

    @JSDudeca

    4 жыл бұрын

    It's recommended for most to write using Elixir which is a child of Erlang. Elixir, which uses the rock solid Erlang VM, has much nicer syntax, great libraries and an awesome community.

  • @peterr6205

    @peterr6205

    4 жыл бұрын

    @@JSDudeca Elixir is not a "child Erlang". Using that phrase suggests that it's somehow less powerful or is a watered down version. To most people who are familiar with more modern languages, the Elixir syntax and tooling will seem much more familiar, but rest assured it is in no way a "child Erlang". It has everything you would get with Erlang, plus some extras.

  • @JSDudeca

    @JSDudeca

    4 жыл бұрын

    @@peterr6205 - Your point is well taken. In re-reading my comment it was definitely a typo. I had meant that "Elixir is a child of Erlang". Elixir is an awesome language and I look forward to using it in future projects. I cannot see myself ever writing Erlang as Elixir has it all.

  • @Gwaerondor

    @Gwaerondor

    4 жыл бұрын

    @@JSDudeca In what way is Elixir "recommended" over Erlang? It's the same thing with different syntax. Elixir doesn't do anything that Erlang can't. It's based on preference and neither one is "recommended" over the other. I'll pick Erlang any day of the week to avoid half of my lines consisting of the keyword bloat that is "do" and "end" but completely understand why people who have done Ruby might want to pick Elixir instead.

  • @JSDudeca

    @JSDudeca

    4 жыл бұрын

    @@Gwaerondor If working on small personal projects, it's really up to the person but in big teams However with Elixir it is a much easier language to get new team members, train up new talent, find support on issues etc. This is why I recommend Elixir to N00b's.

  • @catcatcatcatcatcatcatcatcatca
    @catcatcatcatcatcatcatcatcatca Жыл бұрын

    I was blown away by the brilliance of Erlang when I heard Joe Armstrongs presentations about it. Before that, Casey Muratoris criticism of OOP made me overreact a bit: I became very sceptical of systems that advocated abstractions and focused on “maintainability”, because, very often, “maintainability” just meant arbitrary idea of simplicity and willing blindness towards the actual complexity of the system. But Erlang ACTUALLY addresses those issues by doing something radically different. And the approach of it shows perfectly what is wrong with OOP. If you are writing a program that will be one process and one binary, you are fundamentally unable to handle errors and achieve structures like erlang is. So why are we hellbend on writing “provably safe” and “modular” code based on “frameworks” - when none of those are true for anyone else than the single developer? The overall binary is not provably safe, nor is the source code as a whole is. Erlang as a system can be. The application is not modular, as long as it runs as a single process. Erlang is naturally capable of distributed computation. And the “framework” is just code in your binary you most likely didn’t bother reading (and which might be amount too big to physically read by single human, in a month). That’s not a true framework, because that’s not a true structure. Erlang, being distributed on multiple physical machines, multiple VMs and multiple processes is a true framework. In comparison, the “frameworks” modern developers use is just copy-pasting code we might or might not have read, composed of copy-pasted code we most definitely did not read. Now that consumer processors no longer see as rapid growth in processing power - as while definitely very possible, such devices would be impractical to cool down in consumer devices, I really hope there is some big shift in culture of software and OS development.

  • @davidgillies620
    @davidgillies6204 жыл бұрын

    Objective C is primarily a message-passing paradigm, and BeOS had it baked into the OS level. I think it started with Smalltalk. The idea of sharing memory by communicating rather than communicating by sharing memory is fundamental to Go (channels), as is very rapidly spawning lightweight processes (goroutines).

  • @ryan.winchester

    @ryan.winchester

    4 жыл бұрын

    Go has shared memory and channels are more like passing a baton than asynchronous communication between concurrent processes, no?

  • @AndersJackson

    @AndersJackson

    3 жыл бұрын

    Objects started with Simula, Object orientation started with Smalltalk. Compared to Smalltalk, C++, Java, C# etc are not object oriented languages. Smalltalk and Object orientation are about sending messages between objects, not calling methods. (That it is implemented as methods are another thing).

  • @Shadow81989
    @Shadow819894 жыл бұрын

    Some of it reminds me of objects in other languages - they don't share memory, communicate by sending messages, supervisor objects decide what to do in a crash scenario, ... Would definitely be interesting to learn more about it!

  • @MikkoAhlroth

    @MikkoAhlroth

    4 жыл бұрын

    In fact some people have said that Erlang is closer to the true idea of OOP than the usual OOP languages (C++, Java…). ;)

  • @hauleth

    @hauleth

    4 жыл бұрын

    Alan Kay (creator of the term Object Oriented Programming) once said that there are only 2 languages that implemented OOP as what he meant - Smalltalk and Erlang.

  • @elixiradolfont
    @elixiradolfont6 ай бұрын

    4:03 Great animation showing how do we execute a function that uses pattern matching

  • @welltypedwitch
    @welltypedwitch4 жыл бұрын

    This is very interesting compared to Elm. Unlike Erlang, in Elm you have to handle every possible error case explicitly. I think I still prefer Elm, but this is still really interesting!

  • @florianthelliez7739

    @florianthelliez7739

    4 жыл бұрын

    Elm is more akin to Haskell, in the way that it uses a strong type system, whereas Erlang has dynamic typing. Some people are working on a strongly type language that runs on the Erlang VM (Gleam) but it is still a work in progress so far.

  • @AndersJackson

    @AndersJackson

    4 жыл бұрын

    @@florianthelliez7739 there was also work that did type system checks on the Erlang program when compiling. I never heard how it worked out though.

  • @florianthelliez7739

    @florianthelliez7739

    4 жыл бұрын

    @@AndersJackson that might have been referring to dialyser, you should get a look at it. It is a bit bothersome to set up and get working properly apparently though.

  • @BenMursa
    @BenMursa4 жыл бұрын

    That factorial program is so simple but so cool too

  • @meowsqueak

    @meowsqueak

    4 жыл бұрын

    Indeed. Factorial programs are the “hello, world!” programs for functional programming languages.

  • @Ratebron
    @Ratebron4 жыл бұрын

    Erlangers rise up!

  • @ogopogoman4682

    @ogopogoman4682

    4 жыл бұрын

    *One guy somewhere in the back:* YEAH!!

  • @AndersJackson

    @AndersJackson

    4 жыл бұрын

    YEAH!!!

  • @FeelsDonkMan
    @FeelsDonkMan4 жыл бұрын

    Great explanation thank you.

  • @vinaysatish368
    @vinaysatish3683 жыл бұрын

    Awesome! Thank you

  • @erlanmejia2140
    @erlanmejia21402 жыл бұрын

    Thank you very much.

  • @MaximumJoy
    @MaximumJoy4 жыл бұрын

    This guy has a way with words

  • @manassricharanvarri
    @manassricharanvarri4 жыл бұрын

    You guys are best

  • @qm3ster
    @qm3ster2 жыл бұрын

    How is fallibility of network messaging handled though? Does it mean that sending a message to another process in the same supervisor tree is just as scary-looking as another node?

  • @K2gjbcfcvjbv
    @K2gjbcfcvjbv Жыл бұрын

    A Like and subscription because of the telephone in the background on the desk.

  • @dantenotavailable
    @dantenotavailable4 жыл бұрын

    ♥️ Erlang. RIP Joe Armstrong.

  • @timibolu
    @timibolu2 жыл бұрын

    I love Francesco Cesarini

  • @swerasnym
    @swerasnym4 жыл бұрын

    Yey my current favorite language, did not expect to find it here!

  • @seancharles1595
    @seancharles15954 жыл бұрын

    I'm lucky enough to use Erlang and Elixir. Awesome!

  • @jabuci
    @jabuci2 жыл бұрын

    Should I start learning Erlang or Elixir?

  • @MaxDiscere
    @MaxDiscere4 жыл бұрын

    It fascinates me everytime that old programming languages often seem more thoughtful constructed than lets say modern ones like javascript, even if they often had narrow usecases.

  • @dexter9313

    @dexter9313

    4 жыл бұрын

    Well Javascript is probably one of the worst languages ever created so yeah, not very representative of modern languages. There are way better ones out there. ;)

  • @addmoreice

    @addmoreice

    4 жыл бұрын

    @@dexter9313 *cough cough* MUMPS *cough cough* the worst programming language I was ever required to work with. . Javascript is brilliant in comparison.

  • @dexter9313

    @dexter9313

    4 жыл бұрын

    @@addmoreice Well that's why I said "one of the worst", because I'm sure there are some hidden gems here and there. ;) Should have said "worst popular language" maybe.

  • @shayneoneill1506

    @shayneoneill1506

    4 жыл бұрын

    @@addmoreice Bringing up Mumps is kind of cheating. it was always considered a dog ugly language with incomprehensible semantics.

  • @Blitterbug

    @Blitterbug

    4 жыл бұрын

    Yeah, I wouldn't call Javascript a language as much as it is scripted, bastardised C++.

  • @Furiends
    @Furiends4 жыл бұрын

    Its an important distinction that any concurrency must use message passing. This is excellent for information processing and servers but debilitating for something like operating system drivers.

  • @davidwuhrer6704

    @davidwuhrer6704

    4 жыл бұрын

    So drivers must not be concurrent.

  • @Furiends

    @Furiends

    4 жыл бұрын

    @@davidwuhrer6704 They have to be by definition unless you want your operating system to be like DOS.

  • @davidwuhrer6704

    @davidwuhrer6704

    4 жыл бұрын

    @@Furiends Then they must use some form of message passing.

  • @AndersJackson

    @AndersJackson

    3 жыл бұрын

    @@Furiends you can have the drivers to be non-concurrent, and let the OS handle the concurrency. And yes, most drivers are not concurrent.

  • @shalomhabibi9594
    @shalomhabibi95944 жыл бұрын

    Team Erlang \o/ What's your take on BEAM though

  • @peterr6205

    @peterr6205

    4 жыл бұрын

    I'm not sure I understand your question. BEAM is the runtime/VM that is used to run erlang(not directly, but after it's compiled to bytecode). Within the Erlang community, BEAM is the only major VM that is used, while there might be other implementations, I've never heard of anyone running anything except BEAM. So it would follow that anyone who is a fan/user of Erlang (or any other BEAM language, like Elixir), is a fan of the BEAM.

  • @shalomhabibi9594

    @shalomhabibi9594

    4 жыл бұрын

    @@peterr6205 BEAM is its own project though, I'd just like to hear their thoughts about it

  • @peterr6205

    @peterr6205

    4 жыл бұрын

    @@shalomhabibi9594 BEAM is not a separate project. BEAM is the reference implementation of Erlang. In a way, it IS Erlang. While you could argue Erlang is the syntax and rules of the language, in reality, Erlang is the compiler.VM that compiles and runs Erlang source code, and that currently is the BEAM.

  • @shalomhabibi9594

    @shalomhabibi9594

    4 жыл бұрын

    @@peterr6205 I give up

  • @peterr6205

    @peterr6205

    4 жыл бұрын

    @@shalomhabibi9594 I'm actually curious about what you'd like to know. My goal it not to be argumentative about your comment or request for info. For example, Java runs on the JVM, but there are also many other runtimes that people use, so understanding the differences, both technologically and politically (google vs oracle, etc.) makes a lot of sense, but with Erlang there's only one runtime, so therefore Erlang and the BEAM can be thought of as one thing. So anything you would learn about Erlang, would be applicable to BEAM. I'm curious what info you're looking for, or what facts you'd like about BEAM. I'm really not trying to be argumentative. I'd like to give you more info if I can. I've been working with Erlang and Elixir (both major BEAM languages) for over 3 years.

  • @justahker3988
    @justahker39884 жыл бұрын

    Any coverage on Brady's channels on the other Erlang? (Agner Krarup Erlang)

  • @anlonburke2885

    @anlonburke2885

    4 жыл бұрын

    Just FYI, this Erlang (the language) was actually named after the "other" Erlang :) That whole Erlang = "Ericsson language" theory is plain wrong.

  • @IshamMohamedIqbal
    @IshamMohamedIqbal3 жыл бұрын

    Is the "tread" he is mentioning @ 10:34, the OS thread?

  • @RawPeds
    @RawPeds4 жыл бұрын

    Erlang looks cool!

  • @oliverm.batista5445
    @oliverm.batista54454 жыл бұрын

    OMG can we like this video twice?!

  • @Zolbat
    @Zolbat4 жыл бұрын

    Sounds pretty cool

  • @udaysom3244
    @udaysom32443 жыл бұрын

    Hey, this guy was at NIIT conference:)

  • @nnaaaaaa
    @nnaaaaaa4 жыл бұрын

    if erlang's syntax isn't your jam, elixir is actually really nice.

  • @tjpld

    @tjpld

    4 жыл бұрын

    jaff Elixir is the nicest language I have come across in the last 15 years.

  • @nnaaaaaa

    @nnaaaaaa

    4 жыл бұрын

    @@tjpld i wish i learned elixir far sooner than i did so i could've spent more time learning the right lessons.

  • @tjpld

    @tjpld

    4 жыл бұрын

    jaff Same. The thing that struck me the most was how little relevance control structures have in functional programming. The only thing your are going to use is case and cond, but even this is rare and you just pattern match most of the time. With any other language I end up with a mess of for loops, if, else and while statements.

  • @FeelsDonkMan

    @FeelsDonkMan

    4 жыл бұрын

    Very similar to Ruby for obvious reasons. Something I really want to learn as well.

  • @shayneoneill1506

    @shayneoneill1506

    4 жыл бұрын

    @@FeelsDonkMan The similarity to Ruby is fairly superficial. It does have some similaritys (do ... end blocks etc), but if you tried to use it in a Ruby style manner, I think you might end up making a big mess. Its not a procedural or OOP language.

  • @hansisbrucker813
    @hansisbrucker8134 жыл бұрын

    I love Erlang. Btw, in the factorial example you could also use a pattern that matches one and you wouldn't have needed a when clause.

  • @PaulaJBean

    @PaulaJBean

    4 жыл бұрын

    But would that catch calling factorial() with a negative number?

  • @hansisbrucker813

    @hansisbrucker813

    4 жыл бұрын

    @@PaulaJBean Hmm, no

  • @itaco8066
    @itaco80663 жыл бұрын

    Awesome thanks

  • @MrErtghj23
    @MrErtghj234 жыл бұрын

    You should create some Erlang tutorials ❤️

  • @AndersJackson

    @AndersJackson

    3 жыл бұрын

    He has written at least one book about Erlang.

  • @dlabor1965

    @dlabor1965

    2 жыл бұрын

    Designing for Scalability with Erlang/OTP, Francesco Cesarini and Steve Vinoski

  • @runefjord8446
    @runefjord84464 жыл бұрын

    The last lair of the onion : an electromagnet that flips the switch and swings back to re-flip it before getting turned on again

  • @thm6994
    @thm69942 жыл бұрын

    Erlang is a computer language developed in Sweden by the Swedish telephone company Ericsson.

  • @keyhanjannatkhah6729
    @keyhanjannatkhah67292 жыл бұрын

    ERLANG is awesome, it is ugly duck in technology, i believe ERLANG is one of most beautiful system in computer world.

  • @Pyrazahn
    @Pyrazahn4 жыл бұрын

    So if variables can't be modified and there is no shared memory, how would you program something like a counter?

  • @sverkeren

    @sverkeren

    4 жыл бұрын

    recursion

  • @AndersJackson

    @AndersJackson

    3 жыл бұрын

    When you do calculation, you store the new result in a new variable. And because you do all loops in recursion, you do get a new set of variables each call. :-) And actually, non mutable variables the default in ML languages likeHaskell and OCaml. Nothing strange there at all, actually.

  • @NotGarbageLoops
    @NotGarbageLoops2 ай бұрын

    The captions are obsessed with Fred.

  • @formbi
    @formbi4 жыл бұрын

    in Scheme you can just do factorial like this: (define (factorial x) (apply * (iota x 1)))

  • @pspicer777
    @pspicer7774 жыл бұрын

    A small detail ... Should really be ... erlang/OTP. Nice videoo.

  • @peterr6205

    @peterr6205

    4 жыл бұрын

    They are used interchangeably, but Erlang/OTP is not somehow more correct than just saying Erlang.

  • @TheOfficialPolo
    @TheOfficialPolo4 жыл бұрын

    Erlang are like onions. Onions have layers. Erlang has layers, onions have layers! You get it, they both have layers

  • @caw25sha

    @caw25sha

    4 жыл бұрын

    But Erlang doesn't make you cry ☺

  • @josipcuric8767

    @josipcuric8767

    4 жыл бұрын

    @@caw25sha the syntax sure does

  • @ulilulable

    @ulilulable

    4 жыл бұрын

    @@josipcuric8767 Nah, the syntax is fine; It even uses semicolon correctly.

  • @dexter9313

    @dexter9313

    4 жыл бұрын

    Everyone seem to miss the Shrek reference, but I sure won't !

  • @TheOfficialPolo

    @TheOfficialPolo

    4 жыл бұрын

    @@dexter9313 not the hero we need, but the hero we deserve

  • @masoomsanadi
    @masoomsanadi3 жыл бұрын

    Why isn't there a common xmpp for all the world communication?

  • @naheliegend5222
    @naheliegend52224 жыл бұрын

    Well, I don't get everything what he said. Any recommendations to read something about Erlang?

  • @HarmonicaTool

    @HarmonicaTool

    4 жыл бұрын

    I think "Seven Languages in Seven Weeks" has a chapter on it. "Seven More Languages..." has a chapter on Elixir.

  • @cxzuk
    @cxzuk4 жыл бұрын

    RIP Joe Armstrong

  • @Mattwoods35
    @Mattwoods353 жыл бұрын

    I live for this sh**

  • @JerkerMontelius
    @JerkerMontelius4 жыл бұрын

    Hej Frasse.kul att se dig,

  • @diegonayalazo
    @diegonayalazo2 жыл бұрын

    Thanks

  • @alexandterfst6532
    @alexandterfst65324 жыл бұрын

    Why is there no subtitles on this video ?

  • @sevcandincel

    @sevcandincel

    4 жыл бұрын

    It is sad.

  • @KingJellyfishII

    @KingJellyfishII

    4 жыл бұрын

    I'm kinda annoyed too

  • @caw25sha

    @caw25sha

    4 жыл бұрын

    This is currently a very new video and it sometimes takes a while for the subtitles to be generated. Try again tomorrow.

  • @KingJellyfishII

    @KingJellyfishII

    4 жыл бұрын

    @@caw25sha ah makes sense. Will do

  • @cesteres

    @cesteres

    4 жыл бұрын

    Subtitles in Erlang plz

  • @platin2148
    @platin21484 жыл бұрын

    I don’t really want to know how the vm’s interact with each other in reality i mean it must happen through packets but what it sends and how it does the routing decision is really the part that maybe makes it so scalable.

  • @auto514

    @auto514

    4 жыл бұрын

    Sorry...what?

  • @DaniErik
    @DaniErik4 жыл бұрын

    Hello Joe!

  • @sofia.eris.bauhaus

    @sofia.eris.bauhaus

    4 жыл бұрын

    Hello Mike!

  • @ismaelgrahms
    @ismaelgrahms5 ай бұрын

    Gotta try Erlang

  • @jackc451
    @jackc4514 жыл бұрын

    Could you guys think about doing a video on the Actor Model?

  • @john_critchley
    @john_critchley4 жыл бұрын

    I kinda got stuck when I was trying to tie several processesrogergwe managed by 1 supervisor.... I was trying to put them together in a pipe so I needed to give the next one in the pipe the pid of its adjacent, and if one dies to have the supervisor fire up a replacement and tie the new one into its siblings.... OTP didn't seem to have the facility to efficiently do this (I think you could get *all* children and that was it) This was about 5 or 6 years ago so I forget exactly; I thought of writing extensions to OTP to handle what I wanted but got stuck inthe "comments" you needed to document the code properly so BEAM would compile it effectively.... I think I need a deep dive on this stuff...

  • @peterr6205

    @peterr6205

    4 жыл бұрын

    This is definitely something you can do in Erlang/Elixir, and have been able to for a long time. It sounds like you want a supervisor with a one_for_one restart strategy. You can also register the name of each process, so any other process can access it by using this name, instead of needing its PID. This way, if the supervisor needs to restart a process, all the other processes can continue running, and sending it messages, without ever having to worry about whether or not it was restarted, or trying to get its new PID.

  • @AndersJackson
    @AndersJackson4 жыл бұрын

    Hej Francesco! :-)