Intentional Software

Last updated
Intentional Software
IndustrySoftware engineering
FoundedSeptember 2002
Founder Charles Simonyi
Gregor Kiczales   OOjs UI icon edit-ltr-progressive.svg
DefunctApril 2017
FateAcquired by Microsoft
Headquarters
Key people
Charles Simonyi (co-founder), Eric C. Anderson (CEO)
Number of employees
50-100
Parent Microsoft   OOjs UI icon edit-ltr-progressive.svg
Website http://www.intentional.com

Intentional Software was a software company that designed tools and platforms that followed the principles of intentional programming [1] in which programmers focus on capturing the intent of users and designers, and spend as little time as possible interacting with machines and compilers. [2] Its tools included language workbenches, tools that separated software function from implementation, and allowed 'language-focused' development. [3] [4] This allowed automatic rewriting of code as expert knowledge of implementation options changed. [5] The company later began developing a platform for improving productivity of software groups.

Contents

The company was co-founded by Charles Simonyi and Gregor Kiczales in 2002, and later headed by CEO Eric Anderson. However, Kiczales left the company in 2003. [6] In 2017 it had almost 100 staff. [7] On April 18, 2017, it was acquired by Microsoft, [8] [9] with many of its employees joining the Microsoft Office team.

Products and services

Intentional Software developed the Domain Workbench, a language workbench for building and working with domain-specific languages, [10] and designed custom languages for clients for their particular uses. [11] They also built the Intentional Platform, [12] a platform for group productivity software.

Related Research Articles

In software engineering, a software design pattern is a general, reusable solution to a commonly occurring problem within a given context in software design. It is not a finished design that can be transformed directly into source or machine code. Rather, it is a description or template for how to solve a problem that can be used in many different situations. Design patterns are formalized best practices that the programmer can use to solve common problems when designing an application or system.

A domain-specific language (DSL) is a computer language specialized to a particular application domain. This is in contrast to a general-purpose language (GPL), which is broadly applicable across domains. There are a wide variety of DSLs, ranging from widely used languages for common domains, such as HTML for web pages, down to languages used by only one or a few pieces of software, such as MUSH soft code. DSLs can be further subdivided by the kind of language, and include domain-specific markup languages, domain-specific modeling languages, and domain-specific programming languages. Special-purpose computer languages have always existed in the computer age, but the term "domain-specific language" has become more popular due to the rise of domain-specific modeling. Simpler DSLs, particularly ones used by a single application, are sometimes informally called mini-languages.

In computer science, a metaobject is an object that manipulates, creates, describes, or implements objects. The object that the metaobject pertains to is called the base object. Some information that a metaobject might define includes the base object's type, interface, class, methods, attributes, parse tree, etc. Metaobjects are examples of the computer science concept of reflection, where a system has access to its own internal structure. Reflection enables a system to essentially rewrite itself on the fly, to alter its own implementation as it executes.

<span class="mw-page-title-main">Charles Simonyi</span> Hungarian-American software architect

Charles Simonyi is a Hungarian-American software architect. He started and led Microsoft's applications group, where he built the first versions of Microsoft Office.

<span class="mw-page-title-main">Gregor Kiczales</span> American computer scientist

Gregor Kiczales is an American computer scientist. He is currently a professor of computer science at the University of British Columbia in Vancouver, British Columbia, Canada. He is best known for developing the concept of aspect-oriented programming, and the AspectJ extension to the Java programming language, both of which he designed while working at Xerox PARC. He is also one of the co-authors of the specification for the Common Lisp Object System, and is the author of the book The Art of the Metaobject Protocol, along with Jim Des Rivières and Daniel G. Bobrow.

OOPSLA is an annual ACM research conference. OOPSLA mainly takes place in the United States, while the sister conference of OOPSLA, ECOOP, is typically held in Europe. It is operated by the Special Interest Group for Programming Languages (SIGPLAN) group of the Association for Computing Machinery (ACM).

Language-oriented programming (LOP) is a software-development paradigm where "language" is a software building block with the same status as objects, modules and components, and rather than solving problems in general-purpose programming languages, the programmer creates one or more domain-specific languages (DSLs) for the problem first, and solves the problem in those languages. Language-oriented programming was first described in detail in Martin Ward's 1994 paper Language Oriented Programming, published in Software - Concepts and Tools, Vol.15, No.4, pp 147–161, 1994.

In computer programming, Intentional Programming is a programming paradigm developed by Charles Simonyi that encodes in software source code the precise intention which programmers have in mind when conceiving their work. By using the appropriate level of abstraction at which the programmer is thinking, creating and maintaining computer programs become easier. By separating the concerns for intentions and how they are being operated upon, the software becomes more modular and allows for more reusable software code.

End-user development (EUD) or end-user programming (EUP) refers to activities and tools that allow end-users – people who are not professional software developers – to program computers. People who are not professional developers can use EUD tools to create or modify software artifacts and complex data objects without significant knowledge of a programming language. In 2005 it was estimated that by 2012 there would be more than 55 million end-user developers in the United States, compared with fewer than 3 million professional programmers. Various EUD approaches exist, and it is an active research topic within the field of computer science and human-computer interaction. Examples include natural language programming, spreadsheets, scripting languages, visual programming, trigger-action programming and programming by example.

<span class="mw-page-title-main">Greenfoot</span>

Greenfoot is an integrated development environment using Java or Stride designed primarily for educational purposes at the high school and undergraduate level. It allows easy development of two-dimensional graphical applications, such as simulations and interactive games.

<span class="mw-page-title-main">Joshua Bloch</span> American software engineer

