6 ms·
Little Languages (1986) [pdf]
- dang 2y agoRelated: “Little Languages” by Jon Bentley (1986) [pdf] - https://news.ycombinator.com/item?id=17881705 https://news.ycombinator.com/item?id=17881705 - Aug 2018 (17 comments)
- AstroJetson 2y agoI loved his articles in the ACM. They are collected in a book called Programming Pearls (https://www.amazon.com/Programming-Pearls-2nd-Jon-Bentley/dp/0201657880/ https://www.amazon.com/Programming-Pearls-2nd-Jon-Bentley/dp...) I also liked his second book More:Programming Pearls (https://www.amazon.com/More-Programming-Pearls-Confessions-Coder/dp/0201118890/ https://www.amazon.com/More-Programming-Pearls-Confessions-C...) Some of the same articles, but with updates and added reader comments. (I posted Amazon, but there is a ton on the used market)
- DonaldPShimoda 2y ago> I loved his articles in the ACM. This is a super minor correction on my part, but this is a weird phrasing because "the ACM" is a huge organization that publishes proceedings for a great range of interests --- it isn't a venue in itself. The name of the venue you're looking to reference is Communications of the ACM, more commonly just referred to as Communications or CACM. As an aside, Communications is a sort of unique venue for publication. The submissions are peer-reviewed, but the nature of the submissions is more similar to a blog post or editorial article than traditional papers you'll find in other proceedings from conferences and journals (and, indeed, the ACM refers to CACM as a "magazine"). It makes for good "fun" reading!
- cscheid 2y agoThe vibe of CACM also has changed significantly over the decades it's been around. When it started in the late 1950s, and through the mid 90s, it was really a "Journal of the ACM"-lite; the research articles were quite good! Then it morphed into a trade magazine and, by the late 2000's, it was kind of an embarrassment. To Vardi's credit (the previous CACM EIC), CACM clawed back some of its technical chops in the 2010s. I wouldn't claim it's near the quality of 1970s CACM, but it actually has technical content in it again. Equations, even, gasp!
- AstroJetson 2y agoYes, the CACM along with all of the SIG* journals. TBH I gave up my membership when the ACM seemed more of a money grab and less about computing. You are correct, and I'll deny having a 1978 copy of the SIGPLAN (Programming Languages) Conference docs on the history of some of the languages that were popular then. :-)
- DonaldPShimoda 2y agoSIGPLAN is my only ACM membership; I figure I can support my primary publishing organization at $25/year or whatever. So your 1978 issue sounds like a pretty cool piece of history to have to me!
- ashton314 2y agoWe are absolutely swimming in little languages. Consider these languages: - The language of regular expressions - SQL queries - In web frameworks, the language of routes - etc. Unfortunately we embed a lot of these languages as strings. This is problematic because the language usually sees just opaque strings—we can't apply any of our lovely static analysis tools to these little embedded languages. I'm doing some research in this area. We just got a paper published at ECOOP. The big idea is that, with a little bit of clever metaprogramming, we can help the type checker understand these little languages better and give us more helpful hints or execute more efficiently. This isn't a new idea, but no one has given it a name before. Here's the blog post version: https://lambdaland.org/posts/2024-07-15_type_tailoring/ https://lambdaland.org/posts/2024-07-15_type_tailoring/ (HN discussion): https://news.ycombinator.com/item?id=40990232 https://news.ycombinator.com/item?id=40990232
- shawn_w 2y agoRacket calls it language oriented programming.
- ashton314 2y agoWhat, type tailoring? Language-oriented programming is a different idea than type tailoring. If you don’t believe me, ask one of my coauthors. ;) Unsurprisingly though, Racket has some of the best support for type tailoring.
- shawn_w 2y agoNo, having embedded dsls that aren't just treated as strings, but as integral parts of the system that get syntax checks etc. at compile time and that analyzers can understand.
- ashton314 2y agoRight—that's the power and beauty of a good metaprogramming system is you can extend the language to meet your domain—not the other way around. Type tailoring is all about (ab)using metaprogramming to target the elaboration of surface syntax into something the type checker understands. So, the reason why it's sounding familiar is because type tailoring uses metaprogramming and targets eDSLs. Some of the stuff you're likely referring to (please send me a link with examples) probably is doing type tailoring. The problem is that, until now, there hasn't been much awareness of the underlying thing going on here with types and metaprogramming. You might implement an eDSL with macros and get some nice type checking for free (I'm working on another project right now that does exactly this) but, with this type tailoring framework we're proposing, you might see ways that you can get more out of what you're doing by leveraging static information better and by programming the elaborator more cleverly. Does that help?
- davidw 2y agoTcl was, or is, a nice way to add a language that's very flexible and customizable to a larger system. It's pretty easy to create your own DSL's with it.
- blirio 2y agoMy favorite little language is jq. It's like SQL <-> RelationDB and jq <-> NonRelationalDB
- rramadass 2y agoSee also the book Constructing Language Processors for Little Languages by Randy Kaplan.
- andrewl 2y agoI took a course with Randy Kaplan. I thought he was an excellent lecturer, and a very kind person. We had some interesting talks after class.
- rramadass 2y agoNice. I think he mentions in his book that he was inspired by Bentley's above article to write his book. I remember also that the book was quite detailed (with the implementation in C) though not a full-blown compiler/interpreter book and the little language was something to do with image processing (i have to browse my copy again :-). This book deserves to be better known.
- LangChinBob 2y agoA brilliant read for anyone interested is 'Constructing Language Processors for Little Languages'.
- posix_monad 2y agoBuilding a language is too hard. You need to create: - Grammar, parser, compiler, interpreter (delete as appropriate) - Editor plugins for nice syntax highlighting - Language server - Packages for common things - Nice website (or no one will use it) - etc... So the pressure is always to shoe-horn a big existing language into you problem. Maybe you can build a nice library if your language has decent syntax (or little to no syntax). If you have an AST representation, you probably dump it to JSON etc. I am curious if any projects are trying to make this easier.
- mjul 2y agoCharles Simonyi and his Intentional Software tried to solve this, publishing some interesting articles in the 1990es. However their technology was not broadly used and they were acquired by Microsoft. The key ideas are called Intentional Programming and Language Workbenches. The best accessible implementation of that is JetBrains’ MPS (it is free). It allows you to define a language and “projectional” editors together. It is really fascinating but it suffers from a learning curve where there is no small step from what people use in their everyday common languages and IDEs to building domain-specific solutions with MPS, so adoption is low. Markus Voelter has some highly recommendable publications and elaborate applications of MPS for domains specific languages, see http://voelter.de/ http://voelter.de/ I am sure there is something great in that area but it has not found the right form and shape yet, so keep exploring.
- rramadass 2y agoVery Nice. A rare mention of Intentional Programming aka IP (https://en.wikipedia.org/wiki/Intentional_programming https://en.wikipedia.org/wiki/Intentional_programming) on HN. I first came to know of this from an article by Charles Simonyi titled "The Death of Computer Languages, The Birth of Intentional Programming" on MSDN. But alas, the promise never came to pass. The only other place i know of which covers it is a chapter in the book Generative Programming Methods, Tools, and Applications by Krysztof Czarnecki et al. IP is rather hard to understand (i still don't get it completely) and afaik there are no publicly available tools/IDEs to learn/play with it. I don't believe Jetbrains MPS is a IP programming editor, it is meant for designing DSLs. IP has aspects of a DSL but is not the same. Finally a huge upvote for mentioning Markus Voelter who is THE Expert in DSL design/implementation/usage. Checkout his articles/essays and the free ebook "Domain Engineering: Designing, Implementing and Using Domain-Specific Languages" from his above mentioned site.
- swatson741 2y agoIt's not mentioned in the article for obvious reasons but, html + css + javascript = modern web browsers