Melvin Conway

Last updated

Melvin Edward Conway is an American computer scientist, computer programmer, and hacker who coined what is now known as Conway's law: "Organizations, who design systems, are constrained to produce designs which are copies of the communication structures of these organizations." [1] The adage remains relevant in modern software engineering and is still being referenced and investigated. [2] [3]

Contents

Apart from the above, Conway is perhaps most famous for developing the concept of coroutines. Conway coined the term coroutine in 1958 and he was the first to apply the concept to an assembly program. [4] He later authored a seminal paper on the subject of coroutines, titled "Design of a Separable Transition-diagram Compiler", [5] which included the first published explanation of the concept. [4] In this paper, he proposed organizing a compiler as a set of coroutines, which allows using separate passes while debugging and then running a single pass compiler in production. Another famous paper is his 1958 proposal of an UNCOL, [6] a Universal Computer Oriented Language, which attempted to provide a solution to economically produce compilers for new programming languages and computer architectures.

Conway wrote an assembler for the Burroughs model 220 computer called SAVE. The name SAVE was not an acronym, but a feature: programmers lost fewer punched card decks because they all had "SAVE" written on them. [7]

His work on Pascal compiler for Rockwell Semiconductor (an immediate-turnaround Pascal trainer for the Rockwell AIM-65) led to an arrangement between Apple and Think Technologies (where he served as a principal) under which the latter produced the original (1984) Mac Pascal and Apple II Instant Pascal.

In the 1970s, he was involved with the MUMPS (Massachusetts General Hospital Utility Multi-Programming System) medical programming language standard specification for the National Bureau of Standards. [8] He also wrote a reference book on MUMPS in 1983. [9]

Conway was granted a US patent in 2001 on "Dataflow processing with events", concerned with programming using graphical user interfaces. The patent expired in 2019. [10]

In 2002, Conway obtained a teacher license for high school math and physics in Massachusetts. He taught at Chelsea High School from 2002 to 2006. [11]

Education

Selected publications

Related Research Articles

<span class="mw-page-title-main">Computing</span> Activity involving calculations or computing machinery

Computing is any goal-oriented activity requiring, benefiting from, or creating computing machinery. It includes the study and experimentation of algorithmic processes, and development of both hardware and software. Computing has scientific, engineering, mathematical, technological and social aspects. Major computing disciplines include computer engineering, computer science, cybersecurity, data science, information systems, information technology, digital art and software engineering.

<span class="mw-page-title-main">Fred Brooks</span> American computer scientist (1931–2022)

Frederick Phillips Brooks Jr. was an American computer architect, software engineer, and computer scientist, best known for managing the development of IBM's System/360 family of computers and the OS/360 software support package, then later writing candidly about those experiences in his seminal book The Mythical Man-Month.

<span class="mw-page-title-main">Niklaus Wirth</span> Swiss computer scientist (born 1934)

Niklaus Emil Wirth is a Swiss computer scientist. He has designed several programming languages, including Pascal, and pioneered several classic topics in software engineering. In 1984, he won the Turing Award, generally recognized as the highest distinction in computer science, for developing a sequence of innovative computer languages.

Structured programming is a programming paradigm aimed at improving the clarity, quality, and development time of a computer program by making extensive use of the structured control flow constructs of selection (if/then/else) and repetition, block structures, and subroutines.

<span class="mw-page-title-main">Simula</span> Early object-oriented programming language

Simula is the name of two simulation programming languages, Simula I and Simula 67, developed in the 1960s at the Norwegian Computing Center in Oslo, by Ole-Johan Dahl and Kristen Nygaard. Syntactically, it is an approximate superset of ALGOL 60, and was also influenced by the design of Simscript.

Coroutines are computer program components that allow execution to be suspended and resumed, generalizing subroutines for cooperative multitasking. Coroutines are well-suited for implementing familiar program components such as cooperative tasks, exceptions, event loops, iterators, infinite lists and pipes.