Joshua J. Bloch is an American software engineer and a technology author, formerly employed at Sun Microsystems and Google. He led the design and implementation of numerous Java platform features, including the Java Collections Framework, the java.math package, and the assert mechanism. He is the author of the programming guide Effective Java (2001), which won the 2001 Jolt Award, and is a co-author of two other Java books, Java Puzzlers (2005) and Java Concurrency In Practice (2006).

Midori was the code name for a managed code operating system (OS) being developed by Microsoft with joint effort of Microsoft Research. It had been reported to be a possible commercial implementation of the OS Singularity, a research project begun in 2003 to build a highly dependable OS in which the kernel, device drivers, and application software are all written in managed code. It was designed for concurrency, and could run a program spread across multiple nodes at once. It also featured a security model that sandboxes applications for increased security. Microsoft had mapped out several possible migration paths from Windows to Midori. Midori was discontinued some time in 2015, though many of its concepts were used in other Microsoft projects.

JetBrains MPS is a language workbench developed by JetBrains. MPS is a tool to design domain-specific languages (DSL). It uses projectional editing which allows users to overcome the limits of language parsers, and build DSL editors, such as ones with tables and diagrams.
It implements language-oriented programming. MPS is an environment for language definition, a language workbench, and integrated development environment (IDE) for such languages.

In computer programming and software development, debugging is the process of finding and resolving bugs within computer programs, software, or systems.

<span class="mw-page-title-main">Aspect weaver</span> Software programming utility

An aspect weaver is a metaprogramming utility for aspect-oriented languages designed to take instructions specified by aspects and generate the final implementation code. The weaver integrates aspects into the locations specified by the software as a pre-compilation step. By merging aspects and classes, the weaver generates a woven class.

<span class="mw-page-title-main">API</span> Software interface between computer programs

An application programming interface (API) is a way for two or more computer programs to communicate with each other. It is a type of software interface, offering a service to other pieces of software. A document or standard that describes how to build or use such a connection or interface is called an API specification. A computer system that meets this standard is said to implement or expose an API. The term API may refer either to the specification or to the implementation.

Software archaeology or source code archeology is the study of poorly documented or undocumented legacy software implementations, as part of software maintenance. Software archaeology, named by analogy with archaeology, includes the reverse engineering of software modules, and the application of a variety of tools and processes for extracting and understanding program structure and recovering design information. Software archaeology may reveal dysfunctional team processes which have produced poorly designed or even unused software modules, and in some cases deliberately obfuscatory code may be found. The term has been in use for decades.

Software Product Lines Online Tools (S.P.L.O.T.) is a set of research-oriented online tools for Software Product Lines (SPL) practitioners. S.P.L.O.T. was created by Marcilio Mendonca during his Ph.D. at the University of Waterloo, Canada, in 2008-2009. Since then, the academic website has been visited by numerous researchers and research groups worldwide thereby helping to advance the Software Product Lines field. S.P.L.O.T's source code are freely available on GitHub and have been successfully extended by others to address different research needs.

A language workbench is a tool or set of tools that enables software development in the language-oriented programming software development paradigm. A language workbench will typically include tools to support the definition, reuse and composition of domain-specific languages together with their integrated development environment. Language workbenches were introduced and popularized by Martin Fowler in 2005.

<span class="mw-page-title-main">Yannis Smaragdakis</span> American computer scientist

Yannis Smaragdakis is a Greek-American software engineer, computer programmer, and researcher. He is a professor in the Department of Informatics and Telecommunications at the University of Athens. He is the author of more than 130 research articles on a variety of topics, including program analysis, declarative languages, program generators, language design, and concurrency. He is best known for work in program generation and program analysis and the Doop framework.

References

  1. Rosenberg, Scott. "Anything You Can Do, I Can Do Meta" . Retrieved 4 September 2017.
  2. Pontin, Jason (2007). "Awaiting the Day When Everyone Writes Software". The New York Times. ISSN   0362-4331 . Retrieved 2017-09-12.
  3. Fowler, Martin. "Language Workbenches: The Killer-App for Domain Specific Languages?" (PDF).
  4. Rosenan, Boaz (2010). "Designing language-oriented programming languages". Proceedings of the ACM international conference companion on Object oriented programming systems languages and applications companion. OOPSLA '10. New York, NY, USA: ACM. pp. 207–208. doi:10.1145/1869542.1869576. ISBN   9781450302401. S2CID   13841558.
  5. Simonyi, Charles; Christerson, Magnus; Clifford, Shane (2006). "Intentional software". Proceedings of the 21st annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications. OOPSLA '06. New York, NY, USA: ACM. pp. 451–464. doi:10.1145/1167473.1167511. ISBN   1595933484. S2CID   10334945.
  6. "Co-Founder Of Intentional Software Has Left The Company". InformationWeek. Retrieved 2020-07-28.
  7. "Charles Simonyi rejoins Microsoft as it buys his startup". The Seattle Times. 2017-04-18. Retrieved 2017-09-12.
  8. Miller, Ron. "Microsoft acquires Intentional Software and brings old friend back into fold - TechCrunch" . Retrieved 4 September 2017.
  9. "Charles Simonyi, Founder, Chairman, and CTO -". www.intentional.com. Archived from the original on 2018-08-25. Retrieved 2017-09-12.
  10. "Charles Simonyi reveals production use of Intentional Software @ JAOO". InfoQ. Retrieved 2017-09-12.
  11. "ACORD and Intentional Software Announce Strategic Partnership — ACORD.org Press Releases". Press Releases. Retrieved 2017-09-12.
  12. "Intentional Platform -". www.intentsoft.com. Retrieved 2017-09-12.