TYPES, VALUES AND DECLARATIONS
|
|
- Owen Harper
- 6 years ago
- Views:
Transcription
1 COSC 2P90 TYPES, VALUES AND DECLARATIONS (c) S. Thompson, M. Winters 1
2 Names, References, Values & Types data items have a value and a type type determines set of operations variables Have an identifier (name) Have a storage location Has attributes binding diagram (Barron) name reference value identifiers allowable characters E.g. Perls $,@,% (scalar, array, hash) prefixes length case sensitivity naming conventions Underscore (buffer_size) vscapitlization (buffersize) (c) S. Thompson, M. Winters 2
3 Binding Association of one property with another choice of a property from a set of possible properties name-declaration binding connection between identifier and declaration name-type binding choose type for a variable identified by a name declaration-reference binding storage allocation reference-value binding storing value of a variable (c) S. Thompson, M. Winters 3
4 Binding Time time at which binding occurs alternatives compile-time (e.g. name-type binding in Java) load-time (e.g. declaration-reference binding for non-local variables in C) run-time at block entry (e.g. declaration-reference binding for local variables in Java) at statement execution (e.g. reference-value binding for variables) early early error detection and efficient execution late flexibility (c) S. Thompson, M. Winters 4
5 Name-Declaration Binding declaration Binding Explicit variables have to be declared prior to use { int a; a = 4 + b; } Implicit - declaration occurs at first usage { a = 4; print( a ); } Connection between name and its declaration Rules for binding are referred to as scope rules (c) S. Thompson, M. Winters 5
6 Scope Rules Static scope at compile-time can be determined from static program text block structure block, scope, hole-in-scope local variable, non-local variable, global variable e.g. Pascal, Java Dynamic scope - at run-time Depends on the order of execution Uses a binding stack Rarely used in practice (Common lisp & perl give the choice to use it) (c) S. Thompson, M. Winters 6
7 Static Scope Example - Pascal program Example(input, output) var x, y : Real; Visible to entire program # procedure op1; var y, z : Integer; Visible to op1 procedure * begin... y := 34; refers to the y in * x := 27.4;... end{op1}; begin... x := 3.768; y := x; refers to the y in #... end{example}. (c) S. Thompson, M. Winters 7
8 Static Scope Example - Java class Example { private double x, y; public void op1() { int y, z; y := 34; x := 27.4;... } // op1 public void op2() { x := 3.768; y := x;... } // op2 } // Example (c) S. Thompson, M. Winters 8
9 Dynamic Scope Example (Pascal syntax) program Dynamic(input, output); var x : Integer; procedure a; begin... write(x);... end{a}; procedure b; var x : Real; begin... x := 2.0;... a;... end{b}; begin... x := 1;... b;... a;... end{dynamic}. (c) S. Thompson, M. Winters 9
10 Dynamic Scope Example - Perl Static Scope prints 0 $a = 0; sub b { return $a; } sub c { my $a = 1; return b(); } print c(); Dynamic scope prints 1 $a = 0; sub b { return $a; } sub c { local $a = 1; return b(); } print c(); (c) S. Thompson, M. Winters 10
11 Name-Type Binding specification of type for variable statically typed type is known at compile-time advantages Reliable errors are detected at compile time Efficient no type checks required at runtime Understandable type is obvious to human reader strongly-typed Variables always used in proper context weakly-typed Implicit type conversion occurs usually causes confusion on the result (c) S. Thompson, M. Winters 11
12 Name-Type Binding dynamically typed run-time variables don t have types, values do advantage flexibility type discovery polymorphic variables in object-oriented languages only subclass values assignable static type checking with flexibility of dynamic typing type inference (ML, Haskell) The ability to deduce a type Available commonly in functional languages (also C# 3.0 & Perl 6) (c) S. Thompson, M. Winters 12
13 Type Inference Example - C# class Example { void SomeMethod() { var i = 1; i is an integer var mystr = a string ; } } var is also known as an anonymous type (c) S. Thompson, M. Winters 13
14 Declaration-Reference Binding Refers to when the storage location for a variable is assigned 3 times when a variable can be assigned storage Load time Block entry Statement execution Lifetime (a.k.a. extent) of a variable refers to when during a program execution a variable has storage allocated to it Local variables Lifetime is only during block (method) execution void f() { int i = 0; print(i); } i only has storage while f is executed (c) S. Thompson, M. Winters 14
15 Declaration-Reference Binding instance variables O-O languages think member variables of a class allocated at statement execution (new) as part of object Lifetime is determined by object lifetime void f() { MyClass obj = new MyClass(1,2); } (c) S. Thompson, M. Winters 15
16 Declaration-Reference Binding global variables allocated at load time class variables (static in Java) allocated at load time, one occurrence per class /* C */ int somevalue = 1; void SomeFunc() { somevalue = 2; } // Java class someclass { static int somevalue = 1; void SomeFunc() { somevalue = 2; } (c) S. Thompson, M. Winters 16
17 Declaration-Reference Binding static and own variables procedure memory allocated at load time, but local scope void func() { static int i = 0; printf( %d, i++ ); } int main() { func(); func(); func(); Displays } (c) S. Thompson, M. Winters 17
18 Reference-Value Binding Refers to assigning a value to a storage location Run-time at input, assignment or parameter passing Assignment ( y = y + 1 ) 3 bindings involved: name-declaration, declaration-reference, referencevalue dereferencing l-value (can store) vs r-value (read only) Language without an assignment statement it may have immediate name-value binding pure functional languages (c) S. Thompson, M. Winters 18
19 Reference-Value Binding Uninitialized variables How to deal with this problem? Initialize during declaration Error to use an uninitialized variable Constants name-value binding at compile time Pascal vs Ada vs Java May be delayed until runtime (complex assignment) (c) S. Thompson, M. Winters 19
20 Types Everything is represented as bits The type gives interpretation A set of values and operations Three common types: scalar, structured and reference Scalar types single values Numeric (e.g. integer, floating point) Logical Character Numeric Types are either Discrete (unique successor & predecessor) Non-discrete (e.g. Real/Double) built-in/primitive types defined in language E.g. int in Java is not an object programmer-defined types type declarations (e.g. Pascal, Ada, C) class declarations (e.g. Java) (c) S. Thompson, M. Winters 20
21 Specifying Types Very common in languages for variables to be declared before use To either built-in or user-defined Implicit declaration Name of variable implies type (Fortran I-N prefix are Ints) Easy to make type errors through typos Type declarations associate a name with a set of type attributes modifiability, type-checking Type declarations Ada: a,b: Integer C: int a; Derived Types: Same representation but different meaning Ada: Type List is array(1..10) of Integer C: typedef List int[10]; (c) S. Thompson, M. Winters 21
22 Specifying Types Ada also uses subtypes Subtype is a subset of values E.g. subtype Index is Integer range ; Subtypes & derived types allow programmer to reuse existing representation for new meaning Type equivalence Ada: Name Equivalence To be of the same type, the type of two variables must have the same name Each type has unique operators associated C: Structure Equivalence To be of the same type, the type of two variables must represent the same type abstract data types A type and the operations on that type Operations can be defined through functions (e.g. push & pop) O-O classes encapsulate these together modules contain type declaration class is type declaration (c) S. Thompson, M. Winters 22
23 Numeric Types machine representation vs standard model efficiency vs compatibility E.g. different floating point answers on different machines operators overloading: effect depends on type of operands 2+3 integer addition floating-point addition div vs / Exponentiation Expensive omitted in some languages to emphasize this Logical results relational operators: <, >=, etc. equality operators: == or = inequality operators:!= or <> or /= integer vs fixed-point vs floating-point impact on equality (c) S. Thompson, M. Winters 23
24 Integer Types uses as models of Integer in Mathematics vs counting two s complement Range -2 (n-1) to 2 (n-1) -1 where n is the number of bits available Explicit vs. machine dependent ranges larger and smaller ranges C char, short, int, long (& long long) Java byte, short, int, long Pascal subranges Ada Short_Integer, Integer, Long_Integer and subranges Used in derived types and let compiler pick most appropriate (c) S. Thompson, M. Winters 24
25 Integer Types fixed-point types COBOL & PL/I for currency values Used on hardware with no floating-point support Useful on graphics hardware! Of N bits, M are used to represent the integral component and (N-M) are used to represent the fractional portion (c) S. Thompson, M. Winters 25
26 Floating-Point Types For mathematical and scientific calculations Supports a wider range of values than integers approximations: range, precision determined by implementation equality representation: sign, exponent, mantissa real number = sign * mantissa * 2^exponent Example 32-bit float (a.k.a. Real) 1 bit sign 7 bits exponent (-64 to +63) Mantissa (.5 <= m < 1) double precision double in Java, C complex numbers pair of floats class definition (c) S. Thompson, M. Winters 26
27 Logical Types truth values often called Boolean representation bit vs byte literals C & C++ Book is incorrect. Both C & C++ support bool type. (as of 1999) Can use int in C for logical evaluation 0 = false, non-zero = true assignment vs equality test problem e.g. if(a=3) is always true! operations and, or, not short circuit (&&, ) (c) S. Thompson, M. Winters 27
28 Character Types operations relational and equality a < b < c Equivalent integer value coding scheme unspecified, e.g. Pascal ASCII, e.g. Ada Unicode, e.g. Java char in C 1 byte integer signed & unsigned compiler dependent wchar_t type (wide character) (c) S. Thompson, M. Winters 28
29 Character Types Unicode Originally was 16-bit (Java 1.0) Standard is at Unicode 5 UTF-8, UTF-16, UTF-32 Multi-byte representation Strings array of char, e.g. Pascal, C, Ada library class, e.g. Java built-in type, e.g. Perl, SNOBOL (c) S. Thompson, M. Winters 29
30 Enumeration Types User-defined types Used to improve readability named values mapped to integers but not integers e.g. days of the week Pascal: type Days = (Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday) C/C++: enum Days {Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday}; operations relational operators Predecessor & successor Integer representation advantages with switch statements (c) S. Thompson, M. Winters 30
31 Enumerated Types unnamed enums used in C as a replacement for #define Classic enum trick in C++; overloading enumerands e.g. Ada type Light is (red, amber, green); type Flag is (red, white); not allowed in Pascal, C, C++ boolean (Pascal/Ada) and char(ada) as enumerated type (Pascal, Ada) type Boolean = { false, true } Displaying (and inputting) enumerated values Requires switches & string manipulation (In C) always required by the programmer (c) S. Thompson, M. Winters 31
32 Enumerated Types C# & Java (1.5 & up) treat enumerations as classes Going to and from String form is supported by defaulted (same in Ada) Is much more typesafe Before 1.5, Java could use the enum pattern to emulate integer based enums class Days { public static final int Sunday = 1; public static final int Monday = 2;. } Referencing enums is much cleaner in C#/Java Uses the enum name as a prefix (like a static class member) E.g. Day d = Days.Sunday; (c) S. Thompson, M. Winters 32
33 Enumerated Types (java) See Examples: JavaEnumExamples.java (c) S. Thompson, M. Winters 33
34 Reference Types The value of the variable of a reference type is a memory location The type of value pointed to is specified at declaration Allows for type checking e.g. C/C++ : int ci = 4; int* cipoint; C/C++ has the addressof operator(&) (@ in delphi) cipoint = &ci; ci reference 34 cipoint reference copy dereferencing operator (* in C/C++) x = *cipoint; (c) S. Thompson, M. Winters 34
35 Reference Types Arithmetic operation using pointers C, C++ - yes e.g. cipoint++; Pascal, Ada, Java - no Special representation to represent invalid address NULL (or null, or nil) low level programming Aliases Pointers & pointer arithmetic are why C/C++ dominate system programming When there are more than one way of referring to an object Considered bad (although.) From previous slide (*cipoint) = 27; changes the value of ci to 27 as well. Can make state change non-obvious or dangerous parameter passing danger (c) S. Thompson, M. Winters 35
36 Dynamic Variables Some languages with pointers restrict them to following operations to control their use Dereferencing Equality operators Assignment Cannot assign address of an existing integer, can only refer to a dynamically created variable Example: Pascal type Integerpt = ^Integer; declare pointer type itself var pipoint: Integerpt; declares pointer variables new(pipoint); use dynamic storage allocation to bind pipoint^ = 17; assign a value (using dereferencing) reference pipoint reference copy (c) S. Thompson, M. Winters 36
37 Dynamic Variables C C++ int *cipoint; cipoint = (int *) malloc(sizeof(int)); cipoint = new int(); *cipoint = 17; C++ vs Java C++: Stype* spoint = new Stype(); Java: Stype spoint = new Stype(); Stype s; explicit pointer variable declaration and explicit dereferencing operator C, Pascal - yes Java - no (c) S. Thompson, M. Winters 37
38 Aliasing of References (Pascal) var another: Integerpt; declare another ptr another := pipoint; reference 17 pipoint reference another reference copy (c) S. Thompson, M. Winters 38
39 Garbage Creation after new(pipoint) reference copy pipoint reference reference 17 another reference after new(another)? (c) S. Thompson, M. Winters 39
40 Garbage explicit deallocation dispose (Pascal), delete (C++) e.g. dispose(pipoint); knowing what to dispose memory leaks dangling reference Reference counting Cyclic issues Still prone to leaks garbage collection Java efficiency (c) S. Thompson, M. Winters 40
22c:111 Programming Language Concepts. Fall Types I
22c:111 Programming Language Concepts Fall 2008 Types I Copyright 2007-08, The McGraw-Hill Company and Cesare Tinelli. These notes were originally developed by Allen Tucker, Robert Noonan and modified
More informationCS 330 Lecture 18. Symbol table. C scope rules. Declarations. Chapter 5 Louden Outline
CS 0 Lecture 8 Chapter 5 Louden Outline The symbol table Static scoping vs dynamic scoping Symbol table Dictionary associates names to attributes In general: hash tables, tree and lists (assignment ) can
More informationCSCI312 Principles of Programming Languages!
CSCI312 Principles of Programming Languages! Chapter 5 Types Xu Liu! ! 5.1!Type Errors! 5.2!Static and Dynamic Typing! 5.3!Basic Types! 5.4!NonBasic Types! 5.5!Recursive Data Types! 5.6!Functions as Types!
More informationCPSC 3740 Programming Languages University of Lethbridge. Data Types
Data Types A data type defines a collection of data values and a set of predefined operations on those values Some languages allow user to define additional types Useful for error detection through type
More informationG Programming Languages Spring 2010 Lecture 6. Robert Grimm, New York University
G22.2110-001 Programming Languages Spring 2010 Lecture 6 Robert Grimm, New York University 1 Review Last week Function Languages Lambda Calculus SCHEME review 2 Outline Promises, promises, promises Types,
More informationHANDLING NONLOCAL REFERENCES
SYMBOL TABLE A symbol table is a data structure kept by a translator that allows it to keep track of each declared name and its binding. Assume for now that each name is unique within its local scope.
More informationData Types. Outline. In Text: Chapter 6. What is a type? Primitives Strings Ordinals Arrays Records Sets Pointers 5-1. Chapter 6: Data Types 2
Data Types In Text: Chapter 6 1 Outline What is a type? Primitives Strings Ordinals Arrays Records Sets Pointers Chapter 6: Data Types 2 5-1 Data Types Two components: Set of objects in the type (domain
More informationData Types. Every program uses data, either explicitly or implicitly to arrive at a result.
Every program uses data, either explicitly or implicitly to arrive at a result. Data in a program is collected into data structures, and is manipulated by algorithms. Algorithms + Data Structures = Programs
More informationData Types In Text: Ch C apter 6 1
Data Types In Text: Chapter 6 1 Outline What is a type? Primitives Strings Ordinals Arrays Records Sets Pointers 2 Data Types Two components: Set of objects in the type (domain of values) Set of applicable
More informationProgramming Languages Third Edition. Chapter 7 Basic Semantics
Programming Languages Third Edition Chapter 7 Basic Semantics Objectives Understand attributes, binding, and semantic functions Understand declarations, blocks, and scope Learn how to construct a symbol
More informationChapter 5 Names, Binding, Type Checking and Scopes
Chapter 5 Names, Binding, Type Checking and Scopes Names - We discuss all user-defined names here - Design issues for names: -Maximum length? - Are connector characters allowed? - Are names case sensitive?
More informationIntroduction Primitive Data Types Character String Types User-Defined Ordinal Types Array Types. Record Types. Pointer and Reference Types
Chapter 6 Topics WEEK E FOUR Data Types Introduction Primitive Data Types Character String Types User-Defined Ordinal Types Array Types Associative Arrays Record Types Union Types Pointer and Reference
More informationProgramming Languages
Programming Languages Types CSCI-GA.2110-001 Summer 2011 What is a type? A type consists of a set of values The compiler/interpreter defines a mapping of these values onto the underlying hardware. 2 /
More informationCS 430 Spring Mike Lam, Professor. Data Types and Type Checking
CS 430 Spring 2015 Mike Lam, Professor Data Types and Type Checking Type Systems Type system Rules about valid types, type compatibility, and how data values can be used Benefits of a robust type system
More informationNames, Bindings, Scopes
Names, Bindings, Scopes Variables In imperative l Language: abstractions of von Neumann machine Variables: abstraction of memory cell or cells Sometimes close to machine (e.g., integers), sometimes not
More informationLecture 12: Data Types (and Some Leftover ML)
Lecture 12: Data Types (and Some Leftover ML) COMP 524 Programming Language Concepts Stephen Olivier March 3, 2009 Based on slides by A. Block, notes by N. Fisher, F. Hernandez-Campos, and D. Stotts Goals
More informationIntroduction. Primitive Data Types: Integer. Primitive Data Types. ICOM 4036 Programming Languages
ICOM 4036 Programming Languages Primitive Data Types Character String Types User-Defined Ordinal Types Array Types Associative Arrays Record Types Union Types Pointer and Reference Types Data Types This
More informationTypes. What is a type?
Types What is a type? Type checking Type conversion Aggregates: strings, arrays, structures Enumeration types Subtypes Types, CS314 Fall 01 BGRyder 1 What is a type? A set of values and the valid operations
More informationFundamentals of Programming Languages. Data Types Lecture 07 sl. dr. ing. Ciprian-Bogdan Chirila
Fundamentals of Programming Languages Data Types Lecture 07 sl. dr. ing. Ciprian-Bogdan Chirila Predefined types Programmer defined types Scalar types Structured data types Cartesian product Finite projection
More informationProgramming Languages
Programming Languages Types CSCI-GA.2110-003 Fall 2011 What is a type? An interpretation of numbers Consists of a set of values The compiler/interpreter defines a mapping of these values onto the underlying
More informationG Programming Languages - Fall 2012
G22.2110-003 Programming Languages - Fall 2012 Lecture 6 Thomas Wies New York University Review Last week Functional Languages Lambda Calculus Scheme Outline Types Sources: PLP, ch. 7 Types What is a type?
More informationCOSC252: Programming Languages: Basic Semantics: Data Types. Jeremy Bolton, PhD Asst Teaching Professor
COSC252: Programming Languages: Basic Semantics: Data Types Jeremy Bolton, PhD Asst Teaching Professor Copyright 2015 Pearson. All rights reserved. Common Types and Design Concerns Primitive Data Types
More informationAttributes, Bindings, and Semantic Functions Declarations, Blocks, Scope, and the Symbol Table Name Resolution and Overloading Allocation, Lifetimes,
Chapter 5 Basic Semantics Attributes, Bindings, and Semantic Functions Declarations, Blocks, Scope, and the Symbol Table Name Resolution and Overloading Allocation, Lifetimes, and the Environment Variables
More informationProgramming Languages, Summary CSC419; Odelia Schwartz
Programming Languages, Summary CSC419; Odelia Schwartz Chapter 1 Topics Reasons for Studying Concepts of Programming Languages Programming Domains Language Evaluation Criteria Influences on Language Design
More informationData Types. (with Examples In Haskell) COMP 524: Programming Languages Srinivas Krishnan March 22, 2011
Data Types (with Examples In Haskell) COMP 524: Programming Languages Srinivas Krishnan March 22, 2011 Based in part on slides and notes by Bjoern 1 Brandenburg, S. Olivier and A. Block. 1 Data Types Hardware-level:
More informationCSE 452: Programming Languages. Where are we? Types: Intuitive Perspective. Data Types. High-level Programming Languages.
CSE 452: Programming Languages Data Types Where are we? Machine Language High-level Programming Languages Assembly Language Logic Object Oriented Imperative Functional You are here Concepts specification
More informationQuestion No: 1 ( Marks: 1 ) - Please choose one One difference LISP and PROLOG is. AI Puzzle Game All f the given
MUHAMMAD FAISAL MIT 4 th Semester Al-Barq Campus (VGJW01) Gujranwala faisalgrw123@gmail.com MEGA File Solved MCQ s For Final TERM EXAMS CS508- Modern Programming Languages Question No: 1 ( Marks: 1 ) -
More informationLecture 14. No in-class files today. Homework 7 (due on Wednesday) and Project 3 (due in 10 days) posted. Questions?
Lecture 14 No in-class files today. Homework 7 (due on Wednesday) and Project 3 (due in 10 days) posted. Questions? Friday, February 11 CS 215 Fundamentals of Programming II - Lecture 14 1 Outline Static
More information9/7/17. Outline. Name, Scope and Binding. Names. Introduction. Names (continued) Names (continued) In Text: Chapter 5
Outline Name, Scope and Binding In Text: Chapter 5 Names Variable Binding Type bindings, type conversion Storage bindings and lifetime Scope Lifetime vs. Scope Referencing Environments N. Meng, S. Arthur
More informationData Types (cont.) Subset. subtype in Ada. Powerset. set of in Pascal. implementations. CSE 3302 Programming Languages 10/1/2007
CSE 3302 Programming Languages Data Types (cont.) Chengkai Li Fall 2007 Subset U = { v v satisfies certain conditions and v V} Ada subtype Example 1 type Digit_Type is range 0..9; subtype IntDigit_Type
More informationFor each of the following variables named x, specify whether they are static, stack-dynamic, or heapdynamic:
For each of the following variables named x, specify whether they are static, stack-dynamic, or heapdynamic: a) in C++: int* x = new(int); b) in Java: class book { protected string title; book(string x)
More informationOutline. Java Models for variables Types and type checking, type safety Interpretation vs. compilation. Reasoning about code. CSCI 2600 Spring
Java Outline Java Models for variables Types and type checking, type safety Interpretation vs. compilation Reasoning about code CSCI 2600 Spring 2017 2 Java Java is a successor to a number of languages,
More informationChapter 6 part 1. Data Types. (updated based on 11th edition) ISBN
Chapter 6 part 1 Data Types (updated based on 11th edition) ISBN 0-321 49362-1 Chapter 6 Topics Introduction Primitive Data Types Character String Types User-Defined Ordinal Types Array Types Associative
More informationCS 230 Programming Languages
CS 230 Programming Languages 11 / 20 / 2015 Instructor: Michael Eckmann Questions/comments? Chapter 6 Arrays Pointers Today s Topics We all know what arrays are. Design issues Legal types for subscripts
More informationChapter 6. Data Types ISBN
Chapter 6 Data Types ISBN 0-321 49362-1 Chapter 6 Topics Introduction Primitive Data Types Character String Types User-Defined Ordinal Types Array Types Associative Arrays Record Types Union Types Pointer
More informationData Types. Data Types. Introduction. Data Types. Data Types. Data Types. Introduction
Introduction Primitive Composite Structured Abstract Introduction Introduction Data Type is a Collection of Data Objects Possible r-values for a memory cell Set of operations on those objects Descriptor
More informationCOS 140: Foundations of Computer Science
COS 140: Foundations of Computer Science Variables and Primitive Data Types Fall 2017 Introduction 3 What is a variable?......................................................... 3 Variable attributes..........................................................
More informationCSC 533: Organization of Programming Languages. Spring 2005
CSC 533: Organization of Programming Languages Spring 2005 Language features and issues variables & bindings data types primitive complex/structured expressions & assignments control structures subprograms
More informationLecture Overview. [Scott, chapter 7] [Sebesta, chapter 6]
1 Lecture Overview Types 1. Type systems 2. How to think about types 3. The classification of types 4. Type equivalence structural equivalence name equivalence 5. Type compatibility 6. Type inference [Scott,
More informationPROCEDURES, METHODS AND FUNCTIONS
Cosc 2P90 PROCEDURES, METHODS AND FUNCTIONS (c) S. Thompson, M. Winters 1 Procedures, Functions & Methods The are varied and complex rules for declaring, defining and calling procedures, methods and functions
More informationInformatica 3 Syntax and Semantics
Informatica 3 Syntax and Semantics Marcello Restelli 9/15/07 Laurea in Ingegneria Informatica Politecnico di Milano Introduction Introduction to the concepts of syntax and semantics Binding Variables Routines
More informationTypes and Type Inference
CS 242 2012 Types and Type Inference Notes modified from John Mitchell and Kathleen Fisher Reading: Concepts in Programming Languages, Revised Chapter 6 - handout on Web!! Outline General discussion of
More informationOrganization of Programming Languages CS3200 / 5200N. Lecture 06
Organization of Programming Languages CS3200 / 5200N Razvan C. Bunescu School of Electrical Engineering and Computer Science bunescu@ohio.edu Data Types A data type defines a collection of data objects
More informationOrganization of Programming Languages CS320/520N. Lecture 06. Razvan C. Bunescu School of Electrical Engineering and Computer Science
Organization of Programming Languages CS320/520N Razvan C. Bunescu School of Electrical Engineering and Computer Science bunescu@ohio.edu Data Types A data type defines a collection of data objects and
More informationLecture 7: Type Systems and Symbol Tables. CS 540 George Mason University
Lecture 7: Type Systems and Symbol Tables CS 540 George Mason University Static Analysis Compilers examine code to find semantic problems. Easy: undeclared variables, tag matching Difficult: preventing
More informationPierce Ch. 3, 8, 11, 15. Type Systems
Pierce Ch. 3, 8, 11, 15 Type Systems Goals Define the simple language of expressions A small subset of Lisp, with minor modifications Define the type system of this language Mathematical definition using
More informationSE352b: Roadmap. SE352b Software Engineering Design Tools. W3: Programming Paradigms
SE352b Software Engineering Design Tools W3: Programming Paradigms Feb. 3, 2005 SE352b, ECE,UWO, Hamada Ghenniwa SE352b: Roadmap CASE Tools: Introduction System Programming Tools Programming Paradigms
More informationCSE 307: Principles of Programming Languages
CSE 307: Principles of Programming Languages Variables and Constants R. Sekar 1 / 22 Topics 2 / 22 Variables and Constants Variables are stored in memory, whereas constants need not be. Value of variables
More informationChapter 6. Structured Data Types. Topics. Structured Data Types. Vectors and Arrays. Vectors. Vectors: subscripts
Topics Chapter 6 Structured Data Types Vectors Arrays Slices Associative Arrays Records Unions Lists Sets 2 Structured Data Types Virtually all languages have included some mechanisms for creating complex
More informationChapter 5. Names, Bindings, and Scopes
Chapter 5 Names, Bindings, and Scopes Chapter 5 Topics Introduction Names Variables The Concept of Binding Scope Scope and Lifetime Referencing Environments Named Constants 1-2 Introduction Imperative
More informationLecture 3: C Programm
0 3 E CS 1 Lecture 3: C Programm ing Reading Quiz Note the intimidating red border! 2 A variable is: A. an area in memory that is reserved at run time to hold a value of particular type B. an area in memory
More informationCS349/SE382 A1 C Programming Tutorial
CS349/SE382 A1 C Programming Tutorial Erin Lester January 2005 Outline Comments Variable Declarations Objects Dynamic Memory Boolean Type structs, enums and unions Other Differences The Event Loop Comments
More informationG Programming Languages - Fall 2012
G22.2110-003 Programming Languages - Fall 2012 Lecture 2 Thomas Wies New York University Review Last week Programming Languages Overview Syntax and Semantics Grammars and Regular Expressions High-level
More information6. Names, Scopes, and Bindings
Copyright (C) R.A. van Engelen, FSU Department of Computer Science, 2000-2004 6. Names, Scopes, and Bindings Overview Names Binding time Object lifetime Object storage management Static allocation Stack
More informationTopic 9: Type Checking
Recommended Exercises and Readings Topic 9: Type Checking From Haskell: The craft of functional programming (3 rd Ed.) Exercises: 13.17, 13.18, 13.19, 13.20, 13.21, 13.22 Readings: Chapter 13.5, 13.6 and
More informationTopic 9: Type Checking
Topic 9: Type Checking 1 Recommended Exercises and Readings From Haskell: The craft of functional programming (3 rd Ed.) Exercises: 13.17, 13.18, 13.19, 13.20, 13.21, 13.22 Readings: Chapter 13.5, 13.6
More informationType Bindings. Static Type Binding
Type Bindings Two key issues in binding (or associating) a type to an identifier: How is type binding specified? When does the type binding take place? N. Meng, S. Arthur 1 Static Type Binding An explicit
More informationLECTURE 18. Control Flow
LECTURE 18 Control Flow CONTROL FLOW Sequencing: the execution of statements and evaluation of expressions is usually in the order in which they appear in a program text. Selection (or alternation): a
More informationTokens, Expressions and Control Structures
3 Tokens, Expressions and Control Structures Tokens Keywords Identifiers Data types User-defined types Derived types Symbolic constants Declaration of variables Initialization Reference variables Type
More informationG Programming Languages - Fall 2012
G22.2110-003 Programming Languages - Fall 2012 Lecture 3 Thomas Wies New York University Review Last week Names and Bindings Lifetimes and Allocation Garbage Collection Scope Outline Control Flow Sequencing
More informationCOS 140: Foundations of Computer Science
COS 140: Foundations of Variables and Primitive Data Types Fall 2017 Copyright c 2002 2017 UMaine School of Computing and Information S 1 / 29 Homework Reading: Chapter 16 Homework: Exercises at end of
More informationImperative Programming
Naming, scoping, binding, etc. Instructor: Dr. B. Cheng Fall 2004 1 Imperative Programming The central feature of imperative languages are variables Variables are abstractions for memory cells in a Von
More informationNames, Scopes, and Bindings II. Hwansoo Han
Names, Scopes, and Bindings II Hwansoo Han Scope Rules A scope is textual region where bindings are active A program section of maximal size Bindings become active at the entry No bindings change in the
More informationNote 3. Types. Yunheung Paek. Associate Professor Software Optimizations and Restructuring Lab. Seoul National University
Note 3 Types Yunheung Paek Associate Professor Software Optimizations and Restructuring Lab. Seoul National University Topics Definition of a type Kinds of types Issues on types Type checking Type conversion
More informationChapter 6. Data Types ISBN
Chapter 6 Data Types ISBN 0-321 49362-1 Chapter 6 Topics Introduction Primitive Data Types Character String Types User-Defined Ordinal Types Array Types Associative Arrays Record Types Union Types Pointer
More informationChapter 5. Variables. Topics. Imperative Paradigm. Von Neumann Architecture
Topics Chapter 5 Variables Imperative Paradigm Variables Names Address Types Assignment Binding Lifetime Scope Constants 2 Imperative Paradigm The most widely used and well-developed programming paradigm.
More informationCS201 - Introduction to Programming Glossary By
CS201 - Introduction to Programming Glossary By #include : The #include directive instructs the preprocessor to read and include a file into a source code file. The file name is typically enclosed with
More informationProgrammiersprachen (Programming Languages)
2016-05-13 Preface Programmiersprachen (Programming Languages) coordinates: lecturer: web: usable for: requirements: No. 185.208, VU, 3 ECTS Franz Puntigam http://www.complang.tuwien.ac.at/franz/ps.html
More informationTypes. Chapter Six Modern Programming Languages, 2nd ed. 1
Types Chapter Six Modern Programming Languages, 2nd ed. 1 A Type Is A Set int n; When you declare that a variable has a certain type, you are saying that the values the variable can have are elements of
More informationCSE 504. Expression evaluation. Expression Evaluation, Runtime Environments. One possible semantics: Problem:
Expression evaluation CSE 504 Order of evaluation For the abstract syntax tree + + 5 Expression Evaluation, Runtime Environments + + x 3 2 4 the equivalent expression is (x + 3) + (2 + 4) + 5 1 2 (. Contd
More informationFundamentals of Programming Languages
Fundamentals of Programming Languages 1. DEFINITIONS... 2 2. BUILT-IN TYPES AND PRIMITIVE TYPES... 3 TYPE COMPATIBILITY... 9 GENERIC TYPES... 14 MONOMORPHIC VERSUS POLYMORPHIC... 16 TYPE IMPLEMENTATION
More informationCMSC 331 Final Exam Section 0201 December 18, 2000
CMSC 331 Final Exam Section 0201 December 18, 2000 Name: Student ID#: You will have two hours to complete this closed book exam. We reserve the right to assign partial credit, and to deduct points for
More informationThe New C Standard (Excerpted material)
The New C Standard (Excerpted material) An Economic and Cultural Derek M. Jones derek@knosof.co.uk Copyright 2002-2008 Derek M. Jones. All rights reserved. 1378 type specifier type-specifier: void char
More informationCompiler Construction
Compiler Construction Thomas Noll Software Modeling and Verification Group RWTH Aachen University https://moves.rwth-aachen.de/teaching/ss-16/cc/ Recap: Static Data Structures Outline of Lecture 18 Recap:
More informationInformal Semantics of Data. semantic specification names (identifiers) attributes binding declarations scope rules visibility
Informal Semantics of Data semantic specification names (identifiers) attributes binding declarations scope rules visibility 1 Ways to Specify Semantics Standards Documents (Language Definition) Language
More informationContents of Lecture 3
Contents of Lecture 3 Repetition of matrices double a[3][4]; double* b; double** c; Terminology Linkage Types Conversions Jonas Skeppstedt (js@cs.lth.se) Lecture 3 2014 1 / 33 A global matrix: double a[3][4]
More information1 Epic Test Review 2 Epic Test Review 3 Epic Test Review 4. Epic Test Review 5 Epic Test Review 6 Epic Test Review 7 Epic Test Review 8
Epic Test Review 1 Epic Test Review 2 Epic Test Review 3 Epic Test Review 4 Write a line of code that outputs the phase Hello World to the console without creating a new line character. System.out.print(
More informationShort Notes of CS201
#includes: Short Notes of CS201 The #include directive instructs the preprocessor to read and include a file into a source code file. The file name is typically enclosed with < and > if the file is a system
More informationFinal-Term Papers Solved MCQS with Reference
Solved MCQ(S) From FinalTerm Papers BY Arslan Jan 14, 2018 V-U For Updated Files Visit Our Site : Www.VirtualUstaad.blogspot.com Updated. Final-Term Papers Solved MCQS with Reference 1. The syntax of PHP
More informationReferences and pointers
References and pointers Pointers are variables whose value is a reference, i.e. an address of a store location. Early languages (Fortran, COBOL, Algol 60) had no pointers; added to Fortran 90. In Pascal,
More informationPROGRAMMING IN C++ COURSE CONTENT
PROGRAMMING IN C++ 1 COURSE CONTENT UNIT I PRINCIPLES OF OBJECT ORIENTED PROGRAMMING 2 1.1 Procedure oriented Programming 1.2 Object oriented programming paradigm 1.3 Basic concepts of Object Oriented
More informationLECTURE 17. Expressions and Assignment
LECTURE 17 Expressions and Assignment EXPRESSION SYNTAX An expression consists of An atomic object, e.g. number or variable. An operator (or function) applied to a collection of operands (or arguments)
More informationTypes and Type Inference
Types and Type Inference Mooly Sagiv Slides by Kathleen Fisher and John Mitchell Reading: Concepts in Programming Languages, Revised Chapter 6 - handout on the course homepage Outline General discussion
More informationThe Compiler So Far. CSC 4181 Compiler Construction. Semantic Analysis. Beyond Syntax. Goals of a Semantic Analyzer.
The Compiler So Far CSC 4181 Compiler Construction Scanner - Lexical analysis Detects inputs with illegal tokens e.g.: main 5 (); Parser - Syntactic analysis Detects inputs with ill-formed parse trees
More informationChapter 6. Data Types
Chapter 6 Data Types Introduction A data type defines a collection of data objects and a set of predefined operations on those objects A descriptor is the collection of the attributes of a variable Copyright
More informationCS558 Programming Languages
CS558 Programming Languages Winter 2017 Lecture 7b Andrew Tolmach Portland State University 1994-2017 Values and Types We divide the universe of values according to types A type is a set of values and
More informationChapter 7:: Data Types. Mid-Term Test. Mid-Term Test (cont.) Administrative Notes
Chapter 7:: Data Types Programming Language Pragmatics Michael L. Scott Administrative Notes Mid-Term Test Thursday, July 27 2006 at 11:30am No lecture before or after the mid-term test You are responsible
More informationClass Information ANNOUCEMENTS
Class Information ANNOUCEMENTS Third homework due TODAY at 11:59pm. Extension? First project has been posted, due Monday October 23, 11:59pm. Midterm exam: Friday, October 27, in class. Don t forget to
More informationZheng-Liang Lu Java Programming 45 / 79
1 class Lecture2 { 2 3 "Elementray Programming" 4 5 } 6 7 / References 8 [1] Ch. 2 in YDL 9 [2] Ch. 2 and 3 in Sharan 10 [3] Ch. 2 in HS 11 / Zheng-Liang Lu Java Programming 45 / 79 Example Given a radius
More informationProperties of an identifier (and the object it represents) may be set at
Properties of an identifier (and the object it represents) may be set at Compile-time These are static properties as they do not change during execution. Examples include the type of a variable, the value
More informationChapter 5 Names, Bindings, Type Checking, and Scopes
Chapter 5 Names, Bindings, Type Checking, and Scopes 長庚大學資訊工程學系 陳仁暉 助理教授 Tel: (03) 211-8800 Ext: 5990 E-mail: jhchen@mail.cgu.edu.tw URL: http://www.csie.cgu.edu.tw/jhchen All rights reserved. No part
More informationCS 261 Fall C Introduction. Variables, Memory Model, Pointers, and Debugging. Mike Lam, Professor
CS 261 Fall 2017 Mike Lam, Professor C Introduction Variables, Memory Model, Pointers, and Debugging The C Language Systems language originally developed for Unix Imperative, compiled language with static
More informationFeatures of C. Portable Procedural / Modular Structured Language Statically typed Middle level language
1 History C is a general-purpose, high-level language that was originally developed by Dennis M. Ritchie to develop the UNIX operating system at Bell Labs. C was originally first implemented on the DEC
More informationCS1622. Semantic Analysis. The Compiler So Far. Lecture 15 Semantic Analysis. How to build symbol tables How to use them to find
CS1622 Lecture 15 Semantic Analysis CS 1622 Lecture 15 1 Semantic Analysis How to build symbol tables How to use them to find multiply-declared and undeclared variables. How to perform type checking CS
More informationCS 112 Introduction to Computing II. Wayne Snyder Computer Science Department Boston University
CS 112 Introduction to Computing II Wayne Snyder Department Boston University Today: Java basics: Compilation vs Interpretation Program structure Statements Values Variables Types Operators and Expressions
More informationNOTE: Answer ANY FOUR of the following 6 sections:
A-PDF MERGER DEMO Philadelphia University Lecturer: Dr. Nadia Y. Yousif Coordinator: Dr. Nadia Y. Yousif Internal Examiner: Dr. Raad Fadhel Examination Paper... Programming Languages Paradigms (750321)
More informationCS558 Programming Languages
CS558 Programming Languages Winter 2018 Lecture 7b Andrew Tolmach Portland State University 1994-2018 Dynamic Type Checking Static type checking offers the great advantage of catching errors early And
More informationConcepts Introduced in Chapter 7
Concepts Introduced in Chapter 7 Storage Allocation Strategies Static Stack Heap Activation Records Access to Nonlocal Names Access links followed by Fig. 7.1 EECS 665 Compiler Construction 1 Activation
More informationLecture Notes on Programming Languages
Lecture Notes on Programming Languages 37 Lecture 04: Data Types and Variables All programming languages provide data types. A data type describes a set of data values and a set of predefined operations
More informationIntro to C: Pointers and Arrays
Lecture 4 Computer Science 61C Spring 2017 January 25th, 2017 Intro to C: Pointers and Arrays 1 Administrivia Teaching Assistants: Let s try that again. Lectures are recorded. Waitlist/Concurrent Enrollment
More information