The Scheme Programming Language History and Significance Dmitry Nesvizhsky CIS24 Professor Danny Kopec.

Slides:



Advertisements
Similar presentations
C-LISP. LISP 2 Lisp was invented by John McCarthy in 1958 while he was at the Massachusetts Institute of Technology (MIT).John McCarthyMassachusetts Institute.
Advertisements

1 Scheme and Functional Programming Aaron Bloomfield CS 415 Fall 2005.
1 Programming Languages (CS 550) Lecture Summary Functional Programming and Operational Semantics for Scheme Jeremy R. Johnson.
Functional Programming. Pure Functional Programming Computation is largely performed by applying functions to values. The value of an expression depends.
Lambda Calculus and Lisp PZ03J. Lambda Calculus The lambda calculus is a model for functional programming like Turing machines are models for imperative.
Chapter 3 Functional Programming. Outline Introduction to functional programming Scheme: an untyped functional programming language.
CS 355 – PROGRAMMING LANGUAGES Dr. X. Apply-to-all A functional form that takes a single function as a parameter and yields a list of values obtained.
1-1 An Introduction to Scheme March Introduction A mid-1970s dialect of LISP, designed to be a cleaner, more modern, and simpler version than.
1 Functional programming Languages And a brief introduction to Lisp and Scheme.
Functional programming: LISP Originally developed for symbolic computing Main motivation: include recursion (see McCarthy biographical excerpt on web site).
Functional programming: LISP Originally developed for symbolic computing First interactive, interpreted language Dynamic typing: values have types, variables.
Lisp and Scheme I. Versions of LISP LISP is an acronym for LISt Processing language Lisp is an old language with many variants – Fortran is the only older.
SCHEME By: Krista and Brett. What is Scheme? Best known for its functional style of programming One of two main dialects of Lisp Developed in 1975 –MIT.
© Kenneth C. Louden, Chapter 11 - Functional Programming, Part I: Concepts and Scheme Programming Languages: Principles and Practice, 2nd Ed. Kenneth.
Functional Programing Referencing material from Programming Language Pragmatics – Third Edition – by Michael L. Scott Andy Balaam (Youtube.com/user/ajbalaam)
Slide 1 Vitaly Shmatikov CS 345 Introduction to Scheme.
Functional Programming Universitatea Politehnica Bucuresti Adina Magda Florea
1 Lisp Functions –Built-in functions –Defining functions –Function Evaluation and Special Forms defun, if Control statements –Conditional if, cond –Repetition.
Scheme A Language of Function JP Deshaies and Josh Calloway.
Functional Programming in Scheme
CSC3315 (Spring 2009)1 CSC 3315 Programming Paradigms Scheme Language Hamid Harroud School of Science and Engineering, Akhawayn University
ISBN Chapter 15 Functional Programming Languages.
Λ => Scheme for Rubyists. Scheme History Authors: Guy Steele and Gerald Sussman Structure and Interpretation of Computer Programs (SICP) by Abelson &
Introduction to Scheme CS 480/680 – Comparative Languages “And now for something completely different…” – Monty Python “And now for something completely.
Chapter 8 High-Level Programming Languages. 8-2 Chapter Goals Describe the translation process and distinguish between assembly, compilation, interpretation,
Functional Programming Universitatea Politehnica Bucuresti Adina Magda Florea
14-October-2002cse Lists © 2002 University of Washington1 Lists CSE 413, Autumn 2002 Programming Languages
CS 326 Programming Languages, Concepts and Implementation Instructor: Mircea Nicolescu Lecture 8.
CMSC 330: Organization of Programming Languages
SCHEME Scheme is elegant, clear, small, and powerful programming language. It is a dialect of LISP and can be classified as a semi-functional programming.
ISBN Chapter 15 Functional Programming Languages.
COP4020 Programming Languages Functional Programming Prof. Xin Yuan.
CS535 Programming Languages Chapter - 10 Functional Programming With Lists.
UMBC CMSC Common Lisp II. UMBC CMSC Input and Output Print is the most primitive output function > (print (list 'foo 'bar)) (FOO BAR) The.
8-1 Compilers Compiler A program that translates a high-level language program into machine code High-level languages provide a richer set of instructions.
1-1 An Introduction to Functional Programming Sept
Scheme Profs Tim Sheard and Andrew Black CS 311 Computational Structures.
Basic Scheme February 8, 2007 Compound expressions Rules of evaluation Creating procedures by capturing common patterns.
What is the main focus of this course? This course is about Computer Science Geometry was once equally misunderstood. Term comes from ghia & metra or earth.
1 FP Foundations, Scheme In Text: Chapter Chapter 14: FP Foundations, Scheme Mathematical Functions Def: A mathematical function is a mapping of.
CSE 425: Functional Programming I Programs as Functions Some programs act like mathematical functions –Associate a set of input values from the function’s.
Ada, Scheme, R Emory Wingard. Ada History Department of Defense in search of high level language around Requirements drafted for the language.
Comparative Programming Languages Functional programming with Lisp/Scheme.
C H A P T E R E I G H T Functional Programming Programming Languages – Principles and Paradigms by Allen Tucker, Robert Noonan.
CS 152: Programming Language Paradigms February 12 Class Meeting Department of Computer Science San Jose State University Spring 2014 Instructor: Ron Mak.
1 Introduction to Functional Programming in Racket CS 270 Math Foundations of CS Jeremy Johnson.
CS314 – Section 5 Recitation 9
Functional Programming
CS314 – Section 5 Recitation 10
Functional Programming Languages
Functional Programming
CS 3304 Comparative Languages
CS 326 Programming Languages, Concepts and Implementation
CS 326 Programming Languages, Concepts and Implementation
FP Foundations, Scheme In Text: Chapter 14.
What would be our focus ? Geometry deals with Declarative or “What is” knowledge. Computer Science deals with Imperative or “How to” knowledge 12/25/2018.
CS 36 – Chapter 11 Functional programming Features Practice
Abstraction and Repetition
The Metacircular Evaluator (Continued)
Explicit Application of Procedures, and Explicit Evaluation
Lisp and Scheme I.
What would be our focus ? Geometry deals with Declarative or “What is” knowledge. Computer Science deals with Imperative or “How to” knowledge 2/23/2019.
Introduction to Functional Programming in Racket
Abstraction and Repetition
COP4020 Programming Languages
topics interpreters meta-linguistic abstraction eval and apply
Common Lisp II.
Lisp.
More Scheme CS 331.
Abstraction and Repetition
Presentation transcript:

