Hence our references to using the language as a “lens” for studying big PL ideas. Certainly you will learn Racket and other languages (a nice side effect of the course), but we are big picture goals are skills that are more transferable than intimate knowledge of a single programming language. You may be surprised that “learn the Racket language” is not listed as an explicit goal. Semantics via judgments, inference rules, derivations, and the environment model.Develop and apply foundations and meta-languages for defining:.First-class functions, higher-order functions, function closures. Expressions, values, variables, bindings, environments.Define and understand the syntax and dynamic semantics of a small programming language kernel:.This experience (probably new to many of you) not only introduces you to a powerful, expressive, and elegant approach to programming, but it also helps you learn to think about problems in new ways. Exposure to functional programming, which emphasizes the evaluation of expressions and functions on immutable data rather than the execution of commands for their effect on mutable storage.Our top-level goals in studying Racket are several, including: Functional languages are closer to math imperative languages are closer to the model presented by most modern computer hardware systems. In some sense, functional languages are a little closer to expressing what to compute, while imperative (command-, statement-, and assignment-focused) languages are closer to expressing how to compute it. Functional languages are built around the evaluation of expressions and the application of functions for their results, rather than the execution of sequences of commands for their effects on mutable stored data. Unfortunately, the term can be a bit confusing, since many other languages (such C, Python, and others) use constructs called functions, even though they do not always follow a “functional” style. Functional refers to a focus on functions in the mathematical sense. Racket, the child of Scheme and grandchild of LISP, falls into a broad category of programming languages often called functional programming languages. For additional reference, see the Racket Guide. This document introduces the same kernel of the Racket language as covered in lecture. The Racket language is our first lens for examining programming language design in CS 251. Lexical Scope via Environments and Closures.Example with Environments, Bindings, and Variables.Defining Racket: Expressions and Values.This document includes notes on the Racket language and other topics covered by the first part of CS 251.
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |