Тёмный

Exploring Verse, Haskell, Language Design and Teaching (with Simon Peyton Jones) 

Developer Voices
Подписаться 20 тыс.
Просмотров 16 тыс.
50% 1

This week we talk to Simon Peyton Jones, a veteran language designer and researcher, and key figure in the development of Haskell. Haskell. Simon has made countless contributions to advancement of functional programming, and computer programming in general, and is currently working at Epic Games, working on the foundations of their new programming language, Verse.
We discuss how programming languages are made, focussing on a big design idea from both the Haskell and Verse: building a large language from a small, tightly designed core. Then we move into Simon's current work exploring Functional Logic Programming, the big new idea that underpins Verse. It's an idea that blends the fundamentals FP with the core ideas of logic languages like Prolog in an entirely new way. Not even Simon knows exactly where the idea will lead, but it's a fascinating idea that could potentially bring constraint-solving and deduction right into the heart of modern software.
Additionally, Simon discusses his involvement in reshaping the way we teach computing in England. He's been working hard to give computing education the same importance as the teaching of mathematics and sciences - something we should all have a fundamental understanding of.
Simon's one of the smartest, nicest people in programming. Come as hear his brilliant brain at work. :-D
--
Verse: github.com/UnrealVerseGuru/Ve...
The Verse Language Reference: dev.epicgames.com/documentati...
The Verse Calculus [pdf]: simon.peytonjones.org/assets/...
en.wikipedia.org/wiki/Simon_P...
The LogicT monad: hackage.haskell.org/package/l...
Can programming be liberated from the von Neumann style?: dl.acm.org/doi/10.1145/359576...
CAS - Computing At School: www.computingatschool.org.uk/
Computer Science Teachers Association: csteachers.org/
Kris on Twitter: / krisajenkins
Kris on LinkedIn: / krisjenkins
--
0:00 Intro
3:13 Haskell & Small Core Design
17:07 Verse & Functional Logic Programming
1:05:15 CAS & Teaching Future Programmers
1:21:50 Outro
#programming #programminglanguages #softwaredevelopment #podcast #haskell #verse #verseprogramminglanguage

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

 

29 июл 2024

Поделиться:

Ссылка:

