An Introduction to BON

Richard F. Paige · 1999

As designers and programmers of software, we need notations that we can use to write down our ideas. When we write programs, we use a programming language--like Eiffel--to describe how we want the machine to behave. A programming language is a useful notation for writing down algorithms, and for efficiently implementing systems. However, when we are trying to solve a problem (one that will eventually be implemented as a computer program) a programming language isn't likely to be the most appropriate notation. When we are problem solving, we probably won't be concerned with the technical details that we must worry about when we are programming. When we are problem solving, and when we are designing our systems, we want to be able to write down abstractions, using a notation that is well-suited to expressing abstractions. When we are thinking, we don't want to be forced to think in terms of programming language idioms--things like registers, while loops, pointers, and the like. We usually want to think in terms of abstractions--high-level concepts like classes, relationships, components, and so on. And there are better notations for describing these abstractions than programming languages.

Read the paper · More papers on PaperTik