Writing a good research paper or thesis is hard. It can be very intimidating to figure out the scope of the work needed to be done. Thanks to Oscar, I have been empowered with three adjectives to think about problems of scope. These adjectives were: breadth, depth and completeness. Breadth and Depth At the early stage of my thesis, I prepared a list of action … Continue reading The Zen of Oscar
This is a question is occasionally asked by students and here is the answer. We are not religious. This choice is not dogmatic. We do both research in programming languages and tool support for software evolution. In both cases Smalltalk is handy: Programming language — Smalltalk is extermely uniform. Experimenting with a language change is faster in Smalltak, than say, Java or Ruby. Their syntax … Continue reading Why Smalltalk?
(A cheap title, I know) Reflection is one of these concept that constantly move from “obvious” to “puzzling” in my head–you feel like you have a firm understanding of it, and then suddently it evades, you feel puzzled by certain aspects, and ultimately confused about the whole thing. Why? Two Perspectives One of the first source of confusion is that reflection can be apprehended with … Continue reading Reflecting on Reflection
There’s the lambda cube, and the big data cube. Why not a an object cube? Here would be three axis: Object Existence — The object existence dimension can range for everything ia a mutable object, to more distinctions between mutable and immutable objects, or objects and values. Existence, identity and mutability are tightly related (“I have an identity therefore I exist”). Object Composition — The … Continue reading The Object Cube
Edit: the idea presented in this post was worked out into a consistent language feature and accepted for publication. Ownership type systems have been designed for statically typed languages to confine and constraint aliasing, which in turn increases security and safety. Ownership type systems are conservative, and can only enforce properties that are known to hold globally and statically. Rather than taking a static view … Continue reading Ownership for Dynamic Languages
As per wikipedia, a model is a pattern, plan, representation (especially in miniature), or description designed to show the main object or workings of an object, system, or concept. In the case of software engineering, models are used to represent specific aspects of the software system, such as static structures, communication paths, algorithms, etc. Models can be created along two axis: Abstraction level An abstraction … Continue reading Abstraction-Level vs. Meta-Level