|
|
In my last post on The Good IR, I had arrived at a representation with two invariants:
Only BasicBlockās carry information about the ControlFlowGraph; No other edges are allowed between BasicBlocks. All BasicBlocks end with a control transfer Instruction.
I focused that post solely on the if-then-else control flow structure. I would now like to [...]
Many of the real problems in the world are NP. Things like Scheduling, Register Allocation, Routing packages, etc. In solving these really hard problems, we invent heuristics. Typically such heuristics are specific to the problem domain. For example, UPS might exploit certain characteristic about the geographical layout of the country; they face a certain subset [...]
After parsing, each function can be represented as a ControlFlowGraph of BasicBlocks. Each BasicBlock holds a list of Instructions. For illustrative purposes Instructions are colored Blue and BasicBlocks are colored Orange.
I’d now like to address the question: What should the ConditionalBranch instruction at the end of the If-Header point to?
Option Illustration Pro Con [...]
I’ve just finished reading Phillip Greenspun’s experience report, Teaching Software Engineering, which details a project course in building Web Services. Even though I personally, hate the Web’s architecture (but that’s a rant for some other time), it still remains as THE most influentential and convenient place to showcase one’s work. It’s also convenient for shopping, [...]
From Coding Horror: Separating Programming Sheep from Non-Programming Goats I learned of a paper, The camel has two humps, which describes a test that allows teachers to differentiate students likely to do well studying computer science from those who will likely never ‘get it’.
This paper sounds awfully similar to the physics conceptual test mentioned [...]
I finished my reading of Mike Maloney’s Guide to Investing in Gold and Silver, partially to get an idea of how he got started in the business of bullion. He’s actually had several businesses throughout his life, including one where he designed “stereo amplification electronics were selected as one of five permanent exhibits at the [...]
Since much of programming is about creating and manipulating abstractions, it figures that a large amount of education is going to be about leaning those abstractions. Things like classic data structures, the useful sloppiness of O-notation for algorithm analysis, and Design Patterns. But how should we introduce these things to our students?
Should you teach [...]
Out of some curiosity, I quickly read this paper today:
The Object-Oriented Architecture of High-Performance Compilers, Lutz Hamel, Diane Meirowitz and Spiro Michaylov, Technical Report, Thinking Machines Corporation, 1996.
Even though they assume that the compilers internal representation is some kind of AST, the underlying lessons are worth communicating, and are applicable even if your [...]
I got into a mild argument about static vs. dynamic typing. I recognize that static typing can be verbose to the point of being repetitious. Take Java generics for example:
List<String> astr = new ArrayList<String>();
There really isn’t a great reason why the compiler can’t infer the type of the variable on the right hand [...]
In my readings of Extreme Programming, one thing I’m struggling to pick up on is Unit Testing. Mostly, it’s the pain of writing tests for each thing I can imagine goes wrong. Partly it’s an imaginary horror: I think about the full extent of testing all at once. I think about exhaustively testing my program’s [...]
|
|