HN user

mfichman

61 karma

https://jogolang.org https://blog.mfichman.net

Posts4
Comments15
View on HN

The difference is that you need to make a complete second iteration (or pass) over the entire list to correctly check all of the callsites after all function type information is collected. The same is not true for symbol table usage in a single-pass C compiler.

Usually, the second pass in a compiler does not re-parse source files. Rather, it operates on another data structure, like an AST, intermediate representation, or the list mentioned in the original comment. At least, that’s my understanding of multi-pass compilation.

What's fascinating to me is that index cards are a kind of spiritual predecessor to modern database systems and computers - perhaps even more closely related than counting devices like the abacus. Richard Feynman touches on this in one of his lectures [1] that's been linked many times on HN.

The theory of information and computing seems pretty fundamental, and not necessarily tied to what we typically think of as a computer, with CPUs, RAM, SSDs, etc. In a way, a card catalog full of index cards and run by a bunch of people is a computer too. Maybe this isn't an incredible revelation, but it's still interesting to think about.

[1] https://m.youtube.com/watch?v=EKWGGDXe5MA

I created http://jogolang.org, mostly because I was interested in learning how compilers worked. I was also motivated by the lack of simple, type-safe, ahead-of-time-compiled programming languages for writing video games. Now the project is kind of dead, but I certainly learned a lot about parsers, code generation, optimizations, SSA, and register allocation!

I think Frodo's failure to destroy the ring is a good example of how Tolkien's books do not have a simple good vs. evil dichotomy. Other good examples are the wrath/pride of Feanor's sons, and the tale of Turin, both from the Silmarillion.

Lua is a great language with an excellent implementation in LuaJIT. I love it!

Also, I think you'd be surprised at the contributors that come out of the woodwork when you start up a good project, regardless of the language.

I like 'xIs' for mutators, because it reads more like English, and the important part of the name ('x') is first. I find that convention makes it easier to scan code by name and sort.

Wow, this is great! I'm sure the playback feature is very useful for interviews -- other coworkers could watch the interview after the fact.

This would be even better with an integrated chat, so you could watch the interviewer & interviewee discuss the code during the replay. Any plans to support that?

Indeed. This was more of an experiment than anything else. Ideally, I should have a function that catches all exceptions before calling the user's function to make it safer.