Тёмный

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

Churchill College, University of Cambridge
Подписаться 7 тыс.
Просмотров 159 тыс.
50% 1

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.

Опубликовано:

 

25 июн 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 131   
@jamiebertram9744
@jamiebertram9744 5 лет назад
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 7 лет назад
That small audience was given a real treat - I'm really glad this is online.
@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
@ighsight
@ighsight 2 года назад
Watching this on a Friday night. My descent into the nerd realm is now complete.
@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.
@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!
@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 🙏🏽💐🌹🌸🏵🌼💐
@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
@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.
@JohnnySacc
@JohnnySacc 15 дней назад
I have no use to get into FP but I will just because Simon's enthusiasm is infectious. Downloading ghc as I type.
@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.
@JamesJones-zt2yx
@JamesJones-zt2yx 5 лет назад
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
@Nikku08
@Nikku08 7 лет назад
This gives me motivation and makes me happy. I need more of this.
@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.
@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. :)
@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.
@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.
@naveennaidu9768
@naveennaidu9768 4 года назад
Loved this talk❤️! Thank you Simon ❤️❤️
@zyxzevn
@zyxzevn 15 дней назад
I saw similar experiments with Squeak and Pharo, which are smalltalk systems. Due to the usage of closures instead of "object patterns", the code is usually very compact. It is interesting how Smalltalk programmers are often against static typing. They demonstrate it by having stuff like a HTML and pdf browser built within. There is even an alternative (the Self language) that has no classes at all. Their idea is that types do not solve much. They are just a different abstraction. Haskell and Smalltalk do not conflict as much that people may think. It differs mainly in where you place your code and how you test/verify your code.
@Brian-uq6jm
@Brian-uq6jm 2 года назад
Absolutely amazing talk! Thanks so much for sharing!
@bartsekura
@bartsekura 4 года назад
SJP is the best thing that happened to computer science. Absolute joy to see him speak.
@morthim
@morthim 3 года назад
best haskell talk i've seen. 100x better than anything else.
@mattmosior7957
@mattmosior7957 6 лет назад
So cool that this was uploaded
@0n1xusx75
@0n1xusx75 4 года назад
SPJ's talks are really really great!!
@dansierrasam79
@dansierrasam79 2 года назад
Wonderful presentation. Was so enjoyable to learn about Haskell.
@sanchayanmaity5380
@sanchayanmaity5380 6 лет назад
Loved this talk.
@farhanislam8463
@farhanislam8463 2 года назад
This was great to watch. Really enjoyed it.
@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.
@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.
@dushkin_will_explain
@dushkin_will_explain Год назад
Of course this is master's brilliant performance! Applause!!!
@gvolpe87
@gvolpe87 4 года назад
He always delivers, what a great talk! Does anyone have a link to the slides?
@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.
@PatrickHutton
@PatrickHutton 3 года назад
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. :-)
@worldboy9684
@worldboy9684 6 лет назад
Great, just great
@florianwicher
@florianwicher 5 лет назад
Man, if that talk doesn't make you want to study theoretical computer science... :D
@malusmundus-9605
@malusmundus-9605 3 года назад
Love this guy
@carlyounger6262
@carlyounger6262 2 года назад
Fascinating talk. Haskell is really interesting. Next time I have a usecase, I would like to give Haskell a go.
@jonathanmoore5619
@jonathanmoore5619 2 года назад
This guy is a proper legend.
@woosix7735
@woosix7735 2 месяца назад
“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.)
@florianwicher
@florianwicher 4 года назад
I love how underdressed he is in combination with the intentionally crappy powerpoint. What a troll :D
@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!
@austinbenesh1193
@austinbenesh1193 4 года назад
Haskell is the ultimate language, in my opinion.
@karihotakainen5210
@karihotakainen5210 3 года назад
Matlab is the language of gods.
@dudeskiquita
@dudeskiquita 6 лет назад
got lost at "system f".. but really a nice talk to watch!
@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 RU-vid record though. )
@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 4 года назад
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 3 года назад
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.
@davip116
@davip116 2 года назад
Any suggestion where to start a postdoc position researching Haskell extensions?
@jms019
@jms019 7 лет назад
Fixing a Symbolics machine is on my TODO
@Springworks-li4ck
@Springworks-li4ck 4 года назад
"I don't like programming languages, I just like Coq"
@0n1xusx75
@0n1xusx75 4 года назад
Hey! Would you mind if I add chinese caption to this video and repost it on a video website in China?
@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.
@cesarabosetti8592
@cesarabosetti8592 10 месяцев назад
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!
@mattlim3744
@mattlim3744 7 лет назад
this guy is a master of both haskell and talking really fast
@CarlosSpicyWiener111
@CarlosSpicyWiener111 3 года назад
Weird question, but does anyone know what shoes he's wearing?
@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.
@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...
@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 😎
@johnwarren6966
@johnwarren6966 5 лет назад
import Control.Monad.Fix fix error (observe fireworks!)
@eliseulucenabarros3920
@eliseulucenabarros3920 4 года назад
begin in 2:43
@auntiecarol
@auntiecarol 4 года назад
Ca. 24:00 ... a compiler bug that deletes the source code (only on Windows) == hilarious!
@daweiliu6452
@daweiliu6452 7 лет назад
The same slide has been used many times...
@ziconghuang7139
@ziconghuang7139 3 года назад
I hope Haskell the cat is still alive and well...
@jasenq6986
@jasenq6986 Год назад
threshold of immortality... very true lol
@NotYourArmy666
@NotYourArmy666 9 месяцев назад
Could you please add automatic subtitles?
@haesklar3635
@haesklar3635 3 года назад
13:13 is so funny lmao
@thomashanson3476
@thomashanson3476 3 года назад
Came in as common rabble, left feeling distinguished
@daweiliu6452
@daweiliu6452 6 лет назад
fix error in ghci doesn't work
@benkorb6359
@benkorb6359 6 лет назад
dawei liu import Data.Function first
@benterrell9139
@benterrell9139 5 лет назад
His mode of speech is a little like Michael Palin, I find it absolutely delightful.
@NurfHerderEclipse
@NurfHerderEclipse 3 года назад
"...just ahead of ActionScript. Whatever that is?" Ha ha..
@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
@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.
@broyojo
@broyojo 3 года назад
oh god comic sans
@georgen9755
@georgen9755 Год назад
it is never spj ???
@williamrusnack6829
@williamrusnack6829 6 лет назад
What does he mean by F lambda at 42m ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-re96UgMk6GQ.htmlm
@DenisG631
@DenisG631 4 года назад
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.
@traderphil8006
@traderphil8006 6 лет назад
Who else is here thanks to Charles Hoskinson?
@TheBill9901
@TheBill9901 6 лет назад
Phil ipp me
@Ron-hl3op
@Ron-hl3op 4 года назад
me!
@sidcoolguy7
@sidcoolguy7 3 года назад
me too
@shakeel2473
@shakeel2473 3 года назад
Count me in!
@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 6 лет назад
White and mostly male? Majority still look like that.
@juliocardenas4485
@juliocardenas4485 2 года назад
“Alumni will exercise they right to dine the hall” 🙄
@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 😁.
@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!)
@Yetipfote
@Yetipfote 3 года назад
No wonder the audience sits in the back lazily :)
@MrAbrazildo
@MrAbrazildo Год назад
31:32, *WI(T)H.
@dmytroskryzhevskyi3032
@dmytroskryzhevskyi3032 3 года назад
Sponsored by Microsoft
@balv1846
@balv1846 4 года назад
STOP HOOGLE plaese
@redpepper74
@redpepper74 Год назад
What’s wrong with Hoogle?
@kahnfatman
@kahnfatman 3 года назад
ELM-lang puts Haskell to shame.
@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
@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.
Далее
Simon Peyton Jones - Haskell is useless
6:23
Просмотров 365 тыс.
Задержали в аэропорту
00:56
Просмотров 47 тыс.
ОБНОВАА?? ЛУТАЕМ МЕГАЯЩИКИ
3:12:14
Просмотров 319 тыс.
Debunking Haskell Myths and Stereotypes
10:04
Просмотров 10 тыс.
"The Mess We're In" by Joe Armstrong
45:50
Просмотров 377 тыс.
Haskell is Not For Production and Other Tales
38:19
Просмотров 100 тыс.
A Crash Course in Category Theory - Bartosz Milewski
1:15:14
From Rails to Elm and Haskell - Richard Feldman
52:18
Задержали в аэропорту
00:56
Просмотров 47 тыс.