<span class="mw-page-title-main">Charles Bachman</span> American computer scientist

Charles William Bachman III was an American computer scientist, who spent his entire career as an industrial researcher, developer, and manager rather than in academia. He was particularly known for his work in the early development of database management systems. His techniques of layered architecture include his namesake Bachman diagrams.

<span class="mw-page-title-main">PL/C</span> Programming language developed at Cornell University

PL/C is an instructional dialect of the programming language PL/I, developed at the Department of Computer Science of Cornell University in the early 1970s in an effort headed by Professor Richard W. Conway and graduate student Thomas R. Wilcox. PL/C was developed with the specific goal of being used for teaching programming. The PL/C compiler, which implemented almost all of the large PL/I language, had the unusual capability of never failing to compile a program, through the use of extensive automatic correction of many syntax errors and by converting any remaining syntax errors to output statements. This was important because, at the time, students submitted their programs on IBM punch cards and might not get their output back for several hours. Over 250 other universities adopted PL/C; as one late-1970s textbook on PL/I noted, "PL/C ... the compiler for PL/I developed at Cornell University ... is widely used in teaching programming." Similarly, a mid-late-1970s survey of programming languages said that "PL/C is a widely used dialect of PL/I."

A system programming language is a programming language used for system programming; such languages are designed for writing system software, which usually requires different development approaches when compared with application software. Edsger Dijkstra refers to these languages as machine oriented high order languages, or mohol.

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.

UNCOL is a universal intermediate language for compilers. The idea was introduced in 1958, by a SHARE ad-hoc committee. It was never fully specified or implemented; in many ways it was more a concept than a language.

<span class="mw-page-title-main">Per Brinch Hansen</span> Danish-American computer scientist

Per Brinch Hansen was a Danish-American computer scientist known for his work in operating systems, concurrent programming and parallel and distributed computing.

Conway's law is an adage linking the communication structure of organizations to the systems they design. It is named after the computer programmer Melvin Conway, who introduced the idea in 1967. His original wording was:

Any organization that designs a system will produce a design whose structure is a copy of the organization's communication structure.

In computer science, bootstrapping is the technique for producing a self-compiling compiler – that is, a compiler written in the source programming language that it intends to compile. An initial core version of the compiler is generated in a different language ; successive expanded versions of the compiler are developed using this minimal subset of the language. The problem of compiling a self-compiling compiler has been called the chicken-or-egg problem in compiler design, and bootstrapping is a solution to this problem.

In computer programming, flow-based programming (FBP) is a programming paradigm that defines applications as networks of black box processes, which exchange data across predefined connections by message passing, where the connections are specified externally to the processes. These black box processes can be reconnected endlessly to form different applications without having to be changed internally. FBP is thus naturally component-oriented.

Douglas Taylor "Doug" Ross was an American computer scientist pioneer, and chairman of SofTech, Inc. He is most famous for originating the term CAD for computer-aided design, and is considered to be the father of Automatically Programmed Tools (APT), a programming language to drive numerical control in manufacturing. His later work focused on a pseudophilosophy he developed and named Plex.

<span class="mw-page-title-main">History of compiler construction</span>

In computing, a compiler is a computer program that transforms source code written in a programming language or computer language, into another computer language. The most common reason for transforming source code is to create an executable program.

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

In computing, tombstone diagrams consist of a set of “puzzle pieces” representing compilers and other related language processing programs. They are used to illustrate and reason about transformations from a source language to a target language realised in an implementation language. They are most commonly found describing complicated processes for bootstrapping, porting, and self-compiling of compilers, interpreters, and macro-processors.

