New computing platforms are interrelated to their physical execution environment through all kinds of sensors that are able to measure location, orientation, movement, light, sound, temperature, network signal strength, battery charge level, and so forth. At the logical level, even traditional desktop and server platforms are getting exposed to richer environments in which they can find network services of all sorts. Both at the physical and logical levels, the live environment in which applications execute is acquiring a central role, and end-users expect their software systems to adapt gracefully to this changing environment. If equipped with higher levels of context-driven adaptability, software systems can become smarter with respect to their environment and to user needs, exhibit emergent properties, be resilient in the face of perturbations, and generally fit better in the technical ecosystem in which they are used.
Unfortunately, most software systems do not meet the high adaptability expectations that stem naturally from their connectedness to their environment. Most applications exhibit fixed functionality and are seldom aware of changing contexts to adapt their behaviour accordingly. Many chances of delivering improved services to users and network peers are thus missed. We hypothesise that a major reason for this lack of adaptability is the unavailability of appropriate context-aware programming languages and related tool sets. Current programming technology does not put programmers in the right state of mind, nor does it provide adequate abstractions, to program context-aware applications.
Starting from this observation, Context-Oriented Programming (COP) has been introduced as a novel programming paradigm which eases the development of adaptable behaviour according to changing contexts. COP offers an alternative to hard-coded conditional statements and special design patterns to encode context-dependent behaviour. By helping to avoid such statements, COP renders code more reusable and maintainable. Several research teams around have started to investigate new context-oriented programming languages or context-oriented extensions of existing languages.
Is context-oriented programming here to stay? Will those context-oriented features be adopted and appear in mainstream programming languages in a few years from now? Or will it be a passing hype?
Conference Paper Subjective-C : Bringing Context to Mobile Platform Programming.