Simon Peyton-Jones: Escape from the ivory tower: the Haskell journey

  Рет қаралды 158,487

Churchill College, University of Cambridge

Churchill College, University of Cambridge

Күн бұрын

Churchill College's annual Computer Science lecture.
In this talk Simon discusses Haskell’s birth and evolution, including some of the research and engineering challenges he faced in design and implementation. Focusing particularly on the ideas that have turned out, in retrospect, to be most important and influential, as well as sketching some current developments and making some wild guesses about the future.

Пікірлер: 129
@jamiebertram9744
@jamiebertram9744 4 жыл бұрын
Ha, I just think it's hilarious that a talk with "escape from the ivory tower" in the title starts off with "welcome to the annual computer science distinguished lecture and dinner at Churchill College"
@Yetipfote
@Yetipfote 3 жыл бұрын
😂
@aleksejhakimov1685
@aleksejhakimov1685 3 жыл бұрын
Think I that's hilarious as well as being I the 69th like.
@suimong
@suimong 3 жыл бұрын
It occurred to me that the title might be deliberately chosen...fits well as a British humor
@Georgefst
@Georgefst 2 жыл бұрын
It gets worse! Before he even starts introducing Simon, there's a long segment about dinner arrangements, featuring all sorts of Oxbridge-isms. Great talk though.
@vozh-kc
@vozh-kc 2 жыл бұрын
how else are you gonna escape the ivory tower if you didn't set it up first?
@DylanMcNamee
@DylanMcNamee 6 жыл бұрын
That small audience was given a real treat - I'm really glad this is online.
@ighsight
@ighsight 2 жыл бұрын
Watching this on a Friday night. My descent into the nerd realm is now complete.
@brecoldyls
@brecoldyls 4 жыл бұрын
This guy talks so fast and is one of the most enthusiastic people to give a talk on programming that I've ever seen
@bocckoka
@bocckoka 7 жыл бұрын
Separation of Church & state is one of the best jokes of this millenium. We're not so far in but still.
@diwr
@diwr 6 жыл бұрын
SPJ puts a smile on your face when he talks. You can feel his passion for programming theory. He's so energetic in his communication style.
@Jonesybabie
@Jonesybabie 3 жыл бұрын
Such an honor to be able to view a replay of this. I taught myself software engineering, so I feel like I get a piece of the great minds in tech (many still living). Major gratitude 🙏🏽💐🌹🌸🏵🌼💐
@elcapitan6126
@elcapitan6126 6 жыл бұрын
I think we're very fortunate to have many simultaneously intelligent and charismatic people (like Simon Peyton-Jones!) in the Haskell and functional programming community. They help draw people in!
@anthonytonev1357
@anthonytonev1357 5 жыл бұрын
"ActionScript what ever that is"
@web3tel
@web3tel 7 жыл бұрын
Thanks a lot. It is amazing how monad and type classes which are now cornerstones of the Haskell were "invented" in the process and were not part of initial design
@JamesJones-zt2yx
@JamesJones-zt2yx 4 жыл бұрын
SPJ gives wonderful presentations. He's the only man so cool that he can use Comic Sans in slides.
@ianb7400
@ianb7400 2 жыл бұрын
Exactly
@ianbridges6040
@ianbridges6040 2 жыл бұрын
@@ianb7400 brother
@asdfghyter
@asdfghyter 5 жыл бұрын
It is always a joy to watch SPJ talk! He is such a nice person and a gives such a great performance.
@ShihabShahriar555
@ShihabShahriar555 7 жыл бұрын
I can't write a "hello world" in haskell and yet I watched all of it. That guy can talk.
@apostleofazathoth7696
@apostleofazathoth7696 7 жыл бұрын
Try: hello = "Hello World" hello
@SebastianStevens
@SebastianStevens 7 жыл бұрын
That code won't do anything. You want something like main = putStrLn "Hello World!"
@delphie23
@delphie23 7 жыл бұрын
Don't forget the type signature: main :: IO () main = putStrLn "Hello World!" (you may omit it if you want, but it is considered bad practice)
@masonlegere7774
@masonlegere7774 5 жыл бұрын
IO is learned a lot later in Haskell than other languages
@jonwise3419
@jonwise3419 5 жыл бұрын
It's one of the cleanest and easiest thing out of any languages. It's literary three words: print "hello world". So, if you're running it from shell, then and want to test it interactively, then: > ghci print "hello world" If you want to compile a file: # This writes 'main = print "hello world"' to a file. > echo 'main = print ""hello world" ' >> myFirstProgram.hs # This compiles the file > ghc myFirstProgram.hs # This runs the program > ./myFirstProgram hello world Writing IO in Haskell is very easy, way easier in fact than in most other languages if you don't bother understand abstractions about how it works (1). Easier because a) IO for concurrency and parallelism just works, while in other languages you'll quickly find yourself in trouble and having to transform most of your code b) there are abstractions that make it easier to reason about doing IO safely, like doing it in constant memory or making sure that all resources are released. (1): You don't, for example, go through Python internals to understand how it deals with the code you wrote. But in Haskell most things are actually implemented as abstractions and written in the language itself, rather than baked into some internals. You can actually not import `+` and `-` because even they are implemented in the language instead of being baked in. So you have that choice to go and read, and understand how anything is implemented, including how IO is done by checking the IO monad. Unlike looking at some compiler code where you would quickly be scared to do it, it will look not bulky or complex, but look elegant enough to be tempting to try and understand it. So people are tempted to learn everything and they get lost. It would be the same way if they were to try to understand how Python or C compiler works instead of just writing their apps using simple things they learned. Most languages don't give you the freedom to implement some abstraction that you want. You just write code using simple principles, and are fine for it sometimes getting a bit verbose. But in Haskell you have a choice to write very elegant code, so you can immediately get lost in abstractions and instead of writing useful code, get lost in trying to optimize everything and trying to implement a perfect abstraction for your code, whereas in other languages you would just bruteforce a verbose, potentially unsafe, solution, and go on living your life. This is the source for the myth that Haskell has a steep learning curve. It mostly (2) doesn't and it's pretty simple to write programs in it. But you can do the same thing in so many ways that if you want to learn how to do it in the best way, then you'll quickly find yourself learning infinitely many things, things that you would never learn because they are simply not possible in other languages. A simple list transformation can take you down a rabit hole if you want to "make it perfect" by putting length of the list as a type. But in other language you just wouldn't do it. You would just be fine with lists failing at runtime if somebody constructed a list with the wrong length. (2) One thing where it is indeed can be unavoidably difficult for beginners is if they come from objective or imperative programming and they got used to using mutation in their code by using `for` and `while` loops. It's still pretty easy to do the same thing in Haskell when using IO if you so desire, but it's rarely done in practice and thus you will not know how to do it in the beginning (and for right reasons) and you'll quickly have to adapt to use recursion. fold, and map, instead. This is one area where Haskell indeed forces you to learn how to do it its way from the very begging and you actually have to learn a couple of things before writing things you want. However, you have already written pure code before in the past in other languages, then it will look pretty familiar.
@pinch-of-salt
@pinch-of-salt 2 жыл бұрын
I love Simon, he's funny and knows his stuff. I am not into academic/theoretical side of CS but his talks are proper balance of applied and theory.
@Nikku08
@Nikku08 7 жыл бұрын
This gives me motivation and makes me happy. I need more of this.
@Yetipfote
@Yetipfote 3 жыл бұрын
I'm a Haskell beginner and the thing which bothers me the most is that there are two package managers and I haven't understood yet what the subtle differences are. Haskell should adopt one and drop the other. I hope the community merges and works together towards this.
@dumbnoobguy
@dumbnoobguy 7 жыл бұрын
Thanks for posting! I enjoyed the history of FP and Haskell with Simon's great talk. The more I watch Simon's talks, the more I come to like learning Haskell.
@ValentinKostadinov
@ValentinKostadinov 2 жыл бұрын
Thoroughly enjoyed. This is an epic talk, one for the annals of computer science. It's like watching a very interesting documentary on a favorite subject told by one of the main action heroes.
@Brian-uq6jm
@Brian-uq6jm 2 жыл бұрын
Absolutely amazing talk! Thanks so much for sharing!
@paulwary
@paulwary 2 жыл бұрын
Not knowing Haskell, I had got the impression that Monads were just the exposed tip of an iceberg of abstraction (ala Category Theory) implemented in the Haskell type system. Here, is comes across as 'just one simple trick" welded on to a pure but pragmatically developed core.
@kp2164
@kp2164 4 жыл бұрын
I remember him on a Haskell conference, ZuriHac 2019. I was really impressed for his energy when he gave presentation about type inference on Haskell. It is so nice to see him in this video. :)
@naveennaidu9768
@naveennaidu9768 4 жыл бұрын
Loved this talk❤️! Thank you Simon ❤️❤️
@dansierrasam79
@dansierrasam79 2 жыл бұрын
Wonderful presentation. Was so enjoyable to learn about Haskell.
@dushkin_will_explain
@dushkin_will_explain Жыл бұрын
Of course this is master's brilliant performance! Applause!!!
@0n1xusx75
@0n1xusx75 4 жыл бұрын
SPJ's talks are really really great!!
@sanchayanmaity5380
@sanchayanmaity5380 6 жыл бұрын
Loved this talk.
@farhanislam8463
@farhanislam8463 2 жыл бұрын
This was great to watch. Really enjoyed it.
@morthim
@morthim 3 жыл бұрын
best haskell talk i've seen. 100x better than anything else.
@bartsekura
@bartsekura 4 жыл бұрын
SJP is the best thing that happened to computer science. Absolute joy to see him speak.
@jiaanguo549
@jiaanguo549 7 жыл бұрын
It is a shame that so few people attend the talk. Haskell and the talk is amazing by all means. I just finished my first Haskell program. It is kind of silly, but I enjoy it. By the first time, I try to recurve my main function. :) import System.IO import Data.List.Split main :: IO () main = do end
@bungieanimator
@bungieanimator 5 жыл бұрын
What do you mean? Forty six thousand people stopped in to listen to this talk.
@vetiarvind
@vetiarvind 2 жыл бұрын
Honestly i thought this was going to be a talk that i'd skip in 5 minutes but I fell into the rabbit hole. It's quite entertaining.
@gvolpe87
@gvolpe87 4 жыл бұрын
He always delivers, what a great talk! Does anyone have a link to the slides?
@mattmosior7957
@mattmosior7957 6 жыл бұрын
So cool that this was uploaded
@PatrickHutton
@PatrickHutton 2 жыл бұрын
19 Imperative Programmers disliked this video. A curse on their mutable ways, may a thousand side effects assail them.
@lepidoptera9337
@lepidoptera9337 2 жыл бұрын
I just demonstrated what a side effect is by clicking on the dislike button. :-)
@carlyounger6262
@carlyounger6262 2 жыл бұрын
Fascinating talk. Haskell is really interesting. Next time I have a usecase, I would like to give Haskell a go.
@worldboy9684
@worldboy9684 6 жыл бұрын
Great, just great
@florianwicher
@florianwicher 4 жыл бұрын
I love how underdressed he is in combination with the intentionally crappy powerpoint. What a troll :D
@malusmundus-9605
@malusmundus-9605 3 жыл бұрын
Love this guy
@jonathanmoore5619
@jonathanmoore5619 2 жыл бұрын
This guy is a proper legend.
@florianwicher
@florianwicher 5 жыл бұрын
Man, if that talk doesn't make you want to study theoretical computer science... :D
@austinbenesh1193
@austinbenesh1193 4 жыл бұрын
Haskell is the ultimate language, in my opinion.
@karihotakainen5210
@karihotakainen5210 2 жыл бұрын
Matlab is the language of gods.
@dudeskiquita
@dudeskiquita 6 жыл бұрын
got lost at "system f".. but really a nice talk to watch!
@woosix7735
@woosix7735 Ай бұрын
“Action script, whatever that is.” That hurts. (For those who don’t know, Action Script is kinda like Java scripts long list staticly typed cousin, and was used in Adobe Flash.)
@davip116
@davip116 2 жыл бұрын
Any suggestion where to start a postdoc position researching Haskell extensions?
@Coder-zx4nb
@Coder-zx4nb 4 жыл бұрын
I'm really torn on functional programming. On one hand, it just makes sense to use and forces you to make principally designed software which leads to far less bugs, clearer software arch and thus faster software dev in general. On the other hand it's difficult for the day to day dev to pick this up and doesn't have as much support as say C# or java. This makes adoption for it difficult in a corporate env. What I think might help is trying to get functional languages more integrated into schooling. Introduce functional languages as the very first language to get their mind set into functional programming right away. Thus reducing the need to re-wire brains later on.
@zTJq40sl
@zTJq40sl 3 жыл бұрын
The teaching approaches presented at media.ccc.de/v/35c3-9800-how_to_teach_programming_to_your_loved_ones do introduce a functional language as the first one and seem quite promising.
@squirrelpatrick3670
@squirrelpatrick3670 2 жыл бұрын
I've just started checking out FP and I was really thinking, I would have got this really easily when I was a teenager and now I am like wtf
@sirbuttonhd
@sirbuttonhd 2 жыл бұрын
@@zTJq40sl Developing software with the focus on what to do instead of how to do it will eventually become mainstream, it's inevitable. JavaScript gains more and more functional characteristics which is a really good sign.
@christophernuzzi2780
@christophernuzzi2780 2 жыл бұрын
If i were a freshman in CS and theyh tried to foist a functional langusge on me, I would refuse to learn it and hand in all my assignments in Python or Go or C or Pascal, even - anything but a functional language.
@a.s.4309
@a.s.4309 5 жыл бұрын
This got me flirtin' with Haskell, Scheme, Lisp, and functional programming all over again. Got my GHC compiler brew-installed: 1.2 GB, phew!
@JanilGarciaJr
@JanilGarciaJr 2 жыл бұрын
What a great fucking talk my Friends. Simon Peyton-Jones is incredible.
@kevalan1042
@kevalan1042 7 жыл бұрын
Great talk! I've seen it several times over the years. Hopefully he will add something new next time :)
@epo78
@epo78 4 жыл бұрын
Not on this KZbin record though. )
@Fanaro
@Fanaro 3 жыл бұрын
He didn't answer why creating machines specifically for Functional Programming was a bad idea, which is something he said he would touch upon at some point. Anyone?
@lepidoptera9337
@lepidoptera9337 2 жыл бұрын
Because in a functional machine every variable has to be constantly passed over the stack. If you make a change to a variable, then there are two copies on the stack, the old value and the new value until the calling function overwrites the old value that's buried deeper on the stack and so on, until you are down on the lowest level. Now, if your called function throws an exception, then your stack is shot and you don't know which of the values on the stack (which you can't even retrieve easily because you don't know where they are) is valid. In other words, your global state is unrecoverable after every exception. This is not the case in machines that keep the state on the heap.
@DF-ss5ep
@DF-ss5ep Жыл бұрын
He said "Intel won". I assume a special FP microprocessor would have the need for its own instruction set and programming model. The cost per item of things like microprocessors goes down by a lot with the amount of items that are produced. So if there are only a few FP system users, the cost per machine becomes too high and it makes more sense to adapt to the mainstream architecture.
@0n1xusx75
@0n1xusx75 4 жыл бұрын
Hey! Would you mind if I add chinese caption to this video and repost it on a video website in China?
@jms019
@jms019 7 жыл бұрын
Fixing a Symbolics machine is on my TODO
@CarlosSpicyWiener111
@CarlosSpicyWiener111 3 жыл бұрын
Weird question, but does anyone know what shoes he's wearing?
@cesarabosetti8592
@cesarabosetti8592 9 ай бұрын
Good! Simon is a very nice person. You could leave the automatic subtitle translation enabled. This dissertation is from 2013? , please if you can add it in the information of the video. Regards!
@archdria
@archdria 7 жыл бұрын
Nice, I was hoping somebody asked him about Rust
@SimonClarkstone
@SimonClarkstone 3 жыл бұрын
His remark about linear types at about 1:02:50 is relevant to that.
@Springworks-li4ck
@Springworks-li4ck 4 жыл бұрын
"I don't like programming languages, I just like Coq"
@mattlim3744
@mattlim3744 6 жыл бұрын
this guy is a master of both haskell and talking really fast
@Mjolkmaestro
@Mjolkmaestro 3 жыл бұрын
My sib just said "distinguished" five times with the word "watt" written in Comic Sans on a projector behind them ✨ Now that's well distinguished behaviour right there 😎
@VenturiLife
@VenturiLife 4 жыл бұрын
14:37 Java was released in 1995 and developed in 1991, so I'd say most of the audience were in fact born by then...
@auntiecarol
@auntiecarol 4 жыл бұрын
Ca. 24:00 ... a compiler bug that deletes the source code (only on Windows) == hilarious!
@jasenq6986
@jasenq6986 Жыл бұрын
threshold of immortality... very true lol
@jollyjack5856
@jollyjack5856 6 жыл бұрын
35:17 the choice of the word "action" re: monads is *_very_* unfortunate, very confusing: action is something that *is* being performed. if it's not _yet_ performed, it's an action *_description_* / definition / _"script"_ which only becomes an action *_when_* it is "run". that it is *not* yet performed, and *will* be, is the whole point to the monads; and the use of the word "action" prevents this understanding from occurring naturally to a yet uniformed listener.
@daweiliu6452
@daweiliu6452 6 жыл бұрын
The same slide has been used many times...
@eliseulucenabarros3920
@eliseulucenabarros3920 4 жыл бұрын
begin in 2:43
@johnwarren6966
@johnwarren6966 5 жыл бұрын
import Control.Monad.Fix fix error (observe fireworks!)
@ziconghuang7139
@ziconghuang7139 3 жыл бұрын
I hope Haskell the cat is still alive and well...
@haesklar3635
@haesklar3635 3 жыл бұрын
13:13 is so funny lmao
@NotYourArmy666
@NotYourArmy666 8 ай бұрын
Could you please add automatic subtitles?
@traderphil8006
@traderphil8006 5 жыл бұрын
Who else is here thanks to Charles Hoskinson?
@TheBill9901
@TheBill9901 5 жыл бұрын
Phil ipp me
@Ron-hl3op
@Ron-hl3op 4 жыл бұрын
me!
@sidcoolguy7
@sidcoolguy7 3 жыл бұрын
me too
@shakeel2473
@shakeel2473 3 жыл бұрын
Count me in!
@daweiliu6452
@daweiliu6452 6 жыл бұрын
fix error in ghci doesn't work
@benkorb6359
@benkorb6359 6 жыл бұрын
dawei liu import Data.Function first
@broyojo
@broyojo 3 жыл бұрын
oh god comic sans
@benterrell9139
@benterrell9139 5 жыл бұрын
His mode of speech is a little like Michael Palin, I find it absolutely delightful.
@clamato422
@clamato422 3 жыл бұрын
watching at 0.75 speed :)
@albertocardonalopez4831
@albertocardonalopez4831 2 жыл бұрын
hahahaha I actually had to check wether I had inherited the x1.5 speed from some previous video, and actually changed it to x0.75 and then x1 just to be sure :P
@NurfHerderEclipse
@NurfHerderEclipse 3 жыл бұрын
"...just ahead of ActionScript. Whatever that is?" Ha ha..
@thomashanson3476
@thomashanson3476 3 жыл бұрын
Came in as common rabble, left feeling distinguished
@williamrusnack6829
@williamrusnack6829 6 жыл бұрын
What does he mean by F lambda at 42m kzbin.info/www/bejne/qJacZ4idgtBpfbMm
@DenisG631
@DenisG631 3 жыл бұрын
I guess I am a bit too late, but he later mentions it, as System F, which is polymorphic lambda calculus. According to my understanding this is exactly what flambda is.
@lt4376
@lt4376 2 жыл бұрын
9:08 says it all
@FreeScience
@FreeScience 6 жыл бұрын
I kind of wish programmers still looked like "working group 2.8"
@ivanvano13
@ivanvano13 5 жыл бұрын
White and mostly male? Majority still look like that.
@georgen9755
@georgen9755 Жыл бұрын
it is never spj ???
@juliocardenas4485
@juliocardenas4485 2 жыл бұрын
“Alumni will exercise they right to dine the hall” 🙄
@haskellfilmz
@haskellfilmz 5 жыл бұрын
Cool! The Haskell Journey! I'm on a bit different "Haskell Journey" it's called the #WeAreAllChrisHaskell Journey! Included in this Journey is the Chris Haskell Disease that seems to effect all of your electronics except only when your attempting to film Chris Haskell! (This disease has an FBI origin and seems to be Very Contagious!)
@donotaskmemyname3902
@donotaskmemyname3902 3 жыл бұрын
Someone need to add English subtitles to this lecture. It seems to me the lecturer is eating half of the words, which is also called "talking very fast with a strong accent of some part of the world". We definitely need a monad here to let more audience benefit from it without much main
@user-tk2jy8xr8b
@user-tk2jy8xr8b 3 жыл бұрын
Watched this at 1.25x being a non-native, on the contrary - he has a pretty clean pronunciation
@donotaskmemyname3902
@donotaskmemyname3902 3 жыл бұрын
@@user-tk2jy8xr8b hahaha. Good for you if you can follow at x1.25. Me, I will even miss his gestures at that rate 😁.
@Yetipfote
@Yetipfote 3 жыл бұрын
No wonder the audience sits in the back lazily :)
@MrAbrazildo
@MrAbrazildo Жыл бұрын
31:32, *WI(T)H.
@balv1846
@balv1846 4 жыл бұрын
STOP HOOGLE plaese
@redpepper74
@redpepper74 Жыл бұрын
What’s wrong with Hoogle?
@dmytroskryzhevskyi3032
@dmytroskryzhevskyi3032 3 жыл бұрын
Sponsored by Microsoft
@gavinschuette9826
@gavinschuette9826 5 жыл бұрын
devops oracle micrsoft are scams as are cisco routers and software defined networkring fukery to destroy competition and overcmplicate so wall st bansters can push uter shit on everyone
@kahnfatman
@kahnfatman 2 жыл бұрын
ELM-lang puts Haskell to shame.
@christophernuzzi2780
@christophernuzzi2780 2 жыл бұрын
I don't care about fewer bugs, etc. There is no way in hell I am ever going to code in a functional language.
@Alkis05
@Alkis05 3 жыл бұрын
Instead of acomodating the few dozen people "in the back", next time he should realize that there are 85k people watching online. Maybe accomodate for that.
@abebuckingham8198
@abebuckingham8198 2 жыл бұрын
Between the comic cans, the stammering tangents and random slideshow of his family I can safely say this is among the worst lectures I have ever labored though.
Adventure with Types in Haskell - Simon Peyton Jones (Lecture 1)
1:33:37
Simon Peyton Jones - Haskell is useless
6:23
bunidanoable
Рет қаралды 364 М.
SHE WANTED CHIPS, BUT SHE GOT CARROTS 🤣🥕
00:19
OKUNJATA
Рет қаралды 14 МЛН
Cat story: from hate to love! 😻 #cat #cute #kitten
00:40
Stocat
Рет қаралды 10 МЛН
Can You Draw The PERFECT Circle?
00:57
Stokes Twins
Рет қаралды 90 МЛН
КАК СПРЯТАТЬ КОНФЕТЫ
00:59
123 GO! Shorts Russian
Рет қаралды 2,6 МЛН
Running a startup on Haskell
50:23
jasonofthel33t
Рет қаралды 111 М.
Bjarne Stroustrup - The Essence of C++
1:39:11
The University of Edinburgh
Рет қаралды 1,2 МЛН
Haskell in 100 Seconds
2:30
Fireship
Рет қаралды 824 М.
"Propositions as Types" by Philip Wadler
42:43
Strange Loop Conference
Рет қаралды 124 М.
A Crash Course in Category Theory - Bartosz Milewski
1:15:14
ScalaIO FR
Рет қаралды 88 М.
The Politics of International Law: Martti Koskenniemi
51:29
Cambridge Law Faculty
Рет қаралды 71 М.
Why Isn't Functional Programming the Norm? - Richard Feldman
46:09
A Revolution in Thought?  - Dr Iain McGilchrist
1:04:12
Darwin College Lecture Series
Рет қаралды 114 М.
SHE WANTED CHIPS, BUT SHE GOT CARROTS 🤣🥕
00:19
OKUNJATA
Рет қаралды 14 МЛН