A high-level language computer architecture (HLLCA) is a computer architecture designed to be targeted by a specific high-level programming language (HLL), rather than the architecture being dictated by hardware considerations. It is accordingly also termed language-directed computer design, coined in McKeeman (1967) and primarily used in the 1960s and 1970s. HLLCAs were popular in the 1960s and 1970s, but largely disappeared in the 1980s. This followed the dramatic failure of the Intel 432 (1981) and the emergence of optimizing compilers and reduced instruction set computer (RISC) architectures and RISC-like complex instruction set computer (CISC) architectures, and the later development of just-in-time compilation (JIT) for HLLs. A detailed survey and critique can be found in Ditzel & Patterson (1980).

References

  1. Conway, Melvin E. (April 1968). "How do Committees Invent?". Datamation . 14 (5): 28–31. Archived from the original on 2019-10-10. Retrieved 2019-10-10. […] organizations which design systems […] are constrained to produce designs which are copies of the communication structures of these organizations.
  2. Kamola, Mariusz (2019). "How to Verify Conway's Law for Open Source Projects". IEEE Access. 7: 38469–38480. doi: 10.1109/ACCESS.2019.2905671 . ISSN   2169-3536.
  3. Imtiaz, Salma; Ikram, Naveed (2017-01-27). "Dynamics of task allocation in global software development: Dynamics of task allocation in global software development". Journal of Software: Evolution and Process. 29 (1): e1832. doi:10.1002/smr.1832. S2CID   27961137.
  4. 1 2 Knuth, Donald Ervin (1997). Fundamental Algorithms (PDF). The Art of Computer Programming. Vol. 1 (3rd ed.). Addison-Wesley. Section 1.4.5: History and Bibliography, pp. 229. ISBN   978-0-201-89683-1. Archived (PDF) from the original on 2019-10-21. The word "coroutine" was coined by M. E. Conway in 1958, after he had developed the concept, and he first applied it to the construction of an assembly program. […] The first published explanation of the coroutine concept appeared much later in Conway's article "Design of a Separable Transition-Diagram Compiler," […]
  5. Conway, Melvin E. (July 1963). "Design of a Separable Transition-diagram Compiler" (PDF). Communications of the ACM . ACM. 6 (7): 396–408. doi:10.1145/366663.366704. ISSN   0001-0782. S2CID   10559786.
  6. Conway, Melvin E. (October 1958). "Proposal for an UNCOL". Communications of the ACM . ACM. 1 (10): 5–8. doi: 10.1145/368924.368928 . ISSN   0001-0782. S2CID   6797697.
  7. Raymond, Eric S. (October 1996). The New Hacker's Dictionary (3rd ed.). Cambridge, Massachusetts: MIT Press. p. 124. ISBN   978-0-262-68092-9. The name 'SAVE' didn't stand for anything; it was just that you lost fewer card decks and listings because they all had SAVE written on them.
  8. "Foreword: 1977 Version of ANSI Standard". The Annotated M[UMPS] Standards. MUMPS Development Committee. 29 November 2011. Retrieved 2019-10-21. MUMPS, an acronym for Massachusetts General Hospital Utility Multi-Programming System, is a high-level, interactive computer programming language […] Part I of this Standard, the MUMPS Language Specification, MDC/28, was prepared by Melvin E. Conway under Contract No. 5–35770 with the National Bureau of Standards.
  9. Conway, Melvin E. (1983). Dayhoff, Ruth E. (ed.). Mumps Programming Reference Manual. MUMPS Users' Group. ISBN   0918118255. OCLC   9862807.
  10. U.S. Patent 6272672B1
  11. Conway, Melvin E. "Mel Conway's Home Page". www.melconway.com. Retrieved 2019-10-06. In 2002 I obtained a license to teach high school math and physics in Massachusetts, and I taught at Chelsea High School from 2002 to 2006.
  12. "Melvin Edward Conway". Mathematics Genealogy Project. Retrieved 2019-10-06.
  13. 1 2 Conway, Melvin (November 7, 2009). "Mel Conway, Ph.D." (PDF). Mel Conway’s Home Page. Retrieved 2019-10-06.