How Compiler Construction Remains Relevant (part 1)
Many students struggle with the compiler construction class here at UCI. I’d like to change that. Let me first lay down some groundwork, by giving some observations that I’ve made about the general lack of software engineering skills. Our students…
A language should be focused on writing Internal DSLs
I’ve been reading Martin Fowler’s book, Domain-Specific Languages, this weekend. He covered a number of ways in which you can structure your code to achieve what he terms an Internal DSL. Quite a bit is focused on the discussion of…
Arrow’s voting theorem of Economics
I was in the dining hall, and the TV there had some talking heads babbling about the stock market. I couldn’t really make out what they were saying, but it set the stage in my mind for some other thoughts….
Type-dispatch with Exceptions
I’m one of those Object Oriented programmers that consider type-inspection to be a design flaw. Much to my chagrin, I’ve found myself making occasional use of the Java instanceof keyword. In my most recent class lecture, we discussed Exceptions, and…
Method Extensions
I’ve come across another programming language feature that I would like to have. The last one was a bit outlandish, and I’d really like to refine it a bit. Dress it up a little. Supposing you were asked to perform…
The Future of the Web should be Lisp
I was reading Steve Yegge’s drunken rant on The Emacs Problem. It wasn’t able to convince me that Lisp was a great language for text processing, but it did convince me that Lisp is a fantastic language for data interchange….
Interface Extension
I’ve been programming an alpha-beta AI to play variants of connect-k games. For example, connect-3 on a 3×3 board with gravity off is tic-tac-toe, connect-5 on a 19×19 board with gravity off is the basis of go-moku, while connect-4 on…
Designer Graphics
I have the misfortune of owning all of Ed Tufte’s books. Reading and enjoying these books has given me a sensitivity to data display that now makes me cringe whenever I see a terrible chart. Even in academic papers, benchmark…
Typestate and SSA
Since Rust was announced, I looked into the underlying idea of Typestate[1]. The most striking aspect about this paper is its age. The authors consider an extension to ordinary type checking to also verify that the state of a variable…
Quarter Update
So the quarter finally ended, and I can get back to having a social life over the holidays! The compiler that I wrote was, in my personal opinion, a pathetic failure. Though we were able to generate some x86_64 code…