1 / 13

Programming Languages

Programming Languages. Functional Programming Languages. This lesson describes the concept of a function and how programs can be viewed as functions. We then study a functional language – Lisp, and discuss some of its fundamental properties. Functions and Programming.

amena-johns
Download Presentation

Programming Languages

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. ProgrammingLanguages

  2. Functional Programming Languages This lesson describes the concept of a function and how programs can be viewed as functions. We then study a functional language – Lisp, and discuss some of its fundamental properties.

  3. Functions and Programming • Functional programming has a number of distinct advantages, which have traditionally made it popular for artificial intelligence, mathematical proof systems, and logic applications. • These include the uniform view of programs as functions, the treatment of functions as data, the limitation of side effects, and the use of automatic memory management. • A functional programming language has as a result great flexibility, conciseness of notation, and simple semantics.

  4. The Drawback • Because of their dynamic nature, such languages historically were interpreted rather than compiled, • The major drawback has traditionally been the inefficiency of execution of functional languages. • with a resulting substantial loss in execution speed. • Even when compilers became available, the speedups obtained were inadequate. • But the semantic simplicity and orthogonality of design have made it a reasonable alternative for teaching computer science.

  5. Programs as Functions • If we ignore the details of the computation, and focus on the result, then a program becomes simply a "black box" for obtaining output from input. • A program is a description of a specific computation. • From this point of view, a program is essentially equivalent to a mathematical function: • Definition: A function is a rule that associates to each x from some set X of values a unique y from another set Y of values: y = f(x)

  6. Variables and Assignments • We can think of programs, procedures, and functions in a programming language as all being represented by the mathematical concept of a function. • In mathematics there is no concept of memory location, or values of variables, so that an assignment statement such as x = x + 1 makes no sense in functional programming. • In this sense, in functional programming, there are no variables, only constants, parameters, and values.

  7. Loops • Most modern functional programming languages retain some notion of variable and assignment, and so are "impure”. • Pure functional programming is Turing complete in that any computation may be described using functions alone. • One consequence of the lack of variables and assignment in functional programming is that there also can be no loops. • A loop must have a control variable that is assigned as the loop executes, and this is not possible without variables and assignment.

  8. Recursion • How do we write repeated operations in functional form? Recursion is the essential feature.

  9. Example 2, Translation of first-order predicate calculus • Another consequence of the lack of variables and assignment is that there is no notion of the internal state of a function: • The value of any function depends only on the values of its parameters, and not on any previous computations, including calls to the function itself. • The property that a function’s value depends only on the values of its parameters is called referential transparency. • The value of any function also cannot depend on the order of evaluation of its parameters.

  10. No State • The lack of variables and the referential transparency of functional programming make the semantics of functional programs particularly straightforward: there is no state. • Indeed, the lack of local state in functional programming makes it in a sense the opposite of object-oriented programming, where computation proceeds by changing the local state of objects.

  11. Generality • We express this generality of functions in functional programming by saying that functions are first-class values. • Composition is itself a function that takes two functions as parameters and produces another function as its returned value. Such functions are sometimes called higher-order functions.

  12. Function Definitions in Lisp • When the Lisp interpreter evaluates a list, it looks to see whether the first symbol on the list has a function definition attached to it; • or, put another way, whether the symbol points to a function definition. • If it does, the computer carries out the instructions in the definition. • A symbol that has a function definition is called a function.

  13. Function Definitions in Lisp (2) • Lisp function definition has up to five parts: • (defun function-name (arguments...) "optional-documentation..." (interactive argument-passing-info); optional body... )

More Related