<@UFB8STN7K>'s expressiveness benchmark[1] reminds...
# thinking-together
k
@Will's expressiveness benchmark[1] reminds me: Watching this talk helped me realize why I never really got the Felleisen paper: their notion of "expressiveness" is almost diametrically opposite what I (and, I think, most people) associate with the term. https://pwlconf.org/2019/shriram-krishnamurthi As an almost trivial example, they say that a
for
loop is not more expressive than a
while
loop, because it can be rewritten with a local transform (Lisp macro). I consider it more expressive because it creates a new structure for loops that allows us to reason about updates separately from the body. Lisp macros are powerful because they allow my program to get progressively more expressive. Isn't this the normal meaning of the term? A more expressive language helps you express intent more tersely. The paper is cool. But they need to get off my lawn and find a new term for themselves. See also https://en.wikipedia.org/wiki/Expressive_power_%28computer_science%29#Information_description [1] https://willcrichton.net/expressiveness-benchmark
e
the whole point of the paper and the talk is about defining expressiveness in a mathematical rigorous and unambiguous way, so while you think Felleisen redefined an existing word, he probably thinks the definition he found is way more precise and useful
👍 2
in any case I don't think you need to worry too much about your lawn because I suspect most people don't use Felleisen's rigorous meaning of expressiveness when they talk about languages 🙂
k
I was kidding about the lawn, hopefully that was obvious 🙂 I don't really have a lawn if I go toe to toe against Shriram Krishnamurthy. This thread was an effort to spread the word on what they did. Hopefully by highlighting what got in the way for me so others who share the misconception don't spend as much time not getting it. Particularly when doing a retrospective, it feels like a missed opportunity to not point out the two possible meanings. (I disagree that Shriram means what I mean, just in a more precise way. The two interpretations here have little in common. Sometimes we need to contrast two Lisp macros and debate which is more expressive, more clearly conveying intention. This paper wouldn't help there.)
👏 1
e
ah yes I think he dedicates all the extent of 30 seconds or so at the very end to mention "human aspects are important too" 😛
55:30 (

https://youtu.be/43XaZEn2aLc?t=3329

)
💡 2
I took it as a tool for language designers, to be used something like: "go crazy with your features as long as they don't increase expressive power (while loops! for loops! do/while loops!), but as soon as your feature increases expressive power, be very careful in adding new stuff"
also as an end user I always want to use the most powerful tool available, but according to this definition I could be making my life easier by finding a language with less expressive power that still is able to accomplish the given task
💯 2
k
Particularly if you have existing expectations. If you're starting from scratch with a new system, you want it to be as powerful as possible. But once you start using it, moving the goalposts often feels hostile.
p
I'd propose to use the two terms "expressive" and "powerful"
❤️ 1
Expressive is the code giving you more information, more to reason about. E.g. for is more expressive than while. However, while is more powerful than if, as it empowers the user: you can do more with it.
k
It's the other way around?
while
and
for
are of equal power because you can locally rewrite one into the other. The paper is really discussing power. "Local rewrites" is a finer gradation of power than the leap from context-sensitive to Turing-complete languages. But it feels like it belongs on that spectrum.
w
The example of continuations (or shared mutable state threads heaven forbid) comes to mind: without them less weird stuff could happen at any one spot — in particular you can ignore some long distance interactions. Coming back to macros, there's a difference between one that tidies up some local pattern and one that have a more spread-out effect.
p
It's the other way around? 
while
 and 
for
 are of equal power because you can locally rewrite one into the other.
Well. Yeah. I agree that they're the same power. However, I wouldn't say they're the other way around. In terms of power, I was comparing
while
and
if
before. In terms of expressiveness I was comparing
while
and
for
. Can you re-read my message to see whether we actually disagree or whether this was a misunderstanding?
k
Oh yes, I misread sorry.
👍 1