The Scheme Programming Language History and Significance Dmitry Nesvizhsky CIS24 Professor Danny Kopec

Scheme: History Started as an experiment in programming language design by challenging some fundamental design assumptions A dialect of the LISP Programming Language invented by Guy Lewis Steele Jr. and Gerald Jay Sussman

Scheme: History Emerged from MIT in the mid-1970's Originally called Schemer Shortened to Scheme because of a 6 character limitation on file names Designed to have very few regular constructs which compose well to support a variety of programming styles Functional, object-oriented, and imperative

Significant Language Features Supports lexical scoping, uniform evaluation rules, and uniform treatment of data types Does not support the concept of a pointer, uninitialized variables, specialized looping constructs, or explicit storage management All data type are equal What one can do to one data type, one can do to all data types

Significant Language Features There are seven kinds of expressions Constant Variable reference Procedure creation Procedure application Conditional Assignment Sequence

Significant Language Features Scheme also has the usual assortment of data types Characters Strings Arrays Lists Numbers Functions (also called procedures) Boolean Ports Symbols

Significant Language Features Numbers are especially interesting An integer is a rational and a real is a complex Scheme requires no looping constructs Any function which calls itself in the "tail" position is just a loop

Significant Language Features Scheme has several important advantages It is elegantly simple in that regular structure and trivial syntax avoids "special case" confusion Its expressiveness means that one spends little time trying to work around the language It lets users concentrate on what they want to say rather than on how to say it

Significant Language Features Scheme has several important advantages (continued) Supports a variety of styles (including object-oriented) Allows users to better match their solution style to the style of the problems to be solved Its formal underpinnings make reasoning about programs much easier

Significant Language Features Scheme has several important advantages (continued) Its abstractive power makes it easy to separate system specific optimizations from reusable code Its compos ability makes it easy to construct systems from well-tested components

Areas of Application Scheme is currently gaining favor as a first programming language in universities and is used in industry by such companies as TI, HP, and Sun

Areas of Application Here are a few statistics regarding the schools using Scheme: schools using Scheme 286 colleges/universities worldwide of these use Scheme in introductory courses 159 colleges/universities USA only - 49 of these use Scheme in introductory courses 73 secondary schools worldwide 64 secondary schools USA only

Sample Program 1 This program prints the phrase "Hello World“ ; (Scott Ruthfield) (define hello-world (lambda () (begin (write ‘Hello-World) (newline) (hello-world))))

Sample Program 2 Scheme is an imperative language that favors recursion over iteration The basic data structure is the list In Scheme, "car" returns the first element of a list and "cdr" returns the remaining elements of the list There is no need for an "iterator class" or pointers, as in C++ In this program cdr recursion is used as an iterator, moving from element to element in the list The result from each recursive call becomes the input, or term, for the addition operator, there by eliminating the need for a temporary sum variable

Sample Program 2 (continued) ; List Sum ; This program was found in "An Introduction to ; Scheme" by Jerry Smith, Prentice Hall, 1988 (define (list-sum lst) (cond ((null? lst) 0) ((pair? (car lst)) (+(list-sum (car lst)) (list-sum (cdr lst)))) (else (+ (car lst) (list-sum (cdr lst))))))

Scheme Performance Table