Because every programmer should at least once. Writing a compiler/interpreter is the ultimate exercise for any CS student/professional. that and maybe a file system/database or toy OS or server, because it encompass most aspects of CS.
Anybody that can do this things can probably take on any programming job, because they require a fundamental understanding of how computers and programs work.
Furthermore, It also help when suggesting realistic features to other language developers, or write proposals, or assess languages themselves.
Nicklaus Wirth cared about not wasting machine resources.
He also wrote “a plea for lean software”:
> “Abstract: Software's girth has surpassed its functionality, largely because hardware advances make this possible. The way to streamline software lies in disciplined methodologies and a return to the essentials. The paper discusses some causes of "fat software" and considers the Oberon system whose primary goal was to show that software can be developed with a fraction of the memory capacity and processor power usually required, without sacrificing flexibility, functionality, or user convenience.”
It seems like one problem with rust is that it is a single threaded compiler.
We’ve reached the ends of fast CPUs. To gain performance improvements, we need to use multiple cores, and process it in parallel.
I wonder if this is an opportunity for github or Microsoft to host a cloud compiler? Just check in your code to github, and the cloud compiler will compile it across thousands of servers, all running in parallel.
Many reasons! Languages are tools for solving entire spaces of problems. There are languages for music synthesis, database relations, templating , mathematical proofs, etc - but the list is by no means exhaustive and new languages are always needed, and I bet there are wonderful languages in our future that we didn’t know we needed.
> Yeah, basically a fun exercise in parsing/compiling/optimization.
Among other things, sure.
> OTOH what makes a language usable is literally everything else - package manager, IDE support, compile/parsing.
You have parsing/compiling in both categories. It's easier than ever to add IDE support for your homemade language, too, because of things like the LSP. Package management isn’t easy, but if you are building a specialized DSL and bundling the parts key to the domain, or if you are exposing a bridge to an existing ecosystem with strong library availability and decent package management, a language-specific package manager is probably not super important for usability.
> OTOH what makes a language usable is literally everything else
But that could be because we haven't had any real innovation in languages for ages, so except for some superficialities and details, the languages are essentially the same.