Daniel P. Friedman
   HOME

TheInfoList



OR:

Daniel Paul Friedman (born 1944) is a professor of
Computer Science Computer science is the study of computation, automation, and information. Computer science spans theoretical disciplines (such as algorithms, theory of computation, information theory, and automation) to practical disciplines (includi ...
at
Indiana University Indiana University (IU) is a system of public universities in the U.S. state of Indiana. Campuses Indiana University has two core campuses, five regional campuses, and two regional centers under the administration of IUPUI. *Indiana Universi ...
in
Bloomington, Indiana Bloomington is a city in and the county seat of Monroe County in the central region of the U.S. state of Indiana. It is the seventh-largest city in Indiana and the fourth-largest outside the Indianapolis metropolitan area. According to the Mo ...
. His research focuses on
programming language A programming language is a system of notation for writing computer programs. Most programming languages are text-based formal languages, but they may also be graphical. They are a kind of computer language. The description of a programming ...
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 ICALP, the International Colloquium on Automata, Languages, and Programming is an academic conference organized annually by the European Association for Theoretical Computer Science and held in different locations around Europe. Like most theoret ...
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 the Scheme programming language. He explored the use of macros for defining programming languages; with Eugene Kohlbecker,
Matthias Felleisen Matthias Felleisen is a German-American computer science professor and author. He grew up in Germany and immigrated to the US when he was 21 years old. He received his PhD from Indiana University under the direction of Daniel P. Friedman. Afte ...
, and Bruce Duba, he co-introduced the notion of
hygienic macro Hygienic macros are macros whose expansion is guaranteed not to cause the accidental capture of identifiers. They are a feature of programming languages such as Scheme, Dylan, Rust, Nim, and Julia. The general problem of accidental capture was w ...
s in a 1986 LFP paper that is still widely cited today. With Christopher T. Haynes and
Mitchell Wand Mitchell Wand is a computer science professor at Northeastern University. He received his Ph.D. from Massachusetts Institute of Technology. His research has centred on programming languages and he is a member of the Northeastern Programming Resea ...
, 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 textbook author. His first textbook, ''The Little LISPer'', 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 Java (; id, Jawa, ; jv, ꦗꦮ; su, ) is one of the Greater Sunda Islands in Indonesia. It is bordered by the Indian Ocean to the south and the Java Sea to the north. With a population of 151.6 million people, Java is the world's mos ...
, A Few Patterns''. Friedman is also the lead author of ''
Essentials of Programming Languages ''Essentials of Programming Languages'' (''EOPL'') 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. It ...
'', a textbook on programming languages. As such, it changed the landscape of language textbooks in the 1980s, shifting the focus from surveys of languages to the study of principles via series of interpreters. Today's textbooks on this topic tend to follow this organization, employing 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 William E. Byrd and Oleg Kiselyov), explaining
logic programming Logic programming is a programming paradigm which is largely based on formal logic. Any program written in a logic programming language is a set of sentences in logical form, expressing facts and rules about some problem domain. Major logic pro ...
via an extension of Scheme, and with ''The Little Prover'' (with Carl Eastlund), introducing inductive proofs as a way to determine facts about computer programs.


References


Books

Daniel P. Friedman is the author or co-author of the following books: *
The Little Lisper
' (MIT Press, 1987) *

' (MIT Press, 4th Ed., 1996) *

' (MIT Press, 1998) *

' (MIT Press, 1998) *

' (MIT Press, 1996) *

' (MIT Press, 2018) *
The Little Prover
' *
Essentials of Programming Languages
' (MIT Press, 3rd Ed. 2008) * '' Scheme and the Art of Programming'' * '' Coordinated Computing: Tools and Techniques for Distributed Software'' *
The Little Typer
'


External links


Daniel P. Friedman's Homepage

The Little Schemer's Homepage

Cons should not evaluate its arguments, the technical report version


** ttps://www.youtube.com/watch?v=IHP7P_HlcBk "Dan Friedman—Cool Ideas"
Guy Steele Guy Lewis Steele Jr. (; born October 2, 1954) is an American computer scientist who has played an important role in designing and documenting several computer programming languages and technical standards. Biography Steele was born in Missouri ...
's keynote talk at DanFest reviewing Friedman's work {{DEFAULTSORT:Friedman, Daniel P. Programming language researchers Indiana University faculty 1944 births Living people