Domains and Algorithms

Domains became popular in the late 1980s when researchers began to explore how object-oriented principles could be used to promote software reuse. In the context of reuse, domains are application areas that share common traits. Each domain has its own vocabulary that provides a language to describe the domain. The language helps design systems and reusable components that are appropriate for the particular domain. Domain-specific languages (DSLs) are used to model domains to generate domain-specific software, rather than construct it manually.

Algorithms, like applications, have domains. These domains are orthogonal to specific application domains. Algorithm domains provide us with knowledge about the application domains that are most amenable to certain types of algorithms. For example, if one is developing an application to access web services from a mobile phone, it would be appropriate to use algorithms optimized for space usage and external storage rather than simply the best overall time performance.

Algorithm domains are not as well defined as application domains; they are more general and span several application domains. Algorithm domains map more closely to standard computer science areas. We see, for example, search and graph traversal algorithms used frequently in artificial intelligence applications, whereas numerical algorithms seldom appear in such applications. Database management systems have their own set of algorithms that appear frequently, ...

Get Algorithms in a Nutshell now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.