Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

But why would you do that?


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.


Nah this is not really essential.


cool, you can do it once, in college


Why not?

Programming languages are not a solved problem (or parsing, or diagnostics, or...).

We are today, barely, getting practical solutions to how write safely, fast and ergonomic (for example, rust) and yet:

- Compiling performance is abysmal in most compiled langs (except pascal family)

- And errors...

- And debugging...

- And interactive compilers...

- And ... (thousands of other stuff)

Somebody must try to do this stuff, because if not, forever will be at mercy of C, C++, JS, the shell, unix, etc. Who wanna the cobol effect forever?


Why is Pascal better at compiling performance?


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.


Is made to be fast. Also, C/C++/rust is made to be slow.

One recent article that touch it (for rust):

https://pingcap.com/blog/rust-compilation-model-calamity


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.

Cost: $100/month per engineer.


> It seems like one problem with rust is that it is a single threaded compiler.

That could be a symptom but is not the root cause.Is just that the syntax/features choices (as choiced!) are hostile to fast performance.

Even going parallel, I bet a pascal compiler will beat it overly, because you can give rockets to turtles but are still turtles...


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.


Because why not? It can be a fun an very insightful process, as you'll learn about and have to apply techniques you may not have heard of otherwise.


If nobody made their own language, we wouldn't have any languages, and you'd have to write in machine code.


Yeah, basically a fun exercise in parsing/compiling/optimization.

OTOH what makes a language usable is literally everything else - package manager, IDE support, compile/parsing.


> 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.


It's a great learning exercise.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: