- 4 417
- 1 264 071
ACM SIGPLAN
United States
Приєднався 18 лис 2018
Special Interest Group on Programming Languages
The ACM Special Interest Group on Programming Languages (SIGPLAN) explores programming language concepts and tools, focusing on design, implementation, practice, and theory. Its members are programming language developers, educators, implementers, researchers, theoreticians, and users.
All videos published on this channel are Copyright 2022-24 ACM.
Please email SIGPLAN-AV for video take down requests or corrections.
The ACM Special Interest Group on Programming Languages (SIGPLAN) explores programming language concepts and tools, focusing on design, implementation, practice, and theory. Its members are programming language developers, educators, implementers, researchers, theoreticians, and users.
All videos published on this channel are Copyright 2022-24 ACM.
Please email SIGPLAN-AV for video take down requests or corrections.
[Scheme24] Challenges in the Design and Implementation of Teaching Languages for EDSLs
Challenges in the Design and Implementation of Teaching Languages for EDSLs (Video, Scheme 2024)
Jason Hemann
(Seton Hall University)
Abstract: Designing and implementing teaching languages for embedded domain-specific languages (EDSLs) present unique challenges. Teaching language sequences provide linguistic support as novices gradually work up to mastery of a full GPL. New EDSL programmers deserve that same kind of support, and EDSL teaching languages should help bridge the gap between the full complexity of the host-DSL multilanguage and a constrained environment in which students can effectively learn and apply core concepts.
This talk explores the specific difficulties inherent in creating pedagogically sound teaching languages. We discuss conceptual and practical obstacles in developing effective teaching languages that scale across multiple levels of abstraction across EDSLs, focusing on the need for precise and informative error messages, domain-specific visualizations, and IDE support as particular issues to address.
Using examples from miniKanren, we illustrate how even carefully-designed languages can pose significant barriers to learners when embedded within a more complex host-and we argue that these hurdles are symptomatic of broader challenges with EDSLs. Building on prior work in language-oriented programming and DSL design, we describe some initial work toward one aspect of a solution.
We conclude with a discussion on how these insights can inform the broader design of EDSLs and teaching languages, with the goal of making them more widespread and useful for students across a range of domains, and explore the broader implications for language workbench technologies and multi-language integration.
Presentation at the Scheme 2024 workshop, Sept 7, 2024, icfp24.sigplan.org/home/scheme-2024
Sponsored by ACM SIGPLAN,
Jason Hemann
(Seton Hall University)
Abstract: Designing and implementing teaching languages for embedded domain-specific languages (EDSLs) present unique challenges. Teaching language sequences provide linguistic support as novices gradually work up to mastery of a full GPL. New EDSL programmers deserve that same kind of support, and EDSL teaching languages should help bridge the gap between the full complexity of the host-DSL multilanguage and a constrained environment in which students can effectively learn and apply core concepts.
This talk explores the specific difficulties inherent in creating pedagogically sound teaching languages. We discuss conceptual and practical obstacles in developing effective teaching languages that scale across multiple levels of abstraction across EDSLs, focusing on the need for precise and informative error messages, domain-specific visualizations, and IDE support as particular issues to address.
Using examples from miniKanren, we illustrate how even carefully-designed languages can pose significant barriers to learners when embedded within a more complex host-and we argue that these hurdles are symptomatic of broader challenges with EDSLs. Building on prior work in language-oriented programming and DSL design, we describe some initial work toward one aspect of a solution.
We conclude with a discussion on how these insights can inform the broader design of EDSLs and teaching languages, with the goal of making them more widespread and useful for students across a range of domains, and explore the broader implications for language workbench technologies and multi-language integration.
Presentation at the Scheme 2024 workshop, Sept 7, 2024, icfp24.sigplan.org/home/scheme-2024
Sponsored by ACM SIGPLAN,
Переглядів: 139
Відео
[Scheme24] Tutorial on Program Transformations
Переглядів 145Місяць тому
Tutorial on Program Transformations (Video, Scheme 2024) Jason Hemann (Seton Hall University) Abstract: I will reprise the tutorial/workshop that Nada Amin and I taught at Lambda Jam and Recurse Center in 2013, which in turn is based on exercises from Dan Friedman’s famous programming languages course at Indiana University. I will guide you in writing your own Scheme-to-C translator by demystif...
[Scheme24] Nocksche and Nocko
Переглядів 114Місяць тому
Nocksche and Nocko (Video, Scheme 2024) James Torre (None) Abstract: We present two novel implementations of the combinator calculus Nock, in Racket Scheme (Nocksche) and miniKanren (Nocko). “Nock” is the computational model underlying the Urbit project, intended to support practical systems programming in a functional language for the Urbit OS, network protocol, and native applications. The No...
[Scheme24] Beyond SICP - Design and Implementation of a Notional Machine for Scheme
Переглядів 143Місяць тому
Beyond SICP - Design and Implementation of a Notional Machine for Scheme (Video, Scheme 2024) Kyriel Abad and Martin Henz (National University of Singapore; National University of Singapore) Abstarct: Computer science education has been at the heart of Scheme from the beginning. The language was designed in the 1970s concurrently with the MIT course 6.001 and the textbook “Structure and Interpr...
[Scheme24] A Teaching Language for Specification
Переглядів 74Місяць тому
A Teaching Language for Specification (Video, Scheme 2024) Cameron Moy (Northeastern University) Abstract: Formal software specification deserves a place in the introductory computing curriculum. Many courses covering software specification use proof assistants that are powerful, but often have a steep learning curve. A great deal of such classes must be dedicated to the peculiarities of using ...
[Scheme24] An Implementation of a Visual Stepper in the GRASP Programming System
Переглядів 87Місяць тому
An Implementation of a Visual Stepper in the GRASP Programming System (Video, Scheme 2024) Panicz Godek (None) Abstract: The direct purpose of this paper - as its title suggests - is to present how the visual evaluator extension is implemented in the GRASP programming system. The indirect purpose is to provide a tutorial around the design of GRASP, and in particular - around the architecture of...
[Scheme24] Scheme on WebAssembly: It is happening!
Переглядів 472Місяць тому
Scheme on WebAssembly: It is happening! (Video, Scheme 2024) Andy Wingo (Igalia, S.L.) Abstract: What would it be like if you could write a program in Scheme and then let anyone on the planet run it? With the advent of new standards in web browsers, this day is finally here: the world is our oyster. In this talk, Andy presents Hoot, a new implementation of Guile that targets WebAssembly. Hoot i...
[FProPer24] HVM2: Iteraction Combinator Evaluator
Переглядів 208Місяць тому
HVM2: Iteraction Combinator Evaluator (Video, FProPer 2024) Victor Taelin, Francisco Javier Grecco Carman, Nicolas Abril, and Enrico Zandomeni Borba (Higher Order Company; unaffiliated; Higher Order Company; Higher Order Company) Abstract: We present a preview of HVM2, an efficient and massively parallel GPU and CPU evaluator for a system of extended Interaction Combinators. When compiling non-...
[FProPer24] Functional Sparse Tensor Compilation
Переглядів 45Місяць тому
Functional Sparse Tensor Compilation (Video, FProPer 2024) Shideh Hashemian, and Amir Shaikhha (University of Edinburgh; University of Edinburgh) Presentation at the FProPer 2024 workshop, Sept 6, 2024, icfp24.sigplan.org/home/fproper-2024 Sponsored by ACM SIGPLAN,
[FProPer24] Fusing Gathers with Integer Linear Programming
Переглядів 29Місяць тому
Fusing Gathers with Integer Linear Programming (Video, FProPer 2024) David van Balen, Gabriele Keller, Ivo Gabe de Wolff, and Trevor L. McDonell (Utrecht University, Netherlands; Utrecht University, Netherlands; Utrecht University, Netherlands; Utrecht University, Netherlands) Abstract: We present an Integer Linear Programming based approach to finding the optimal fusion strategy for combinator...
[FProPer24] A comparison of OpenCL, CUDA, and HIP as compilation targets for a functional array(…)
Переглядів 42Місяць тому
A Comparison of OpenCL, CUDA, and HIP as Compilation Targets for a Functional Array Language (Video, FProPer 2024) Troels Henriksen (University of Copenhagen, Denmark) Abstract: This paper compares OpenCL, CUDA, and HIP as compilation targets for Futhark, a functional array language. We compare the performance of OpenCL versus CUDA, and OpenCL versus HIP, on the code generated by the Futhark co...
[FProPer24] Ribbit with Memory Morphisms
Переглядів 43Місяць тому
Ribbit with Memory Morphisms (Video, FProPer 2024) Thaïs Baudon, Gabriel Radanne, and Laure Gonnord (ENS de Lyon & LIP; Inria; Université Grenoble-Alpes - Grenoble INP - LCIS) Abstract: Now integrated in mainstream languages, Algebraic Data Types (ADTs) have established themselves as a nice way to reason about data structures and their manipulation using pattern matching. However, their use in ...
[FProPer24] Tail Modulo Async/Await
Переглядів 53Місяць тому
Tail Modulo Async/Await (Video, FProPer 2024) Vivien GACHET, Gabriel Radanne, and Ludovic Henrio (LIP, Lyon, France; Inria; University of Lyon - ENS Lyon - UCBL - CNRS - Inria - LIP) Abstract: Tail-calls are an essential feature of functional programming languages: they allow to write iterations in a declarative fashion, using simple recursive functions, unbothered by implementation details suc...
[FProPer24] From C to Comonads to Climate: A Functional Programmer's Journey in Array Programming(…)
Переглядів 100Місяць тому
From C to Comonads to Climate: A Functional Programmer's Journey in Array Programming for Good (Video, FProPer 2024) Dominic Orchard (University of Kent; University of Cambridge) Abstract: During my career so far, I seem to have acquired an ear worm, or perhaps established somewhat of a leitmotif in my work: stencil computations over arrays. This idiom is pervasive in many applications, includi...
[Erlang24] Controlled Scheduling of Concurrent Elixir Programs
Переглядів 28Місяць тому
Controlled Scheduling of Concurrent Elixir Programs (Video, Erlang 2024) Luis Eduardo Bueso de Barrio, Lars-Åke Fredlund, Clara Benac Earle, Ángel Herranz, and Julio Mariño (Universidad Politécnica de Madrid, Spain; Universidad Politécnica de Madrid, Spain; Universidad Politécnica de Madrid, Spain; Universidad Politécnica de Madrid, Spain; Universidad Politécnica de Madrid, Spain) Abstract: We ...
[Erlang24] The Benefits of Tierless Elixir/Potato for Engineering IoT Systems
Переглядів 19Місяць тому
[Erlang24] The Benefits of Tierless Elixir/Potato for Engineering IoT Systems
[Erlang24] Elixir-powered Low-income Animal Shelter Support: an Experience Report from Conception(…)
Переглядів 12Місяць тому
[Erlang24] Elixir-powered Low-income Animal Shelter Support: an Experience Report from Conception(…)
[Erlang24] Is this really a refactoring? Automated equivalence checking for Erlang projects
Переглядів 18Місяць тому
[Erlang24] Is this really a refactoring? Automated equivalence checking for Erlang projects
[Erlang24] Erlang on TOAST: Generating Erlang Stubs with Inline TOAST Monitors
Переглядів 13Місяць тому
[Erlang24] Erlang on TOAST: Generating Erlang Stubs with Inline TOAST Monitors
[Erlang24] Erla+: Translating TLA+ Models into Executable Actor-Based Implementations
Переглядів 49Місяць тому
[Erlang24] Erla : Translating TLA Models into Executable Actor-Based Implementations
[Erlang24] Same same but different: A Comparative Analysis of Static Type Checkers in Erlang
Переглядів 8Місяць тому
[Erlang24] Same same but different: A Comparative Analysis of Static Type Checkers in Erlang
[Erlang24] Unsafe Impedance: safe languages and safe by design software
Переглядів 23Місяць тому
[Erlang24] Unsafe Impedance: safe languages and safe by design software
[miniKanren24] To Be or Not To Be: Adding Integrity Constraints to stableKanren to Make a Decision
Переглядів 11Місяць тому
[miniKanren24] To Be or Not To Be: Adding Integrity Constraints to stableKanren to Make a Decision
[miniKanren24] Six Ways to Implement Divisibility by Three in miniKanren
Переглядів 21Місяць тому
[miniKanren24] Six Ways to Implement Divisibility by Three in miniKanren
[miniKanren24] Improving stableKanren’s Backward Compatibility
Переглядів 6Місяць тому
[miniKanren24] Improving stableKanren’s Backward Compatibility
[miniKanren24] typedKanren: Statically Typed Relational Programming with Exhaustive Matching in(…)
Переглядів 27Місяць тому
[miniKanren24] typedKanren: Statically Typed Relational Programming with Exhaustive Matching in(…)
[miniKanren24] Hosted miniKanren: Reconciling Optimizing Compilation and Extensibility
Переглядів 30Місяць тому
[miniKanren24] Hosted miniKanren: Reconciling Optimizing Compilation and Extensibility
[miniKanren24] A Relational Solver for Constraint-based Type Inference
Переглядів 13Місяць тому
[miniKanren24] A Relational Solver for Constraint-based Type Inference
[miniKanren24] Between Functional and Relational
Переглядів 44Місяць тому
[miniKanren24] Between Functional and Relational
[miniKanren24] Relational Reactive Programming: miniKanren for the Web
Переглядів 30Місяць тому
[miniKanren24] Relational Reactive Programming: miniKanren for the Web
Re: the question asking if there's a way to do intermutability: yeah, raw pointers.
I think the biggest barrier to user modifiable software today is that the target market is perhaps less than 2% of the consumer market. So there isn’t a huge demand for companies like Apple to create such software. However, I do think that user modifiable is necessary and inevitable, but certainly has challenges.
This is really important work. I've spent the year beating my head against provers, and I'm now really convinced by their power but the initial learning curve is so steep
This is the wrong talk!
我如何从钱包中将我的 89 USDT TRC20 提现到币安请帮帮我 12个钱包恢复短语:《pride》-《pole》-《obtain》-《together》-《second》-《when》-《future》-《mask》-《review》-《nature》-《potato》-《bulb》
Incredible work, must have been tough to do all that formalization!
Sound is lost until 4:35
Sound gets fixed at the 9 min mark.
Amazing presentation! Amazing contributions!
Fil-C, if performance is not your problem, you already have many options. It could be nice to 'just port' existing code in non-time critical parts without a total - rewrite in a different language. But most of those have already been re-written, so not sure about it
It's always a fun jumpscare when SPJ is in the audience and asks a question lol
I saw this video after getting plag in 3 out of 5 assignments😭😭😭
As someone who have dabbled in compiler development, I find the Rustlantis talk at 5:40:55 really interesting. If I'll ever want to make my crappy toy compiler with similarly SSA-based IR "production-ready", I'll make sure to use something like that to test it.
Super low sound volume
Noted that yesterday too, but seems to be fine now (at least with Stable Volume)
Great analysis, thank you! I need some advice: My OKX wallet holds some USDT, and I have the seed phrase. (alarm fetch churn bridge exercise tape speak race clerk couch crater letter). Could you explain how to move them to Binance?
No sound when a slide splash-fills the screen. It's back when we see Simon but it's the smaller part of the video 😢
do not waste your time on this video!
Thanks for the breakdown! A bit off-topic, but I wanted to ask: I have a SafePal wallet with USDT, and I have the seed phrase. (alarm fetch churn bridge exercise tape speak race clerk couch crater letter). Could you explain how to move them to Binance?
Sadly the code in this video is so dark and blurry it's impossible to make it out. Surely in 2024 we could get this right?
Do you insist on calling it Fil-C?
Fil-C: interesting, the 2x slowness would be critical for some projects
Very nice lecture about embedded domain specific languages. Some of the problems listed in the lecture like clear error messages and localization are already solved in the Ring programming language.
I'm a fan of this work, thanks for the updates 🙏🏻 Have you heard about Wiring Diagrams from Category Theory?
Good job
Fil-C: The idea of safe-memory C sounds good per se, but.. unfortunately it's too WIP. Trying to compile small programs leads to many errors like: In file included from "llvm-project-deluge/build/bin/../../pizfix/include/dirent.h:18: /usr/include/x86_64-linux-gnu/bits/dirent.h:25:5: error: unknown type name '__ino_t'; did you mean 'ino_t?", and many others. Then you have no idea what to do if there's no forum to discuss, no people who have worked with it and can share compat issues, and so on.
He said some programs would compile with no changes, most programs would work with minimal changes. So he didn’t say it was 1:1
@droid806 I see that. I've tried to compile two not-big projects (one on them GTK based, other one is ncurses based), both of them failed to compile because those mentioned dependencies. So I doubt in "most programs". Or quiet likely I'm wrong in something obvious in these attempts, anyway there's no way find out because of lack of community, that what I had in mind.
@@vlya1533 You'd have to recompile GTK and ncurses as well
@@vytah there's a lot of musl peculiarities too, then linker scripts (like tinfo for ncurses), and so on. In my case I narrowed test buildings down to the basic things, then after getting errors related to compiler itself like "Functions may not have common linkage ptr @pizlonated_limit_error in function pizlonated_limit_error fatal error: error in backend: Broken function found, compilation aborted!" and some others, I decided to not push too much efforts trying to fix everything, and better to wait a bit when it'll be pollished enough.
Image having all the functionality of like fnm, nvm, npm, pnpm, prettier, tsc, jest, test runner, doc building, etc., in one single tool... A true unified platform experience! Almost like cargo for Rust, but more. It's like what projects like Rome/Biome, etc., are just starting to do for the JS world... If this kind of tooling comes to OCaml, it might become my favorite tool to write projects.
The lecture looks very interesting! Unfortunately, this video has pretty bad audio. I'm wondering, is there any chance for a re-uploading with a better quality or is it lost in time?
I am seconding this. I am also very interested in this lecture. Hopefully, better audio quality is maybe possible.
10:18
blub
Awesome talk, Mark!
Very interesting
quite cool! accidentally diving down the DreamCoder rabbithole on a Saturday afternoon, and this seems much more runnable on my laptop
Really appreciated this.
Sound quality is horrible. Any chance you have a better audio lying around? Or subtitles?
0:50 Quick note that nobody is ever going to read: Even if everybody in the audience knows what "CSR" means (Compressed Sparse Rows?), the talk maybe later be watched by people only who have no idea, so it's still worth throwing out a quick slide.
whoa
Beautifully described. This is super awesome
31:42 Welcome & Opening (Peter van Hardenberg, Geoffrey Litt, Joshua Horowitz) 38:03 Keynote: The Meaning of LIVE (Jonathan Edwards) 1:24:56 Definitions and Dimensions of Liveness (Joshua Horowitz) Block 1: Visual Systems 2:31:30 Subsequently: Telling stories with pictures makes programs (Marcel Goethals) 2:45:00 Code flow canvas - a generic visual programming system (Maikel van de Lisdonk) 2:55:45 Snappets: a VR animation system based on Projective Geometric Algebra (Hamish Todd) 3:13:27 Inkling: Sketching Dynamic Systems (Marcel Goethals, Alessandro Warth, Ivan Reese) 3:28:48 Arroost: Unblocking creation with friends (Lu Wilson) 3:47:48 Q&A Block 1 Block 2: Textual Systems 5:34:22 Run, Build and Grow Small Systems Without Leaving Your Text Editor (Albert Zak, Karl M. Göschka) 5:49:06 TAPE: From direct to programmatic and back (Ian Clester) 6:05:17 Diff-based interactive compiler debugging and testing (Luyu Cheng, Lionel Parreaux) 6:16:06 Example-driven development: bridging tests and documentation (Oscar Nierstrasz, Andrei Chiş, Tudor Gîrba) 6:26:27 Live Programming a Live Programming Environment: An Experience Report (Elliot Evans, Philippa Markovics, Martin Kavalar, Andrea Amantini, Jack Rusher) 6:41:58 Q&A Block 2 Block 3: Substrates 7:34:15 Manifold: Throwing Together Software Systems (Jeff Lindsay) 7:49:40 EYG a predictable, and useful, programming language (Peter Saxton) 7:58:08 DocuApps: Ampleforth Documents as Applications (Gilad Bracha) 8:05:47 ScrapSheets: Async Programs in a Reactive 2D Environment (Taylor Troesh) 8:14:21 Scoped Propagators (Orion Reed) 8:24:02 Q&A Block 3 8:43:08 Closing & Farewell (Peter van Hardenberg, Geoffrey Litt, Joshua Horowitz)
Very entertaining talk!
Great speach, Federico Cassano 👏🏻👏🏻👏🏻
16:42 is the beginning of the interview with Alan.
5:46:59 Making Sense of Multi-Threaded Application Performance at Scale with NonSequitur
I really enjoyed Prof. Hermans' historical work tracking down the potential roots of the how CS perception has changed in the 70s. Personally I sympathize with the 'hard = valuable" being sometimes strange or non inclusive. On the other hand - I also agree that objective metrics for value are hard to come by
Speaker introduction starts at 7:48, talk starts at 9:22
7:40:49 DSLs in Racket
1:21:02 Fil-C: memory safety with fanatical C/C++ compatibility
Yikes. Volume is quite low from Gilad.
came for the tode got absolutely amazed by felienne! normalise sharing fleshed out thought provoking studies. lu did amazing as well, lovely talks all around :) also haskell
Came here for Felienne's talk (3:22:00) and find her work very important! Research in all fields, including "hard" technological and theoretical, must have human studies to put them in context and to make things better (as she makes the case for computer science and PL). Is incredible that questions like "why is this valuable and for who?" or "who would use this and for what purpose?" are seem as naive and not worthy of a research project. Great talk!
Loved her observation that science is so often too much about being hard: choosing a scientific problem that is intellectually rewarding just because it is hard to solve. And that hard work to make something more simple to use is often frowned upon or harder to publish. But keep on the good work and your focus on the actual value of the research you do, Felienne. I was moved by your talk.
3:58:42 After Felienne's excellent talk, it's unbelievable that this dickhead wasn't pulled away from the microphone during Q&A by the event organizers. edit: This person's name is James Noble.