Ivan Reese
Ivan Reese
Eli Mellen
12/29/2023, 12:54 AMJack Rusher
12/29/2023, 2:17 PMIvan Reese
Eli Mellen
12/29/2023, 3:19 PMJos Yule
12/29/2023, 3:30 PMLu Wilson
12/29/2023, 3:46 PMJack Rusher
12/29/2023, 3:58 PMJimmy Miller
programming, software engineering, and computer science are three different thingsYeah that is a good myth đ
Personal Dynamic Media
12/29/2023, 6:27 PMJason Morris
12/30/2023, 9:30 AMJosh Bleecher Snyder
12/30/2023, 3:22 PMJosh Bleecher Snyder
12/30/2023, 3:32 PMAlex Cruise
12/30/2023, 5:37 PMAlex Cruise
12/30/2023, 5:39 PMAlex Cruise
12/30/2023, 5:41 PMPersonal Dynamic Media
12/30/2023, 5:59 PMAlex Cruise
12/30/2023, 6:36 PMMarcel Weiher
12/30/2023, 6:58 PMPersonal Dynamic Media
12/30/2023, 11:13 PMMy favorite one of course was the one about the myth that programming is writing
procedures. The Gentle Tyranny of Call/Return one might call it
Oh it's not gentle! Tail calls enable entire architectures that are impossible when everything needs to be hierarchical.
Jason Morris
12/30/2023, 11:50 PMPersonal Dynamic Media
12/31/2023, 5:11 AMMarcel Weiher
12/31/2023, 7:57 AM[The Gentle Tyranny of Call/Return] âŚis not gentle! Tail calls enable âŚMaybe I should have titled the paper âThe Subtle Tyranny of Call/Returnâ instead? As in you are trapped by it even when you think youâve escapedâŚ
falsely generalizing her criticisms to all programming language researchers and implementers in all parts of history.I donât think that is warranted. She is always clear that what she describes and criticizes is âtypicalâ, not âallâ. For example: âTraditional general-purpose programming languages, or at any rate the ones of most interest to programming language researchersâŚâ. Next: âMainstream languages are usually designedâŚâ. And so on and so forth.
Personal Dynamic Media
12/31/2023, 12:09 PMPersonal Dynamic Media
12/31/2023, 5:22 PMJosh Bleecher Snyder
12/31/2023, 5:28 PMKonrad Hinsen
01/04/2024, 8:12 AMEli Mellen
01/06/2024, 5:33 PMEli Mellen
01/06/2024, 5:43 PMLu Wilson
01/07/2024, 9:01 AMKonrad Hinsen
01/07/2024, 10:05 AMA general purpose language is, generally, these days, usually open source and outside the direct control of a specific company (laughs in Microsoft owning the entire stack, GitHub, npm, vs code, and type script) whereas a DSL or other sort of âlessâ powerful tool is typically bound up with a service subscription or licensing fee.Real programmers have agency over their tools. Second-class (vernacular) programmers have to live by the rules defined by (capitalism | real programmers). Interestingly, before Open Source, general purpose languages were already outside the direct control of a specific company, through standards bodies.
Eli Mellen
01/07/2024, 1:49 PMKonrad Hinsen
01/07/2024, 7:51 PMD. Schmudde
01/17/2024, 7:44 AMOne aspect that takes a lot of room in the paper and in the episode is the PL research focus on correctness and mathematical rigor.The historical context is important. Partially because it directly impacts the vernacular programmer who comes to practice and starts wondering whatâs the difference between a function, a method, and a procedure. The terms of art are directly situated in these (often long) historical contexts. I watched Shawâs presentation at HOPL and I was surprised that she didnât mention terminology as a barrier to tooling. Thus the podcast also didnât discuss it. In my experience teaching, I can get pretty far with a REPL but the terminology creates immediate obstacles. The promise of associativity is a form of mathematical rigor that we all enjoy. But Iâve found folks grasping
map
well before they really understand why associativity is actually important.
At least mathematical rigor gives me (the teacher) a precise definition. But take the term function into the programming world and sometimes it means that I must always return one value, sometimes it means that can return multiple values, or sometimes it means I might return no values while modifying some other value in some other part of the system.Beni Cherniavsky-Paskin
01/31/2024, 8:06 AMI didn't mean to say that individual real programmers have agency over their tools, only as a collective. In other words, software tools for real programmers are written by other real programmers. In contrast, spreadsheet users don't write spreadsheet engines. At best, they get a questionnaire for providing feedback.This gives me interesting perspective on Spreadsheets in Boxer paper đ¤ I first read it as deflecting the implicit criticism "spreadsheets' data-flow model is a proven road to give users computational agency; too bad Boxer doesn't include that" by showing "look, it's easy to build one inside Boxer, just write a re-compute loop doing
change cell.value tell cell formula
(p. 7) & if you really want attach a `modified-trigger`" (p. 18).
And I felt they completely missed the point.
There is a deep difference between having a language-level reactive model where you can just assume derived data will auto-update, vs. imperative model where you have to think about having to recompute, e.g. install modified
callbacks...
(and indeed the simplistic "spreadsheet" they built in the paper has limitations p. 18, single top-down left-to-right pass won't deal with other dependency orders...)
I still feel an ideal computational medium ought to support reactive behavior built-in.
But I guess I should re-read it because I see now they did not argue "being able to build it means we don't need it built-in". They merely used spreadsheets as a complex example to show off other strengths:
Writing a spreadsheet is not a toy problem, and yet in Boxer it becomes a reasonable exercise.and more relevantly here, their goal in building your own spreadsheet is not to so much to use one but to _understand what makes it tick_:
Boxer (1) supports a close connection between a conceptual model of a spreadsheets and a working implementation,
(2) provides a concrete, visible, working model that can be inspected, explored, and modified and
(3) eliminates distracting display and editing issues and concentrates cognitive load on the fundamental CS issuesHmm, I see now this is continuation of the SICP programme đ â that some core ideas in CS about structure & computation are worth learning, and that a great way to learn them is to understand and modify a substrate of computation. It's hardly realistic to teach school kids the later parts of SICP: how a LISP interpreter works and how to say tweak to support non-determinism with backtracking. Is is more realistic to show them how to build a (simplistic) spreadsheet, still teaching some great ideas about computation! đ With this goal, weaknesses like not cascading dependencies, not dealing with cycles etc. are not bugs â they are opportunity to do some "computational thinking"!
Beni Cherniavsky-Paskin
01/31/2024, 8:11 AMBeni Cherniavsky-Paskin
01/31/2024, 8:18 AMBeni Cherniavsky-Paskin
01/31/2024, 8:29 AMKonrad Hinsen
01/31/2024, 9:13 AMI still feel an ideal computational medium ought to support reactive behavior built-in.That question has been debated in the computational notebook community for years. Mostly among developers, much less among users, which often don't quite see the trade-off. Reactive behavior provides better feedback, but it's better only as long as update times remain reasonable. The question thus entangles UX, computational complexity, and hardware performance. It would help a lot if power-users-but-not-developers had a good understanding of these issues, if only for better communicating their preferences to the real programmers that wite their daily-use tools.