Matthew Flatt

Last updated

Matthew Flatt is an American computer scientist and professor at the University of Utah School of Computing in Salt Lake City. [1] He is also the leader of the core development team for the Racket programming language. [2]

Flatt received his PhD at Rice University in 1999, under the direction of Matthias Felleisen. [3] His dissertation is on the mechanics of first-class modules and mixin classes. His work triggered research in the ML community on mutually recursive modules and in the object-oriented community on mixins and traits [4] [5] [6]

Flatt served as one of four editors of the Revised^6 Report on the Scheme programming language. The report is influenced by his design of Racket, especially the module system, the exception system, the record system, the macro system, and library links. [7]

In 2018, Flatt received the ACM SIGPLAN's Programming Languages Software Award (jointly with the Racket core team) [8] . The citation highlights Racket's singular significance both in research and education. The research part refers to its powerful macro system, which is integrated with its novel module system. Other impacts, for example cited in the Revised^6 Report on Scheme, concern Racket's exception system and its resource management subsystem. The education aspect is about the TeachScheme! (also known as Program by Design) [9] project, which over decades morphed into the Bootstrap [10] curriculum.

Related Research Articles

<span class="mw-page-title-main">Macro (computer science)</span> Rule for substituting a set input with a set output

In computer programming, a macro is a rule or pattern that specifies how a certain input should be mapped to a replacement output. Applying a macro to an input is known as macro expansion. The input and output may be a sequence of lexical tokens or characters, or a syntax tree. Character macros are supported in software applications to make it easy to invoke common command sequences. Token and tree macros are supported in some programming languages to enable code reuse or to extend the language, sometimes for domain-specific languages.

In computing, a virtual machine (VM) is the virtualization or emulation of a computer system. Virtual machines are based on computer architectures and provide the functionality of a physical computer. Their implementations may involve specialized hardware, software, or a combination of the two. Virtual machines differ and are organized by their function, shown here:

<span class="mw-page-title-main">Douglas McIlroy</span> American mathematician and computer scientist

Malcolm Douglas McIlroy is an American mathematician, engineer, and programmer. As of 2019 he is an Adjunct Professor of Computer Science at Dartmouth College. McIlroy is best known for having originally proposed Unix pipelines and developed several Unix tools, such as spell, diff, sort, join, graph, speak, and tr. He was also one of the pioneering researchers of macro processors and programming language extensibility. He participated in the design of multiple influential programming languages, particularly PL/I, SNOBOL, ALTRAN, TMG and C++.

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.

<span class="mw-page-title-main">Matthias Felleisen</span> German-American computer science professor and author

Matthias Felleisen is a German-American computer science professor and author. He grew up in Germany and immigrated to the US in his twenties. He received his PhD from Indiana University under the direction of Daniel P. Friedman.

<span class="mw-page-title-main">Racket (programming language)</span> Lisp dialect

Racket is a general-purpose, multi-paradigm programming language and a multi-platform distribution that includes the Racket language, compiler, large standard library, IDE, development tools, and a set of additional languages including Typed Racket, Swindle, FrTime, Lazy Racket, R5RS & R6RS Scheme, Scribble, Datalog, Racklog, Algol 60 and several teaching languages.

The ProgramByDesign project is an outreach effort of the PLT research group. The goal is to train college faculty, high school teachers, and possibly even middle school teachers, in programming and computing.

In computer science, pointer analysis, or points-to analysis, is a static code analysis technique that establishes which pointers, or heap references, can point to which variables, or storage locations. It is often a component of more complex analyses such as escape analysis. A closely related technique is shape analysis.

In programming languages, a delimited continuation, composable continuation or partial continuation, is a "slice" of a continuation frame that has been reified into a function. Unlike regular continuations, delimited continuations return a value, and thus may be reused and composed. Control delimiters, the basis of delimited continuations, were introduced by Matthias Felleisen in 1988 though early allusions to composable and delimited continuations can be found in Carolyn Talcott's Stanford 1984 dissertation, Felleisen et al., Felleisen's 1987 dissertation, and algorithms for functional backtracking, e.g., for pattern matching, for parsing, in the Algebraic Logic Functional programming language, and in the functional implementations of Prolog where the failure continuation is often kept implicit and the reason of being for the success continuation is that it is composable.

Lightweight Java (LJ) is a fully formalized and extensible minimal imperative fragment of Java. The language was designed for academic purposes within the Computer Laboratory, University of Cambridge. The definition of LJ was proven type-sound in Isabelle/HOL.

The expression problem is a challenging problem in programming languages that concerns the extensibility and modularity of statically typed data abstractions. The goal is to define a data abstraction that is extensible both in its representations and its behaviors, where one can add new representations and new behaviors to the data abstraction, without recompiling existing code, and while retaining static type safety. The statement of the problem exposes deficiencies in programming paradigms and programming languages, and as of 2023 is still considered unsolved, although there are many proposed solutions.

