ACM SIGPLAN
ACM SIGPLAN
  • 4 417
  • 1 264 071
[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,
Переглядів: 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

КОМЕНТАРІ

  • @almightysapling
    @almightysapling 11 годин тому

    Re: the question asking if there's a way to do intermutability: yeah, raw pointers.

  • @jolonf
    @jolonf 10 днів тому

    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.

  • @craftvscruft8060
    @craftvscruft8060 12 днів тому

    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

  • @charolastrauno
    @charolastrauno 12 днів тому

    This is the wrong talk!

  • @KimberlyRobinson-n2c
    @KimberlyRobinson-n2c 21 день тому

    我如何从钱包中将我的 89 USDT TRC20 提现到币安请帮帮我 12个钱包恢复短语:《pride》-《pole》-《obtain》-《together》-《second》-《when》-《future》-《mask》-《review》-《nature》-《potato》-《bulb》

  • @shaheerziya
    @shaheerziya 21 день тому

    Incredible work, must have been tough to do all that formalization!

  • @derekpmoore
    @derekpmoore 26 днів тому

    Sound is lost until 4:35

  • @DaveRoberts308
    @DaveRoberts308 26 днів тому

    Sound gets fixed at the 9 min mark.

  • @AlexBerg1
    @AlexBerg1 27 днів тому

    Amazing presentation! Amazing contributions!

  • @HaraldAchitz
    @HaraldAchitz 27 днів тому

    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

  • @tophy9865
    @tophy9865 28 днів тому

    It's always a fun jumpscare when SPJ is in the audience and asks a question lol

  • @skyblock127
    @skyblock127 28 днів тому

    I saw this video after getting plag in 3 out of 5 assignments😭😭😭

  • @bytefu
    @bytefu 29 днів тому

    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.

  • @kristofferstrom766
    @kristofferstrom766 29 днів тому

    Super low sound volume

    • @leppie
      @leppie 29 днів тому

      Noted that yesterday too, but seems to be fine now (at least with Stable Volume)

  • @WilliamKing-r8y
    @WilliamKing-r8y Місяць тому

    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?

  • @ArtemPelenitsyn
    @ArtemPelenitsyn Місяць тому

    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 😢

  • @Fardin.Alizadeh
    @Fardin.Alizadeh Місяць тому

    do not waste your time on this video!

  • @KailynAbrosimova
    @KailynAbrosimova Місяць тому

    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?

  • @Heater-v1.0.0
    @Heater-v1.0.0 Місяць тому

    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?

  • @aungthuhein007
    @aungthuhein007 Місяць тому

    Do you insist on calling it Fil-C?

  • @droid806
    @droid806 Місяць тому

    Fil-C: interesting, the 2x slowness would be critical for some projects

  • @ProgrammingLovers
    @ProgrammingLovers Місяць тому

    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.

  • @colltoaction232
    @colltoaction232 Місяць тому

    I'm a fan of this work, thanks for the updates 🙏🏻 Have you heard about Wiring Diagrams from Category Theory?

  • @yousifalfaki4389
    @yousifalfaki4389 Місяць тому

    Good job

  • @vlya1533
    @vlya1533 Місяць тому

    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.

    • @droid806
      @droid806 Місяць тому

      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

    • @vlya1533
      @vlya1533 Місяць тому

      @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.

    • @vytah
      @vytah 28 днів тому

      @@vlya1533 You'd have to recompile GTK and ncurses as well

    • @vlya1533
      @vlya1533 28 днів тому

      @@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.

  • @PaulSebastianM
    @PaulSebastianM Місяць тому

    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.

  • @mattpdz
    @mattpdz Місяць тому

    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?

    • @ndmath
      @ndmath Місяць тому

      I am seconding this. I am also very interested in this lecture. Hopefully, better audio quality is maybe possible.

  • @Kaptime
    @Kaptime Місяць тому

    10:18

  • @lial4357
    @lial4357 Місяць тому

    blub

  • @steffensmolka4063
    @steffensmolka4063 Місяць тому

    Awesome talk, Mark!

  • @nicolasr8710
    @nicolasr8710 Місяць тому

    Very interesting

  • @Lucas-pj9ns
    @Lucas-pj9ns Місяць тому

    quite cool! accidentally diving down the DreamCoder rabbithole on a Saturday afternoon, and this seems much more runnable on my laptop

  • @joeldinolt5541
    @joeldinolt5541 Місяць тому

    Really appreciated this.

  • @Olivman7
    @Olivman7 Місяць тому

    Sound quality is horrible. Any chance you have a better audio lying around? Or subtitles?

  • @Olivman7
    @Olivman7 Місяць тому

    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.

  • @mooncop
    @mooncop Місяць тому

    whoa

  • @muhammadidrees5218
    @muhammadidrees5218 Місяць тому

    Beautifully described. This is super awesome

  • @albertzak
    @albertzak Місяць тому

    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)

  • @ARBB1
    @ARBB1 Місяць тому

    Very entertaining talk!

  • @CristinaColla
    @CristinaColla Місяць тому

    Great speach, Federico Cassano 👏🏻👏🏻👏🏻

  • @KennethFriedman
    @KennethFriedman Місяць тому

    16:42 is the beginning of the interview with Alan.

  • @Roibarkan
    @Roibarkan 2 місяці тому

    5:46:59 Making Sense of Multi-Threaded Application Performance at Scale with NonSequitur

  • @Roibarkan
    @Roibarkan 2 місяці тому

    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

  • @romactv
    @romactv 2 місяці тому

    Speaker introduction starts at 7:48, talk starts at 9:22

  • @spdegabrielle
    @spdegabrielle 2 місяці тому

    7:40:49 DSLs in Racket

  • @Roibarkan
    @Roibarkan 2 місяці тому

    1:21:02 Fil-C: memory safety with fanatical C/C++ compatibility

  • @jonseltzer321
    @jonseltzer321 2 місяці тому

    Yikes. Volume is quite low from Gilad.

  • @fawwn
    @fawwn 2 місяці тому

    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

  • @densidad13
    @densidad13 2 місяці тому

    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!

    • @KimMens
      @KimMens Місяць тому

      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.

  • @DevineLuLinvega
    @DevineLuLinvega 2 місяці тому

    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.