Тёмный
Curry On!
Curry On!
Curry On!
Подписаться
Sebastian Blessing - Run, actor, run
41:29
5 лет назад
Philip Wadler - Plutus and Marlowe
45:32
5 лет назад
Комментарии
@sanjuktareddy9057
@sanjuktareddy9057 Месяц назад
Very welll explained, thank you!
@joboboho
@joboboho Месяц назад
What if Bird Watch wasn't relentlessly positive, is it significant that this model is grow only? I can't think of a reason why a decrement button and negative values wouldn't work in this model
@wolpumba4099
@wolpumba4099 2 месяца назад
*Summary* * *[**0:00**] Main Idea:* Unix-like systems are stuck in the 1970s design. We need to evolve Unix, not just layer things on top. * *[**1:14**] Motivation:* * Modern technology often builds upon outdated foundations, leading to a fragmented and complex ecosystem. * We can achieve a more dynamic and powerful system by enhancing the core infrastructure instead of endless layering. * *[**3:55**] Inspiration: Smalltalk:* * Smalltalk offers a dynamic and reflective environment where introspection and live programming are natural. * Liballocs aims to bring similar capabilities to Unix. * *[**4:43**] Introducing Liballocs:* * A runtime library and toolchain extension that enriches Unix with: * Type information for memory. * A generalized concept of allocation. * Enables features like runtime type checking, dynamic inspection, and live updates. * *[**5:26**] Enhancing Unix Introspection:* * Extends the basic memory mapping view provided by `/proc` with a hierarchical allocation tree. * This tree exposes the relationships between different allocators (stack, heap, dynamic linker, etc.) and their managed memory regions. * *[**7:02**] Introducing Types:* * Associates type information with lower levels of the allocation tree, providing meaning to previously opaque bytes. * This information is generated by liballocs tools and available at runtime. * *[**12:57**] Meta Level API:* * Provides a uniform interface to query properties of arbitrary memory locations. * Queries are dispatched to the appropriate allocator for handling. * Enables generic introspection and manipulation across different memory regions. * *[**14:11**] Demo:* * Showcases liballocs' ability to identify and describe various memory regions: functions, heap chunks, stack frames, and even the auxv vector. * *[**19:03**] Performance Overhead:* * Liballocs introduces minimal runtime overhead (< 5%) for most programs. * Some custom allocators might require specific optimizations for efficiency. * *[**23:03**] Towards Live Updates:* * Identifies challenges for dynamic updates in C/Unix environments, such as handling custom allocators and interior pointers. * Highlights how liballocs' enhanced memory model addresses these limitations. * *[**27:13**] Source Files as Part of the Image:* * Proposes bundling source code into binaries for easier access and manipulation at runtime. * This facilitates live updates and other dynamic features. * *[**36:54**] Taking Over User Space:* * Suggests creating a custom or extended dynamic linker to gain early control of the user space. * This allows more powerful manipulations and tighter integration of liballocs with the system. * *[**39:35**] Biggest Obstacle: Compiler Limitations:* * The lack of complete pointer information from optimizing compilers hinders the accuracy of introspection and liveness. * Future research needs to address compiler pass design for better debug information preservation. *Key Takeaways:* * Liballocs is a step towards evolving Unix to be more dynamic and reflective. * The approach focuses on extending existing mechanisms rather than replacing them. * Compiler improvements are crucial for fully realizing liballocs' potential. i used gemini 1.5 pro
@deadmarshal
@deadmarshal 2 месяца назад
Lua is awesome.
@yifumao1379
@yifumao1379 2 месяца назад
Nice talk. This reminds me of stuck macros seen in another video. It's nice to have the power of both the type systems and macros.
@vinitsunita
@vinitsunita 3 месяца назад
Awesome explaination. Though example of global counter is pretty simple as we can assume that counter will never decrement and max function can be safely used for merging and it can be considered as source of truth
@rogergalindo7318
@rogergalindo7318 3 месяца назад
i just noticed that all his talks are made with comic sans love it lol
@AlexRodriguez-gb9ez
@AlexRodriguez-gb9ez 3 месяца назад
Can you build compilers to convert profunctor optic code into low-level pointers, and can you use profunctor optics to build getters/setters for custom type of variables?
@zz-oq2dt
@zz-oq2dt 4 месяца назад
Best presentation for CRDT
@vapourmile
@vapourmile 4 месяца назад
I have played around with TLA+ and tried some of the demonstration exercises in the tutorials online. My big question about it is: Why don't people use it? It seems like a good idea, on the face of it, but after an initial burst of interest it seems to have died and nobody in computing talks about it.
@chmod0644
@chmod0644 4 месяца назад
It's called Raku now, and I love it :)
@flwi
@flwi 5 месяцев назад
What a great talk!
@zz-oq2dt
@zz-oq2dt 6 месяцев назад
very clear presentation!! good job!
@the_nurk
@the_nurk 7 месяцев назад
this is the way
@rkalyankumar
@rkalyankumar 7 месяцев назад
Isn't the least upper bound like finding lowest common ancestor in a tree data structure?
@RubenMoor
@RubenMoor 8 месяцев назад
"Polymorphism!". I didn't see it coming and the suspense was killing me.
@gaminggaming-bx6em
@gaminggaming-bx6em 8 месяцев назад
This is greatest lang that was made man . Idk why I know about it today. Ruby syntax and go features it's a killer
@isaacvandoren4733
@isaacvandoren4733 8 месяцев назад
This is super cool!
@getpunned
@getpunned 9 месяцев назад
I wish he explained what reachability is before mentioning it... great talk though
@ashrah_mk1
@ashrah_mk1 10 месяцев назад
java cript
@craftvscruft8060
@craftvscruft8060 11 месяцев назад
Can't believe I'm just hearing about Rascal, this is really cool
@AnkitPandey-ft8jb
@AnkitPandey-ft8jb Год назад
Amazing talk! loved it.
@HerrHafiz
@HerrHafiz Год назад
30:48 yellow robot
@laughingvampire7555
@laughingvampire7555 Год назад
pthreads is more for making event loops than for processing requests.
@dengan699
@dengan699 Год назад
I feel like this talk paints unnecessary grim picture. It is possible de verify LARGE body of software, e.g Sel4 kernel, or CompCert. Those aren't toy 100-liners of python. Yes, fundamentally, complexity is still there, but people have managed to handle it to produce something beyond "unit-tested, so it works"
@whiskeytuesday
@whiskeytuesday Год назад
Sometimes I'm partway through a video like this and I suddenly realize "wow, I am in a SMALL demographic"
@ymaysernameuay1113
@ymaysernameuay1113 Год назад
Writing <= instead of R was bad pedagogy enough, but to make the relation <= too is just shockingly bad. Some people were just not meant to teach.
@AldousD
@AldousD Год назад
Why R? Writing <= is the norm in order theory when talking about semilattices. Take a look at an order theory book or even the wikipedia article on semilattices.
@zzzyyyxxx
@zzzyyyxxx Год назад
Funny that Evan was right in the high level details like needing a typed JS, but not in the lower level details. TypeScript won precisely because it doesn't start off as intimidating for JS users, while others like Reason and Elm died off, but ironically TS is way more complex than either of the others in its type system.
@dimicdragan5922
@dimicdragan5922 Год назад
You can use web workers to "multithread" in JS
@kamilziemian995
@kamilziemian995 Год назад
Interesting talk.
@kamilziemian995
@kamilziemian995 2 года назад
Great presentation. In some sense I'm becoming fan of Jan Vitek.
@kamilziemian995
@kamilziemian995 2 года назад
Go language seems to be created to invalidated some of Stroustrup's points in this presentation.
@kamilziemian995
@kamilziemian995 2 года назад
23:54 Dragon wins in 99%.
@kamilziemian995
@kamilziemian995 2 года назад
What a story, full of ups and downs. I wish that he would publish his memories, "Life with compilers" or something like that.
@kamilziemian995
@kamilziemian995 2 года назад
I love his talks, even when I don't understand 50% of them. It only show how little I know.
@a46475
@a46475 2 года назад
The fundamental confusion at the base of the functional programming paradigm is that they don't understand what a function is mathematically. A function is NOT a computation. A function is a SET of ordered pairs. A type of relation among other types of relations. A set doesn't have runtime and so saying real function have no side effects is meaningless nonsense. A program is not a function. We can model a function with a program and we can model certain programs with functions but the two are not the same. This confusion I think stems from how functions are introduced to students as some kind of abstract machine that takes an input x and spits out an output y. A function is not a machine. This is not helped by the common reference to program procedures as "functions". A program may model a function of all we look at is the input and the output. What files it logs to or emails it sends during execution is irrelevant; it still models the function.
@iamtheV0RTEX
@iamtheV0RTEX 2 года назад
I feel like this talk plays a serious "no true scotsman" with functional programming. Obviously Haskell is like, maximum pure functional programming. But Erlang/Elixir are also functional programming in the sense that they do not have classes and use immutable data structures; while they allow IO within the context of an otherwise pure function, they do not allow the mutating of any shared state, allowing for massive concurrency using their BEAM VM. And further along the spectrum you have Rust, which is very much an imperative language and yet also clearly is borrowing a lot of functional ideas, with immutability-by-default, an algebraic type system, and base language support for the Option and Result monads. Drawing a line between "pure functional" and "imperative languages" is a false dichotomy, the functional paradigm and the imperative paradigm are just two different ways of framing the same logical behavior and often the right answer is somewhere between the two.
@cbrunnkvist
@cbrunnkvist 2 года назад
At @16:40 - realistic at the hello-world level, "had no idea what was going on but able to add a feature" is difficult at scale without eventually cooking up a bowl full of copy-pasta, irrespective of language specifics.
@zwanzikahatzel9296
@zwanzikahatzel9296 2 года назад
is this the same guy who gave the "Ron Pressler - Loom: Bringing Lightweight Threads and Delimited Continuations to the JVM" talk? why does he speak with an american accent here, but with a british one in the other??? what's with the fake accent?
@mdtanveerhasan1453
@mdtanveerhasan1453 2 года назад
Why do you care
@zwanzikahatzel9296
@zwanzikahatzel9296 2 года назад
@@mdtanveerhasan1453 I'm a linguist, these things interest me A LOT
@SebastianSastre
@SebastianSastre 2 года назад
So every inspector of the object has N presentations that each have one specific interpretation of it, inspired, for example, by usefulness (utilitarianism) to provide a meaningful presenter of it.
@tudorgirba9120
@tudorgirba9120 Год назад
Yes :). In the meantime, many more parts of the environment are extensible and enable the idea that every interaction with a software system should happen through an experience dedicated to that specific context.
@kamilziemian995
@kamilziemian995 2 года назад
Cliff Click is one of my computer sciences heroes.
@Verrisin
@Verrisin 2 года назад
33:50 - what??? - the bottom one is clear, and you can easily see what is going on. The top one is so scattered, it's super hard to comprehend. Why would anyone want that??? - If things are close together, my brain can parse multiple lines at once, and I quickly see a lot. In the top one, I have to spend so much effort looking through it and _finding_ stuff....
@Verrisin
@Verrisin 2 года назад
I agree that it's bad for git-blame ... but that NOWHERE as big a deal as actually working with it. - Maybe the _file_ format can be different from what is shown? - Make it extremely regular for git, and edit bidirectly transformed version of the code? but you know, one that is _possible_ to code with... - It's stated over and over: Code for reading first. Not for the computer...
@Verrisin
@Verrisin 2 года назад
let x = 5 y = 7 in ( x, y ) THIS is the official format .... WTF ?? How am I supposed to take this seriously ??
@Verrisin
@Verrisin 2 года назад
well, it seems like TypeScript won ... I guess people don't like change, improvements ... but it's not like there aren't many options.... It's just that everybody is still using the same JS ... now just with added types (usually ad-hoc in separate files)
@zzzyyyxxx
@zzzyyyxxx Год назад
TypeScript is even more powerful than Elm though, so I like that it won. You can do a lot of stuff with string types, and even fp-ts.
@Verrisin
@Verrisin Год назад
@@zzzyyyxxx TS does have a lot of nice stuff, but it doesn't change that it's based on poor core of JS. I don't like Elm, but it's strictness does have some benefits. TS has zero strictness. - The improvements in TS could have been a lot better if it allowed types to have effect on runtime code, for example. - there is ReScript which again has some nice features, but misses other. - Nothing is great, so I understand that people just stuck with JS but ... calling it "more powerful" as a better thing is wrong. Elm being "less powerful" was a feature. In my opinion, some more power would have been good, but to keep it "good/safe" it would have to be less simple, and apparently, most programmers cannot handle it ... see Go and Dart or other google products ... they focus on simplicity over features. - Joke is that at this point, JS is not simple at all, yet everybody approaches it with that mentality...
@majorhumbert676
@majorhumbert676 Год назад
A huge problem with typescript is that it requires you to be disciplined to write correct code; the type system only gets you so far. And even if you are disciplined, the libraries that you'll end up using will be prone to errors and breaking changes in minor versions.
@akis854
@akis854 2 года назад
Simon Peyton Jones getting to the bottom of it relentlessly 😂
@MCRuCr
@MCRuCr 2 года назад
Python is the glue for the underlying c/c++ libraries. Thats exactly how I thought about it also
@venkatapavankumarsannisett2259
@venkatapavankumarsannisett2259 2 года назад
Awesome Talk very well explained with an example. Would love to see other CRDT examples :).
@a0um
@a0um 2 года назад
That sounds like a dream to me.
@AlesNajmann
@AlesNajmann 2 года назад
This is a very good talk
@andyw732
@andyw732 2 года назад
Im probably missing the whole point, but I’ll ask my question anyway. I don’t understand what this talk could possibly have taught people? I expected to see how to use F# to generate SQL, and then use this. I expected something like Common Lisp macro’s to be honest, or how to create our own ORM library. But this talk doesn’t define the “run” and “database” functions at all. So I’m probably just missing the point 😅 hope someone can answer my question and point me to materials I might need to read up on to better grasp this video.
@jajaperson
@jajaperson 2 года назад
mow still not mainstream :((((