Скачать:

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

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 71   
@vikingthedude
@vikingthedude 6 месяцев назад
This quickly became one of my favourite tech podcasts. It's crazy how much these videos align with my interests.
@kirylvalkovich
@kirylvalkovich 6 месяцев назад
+100
@AnitaSV
@AnitaSV 5 месяцев назад
Yes, rare find, and I binge all these :)
@havokgames8297
@havokgames8297 4 месяца назад
Likewise! I've been browsing youtube for months wondering what I was missing out on. And then I stumbled on this and I've just binged it every day at work.
@IgorGuerrero
@IgorGuerrero 2 месяца назад
I wanna thank you Kris, as a compiler nerd, for all the beautiful conversations you share with us, the best Simon Peyton Jones and, recently, Chris Lattner, both of these interviews are worth rewatching.
@qwfp
@qwfp 4 месяца назад
While you were talking about Verse, I had trouble understanding why Epic Games would choose to do a functional logic programming language for scripting for Fortnite and UE. But then SPJ said that Tim Sweeney is a geek who has been thinking about it for two decades and is convinced that this is the best way to write software - and it all made sense!
@maxrinehart4177
@maxrinehart4177 3 месяца назад
Well, Tim is a programmer first and foremost before becoming a CEO, unlike the new wave of tech CEOs whos backgrounds are business, marketing or other no techy majors. He is one of the OG ones where only geeks would be interested in the tech field.
@orbatos
@orbatos Месяц назад
In addition to the other comment, consider the target use for verse by Epic itself. Game engines (or indeed whatever you do with UE these days) often suffer from imperative constraints in ways than less complex structures do not. This is most game logic is at least contextually single threaded, which has additional performance issues. I think that for Sweeney this works out to something that satisfies his engineering itch, while also experimentally approaches addressing real design problems.
@user-tx4wj7qk4t
@user-tx4wj7qk4t 15 дней назад
Why? Because it's better
@user-tx4wj7qk4t
@user-tx4wj7qk4t 15 дней назад
​@@maxrinehart4177why do you guys always need to insult. Being interested in the greatest invention known to man isn't "geeky".
@spacewad8745
@spacewad8745 6 месяцев назад
it's the man himself! thank you Kris ❤️
@DeveloperVoices
@DeveloperVoices 6 месяцев назад
The phrase "living legend" definitely applies. 👑😁
@havokgames8297
@havokgames8297 4 месяца назад
@@DeveloperVoices now get John Carmack!
@BrianMcKennaPuffnfresh
@BrianMcKennaPuffnfresh 6 месяцев назад
Fantastic interview. Love to hear SPJ talk about anything, but I especially love hearing about Verse! It's a bit surreal hearing SPJ talk about Fortnite, but as Kris says at the beginning, Verse is a trojan horse. Exposing the practicality and beauty of functional programming to thousands of kids and gamers. Love it! ❤
@elirane85
@elirane85 12 дней назад
This Verse thing sounds super interesting. From what I gathered, it sounds like you keep adding "asserts/constraints" to a structure until you narrow down the level of "uniqueness" from the solution you want. This whole logical programing (functional or not) is something I've only heard about, but now I really want to actually try it out myself.
@ontoverse
@ontoverse 10 дней назад
For anyone who wants to implement a functional language, just follow SPJs book "Implementing Functional Languages" (including chapters by some other legends of CS). It basically is a step by step tutorial on how to implement Miranda/Haskell. It's truly a landmark book. That book and the paper "Practical type inference for arbitrary-rank types" it's pretty much "all you need" for designing and implementing advanced functional languages.
@sergioabreu-g
@sergioabreu-g 5 месяцев назад
Simon is brilliant and he really loves what he does, he is truly admirable! I discovered your channel recently and I'm so glad I did, I've always missed in-depth programming content on RU-vid.
@maxmustermann5590
@maxmustermann5590 2 месяца назад
Cant commend this channel enough. Absolutely great work, lovely guests, lovely host. Also love your nails Kris
@DeveloperVoices
@DeveloperVoices 2 месяца назад
Thanks! On both fronts! 😁
@towel9245
@towel9245 5 месяцев назад
Enthralling subject matter. At the risk of boiling it down to the point of losing some nutrients, the idea of extending a type system from "o is T" to "o satisfies a functionally determined contract T" is super powerful. Simon is a great speaker, and makes theory feel like an exciting frontier. I didn't have any interest in Verse before, but now I'm looking forward to a chance to try it, whether in Unreal or standalone. Thanks for both of your time and thoughts!
@liquidmobius
@liquidmobius 6 месяцев назад
Very interesting! And perfect timing! I've recently begun exploring functional programming with OCaml, and I really love the functional paradigm and the thought process of functional programmers. For me it's very concrete and easy to grasp. Being on the low end of an intermediate programmer, I think this is also why a lot of people start to learn programming but never stick with it. They probably saw a Python tutorial and so started to learn Python OOP, when their thought process and comfort could be more aligned with the functional paradigm. That's why I always encourage new programmers to take a survey of languages course to find what language and paradigm best suits them.
@delibellus
@delibellus 6 месяцев назад
Functional programming clicks with me, but I'll keep learning C because of what I'm interested in doing. I always read that C is beautiful but that is not how it felt to me right from the beginning.
@liquidmobius
@liquidmobius 6 месяцев назад
@@delibellus It certainly depends on what you're trying to do. C is the very first language I started with and learned, although I'm definitely no expert. I would say people who start with C or a similar lower-level language understand programming much better than people who start with very abstracted, garbage-collected languages.
@GreeneThumbs
@GreeneThumbs 5 дней назад
I've been greatly enjoying the interviews, Kris! You ask good questions and give space for guests to answer them. This was an especially fun interview to watch.
@DeveloperVoices
@DeveloperVoices 5 дней назад
Thanks George! That one was a particular pleasure to record - Simon's an absolute legend. 🤩
@cryptonector
@cryptonector Месяц назад
I know of three logic programming languages: Prolog, Icon, and jq. jq is also a functional programming language, arguably, though jq is a bit of a toy (though a very useful toy!). To me Verse sounds like it shares a lot with Icon and jq: pervasive generators and backtracking, any values as truth / failure as falseness (in Icon in particular).
@jrockenjoyer
@jrockenjoyer 6 месяцев назад
What a timing :d Very excited to listen to this, recently started getting more and more into FP (haskell), currently using it mostly for CLI/TUI apps :)
@scottdrake5159
@scottdrake5159 5 месяцев назад
Wow, this is an amazing channel. Amazing interview. Thank you!
@fhools
@fhools 5 месяцев назад
I'm so glad I found this awesome channel! Very cool stuff guests and a wide range of topics
@gaboralexnagy5609
@gaboralexnagy5609 28 дней назад
First of all, love the channel! I was looking for content like this and thank the celestial rewrite rules that I found it. Second, I have a basic question about functional logic programming to anyone who has the answer. In functional programming, our basic abstraction and means of computation is function application. We know how that can be done as there is plenty of literature on mapping the work of Church and Curry to the world of building functional compilers and interpreters (or just look up how apply+eval works in Lisps :) ). But in the world of functional logic programming, instead of N-ary functions, we have N+1-ary relations, and say I define the relational version of the map function (in a miniKanren-like syntax, modified a bit to decreate "jargon" for legibility): (define-relation map° [f xs ys] (disjunction (conjunction (== xs empty-list) (== ys empty-list)) (conjunction (exist [x xs' y ys'] (cons° x xs' xs) (apply° f [x] y) (cons° y ys' ys) (map° f xs' ys'))))) Looks like a straightforward translation of something like the naive Haskell version of map. But the key thing here is apply°, the relational equivalent of function application. My big problem is that I cannot imagine how to implement apply°. Any implementation I try to come up with, I just cannot find a proper algebra for treating f as the proper logic variable that can be passed around like this (hence the "higher order" phrase I keep using) and would work properly with unification in its environment and would also lead to values evaluated like a regular function would (again, tying back to unification). In addition to this, I don't even know if apply° should be implemented at this level, or at the constraint level (but that doesn't seem constructive on the face of it, as arbitrary function application very much does not seem like a finite domain). In a similar vein, how is an anonymous relation defined and implemented? I wonder how Verse implements this and if anyone can point me to literature where I might find the solution to this. I must admit I feel a bit like a fool, but my computer science background is quite limited in this area.
@TheHubra
@TheHubra 6 месяцев назад
im not quite done watching this but I have been having a good time watching. Good work!
@Browsinghard
@Browsinghard 5 месяцев назад
Truly some of the most insightful and thoughtful computing content on RU-vid. Far prefer this over the other channels with many subscribers who don’t do much aside from reading through online articles.
@AdrianBoyko
@AdrianBoyko 6 месяцев назад
I love Prolog and recently finally learned CLP, but I’ve never found an excuse to dig into functional-logic programming. It seems like all his logic programming examples are all better solved by CLP(FD). Wow, he just mentioned Icon which was my favorite language back in the 90s.
@kahnzo
@kahnzo 5 месяцев назад
Truly a great interview. Thank you!
@virkony
@virkony 6 месяцев назад
Yay! That's really cool that there is language backed not only be researches. Those Curry, Mercurry, Ciao Prolog doesn't seem to have enough steam.
@brazenintellect364
@brazenintellect364 3 месяца назад
Its always enlightening to listen to SPJ. Thanks for making this happen Kris 🧡
@mlliarm
@mlliarm 5 месяцев назад
What an amazing channel !!! ❤❤❤
@user-nf6jn1hz9i
@user-nf6jn1hz9i 5 месяцев назад
amazing interview
@user-zy5yo4lp5g
@user-zy5yo4lp5g 6 месяцев назад
wow this is such a treat!!!
@anatolyangst7587
@anatolyangst7587 5 месяцев назад
I'm only halfway through the video, and obviously very excited with the subject and the guest, but wanted to point out that I really admire the host as well! Very pleasant and somehow refreshing language, gonna check out more videos definitely! High quality stuff
@DeveloperVoices
@DeveloperVoices 5 месяцев назад
Thank you. SPJ's an absolute legend. If I can stand next to him and look even half-decent, I'm winning. 😁
@ymi_yugy3133
@ymi_yugy3133 4 дня назад
What are the fundamentals of computer science and should they be taught instead or in addition to the practical skills, like PowerPoint?
@oussamlarkem9407
@oussamlarkem9407 5 месяцев назад
I am thinking of Alan Perlis' Quote "LIPS programmer know the value of everything and cost of nothing". If you abstract away execution details, you are making a tradeoff that makes the programmer's life easier when those details can be ignored, while making the programmer's life much harder when they can not be ignored. I find this to be pretty prounouced in Prolog where the language encourages the programmer to only state what they want, when in practice, the programmer has to think about the process that will ensue from the request, and when there is a disonnace between the way the programmer think and what they write, things become messy. If you are going to abstract away something from me, you better be sure that you can deal with the details yourself.
@kenneth_romero
@kenneth_romero 6 месяцев назад
1:09:00 what a great talk on the perspective of how to better teach computer science and make it concrete. reminds of the white papers i've been reading play and education in general. you should get jonathan blow on to talk about jai and games for education.
@nicklatcham
@nicklatcham 4 месяца назад
Simon just seems like such a nice and genuine person. Awesome stuff!
@DeveloperVoices
@DeveloperVoices 4 месяца назад
He really is. ❤️
@pooroldnostradamus
@pooroldnostradamus 5 месяцев назад
50:34 Isn't what Simon is describing just a dependent type of sorts? You have properties/predicates that you want and can define a type that includes only objects that have this property. (Fortnite should probably use Agda instead /s)
@paulsnively3377
@paulsnively3377 5 месяцев назад
Almost. Part of the inspiration is a system called "Ontic," which originated the "single semantic category for types and terms" in the sense Verse uses, and also Jason Hickey's work on "Very Dependent Types." One difference is that Verse's type system doesn't make the "closed world" assumption. That is, it can't make global consistency claims. It can only say something like "given all the code I have access to, at least IT is consistent."
@pooroldnostradamus
@pooroldnostradamus 5 месяцев назад
@@paulsnively3377 I'm not sure I understand the distinction between global and local (?) constraints on types.
@paulsnively3377
@paulsnively3377 11 дней назад
@@pooroldnostradamus Right. The most common (at least in type theory terms...) way to put it is there are two interpretations of "types," "Church types" and "Curry types." In the Church view, types define the semantics of the program: no types, no meaning. In the Curry view, an untyped program may very well have a meaning, and when you type that program, we hope and expect that the types reflect that meaning. When you stop and think about it, though, the Church view is unrealistic in a distributed setting: you can't know whether the "whole program" typechecks, because YOU don't have the "whole program," and in fact the "whole program" will change over time. So the Curry view it is! Now the wrinkle is that it's still the case that you don't have the "whole program." New bits will come and go; your own code will change in ways relevant to the types, etc. So all you can say in a distributed system from the Curry view is that, at any given moment in time, the (distributed) "program" you DO know about is consistent (in the logical sense implied by the Curry-Howard correspondence). The Verse verifier will provide "verification" in that sense.
@stretch8390
@stretch8390 Месяц назад
I havent finished this video yet but im not sure i get the appeal/motivation for the functional logic programming. Isnt that what we already do, write functions with names that abstract the algorithm and return a result such that we dont have to understand the algorithm to use the function re. Example of x**2?
@guyblack9729
@guyblack9729 6 месяцев назад
In a just world Simon Peyton Jones would be the only person who is allowed to use comic sans.
@havokgames8297
@havokgames8297 4 месяца назад
If you have a line to Simon, I would be interested to know if there exists a version of CAS here in New Zealand. That part of the talk really resonated with me.
@johanngambolputty5351
@johanngambolputty5351 4 месяца назад
There was an interesting point about not being able to see the "what" immediately of an imperative program, i.e. to identify that a square root program is trying to compute the square root, whereas in a declarative program its the starting point, so you can just read it. But couldn't you equally say that in a declarative program, the "how" is not immediately obvious, and perhaps even hidden from you, whereas in an imperative program, its the starting point, so you can just read it...
@antonf.9278
@antonf.9278 4 месяца назад
I think they should have talked more about the differences between normal logic programming and functional logic programming.
@tylercloutier537
@tylercloutier537 6 месяцев назад
I can't believe it! I feel honored to have been on the same podcast as SPJ!
@tylercloutier537
@tylercloutier537 6 месяцев назад
You look just as excited as I would be introducing him
@DeveloperVoices
@DeveloperVoices 5 месяцев назад
Ha, yeah, and that's me trying to keep it together. 😉
@maxmustermann5590
@maxmustermann5590 2 месяца назад
It's so funny that turing machines which depend so deeply om state and lambda calculus which doesn't know state can be proven to be equivalent
@orbatos
@orbatos Месяц назад
It's more that a turing machine is a description of state. If you look at it that way it's simply an alternate proof of the same things.
@BboyKeny
@BboyKeny 5 месяцев назад
I've been wondering for a few years whether our Harvard/Vonn Neumann Machine architecture is a bottleneck for Lambda Calculus.
@scottdrake5159
@scottdrake5159 5 месяцев назад
ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-UBgam9XUHs0.html Regarding "types" and verification: I wonder if SPT kept up with testing in Haskell, like quickCheck and property-based testing in general. And I wonder if SPT and Sweeney have thought about categories and homotopy. I'm sure he must have encountered "Computational Trinitarian" thought over the years... Thanks again for the great interview.
@insertoyouroemail
@insertoyouroemail 5 месяцев назад
Beta reduction is inlining. Functional logic programming is the amb operator in lisp.
@richcole157
@richcole157 5 месяцев назад
Teach kids programming with small talk but modernize the environment first. It was great in the 80s but is dated now.
@risist4502
@risist4502 21 день назад
Soo this whole buzz on verse is based on a feeling and "tim was always right" (he wasn't but whatever ) Yikes. It tries to solve no problem, just force a lot of people to deal with it because it's "cool"
@mariobroselli3642
@mariobroselli3642 4 месяца назад
Too bad he didnt say how new simpler functional languages could become Mainstream. I am already losing count of them: roc, gleam,..
@AtomSymbol
@AtomSymbol 5 месяцев назад
Purely functional programs are fundamentally slower than imperative programs by a factor of O(log(N))
@DeveloperVoices
@DeveloperVoices 5 месяцев назад
Erm...do you have a reference for that? 🤔
@gamerzero6085
@gamerzero6085 5 месяцев назад
Yes of course, if we expect that we are writing some kind of functional assembly language or some bs... Functional languages still have compilers, they can produce low-level instructions no better or worse than any high-level imperative language for similar algorithms.
@jondor654
@jondor654 6 месяцев назад
FLiP. Is it
@cliffg5549
@cliffg5549 2 месяца назад
I have played with core.logic in Clojure which sounds quite similar to Verse?
Далее
Is Odin "Programming done right"? (with Bill Hall)
1:00:05
NOOOOO 😂😂😂
00:15
Просмотров 4,5 млн
Rust & Zig Combined • Richard Feldman • GOTO 2023
45:34
Designing Actor-Based Software (with Hugh McKee)
1:12:03
How to read Haskell code (in 7 minutes)
6:51
Просмотров 56 тыс.
Taking Erlang to OCaml 5 (with Leandro Ostera)
1:03:57
Simon Peyton Jones - Haskell is useless
6:23
Просмотров 367 тыс.