Hacker News new | ask | show | jobs
by thefaux 747 days ago
Unsolicited writing advice: drop the self-aggrandizing grandiosity. It is distracting and undermines the work itself.

Zig is a language for writing perfect programs? The fact that a progress bar is needed at all is a symptom of the lack of perfection of Zig. A perfect compiler would compile instantly (or at least faster than human perception is capable of registering) with no need for a progress bar.

5 comments

"Please don't pick the most provocative thing in an article or post to complain about in the thread. Find something interesting to respond to instead."

https://news.ycombinator.com/newsguidelines.html

I agree that this was neither my finest nor most constructive comment.
It makes me chuckle to think you’ve done an analysis of this article for provocativeness.

Thinking about a real human spending their time trolling threads to tell someone their critique isn’t interesting..well that’s a bit less humorous.

One can recognize a response to provocation without an analysis. That's because they're so predictable, which is also why we have that guideline.
I highly doubt that was serious. I think you just missed the joke.

Or did I miss something? I really hope I didn’t :(

It's amusing to me that multiple people on HN think I'm joking. Have you ever tried to write thread-safe, lock-free, infallible, non-heap-allocating code before?

I'm curious what kind of API the people who think this problem is easy would have come up with, and what its performance characteristics would be compared to mine.

I had a blast working on this problem!

I agree that this is not an easy problem. I have written a status bar for a fairly widely used open source build tool in java. I hijacked System.out and System.err globally and added all writes to a queue that I line buffered and interleaved progress bars at the bottom. There was no noticeable performance degradation relative to not having the progress bar since all the queue management was handled on a background thread. I would characterize the volume of output as medium. The tool is chatty compared to some, but we aren't talking about managing massive amounts of data coming in.

At some point though, I stopped working on this tool because it and the compiler it was primarily used for were way too slow and started focusing on compiler design. I am currently working on a compiler that is self hosted and compiles itself in 1 second but I expect to get that down to under 100ms.

You don't need progress bars when your build is that fast.

I was undeniably rude in my initial post, but I also want to challenge you to be even better as a programmer. I had to write many compilers before I figured out how to self host as quickly as I now can. That is the advantage of working in isolation. I have thrown out more working compilers than all but a handful of people have written. My language is not public because I am still iterating but I wrote the bootstrap compiler in about 10 days of 4-5 hours per day and the self-hosted compiler took about 3 more weeks on top of that. It is ~4200 lines of code in itself. The next version will likely be fewer.

I think the part that might raise eyebrows is the “programming language designed for making perfect software”. Perfect is, after all, highly subjective, yet at the same time a maybe unnecessarily hyperbolic term.

I don’t mind the language though. I have no doubt that you’re at the top of your game and the problems you’ve outlined in the post do indeed sound challenging.

https://youtu.be/Z4oYSByyRak?t=161

Software Should Be Perfect - A journey of questioning assumptions and building a new programming language

This has been my goal since the beginning. I wasn't kidding

FWIW, I don’t think your writing is arrogant, but if it sets someone off, maybe they’re the one with an ego problem.
> A perfect compiler would compile instantly (or at least faster than human perception is capable of registering)

That seems lika a very arbitrary requirement. I'd say a perfect implementation of anything must do what it is supposed to be doing, and that may have a lower bound on processing time. You can't write to memory faster than what the bus allows, for example.

it's a joke. Obviously, when you're a compiler engineer, creating a progress bar is not a great demonstration of your skill.
It wasn't a joke apparently.
I think it’s fun and enjoy reading it.