Daniel P. Friedman
Encyclopedia
Daniel Paul Friedman is a professor of Computer Science
at Indiana University
in Bloomington, Indiana
. His research focuses on programming language
s, and he is a prominent author in the field.
With David Wise, Friedman wrote a highly influential paper on lazy programming
, specifically on lazy streams (ICALP 1976). The paper, entitled "Cons should not evaluate its arguments," is one of the first publications pushing for the exploration of a programming style with potentially infinite data structures and a form of programming that employs no computational effects (though programs may diverge). Over the 1970s, Friedman and Wise explored the topic in depth and also considered extensions to the world of parallel computing.
In the 1980s, Friedman turned to the study of Scheme. He explored the use of macros for defining programming languages; with Kohlbecker, Felleisen
, and Duba, he co-introduced the notion of 'hygienic macros' in a 1986 LFP paper that is still widely cited today. With Haynes and Wand, he simultaneously studied the nature of continuation objects, their uses, and the possibilities of constraining them. Following that, Friedman and Felleisen
introduced a lambda calculus with continuations and control operators
. Their work has spawned work on semantics, connections between classical logic and computation, and practical extensions of continuations.
Friedman is also a prolific text book author. His first text book, The Little LISP
er, dates back to 1974 and is still in print in its fourth edition, now called The Little Schemer (with Felleisen
). Friedman and Felleisen
wrote three more "little" books in the 1990s: The Little MLer, The Seasoned Schemer, and A Little Java
, A Few Patterns.
Friedman is also the lead author of Essentials of Programming Languages
, a text book on programming languages. As such, it changed the landscape of language text books in the 1980s, shifting the focus from surveys of languages to the study of principles via series of interpreters. Today's text books on this topic tend to follow this organization, though use operational semantics and type theory instead of interpreters. Like The Little LISPer, Essentials of Programming Languages is a long-living book and is in its third edition now.
Most recently, Friedman resumed work on his "Little" series with The Reasoned Schemer (with Byrd and Kiselyov), explaining logic programming via an extension of Scheme.
Computer science
Computer science or computing science is the study of the theoretical foundations of information and computation and of practical techniques for their implementation and application in computer systems...
at Indiana University
Indiana University Bloomington
Indiana University Bloomington is a public research university located in Bloomington, Indiana, in the United States. IU Bloomington is the flagship campus of the Indiana University system. Being the flagship campus, IU Bloomington is often referred to simply as IU or Indiana...
in Bloomington, Indiana
Bloomington, Indiana
Bloomington is a city in and the county seat of Monroe County in the southern region of the U.S. state of Indiana. The population was 80,405 at the 2010 census....
. His research focuses on programming language
Programming language
A programming language is an artificial language designed to communicate instructions to a machine, particularly a computer. Programming languages can be used to create programs that control the behavior of a machine and/or to express algorithms precisely....
s, and he is a prominent author in the field.
With David Wise, Friedman wrote a highly influential paper on lazy programming
Lazy evaluation
In programming language theory, lazy evaluation or call-by-need is an evaluation strategy which delays the evaluation of an expression until the value of this is actually required and which also avoids repeated evaluations...
, specifically on lazy streams (ICALP 1976). The paper, entitled "Cons should not evaluate its arguments," is one of the first publications pushing for the exploration of a programming style with potentially infinite data structures and a form of programming that employs no computational effects (though programs may diverge). Over the 1970s, Friedman and Wise explored the topic in depth and also considered extensions to the world of parallel computing.
In the 1980s, Friedman turned to the study of Scheme. He explored the use of macros for defining programming languages; with Kohlbecker, Felleisen
Matthias Felleisen
Matthias Felleisen is a computer science professor and an author of German background.Felleisen is currently a Trustee Professor in the College of Computer and Information Science at Northeastern University in Boston, Massachusetts. In the past he has taught at Rice University after receiving his...
, and Duba, he co-introduced the notion of 'hygienic macros' in a 1986 LFP paper that is still widely cited today. With Haynes and Wand, he simultaneously studied the nature of continuation objects, their uses, and the possibilities of constraining them. Following that, Friedman and Felleisen
Matthias Felleisen
Matthias Felleisen is a computer science professor and an author of German background.Felleisen is currently a Trustee Professor in the College of Computer and Information Science at Northeastern University in Boston, Massachusetts. In the past he has taught at Rice University after receiving his...
introduced a lambda calculus with continuations and control operators
Call-with-current-continuation
In functional programming, the function call-with-current-continuation, commonly abbreviated call/cc, is a control operator that originated in its current form in the Scheme programming language and now exists in several other programming languages....
. Their work has spawned work on semantics, connections between classical logic and computation, and practical extensions of continuations.
Friedman is also a prolific text book author. His first text book, The Little LISP
Lisp
A lisp is a speech impediment, historically also known as sigmatism. Stereotypically, people with a lisp are unable to pronounce sibilants , and replace them with interdentals , though there are actually several kinds of lisp...
er, dates back to 1974 and is still in print in its fourth edition, now called The Little Schemer (with Felleisen
Matthias Felleisen
Matthias Felleisen is a computer science professor and an author of German background.Felleisen is currently a Trustee Professor in the College of Computer and Information Science at Northeastern University in Boston, Massachusetts. In the past he has taught at Rice University after receiving his...
). Friedman and Felleisen
Matthias Felleisen
Matthias Felleisen is a computer science professor and an author of German background.Felleisen is currently a Trustee Professor in the College of Computer and Information Science at Northeastern University in Boston, Massachusetts. In the past he has taught at Rice University after receiving his...
wrote three more "little" books in the 1990s: The Little MLer, The Seasoned Schemer, and A Little Java
Java (programming language)
Java is a programming language originally developed by James Gosling at Sun Microsystems and released in 1995 as a core component of Sun Microsystems' Java platform. The language derives much of its syntax from C and C++ but has a simpler object model and fewer low-level facilities...
, A Few Patterns.
Friedman is also the lead author of Essentials of Programming Languages
Essentials of Programming Languages
Essentials of Programming Languages is a textbook on programming languages by Daniel P. Friedman, Mitchell Wand, and Christopher T. Haynes.EOPL surveys the principles of programming languages from an operational perspective...
, a text book on programming languages. As such, it changed the landscape of language text books in the 1980s, shifting the focus from surveys of languages to the study of principles via series of interpreters. Today's text books on this topic tend to follow this organization, though use operational semantics and type theory instead of interpreters. Like The Little LISPer, Essentials of Programming Languages is a long-living book and is in its third edition now.
Most recently, Friedman resumed work on his "Little" series with The Reasoned Schemer (with Byrd and Kiselyov), explaining logic programming via an extension of Scheme.
Books
Daniel P. Friedman is the author or co-author of the following books:- The Little Lisper ISBN 0-262-56038-0
- The Little Schemer ISBN 0-262-56099-2
- The Little MLer ISBN 0-262-56114-X
- A Little Java, A Few Patterns ISBN 0-262-56115-8
- The Seasoned Schemer ISBN 0-262-56100-X
- The Reasoned Schemer ISBN 0-262-56214-6
- Essentials of Programming LanguagesEssentials of Programming LanguagesEssentials of Programming Languages is a textbook on programming languages by Daniel P. Friedman, Mitchell Wand, and Christopher T. Haynes.EOPL surveys the principles of programming languages from an operational perspective...
ISBN 0-262-06217-8 - Scheme and the Art of Programming ISBN 0-262-19288-8
- Coordinated Computing: Tools and Techniques for Distributed Software ISBN 0-07-022439-0