2025-06-28 at

Comment : on Aesthetics in Programming Language Design

 ( link

I view it as a [human-computer interaction] / industrial design / civil architecture problem.

( Caveat : links I posted are mostly just my own desk study notes which are messy. )

I'm designing a tooling language, myself. I am still spending most of my time on the architecture from lexeme design to memory layout, than doing any coding.

  1. The most fun part is comparative history of PLs. You can see which trope comes from which origin. Every operator, conventional name for a mechanism, and decision of implicit/explicit control has a genealogy. It's basically philology for PL.

  2. The three main layers for me to encapsulate are

  • formal grammar : universe of UI

  • IR : hardware independent description of language semantics

  • implementations

Formal grammars are the cosmetic differences which casual users think of as "the language" and so the toolchain I want is something where I can change the formal grammar, and see the implications it has on difficulty to compile to IR, as well as downstream effect on specific architectures under different compile time and runtime situations (small vs big code base, few vs many contributors etc.)

I am incredibly annoyed that there is not one IR standard for information interchange 'IRSII' , and so this is the one of the things I think about with every design decision. "How is X done in each of the N other languages I already know how to use?" Anyway, all design decisions about language semantics basically filter down to some sort of IRSII, which can represent any computing idiom, and the language designer just uses it to express what they dis/allow their language to do. This is where decisions about type systems, and object paradigms, and guarantees of all sorts for safety, concurrency, performance, and ergonomics, come in.

Finally the harder CPU sequencing and memory layout stuff. For ease of headspace, as a hobbyist with limited resources, I just think about how to implement it on a VM, using a simplified model of where registers, cache, stack, heap, and how memory is de/allocated. Because I am very poor, and noob, it is useful to target JS first, with a view to do other backends later.


Discussion :

  • Ah, no, there is such a thing as ergonomics. All good tools are functionally designed, and that is why aapl had a lead.
  • Whether the user is conscious of it or not, there are measurable differences in how long it takes the eye to read a character, and it depends on how chars are arranged. Well known version : line noise
  • Yes. That's pretty much why I decided to limit my input charset for all math symbols to ASCII even though cuter newlangs use unicode and langservers
  • "opportunity costs" determine all design decisions
  • Some langs have 99 operator precedence levels. Some have 1, left-associative and brackets. I am leaning to the latter. more explicit. Most of my issues with PL are everyone chooses some arbitrary subset of what to make implicit. So i am trying to rip out all conventions and turn them into config.
  • I am more of a common person. I want a common very low denominator 🤪
  • Only because it doesn't exist. So it makes teaching in the commons very difficult. Instead of demonstrating a common language, one has to cycle kids through all the special langs
  • Yes, see : most languages which are POPULAR emerge from industrial use. So they tend to lack a universal structural which describes the nature of the total enterprise of all computation, which is what i tend to inhabit. So again the generalist may just be viewed as a sort of specialist
  • Racket is a lisp - it creates a narrow toolchain for lang-dev, but you're still running under lisp semantics. Also the toolchain imo is too narrow ... it does open up the lexemic playground on the top, but not the memory layout playground on the bottom, as much as a 'comprehensive' tool chain should, for langdev. I may not have fully understood it as I just surveyed. Maybe you can implement Haskell or Erlang or Rust in Racket, but I don't think so. This specific comment thread : https://www.reddit.com/r/ProgrammingLanguages/comments/sr9k8g/comment/hwt0axq/?

No comments :

Post a Comment