LISP – Not just a Speech Impediment Jim Lowe. Brief History of LISP Initial development begins at the Dartmouth Summer Research Project in 1956 by Dr.

Slides:



Advertisements
Similar presentations
compilers and interpreters
Advertisements

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.
1 Scheme and Functional Programming Aaron Bloomfield CS 415 Fall 2005.
Names and Bindings.
Programming Languages Marjan Sirjani 2 2. Language Design Issues Design to Run efficiently : early languages Easy to write correctly : new languages.
UNIVERSITY OF SOUTH CAROLINA Department of Computer Science and Engineering CSCE 330 Programming Language Structures Ch.2: Syntax and Semantics Fall 2005.
Copyright © 2006 The McGraw-Hill Companies, Inc. Programming Languages 2nd edition Tucker and Noonan Chapter 1 Overview A good programming language is.
ALGOL 60 Design by committee of computer scientists: Naur, Backus, Bauer, McCarthy, van Wijngaarden, Landin, etc. Design by committee of computer scientists:
ISBN Chapter 1 Preliminaries. Copyright © 2004 Pearson Addison-Wesley. All rights reserved.1-2 Chapter 1 Topics Motivation Programming Domains.
Common Lisp Derek Debruin Mark Larue Vinh Doan. Problem Domains There was a need in the early 1960s to define a programming language whose computational.
6/27/2015G. Levine1 PROGRAMMING LANGUAGES Text: Programming Languages, Design and Implementation Pratt and Zelkowitz 4 th ed. Prentice-Hall.
Common Lisp! John Paxton Montana State University Summer 2003.
ISBN Chapter 1 Topics Motivation Programming Domains Language Evaluation Criteria Influences on Language Design Language Categories Language.
CS 104 Introduction to Computer Science and Graphics Problems Software and Programming Language (2) Programming Languages 09/26/2008 Yang Song (Prepared.
CSE S. Tanimoto Introduction 1 LISP Lisp is worth learning for the profound enlightenment experience you will have when you finally get it; that.
1 CHAPTER 4 LANGUAGE/SOFTWARE Hardware Hardware is the machine itself and its various individual equipment. It includes all mechanical, electronic.
1 Lisp and Functional Languages Functional forms Referential transparency Function construction Function composition Mapping functions Designing functional.
Platforms and tools for Web Services and Mobile Applications Introduction to C# Bent Thomsen Aalborg University 3rd and 4th of June 2004.
Python Introduction.
Presentation topic : LISP Amir Shahzad MCS 3 MCC
PROGRAMMING LANGUAGES The Study of Programming Languages.
BIT Presentation 6. Contents GENERATIONS OF LANGUAGES COMPILERS AND INTERPRETERS VIRTUAL MACHINES OBJECT-ORIENTED PROGRAMMING SCRIPTING LANGUAGES.
Chapter 17 Programming Tools The Architecture of Computer Hardware and Systems Software: An Information Technology Approach 3rd Edition, Irv Englander.
CSCI 224 Introduction to Java Programming. Course Objectives  Learn the Java programming language: Syntax, Idioms Patterns, Styles  Become comfortable.
Chapter TwelveModern Programming Languages1 Memory Locations For Variables.
C++ Programming. Table of Contents History What is C++? Development of C++ Standardized C++ What are the features of C++? What is Object Orientation?
Functional Programing Referencing material from Programming Language Pragmatics – Third Edition – by Michael L. Scott Andy Balaam (Youtube.com/user/ajbalaam)
CS 403: Programming Languages Lecture 2 Fall 2003 Department of Computer Science University of Alabama Joel Jones.
Programming Languages –14 David Watt (Glasgow) Steven Wong (Singapore) Moodle : Computing Science → Level 3 → Programming Languages 3 © 2012 David.
1 Functional Programming In Text: Chapter Chapter 2: Evolution of the Major Programming Languages Outline Functional programming (FP) basics A bit.
1 Introduction Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Sections
Introduction and Features of Java. What is java? Developed by Sun Microsystems (James Gosling) A general-purpose object-oriented language Based on C/C++
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.
CS 105: LISP GRG 424 MW 1:00-2:00pm About Me Jacob Schrum: call me Jacob BS in Computer Science, Math and German at Southwestern University Currently.
1-1 An Introduction to Functional Programming Sept
Scheme Profs Tim Sheard and Andrew Black CS 311 Computational Structures.
Concepts of programming languages Chapter 5 Names, Bindings, and Scopes Lec. 12 Lecturer: Dr. Emad Nabil 1-1.
Copyright © 2006 The McGraw-Hill Companies, Inc. Programming Languages 2nd edition Tucker and Noonan Chapter 1 Overview A good programming language is.
Lisp "List Processing". Lisp history John McCarthy developed the basics behind Lisp during the 1956 Dartmouth Summer Research Project on Artificial Intelligence.
CSE 341, S. Tanimoto Lisp LISP LISP = LISt Processing Intended for processing symbolic information Implementations from noncommercial sites: GNU.
1. COMPUTERS AND PROGRAMS Rocky K. C. Chang September 6, 2015 (Adapted from John Zelle’s slides)
The Functions and Purposes of Translators Translators, Interpreters and Compilers - High Level Languages.
Ada, Scheme, R Emory Wingard. Ada History Department of Defense in search of high level language around Requirements drafted for the language.
The Functions and Purposes of Translators Translators, Interpreters and Compilers - High Level Languages.
Chapter 1: Preliminaries Lecture # 2. Chapter 1: Preliminaries Reasons for Studying Concepts of Programming Languages Programming Domains Language Evaluation.
LISP LISt Processing. History & Overview b b One of the oldest high level programming languages. b b First developed in 1958 by John McCarthy. b b Later.
Ch Ch jcmt CSE 3302 Programming Languages CSE3302 Programming Languages (n-n-n-notes) Summer 2003 Dr. Carter Tiernan.
Programming Languages 2nd edition Tucker and Noonan
Functional Programming Languages
Zuse’s Plankalkül – 1945 Never implemented Problems Zuse Solved
Chapter 1 Introduction.
PROGRAMMING LANGUAGES
C Language VIVA Questions with Answers
Functional Programming
Chapter 1 Introduction.
LISP LISt Processing.
CSE S. Tanimoto Introduction
Fundamentals of Functional Programming Languages
CSCE 330 Programming Language Structures Ch.2: Syntax and Semantics
Programming Languages 2nd edition Tucker and Noonan
LISP LISP = LISt Processing
CSE S. Tanimoto Introduction
CSE S. Tanimoto Introduction
CSE S. Tanimoto Introduction
CSE S. Tanimoto Introduction
CSE (c) S. Tanimoto, 2002 Introducing Lisp
LISP LISt Processing.
LISP LISt Processing.
Chapter 15 Functional Programming 6/1/2019.
Drew Wyborski Programming Languages
Presentation transcript:

LISP – Not just a Speech Impediment Jim Lowe

Brief History of LISP Initial development begins at the Dartmouth Summer Research Project in 1956 by Dr John McCarthy. Initial development begins at the Dartmouth Summer Research Project in 1956 by Dr John McCarthy. At the time, Fortran was the only high level programming language available. At the time, Fortran was the only high level programming language available. Dr. McCarthy and his colleagues were interested in producing a language more suited for manipulating data in a similar manner to human thought….Artificial Intelligence. Dr. McCarthy and his colleagues were interested in producing a language more suited for manipulating data in a similar manner to human thought….Artificial Intelligence. Language development was completed at MIT and was made available to the general computer science community in Language development was completed at MIT and was made available to the general computer science community in 1963.

Innovations of LISP First functional language. First functional language. –Emphasis is on the evaluation of expressions rather than the execution of commands. Recursion Recursion –The concept of a function calling itself until a predefined base case was reached was a significant step forward in CS. LISP memory management was developed to allow for recursion. –Recursion was a mathematical concept applied to a computer. Object Orientation Object Orientation –The basic unit of data in LISP is a list. This data structure is ideally suited for definition of a weak typed object. For example, animals could be defined as; (animals ‘(cat brown) (dog white) (bird purple)) (animals ‘(cat brown) (dog white) (bird purple)) (animals ‘(cat brown dumb) (dog white smart)) (animals ‘(cat brown dumb) (dog white smart))

Inovations of LISP (cont.) Object Orientation (cont) Object Orientation (cont) –This concept was developed to provide for programming a computer to think like a human –Functions can be defined as objects and passed as arguments. Garbage Collection Garbage Collection –Memory management was handled by the interpreter. Conditionals Conditionals –A conditional is an if-then-else construct. We take these for granted now. –FORTRAN used GOTO Variables Variables –In LISP all variables are pointers, this allowed for the reduction of data storage requirements for recursive functions.

LISP BNF Grammar All LISP expressions built from simple grammar rules All LISP expressions built from simple grammar rules –Atom = NULL OR Letter OR Number –Letter = “A” OR “B” OR “C”….OR “Z” –Number = “0” OR “1” or “2” …OR “9” –S-Expression = Atom OR (S-Expression “.” S-Expression) OR List. –List = ‘({S-Expression “ “}* ) –NULL = “” Atoms can be used to represent values and passed as these values. For example we may need to define PI to equal or FRED to equal “Fredrick the 3rd of Nowhere.” To do this, LISP binds a value to the variable representation. With the function “setq”. Atoms can be used to represent values and passed as these values. For example we may need to define PI to equal or FRED to equal “Fredrick the 3rd of Nowhere.” To do this, LISP binds a value to the variable representation. With the function “setq”.

Functionality of LISP LISP can be compiled or interpreted. LISP can be compiled or interpreted. –Early LISP was interpreted only. This was of particular importance due to a complete lack of computer operating system standardization. –Later versions (c. 1968) provided for compilation to take advantage of LISP machines. LISP Machines were computers built solely to execute LISP instructions. Variable visibility is limited to descendants from point of definition Variable visibility is limited to descendants from point of definition There is no real distinction between read-time, compile- time, and runtime. There is no real distinction between read-time, compile- time, and runtime. –You can compile or run code while reading, read or run code while compiling, and read or compile code at runtime.

LISP today LISP is currently standardized in many different forms. LISP is currently standardized in many different forms. –ANSI standard X3.226 –ISI (International Standards Institute) –Many of the descendants of LISP are also standardized. Scheme : Educational and Research language. Scheme : Educational and Research language. Arc : A modern LISP derivative. Arc : A modern LISP derivative. AutoLISP : A dialect used for CAD applications. AutoLISP : A dialect used for CAD applications. Dylan : An object-oriented dialect of LISP. Dylan : An object-oriented dialect of LISP. Emacs LISP : Text editor extension language. Emacs LISP : Text editor extension language.

Advantages of LISP Programs are easy to test due to interactive interpreter environment. Programs are easy to test due to interactive interpreter environment. Portable across hardware platforms with supported interpreters. Portable across hardware platforms with supported interpreters. Clear and concise syntax and semantics. Clear and concise syntax and semantics. Automatic memory management and garbage collection. Automatic memory management and garbage collection. Packaging of programs into modules. Packaging of programs into modules. Flexible data structures. Flexible data structures. Object oriented capability. Object oriented capability.

Disadvantages of LISP Limited availability of compilers – Increased program size and run time. Limited availability of compilers – Increased program size and run time. Cross platform compatibility requires multiple interpreter environments. Cross platform compatibility requires multiple interpreter environments. Small install base creates limited audience for programs. Small install base creates limited audience for programs. Other computer programmers make fun of you because you “talk” funny. Other computer programmers make fun of you because you “talk” funny.