An image I wish was a snapshot of a code editor.
For many years now I have kept a running list of research projects I haven’t yet had time to pursue. As I am settling in for a education-focused career and as the list of projects grows far faster than I could handle even if I were on a research-focused track with a dozen grad students, I’ve decided to start posting ideas I no longer expect to ever use here. Hopefully others will find them inspiring and flesh them out, making the world a better place.
To open up this soon-to-be series, I present an image I created for a mock proposal I wrote during my first year as a Ph.D. candidate at the University of Virginia:
I was, at that time, considering a dissertation in programming languages and software engineering and this was my objective in that line of research: an IDE/compiler that involved me in its optimization work.
I want an interface that lets me talk with my compiler. It should be able to ask me questions, and I should be able to ask it questions. I should be able to know what it knows. It should be allowed to make semantics-changing optimizations as long as I have the ability to forbid them. Not shown in this image, I should also be able to teach it new optimizations so that my optimized code can be readable code plus a set of verifiable optimizations instead of unreadable code plus a bunch of cryptic “how I optimized it” comments.
See also my second postulate; navigable optimizations are not fully compatible was language-centric program representations.