Intentional Programming

Intentional Programming

« Back to Glossary Index
Visit Us
Follow Me

Intentional Programming is a software development paradigm that aims to improve the process of writing software by placing the primary focus on a developer’s intent, rather than on the specific details of the programming language being used.

The concept was pioneered by Charles Simonyi, a former Microsoft executive known for his work on the Microsoft Office suite. At its core, Intentional Programming is about creating software in a high-level, abstracted way, allowing developers to focus on solving the problem at hand rather than getting bogged down in the intricacies of syntax and low-level implementation details.

Intentional Programming typically involves the creation of a “domain-specific language” (DSL) which is specifically tailored to the problem area the software is addressing. This allows developers to write code in a language that is closer to the language of the problem domain.

This higher level of abstraction is intended to make the code easier to read, understand, and maintain. It allows for the expression of programs as a set of intentions—what needs to be done, rather than how to do it. The “how” is then taken care of by a compiler or interpreter, which translates the high-level, intention-based code into a form that can be executed by a computer.

In addition to improving readability and maintainability, Intentional Programming also aims to make software development more accessible to non-programmers. By using DSLs that are closer to natural language, it’s hoped that subject matter experts can be more directly involved in the development process, resulting in software that is more closely aligned with business needs.

Intentional Programming remains a somewhat niche area in the broader software development landscape, but the principles of higher-level abstractions, readability, and involvement of non-programmers are becoming increasingly common, particularly in the growing field of low-code and no-code development platforms.

You may also like...