Yes, that’s how we think. See Manifesto v 2.0.
> On Apr 7, 2017, at 5:32 PM, Vincent St-Amour <stamo...@eecs.northwestern.edu> > wrote: > > FWIW, I found that blog post interesting as a reductio ad absurdum to > (indirectly) motivate DSLs. > > Clearly, if we take a general-purpose language and take away constructs > that can (albeit inadequately) express domain concepts (e.g., numbers, > structs, etc.), we end up with an unmanageable mess. Lambda lambda lambda. > > So what about the other direction? Aren't general-purpose languages just > languages in which we've been forced to encode our domain concepts in > terms of the poorly-fitting constructs we had on hand? Doesn't this > suggest we could do better? Turns out we can. (Hint: DSLs) :) > > I'll admit that this wasn't directly what the blog post was about, but > it's a small (IMO) extrapolation. > > Vincent > > > > On Fri, 07 Apr 2017 16:21:38 -0500, > Matthias Felleisen wrote: >> >> >> Leandro, >> >> Before I say anything else, I really enjoyed your "playing the game with plt >> redex”. I have encoded many games in Redex (sometimes for fun to show my >> sons, sometimes to explain “specification” especially “executable >> specification” to students on Sw Dev courses). So I was very happy to see >> that someone had written it up. >> >> Your new essay is a throw-back to the 60s and 70s and my own work on >> “expressive power of programming languages” and many other thoughts. But, I >> don’t think it’s about PL; rather it is an essay on the translations we >> typically find in Theory of computation when we wish to explain that all >> models of computations are equivalent (in that all of the compute the >> partial recursive functions on N). In your case, you show how to take a >> program in Racket down to one in a by-value version of Lambda Calculus. Why >> stop there? You allude to the calculus of S and K, meaning a system in which >> all computations are expressed in terms of >> >> (define (S x y z) ((x z) (y z))) [I hope I have the parens right.] >> (define (K x y) x) >> >> So are S and K the essence of a programming language? Why not go down to the >> >> X >> >> combinator? A single function that generates them all. (X X) is K and (X (X >> X)) is S or something like that. >> >> Do we really need to go through all of this to explain that “creating >> programs so that our successors can read them” is the purpose of a language? >> See >> >> Landin (1960s, all of his papers) >> Abelson and Sussman (1980s, preface) >> >> for early simple and short ways of expression this same with simple >> sentences and short papers. I formalized this in >> >> “The Expressive Power of Programming Languages” (1991) >> >> and the last page is what it is all about: adding expressive power means >> removing patterns that the programmer has to encode (usually as some >> pattern) and risking that the programmer makes a mistake with the >> “bookkeeping” code that is associated with this stuff. See all your lambdas >> to get local/recursive functions going. >> >> So what to do? Yes we need to bring this across to ordinary programmers but >> reducing a large language to tons of lambdas may not reach them. How about >> removing just one feature and demonstrating how unreadable the code becomes? >> >> This may sound a bit negative, but I think I know where you wish to go and I >> very much welcome this idea. >> >> — Matthias >> >> >> >> >> >> >> >> >> >> >> >>> On Apr 3, 2017, at 1:03 PM, Leandro Facchinetti <lfacc...@jhu.edu> wrote: >>> >>> Hi all, >>> >>> - >>> https://www.leafac.com/prose/programming-language-theory-explained-for-the-working-programmer--principles-of-programming-languages/ >>> >>> My most recent article, published just now. It is a journey towards >>> the essence of programming languages, driven by working code. >>> >>> - https://www.leafac.com/prose/playing-the-game-with-plt-redex/ >>> >>> Last month’s article, about using PLT Redex for an unintended task: >>> play a game of Peg Solitaire. >>> >>> * * * >>> >>> I write from the perspective of a Ph.D. student in programming >>> languages, communicating to working programmers the interesting ideas in >>> research. Thus, I avoid the funny symbols and the jargon. Also, the >>> techniques I cover are relevant to everyday programming. >>> >>> Please send me feedback. In particular, if you get lost, I’d love to >>> know where. >>> >>> Thank you. >>> -- >>> Leandro Facchinetti <lfacc...@jhu.edu> >>> https://www.leafac.com >>> GPG: 0x5925D0683DF3D583 >>> >>> -- >>> You received this message because you are subscribed to the Google Groups >>> "Racket Users" group. >>> To unsubscribe from this group and stop receiving emails from it, send an >>> email to racket-users+unsubscr...@googlegroups.com. >>> For more options, visit https://groups.google.com/d/optout. >> >> -- >> You received this message because you are subscribed to the Google Groups >> "Racket Users" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to racket-users+unsubscr...@googlegroups.com. >> For more options, visit https://groups.google.com/d/optout. -- You received this message because you are subscribed to the Google Groups "Racket Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to racket-users+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.