[HN Gopher] So you want to design a programming language (2017) ___________________________________________________________________ So you want to design a programming language (2017) Author : behnamoh Score : 73 points Date : 2022-02-26 19:38 UTC (3 hours ago) (HTM) web link (cs.lmu.edu) (TXT) w3m dump (cs.lmu.edu) | teddyh wrote: | See also _Growing a Language_ by Guy L. Steele Jr. in 1998: | | https://www.youtube.com/watch?v=lw6TaiXzHAE | | http://www.cs.virginia.edu/~evans/cs655/readings/steele.pdf | hardwaregeek wrote: | Or do none of that. I understand that this article is meant to | encourage people to learn some cool stuff within programming | languages, but it's also discouraging. The better answer in my | view is to learn how to build a tree walking interpreter with | Crafting Interpreters, then build whatever comes to mind. Want | functional programming? Add immutability and first class | functions. How about concurrency? Add an event queue. Then try to | make a bytecode interpreter or a compiler. Sure these ideas | require some of the knowledge detailed in the article, but you | can learn that info JIT. Don't try to learn it all before you get | started. Just start and see what happens. | the-smug-one wrote: | Or just write your own operational semantics and grammar in | Racket's Redex :). Lots of ways to Rome. | brokencode wrote: | There's a difference between building a toy language and | designing something people would actually use. | | I think the article is more aimed at the latter, whereas if you | just want to get something working and have fun, your approach | makes more sense. | agumonkey wrote: | More than a programming language, what about new paradigms :) | J253 wrote: | This is a great resource for pointing out the things you need to | think about in designing a language. | | To see the nitty gritty line-by-line walkthrough of everything | that goes into actually building a language (all the way down to | writing your own VM) I HIGHLY recommend reading Crafting | Interpreters[1] by Bob Nystrom. I'm not a language hacker but | found everything about this book worthwhile and very interesting. | | [1] https://craftinginterpreters.com/ | Decabytes wrote: | If you want to design a programming language, and are okay with | building off of an existing language, I suggest giving Racket a | try. It can do more than just create DSLs and compile down to | Racket code. I recently learned about sham* which allows | interfacing with LLVM. I've linked some examples and references | below | | References 1. https://docs.racket-lang.org/guide/languages.html | 2. https://docs.racket-lang.org/turnstile/ | | Examples 1. https://github.com/soegaard/urlang 2. | https://github.com/rjnw/sham 3. https://github.com/ShawSumma/lure | 4. https://github.com/racket/rhombus-prototype 5. | https://github.com/lexi-lambda/hackett | open-source-ux wrote: | One of the sections in the article is headed "study existing | languages", but why not also study languages that shaped | programming language history? No mention of the Pascal-family of | languages (Pascal, Modula-2, Oberon), no mention of Ada. Even | Algol 68 is full of ideas that would reward study. | | Also, the language descriptions are too brief to be helpful ( | _Java and C# for being enterprisey_ , _C++ and Rust for pointers | and other system constructs_ ) | goodpoint wrote: | ...and no mention of Nim, which shares a lot with Pascal, | Python, C and Ada and is more innovative. | jonsen wrote: | The wiki page is rather informative in the sense of choosing | which historical languages may be worth a closer look: | | https://en.m.wikipedia.org/wiki/History_of_programming_langu... | ModernMech wrote: | I think it's even more important to study history of PLs if you | want to make a new one. The history of programming languages | was shaped heavily by Moore's law, and the fact that if you | waited 18 months, your previous slow program would likely be | twice as fast on newer chips. The result was that programming | languages rose to the top by riding this exponential wave | through mechanical sympathy. | | Today, however, Moore's law has stalled, and a different kind | of power law is on the rise: core counts. Languages which | previously saw success by being imperative and optimized for | single core execution are falling over trying to keep up. We | see increased efforts to harness the power of multiprocessing | through asynchrony and parallelism being first-class citizens | in newer languages, while others struggle to stay relevant. | | Languages of the future will be built from the ground up to | harness massive CPU core counts that will be available on | consumer desktop machines in the near future. My advice to any | budding language designer is stop looking to reinvent C and | C++. There's currently a wave of programming languages that | came of age circa 2010 - 2020 which are focused on just that | (Go/Rust/Zig etc.), but if you're just looking to get into that | space now you're late to the party. Instead look back to Erlang | and the original promise of Object Oriented programming as the | basis for a new language in 2022. | tomcam wrote: | Yeah that list is glib. To include Brainfuck but not Pascal is | telling. ___________________________________________________________________ (page generated 2022-02-26 23:00 UTC)