In computer science, region-based memory management is a type of memory management in which each allocated object is assigned to a region. A region, also called a zone, arena, area, or memory context, is a collection of allocated objects that can be efficiently reallocated or deallocated all at once. Like stack allocation, regions facilitate allocation and deallocation of memory with low overhead; but they are more flexible, allowing objects to live longer than the stack frame in which they were allocated. In typical implementations, all objects in a region are allocated in a single contiguous range of memory addresses, similarly to how stack frames are typically allocated.

Extended static checking (ESC) is a collective name in computer science for a range of techniques for statically checking the correctness of various program constraints. ESC can be thought of as an extended form of type checking. As with type checking, ESC is performed automatically at compile time. This distinguishes it from more general approaches to the formal verification of software, which typically rely on human-generated proofs. Furthermore, it promotes practicality over soundness, in that it aims to dramatically reduce the number of false positives at the cost of introducing some false negatives. ESC can identify a range of errors that are currently outside the scope of a type checker, including division by zero, array out of bounds, integer overflow and null dereferences.

Shriram Krishnamurthi is a computer scientist, currently a professor of computer science at Brown University and a member of the core development group for the Racket programming languages, responsible for creation of software packages including the Debugger, the FrTime package, and the networking library. Since 2006, Krishnamurthi has been a leading contributor to the Bootstrap curriculum, a project to integrate computer science education into grades 6–12.

Robert Bruce Findler, colloquially known as "Robby", is an American computer scientist, currently, a professor of computer science at Northwestern University. He is also a member of the PLT group and, as such, responsible for the creation and maintenance of DrRacket. In addition to DrRacket, Findler has contributed numerous components to Racket and supervises its Web-based software library, called PLaneT. Findler is also a leading team member of the ProgramByDesign project.

<span class="mw-page-title-main">Kathryn S. McKinley</span> American computer scientist

Kathryn S. McKinley is an American computer scientist noted for her research on compilers, runtime systems, and computer architecture. She is also known for her leadership in broadening participation in computing. McKinley was co-chair of CRA-W from 2011 to 2014.

Gradual typing is a type system in which some variables and expressions may be given types and the correctness of the typing is checked at compile time and some expressions may be left untyped and eventual type errors are reported at runtime. Gradual typing allows software developers to choose either type paradigm as appropriate, from within a single language. In many cases gradual typing is added to an existing dynamic language, creating a derived language allowing but not requiring static typing to be used. In some cases a language uses gradual typing from the start.

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.

Soufflé is an open source parallel logic programming language, influenced by Datalog. Soufflé includes both an interpreter and a compiler that targets parallel C++. Soufflé has been used to build static analyzers, disassemblers, and tools for binary reverse engineering. Soufflé is considered by academic researchers to be high-performance and "state of the art," and is often used in benchmarks in academic papers.

References

  1. University of Utah Computer Science faculty listing, retrieved 2015-02-16.
  2. Racket: People, retrieved 2012-06-22.
  3. Matthew Flatt at the Mathematics Genealogy Project
  4. Flatt, Matthew; Findler, Robert Bruce; Felleisen, Matthias (2006-11-08). "Scheme with classes, mixins, and traits". Proceedings of the 4th Asian conference on Programming Languages and Systems. APLAS'06. Berlin, Heidelberg: Springer-Verlag: 270–289. doi:10.1007/11924661_17. ISBN   978-3-540-48937-5.
  5. Flatt, Matthew; Krishnamurthi, Shriram; Felleisen, Matthias (1998-01-21). "Classes and mixins". Proceedings of the 25th ACM SIGPLAN-SIGACT symposium on Principles of programming languages. POPL '98. New York, NY, USA: Association for Computing Machinery: 171–183. doi:10.1145/268946.268961. ISBN   978-0-89791-979-1.
  6. Flatt, Matthew; Felleisen, Matthias (1998-05-01). "Units: cool modules for HOT languages". Proceedings of the ACM SIGPLAN 1998 conference on Programming language design and implementation. PLDI '98. New York, NY, USA: Association for Computing Machinery: 236–248. doi:10.1145/277650.277730. ISBN   978-0-89791-987-6.
  7. Flatt, Matthew (2002-09-17). "Composable and compilable macros". Proceedings of the seventh ACM SIGPLAN international conference on Functional programming. ICFP '02. New York, NY, USA: Association for Computing Machinery. pp. 72–83. doi:10.1145/581478.581486. ISBN   978-1-58113-487-2. S2CID   2203273.
  8. "Programming Languages Software Award". www.sigplan.org. Retrieved 2024-02-12.
  9. "Program by Design". programbydesign.org. Retrieved 2024-02-12.
  10. "Bootstrap: Community". www.bootstrapworld.org. Retrieved 2024-02-12.