Principles of Programming Languages, 2
|
|
- Lynn Caldwell
- 5 years ago
- Views:
Transcription
1 Principles of Programming Languages, 2 Matteo Pradella February 2015 Matteo Pradella Principles of Programming Languages, 2 February / 23
2 1 Object Oriented Programming (OO) Matteo Pradella Principles of Programming Languages, 2 February / 23
3 What is Object Oriented programming? 1 First of all, I assume you already know the main concepts from Java 2 OO means different things to different people 3 According to Alan Kay, who introduced the term: 1 OOP to me means only messaging, local retention and protection and hiding of state-process, and extreme late-binding of all things. It can be done in Smalltalk and in Lisp. There are possibly other systems in which this is possible, but I m not aware of them. 2 Actually I made up the term "object-oriented", and I can tell you I did not have C++ in mind. 4 On the other hand, Stroustrup based C++ s OO model on Simula, not Smalltalk. Interesting comparison with Objective-C. Matteo Pradella Principles of Programming Languages, 2 February / 23
4 Closures as objects (1) 1 basic idea: use "closed" values for encapsulation of values and methods + a simple dispatcher for messages: ( define ( make- simple- object ) ( let (( my-var 0)) ( define ( init ) ( set! my-var 0) my-var ) ( define ( my-add x) ( set! my-var (+ my-var x)) my-var ) ( define ( get-my-var ) my-var ) Matteo Pradella Principles of Programming Languages, 2 February / 23
5 Closures as objects (2) ( define ( my-display ) ( newline ) ( display "my Var is:") ( display my-var ) ( newline )) ( lambda ( message. args ) ; dispatcher ( apply ( case message (( init ) init ) (( my-add ) my-add ) (( my-display ) my-display ) (( get-my-var ) get-my-var ) ( else ( error " Unknown Method!" ))) args )))) Matteo Pradella Principles of Programming Languages, 2 February / 23
6 Closures as objects (3) 1 make-simple-object returns a closure which contains the dispatcher 2 Example usage: ( define a ( make- simple- object )) ( define b ( make- simple- object )) (a init ) ; => 0 (b init ) ; => 0 (a my-add 3) ; => 3 (a my-add 4) ; => 7 (a get-my-var ) ; => 7 (b get-my-var ) ; => 0 (a my-display ) ; => My Var is: 7 Matteo Pradella Principles of Programming Languages, 2 February / 23
7 Inheritance by delegation (1) ( define ( make-son ) ( let (( parent ( make- simple- object )) ( name "an object ")) ( define ( init ) ( parent init )) ( define ( hello ) "hi!") ( define ( my-display ) ( display "My name is ") ( display name ) ( display " and ") ( parent my-display )) Matteo Pradella Principles of Programming Languages, 2 February / 23
8 Inheritance by delegation (2) ( lambda ( message. args ) ( case message (( init ) ( apply init args )) ; overriding : (( my- display ) ( apply my- display args )) (( hello ) ( apply hello args )) ( else ( apply parent ( cons message args ))))))) Matteo Pradella Principles of Programming Languages, 2 February / 23
9 Inheritance by delegation (3) 1 Example usage: ( define c ( make-son )) (c init ) ( c my- display ) ; = > My name is an object and ; my Var is :0 ( display (c hello )) ; => hi! Matteo Pradella Principles of Programming Languages, 2 February / 23
10 A prototype-based object system 1 Self (1987), a variant of Smalltalk, is the programming language that introduced prototype-based object orientation 2 There are no classes: new objects are obtained by cloning and modifying existing objects 3 Its OO model inspired the one of JavaScript 4 We will see here how to implement it on top of Scheme, using hash tables as the main data structure Matteo Pradella Principles of Programming Languages, 2 February / 23
11 Proto-oo 1 An object is implemented with an hash table ( define new- object make- hash ) ( define ( clone object ) ( hash- copy object )) 2 keys are attribute/method names Matteo Pradella Principles of Programming Languages, 2 February / 23
12 Proto-oo: syntactic sugar 1 just for convenience: ( define-syntax!! ;; setter ( syntax-rules () ((_ object msg new- val ) ( hash-set! object msg new-val )))) ( define-syntax?? ;; reader ( syntax-rules () ((_ object msg ) ( hash-ref object msg )))) ( define- syntax - > ;; send message ( syntax-rules () ((_ object msg arg...) (( hash-ref object msg ) object arg...)))) Matteo Pradella Principles of Programming Languages, 2 February / 23
13 An example 1 First, we define an object and its methods ( define Pino ( new- object )) (!! Pino name " Pino ") ;; slot added (!! Pino hello ( lambda ( self x) ;; method added ( display (?? self name )) ( display ": hi, ") ( display (?? x name )) ( display "!") ( newline ))) Matteo Pradella Principles of Programming Languages, 2 February / 23
14 An example (cont.) 1 a couple of other methods: (!! Pino set-name ( lambda ( self x) (!! self name x ))) (!! Pino set-name- &- age ( lambda ( self n a) (!! self name n) (!! self age a ))) 2 and a clone: ( define Pina ( clone Pino )) (!! Pina name " Pina ") Matteo Pradella Principles of Programming Languages, 2 February / 23
15 Using the example (- > Pino hello Pina ) ; Pino : hi, Pina! (- > Pino set-name " Ugo ") (- > Pina set- name- &- age " Lucia " 25) (- > Pino hello Pina ) ; Ugo : hi, Lucia! Matteo Pradella Principles of Programming Languages, 2 February / 23
16 Proto-oo: inheritance 1 Inheritance is not typical of prototype object systems 2 Still, it is used in JavaScript to provide a "more standard" way of reusing code 3 Again, inheritance by delegation: ( define ( son- of parent ) ( let ((o ( new-object ))) (!! o << parent > > parent ) o)) Matteo Pradella Principles of Programming Languages, 2 February / 23
17 Proto-oo: dispatching 1 basic dispatching: ( define ( dispatch object msg ) (if (eq? object unknown ) ( error " Unknown message " msg ) ( let (( slot ( hash-ref object msg unknown ))) (if (eq? slot unknown ) ( dispatch ( hash- ref object <<parent >> unknown ) msg ) slot )))) Matteo Pradella Principles of Programming Languages, 2 February / 23
18 Proto-oo: dispatching (cont.) 1 we now have to modify?? and -> for dispatching ( define-syntax?? ;; reader ( syntax-rules () ((_ object msg ) ( dispatch object msg )))) ( define- syntax - > ;; send message ( syntax-rules () ((_ object msg arg...) (( dispatch object msg ) object arg...)))) Matteo Pradella Principles of Programming Languages, 2 February / 23
19 And the example: ( define Glenn ( son- of Pino )) (!! Glenn name " Glenn ") (!! Glenn age 50) (- > Glenn hello Pina ) ; Glenn : hi, Lucia! (- > Glenn ciao ) ; error : Unknown message Matteo Pradella Principles of Programming Languages, 2 February / 23
20 About inheritance: single or multiple? 1 Different languages have different approaches (Java vs C++ vs Python vs Ruby... ) 2 many recent languages prefer it single (e.g. Java, Ruby) 3 workarounds for its shortcomings: interfaces (like in Java), mixins Matteo Pradella Principles of Programming Languages, 2 February / 23
21 Proto-oo: mixins 1 mixins are containers of data/methods which can be combined to add behavior to objects 2 We may introduce mixins in proto-oo as follows: ( define ( extend target mixin ) ( hash- for- each mixin ; loop on table " mixin " ( lambda ( key val ) ( hash-set! target key val )))) Matteo Pradella Principles of Programming Languages, 2 February / 23
22 Example: ( define Pianist ( new- object )) ; a mixin (!! Pianist piano " Steinway CD318 ") (!! Pianist play ( lambda ( self ) ;; assumes a name : ( display (?? self name )) ( display " is playing his ") ( display (?? self piano )) ( newline ))) ;; using the Pianist mixin : ( extend Glenn Pianist ) (- > Glenn play ) ;; Glenn is playing his Steinway CD318 Matteo Pradella Principles of Programming Languages, 2 February / 23
23 Concluding remarks: Object Systems for Lisps 1 There is a long tradition of object systems for Lisp and Scheme 2 Common Lisp contains a standard, flexible and very sophisticated object system (called CLOS), that provides e.g. generic functions (for multiple dispatch), and method combination 3 There is an implementation for Scheme, written by Gregor Kiczales, and called Tiny CLOS (there are also many variants) 4 These concepts are forerunners of Aspect-Oriented Programming (AOP) 5 For the interested: Gregor Kiczales, Jim Des Rivieres, Daniel G. Bobrow: The Art of the Metaobject Protocol, MIT Press, 1991 Matteo Pradella Principles of Programming Languages, 2 February / 23
24 Legal stuff by Matteo Pradella 2 Licensed under Creative Commons License, Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) Matteo Pradella Principles of Programming Languages, 2 February / 23
Principles of Programming Languages (S)
Principles of Programming Languages (S) Matteo Pradella October 16, 2018 Matteo Pradella Principles of Programming Languages (S) October 16, 2018 1 / 105 Overview 1 Introduction 2 Basic concepts of programming
More informationObjects as Session-Typed Processes
Objects as Session-Typed Processes Stephanie Balzer and Frank Pfenning Computer Science Department, Carnegie Mellon University AGERE! 2015 The essence of object-orientation 2 The essence of object-orientation
More informationSmalltalk: developed at Xerox Palo Alto Research Center by the Learning Research Group in the 1970 s (Smalltalk-72, Smalltalk-76, Smalltalk-80)
A Bit of History Some notable examples of early object-oriented languages and systems: Sketchpad (Ivan Sutherland s 1963 PhD dissertation) was the first system to use classes and instances (although Sketchpad
More informationCPS 506 Comparative Programming Languages. Programming Language
CPS 506 Comparative Programming Languages Object-Oriented Oriented Programming Language Paradigm Introduction Topics Object-Oriented Programming Design Issues for Object-Oriented Oriented Languages Support
More informationObject Oriented Programming
Object Oriented Programming Ray John Pamillo 1/27/2016 1 Nokia Solutions and Networks 2014 Outline: Brief History of OOP Why use OOP? OOP vs Procedural Programming What is OOP? Objects and Classes 4 Pillars
More informationProgrammazione. Prof. Marco Bertini
Programmazione Prof. Marco Bertini marco.bertini@unifi.it http://www.micc.unifi.it/bertini/ Introduction Why OO Development? Improved structure of software easier to: Understand Maintain Enhance Reusable
More informationObject Oriented Programming (OOP)
Object Oriented Programming (OOP) o New programming paradigm o Actions Objects o Objects Actions o Object-oriented = Objects + Classes + Inheritance Imperative programming o OOP (Object-Oriented Programming)
More informationLecture 13: Object orientation. Object oriented programming. Introduction. Object oriented programming. OO and ADT:s. Introduction
Lecture 13: Object orientation Object oriented programming Introduction, types of OO languages Key concepts: Encapsulation, Inheritance, Dynamic binding & polymorphism Other design issues Smalltalk OO
More informationKonzepte von Programmiersprachen
Konzepte von Programmiersprachen Chapter 9: Objects and Classes Peter Thiemann Universität Freiburg 9. Juli 2009 Konzepte von Programmiersprachen 1 / 22 Objects state encapsulation (instance vars, fields)
More informationData Abstraction. Hwansoo Han
Data Abstraction Hwansoo Han Data Abstraction Data abstraction s roots can be found in Simula67 An abstract data type (ADT) is defined In terms of the operations that it supports (i.e., that can be performed
More informationCS558 Programming Languages Winter 2013 Lecture 8
OBJECT-ORIENTED PROGRAMMING CS558 Programming Languages Winter 2013 Lecture 8 Object-oriented programs are structured in terms of objects: collections of variables ( fields ) and functions ( methods ).
More informationCSE Lecture 3: Objects 2 September Nate Nystrom University of Texas at Arlington
CSE 3302 Lecture 3: Objects 2 September 2010 Nate Nystrom University of Texas at Arlington Administration Out of town this afternoon thru Monday HW1 due next Thursday 9/9 Types Last time: strongly typed
More informationLecture 16: Object Programming Languages
Lecture 16: Object Programming Languages Introduction Corresponds to EOPL 5.1 and 5.2 Goal: to introduce Object Oriented Programming Language (OOPL) concepts using the EOPL extensible language framework
More informationG Programming Languages Spring 2010 Lecture 9. Robert Grimm, New York University
G22.2110-001 Programming Languages Spring 2010 Lecture 9 Robert Grimm, New York University 1 Review Last week Modules 2 Outline Classes Encapsulation and Inheritance Initialization and Finalization Dynamic
More informationOverview. Elements of Programming Languages. Objects. Self-Reference
Overview Elements of Programming Languages Lecture 10: James Cheney University of Edinburgh October 23, 2017 Last time: programming in the large Programs, packages/namespaces, importing Modules and interfaces
More informationCSE 341: Programming Languages
CSE 341: Programming Languages Hal Perkins Spring 2011 Lecture 19 Introduction to Ruby Hal Perkins CSE341 Spring 2011, Lecture 19 1 Today Why Ruby? Some basics of Ruby programs Syntax Classes, Methods
More informationCSE 413 Spring Introduction to Ruby. Credit: Dan Grossman, CSE341
CSE 413 Spring 2011 Introduction to Ruby Credit: Dan Grossman, CSE341 Why? Because: Pure object-oriented language Interesting, not entirely obvious implications Interesting design decisions Type system,
More informationObject-Oriented Programming Languages: Application and Interpretation
Object-Oriented Programming Languages: Application and Interpretation Éric Tanter June 15, 2018 last updated: Friday, June 15th, 2018 Copyright 2010-2018 by Éric Tanter The electronic version of this work
More informationCS558 Programming Languages
CS558 Programming Languages Winter 2017 Lecture 10a Andrew Tolmach Portland State University 1994-2017 Object-oriented Programming Programs are structured in terms of objects: collections of variables
More informationScheme. Functional Programming. Lambda Calculus. CSC 4101: Programming Languages 1. Textbook, Sections , 13.7
Scheme Textbook, Sections 13.1 13.3, 13.7 1 Functional Programming Based on mathematical functions Take argument, return value Only function call, no assignment Functions are first-class values E.g., functions
More informationObject Oriented Classes, Objects, Inheritance, and Typing
Object Oriented Classes, Objects, Inheritance, and Typing By: Nicholas Merizzi January 2005 Pros & Cons of OO programming Conclusion & Discussion Outline General Introduction Why the O.O. paradigm? Classes
More informationOOPLs - Inheritance. Inheritance
OOPLs - Inheritance Desirable properties Models of inheritance Class-based: with single, multiple parents Delegation Mix-ins Functionality as code reuse as subtyping 1 Inheritance Data abstraction plus
More informationOverview. Elements of Programming Languages. Objects. Self-Reference
Overview Elements of Programming Languages Lecture 11: James Cheney University of Edinburgh November 3, 2015 Last time: programming in the large Programs, packages/namespaces, importing Modules and interfaces
More informationComp-304 : Object-Oriented Design What does it mean to be Object Oriented?
Comp-304 : Object-Oriented Design What does it mean to be Object Oriented? What does it mean to be OO? What are the characteristics of Object Oriented programs (later: OO design)? What does Object Oriented
More informationFunctions & First Class Function Values
Functions & First Class Function Values PLAI 1st ed Chapter 4, PLAI 2ed Chapter 5 The concept of a function is itself very close to substitution, and to our with form. Consider the following morph 1 {
More informationDynamically-typed Languages. David Miller
Dynamically-typed Languages David Miller Dynamically-typed Language Everything is a value No type declarations Examples of dynamically-typed languages APL, Io, JavaScript, Lisp, Lua, Objective-C, Perl,
More informationScheme in Scheme: The Metacircular Evaluator Eval and Apply
Scheme in Scheme: The Metacircular Evaluator Eval and Apply CS21b: Structure and Interpretation of Computer Programs Brandeis University Spring Term, 2015 The metacircular evaluator is A rendition of Scheme,
More informationSemantic Analysis. Outline. The role of semantic analysis in a compiler. Scope. Types. Where we are. The Compiler Front-End
Outline Semantic Analysis The role of semantic analysis in a compiler A laundry list of tasks Scope Static vs. Dynamic scoping Implementation: symbol tables Types Static analyses that detect type errors
More informationJava Object Oriented Design. CSC207 Fall 2014
Java Object Oriented Design CSC207 Fall 2014 Design Problem Design an application where the user can draw different shapes Lines Circles Rectangles Just high level design, don t write any detailed code
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 informationRuby. Mooly Sagiv. Most slides taken from Dan Grossman
Ruby Mooly Sagiv Most slides taken from Dan Grossman Ruby dynamic, reflective, object-oriented, general-purpose programming language Designed and developed in the mid-1990s by Yukihiro "Matz" Matsumoto
More informationObject-oriented perspective
Starting Reader #2 Object-oriented perspective Operating system = computer interface Shell/libraries/system calls = OS interface Will return to OS topics in upcoming lectures. Now: OO intro. Objects l
More informationConcepts of Programming Languages
Concepts of Programming Languages Lecture 10 - Object-Oriented Programming Patrick Donnelly Montana State University Spring 2014 Patrick Donnelly (Montana State University) Concepts of Programming Languages
More informationBack to OCaml. Summary of polymorphism. Example 1. Type inference. Example 2. Example 2. Subtype. Polymorphic types allow us to reuse code.
Summary of polymorphism Subtype Parametric Bounded F-bounded Back to OCaml Polymorphic types allow us to reuse code However, not always obvious from staring at code But... Types never entered w/ program!
More informationThe role of semantic analysis in a compiler
Semantic Analysis Outline The role of semantic analysis in a compiler A laundry list of tasks Scope Static vs. Dynamic scoping Implementation: symbol tables Types Static analyses that detect type errors
More informationfeatures of Python 1.5, including the features earlier described in [2]. Section 2.6 summarizes what is new in Python The class and the class
A note on reection in Python 1.5 Anders Andersen y AAndersen@ACM.Org March 13, 1998 Abstract This is a note on reection in Python 1.5. Both this and earlier versions of Python has an open implementation
More informationDynamic and Interactive Graphics in Lisp-Stat
Dynamic and Interactive Graphics in Lisp-Stat Luke Tierney Department of Statistics & Actuarial Science University of Iowa July 31, 2017 Luke Tierney (U. of Iowa) Lisp-Stat Graphics Baltimore: JSM 2017
More informationDOWNLOAD PDF BEGINNING C 3.0 AN INTRODUCTION TO OBJECT ORIENTED PROGRAMMING
Chapter 1 : Beginning C# - PDF ebook Free Download Learn all the basics of C# from Beginning C# An Introduction to Object Oriented Programming, a book that presents introductory information in an intuitive
More information6.001, Fall Semester, 1998 Lecture Notes, October 27 { Object Oriented Programming 2 An environment diagram illustrating +define foo +cons 1 2,, +set-
1 MASSACHVSETTS INSTITVTE OF TECHNOLOGY Department of Electrical Engineering and Computer Science 6.001 Structure and Interpretation of Computer Programs Fall Semester, 1998 Lecture Notes, October 27 {
More informationCS152: Programming Languages. Lecture 24 Bounded Polymorphism; Classless OOP. Dan Grossman Spring 2011
CS152: Programming Languages Lecture 24 Bounded Polymorphism; Classless OOP Dan Grossman Spring 2011 Revenge of Type Variables Sorted lists in ML (partial): type a slist make : ( a -> a -> int) -> a slist
More informationIntroduction to Object-Oriented Programming
Introduction to Object-Oriented Programming Objects and classes Abstract Data Types (ADT). Encapsulation OOP: Introduction 1 Pure Object-Oriented Languages Five rules [Source: Alan Kay]: Everything in
More informationCSCI 2041: Object Systems
CSCI 2041: Object Systems Chris Kauffman Last Updated: Fri Dec 7 09:00:45 CST 2018 1 Logistics Reading Module Lazy on lazy evaluation Module Stream on streams OSM: Ch 3: Objects in OCaml Goals Finish Lazy/Streams
More informationProgramming Languages & Paradigms PROP HT Abstraction & Modularity. Inheritance vs. delegation, method vs. message. Modularity, cont d.
Programming Languages & Paradigms PROP HT 2011 Abstraction & Modularity Lecture 6 Inheritance vs. delegation, method vs. message Beatrice Åkerblom beatrice@dsv.su.se 2 Modularity Modularity, cont d. Modular
More information6.184 Lecture 4. Interpretation. Tweaked by Ben Vandiver Compiled by Mike Phillips Original material by Eric Grimson
6.184 Lecture 4 Interpretation Tweaked by Ben Vandiver Compiled by Mike Phillips Original material by Eric Grimson 1 Interpretation Parts of an interpreter Arithmetic calculator
More informationCombined Object-Lambda Architectures
www.jquigley.com jquigley#jquigley.com Chicago Lisp April 2008 Research Goals System Goals Conventional Systems Unconventional Systems Research Goals Question: How to make with Pepsi and Coke? The Goal:
More informationSpace War Class Diagram. Elements of OOP. How to design interactions between objects. Space War Class Diagram with Inheritance
Elements of OOP Object Smart data structure Set of state variables Set of methods for manipulating state variables Class: Specifies the common behavior of entities Instance: A particular object or entity
More informationCIS192 Python Programming
CIS192 Python Programming Object-Oriented Programming Robert Rand University of Pennsylvania February 10, 2016 Robert Rand (University of Pennsylvania) CIS 192 February 10, 2016 1 / 25 Outline 1 Object
More informationCS153: Compilers Lecture 11: Compiling Objects
CS153: Compilers Lecture 11: Compiling Objects Stephen Chong https://www.seas.harvard.edu/courses/cs153 Announcements Project 3 due today Project 4 out Due Thursday Oct 25 (16 days) Project 5 released
More informationMIDTERM EXAMINATION - CS130 - Spring 2005
MIDTERM EAMINATION - CS130 - Spring 2005 Your full name: Your UCSD ID number: This exam is closed book and closed notes Total number of points in this exam: 231 + 25 extra credit This exam counts for 25%
More informationObject Model. Object Oriented Programming Spring 2015
Object Model Object Oriented Programming 236703 Spring 2015 Class Representation In Memory A class is an abstract entity, so why should it be represented in the runtime environment? Answer #1: Dynamic
More informationJavaScript: Sort of a Big Deal,
: Sort of a Big Deal, But Sort of Quirky... March 20, 2017 Lisp in C s Clothing (Crockford, 2001) Dynamically Typed: no static type annotations or type checks. C-Like Syntax: curly-braces, for, semicolons,
More informationThe results for a few specific cases below are indicated. allequal ([1,1,1,1]) should return true allequal ([1,1,2,1]) should return false
Test 1 Multiple Choice. Write your answer to the LEFT of each problem. 4 points each 1. Which celebrity has not received an ACM Turing Award? A. Alan Kay B. John McCarthy C. Dennis Ritchie D. Bjarne Stroustrup
More informationLecture 09. Ada to Software Engineering. Mr. Mubashir Ali Lecturer (Dept. of Computer Science)
Lecture 09 Ada to Software Engineering Mr. Mubashir Ali Lecturer (Dept. of dr.mubashirali1@gmail.com 1 Summary of Previous Lecture 1. ALGOL 68 2. COBOL 60 3. PL/1 4. BASIC 5. Early Dynamic Languages 6.
More informationObject Oriented Paradigm
Object Oriented Paradigm History Simula 67 A Simulation Language 1967 (Algol 60 based) Smalltalk OO Language 1972 (1 st version) 1980 (standard) Background Ideas Record + code OBJECT (attributes + methods)
More information6.037 Lecture 4. Interpretation. What is an interpreter? Why do we need an interpreter? Stages of an interpreter. Role of each part of the interpreter
6.037 Lecture 4 Interpretation Interpretation Parts of an interpreter Meta-circular Evaluator (Scheme-in-scheme!) A slight variation: dynamic scoping Original material by Eric Grimson Tweaked by Zev Benjamin,
More informationO-O-Overloading & D-Dispatch. Scott Kilpatrick 02 March 2011
O-O-Overloading & D-Dispatch Scott Kilpatrick 02 March 2011 1 Overloading and dispatch: in natural languages Overloading: one word has many meanings court court court 2 Overloading and dispatch: in natural
More informationChapter 11. Categories of languages that support OOP: 1. OOP support is added to an existing language
Categories of languages that support OOP: 1. OOP support is added to an existing language - C++ (also supports procedural and dataoriented programming) - Ada 95 (also supports procedural and dataoriented
More informationStatic and Dynamic Behavior עזאם מרעי המחלקה למדעי המחשב אוניברסיטת בן-גוריון מובסס על הרצאות של אותו קורס שניתן בשנים הקודמות ע "י ד"ר גרא וייס
Static and Dynamic Behavior עזאם מרעי המחלקה למדעי המחשב אוניברסיטת בן-גוריון מובסס על הרצאות של אותו קורס שניתן בשנים הקודמות ע "י ד"ר גרא וייס 2 Roadmap In this chapter we will examine how differences
More informationCOSC252: Programming Languages: Abstraction and OOP. Jeremy Bolton, PhD Asst Teaching Professor. Copyright 2015 Pearson. All rights reserved.
COSC252: Programming Languages: Abstraction and OOP Jeremy Bolton, PhD Asst Teaching Professor Copyright 2015 Pearson. All rights reserved. Copyright 2015 Pearson. All rights reserved. Topics The Concept
More informationDynamic Object-Oriented Programming with Smalltalk 1. Introduction
Dynamic Object-Oriented Programming with Smalltalk 1. Introduction Prof. O. Nierstrasz Autumn Semester 2009 LECTURE TITLE What is surprising about Smalltalk > Everything is an object > Everything happens
More informationKey components of a lang. Deconstructing OCaml. In OCaml. Units of computation. In Java/Python. In OCaml. Units of computation.
Key components of a lang Deconstructing OCaml What makes up a language Units of computation Types Memory model In OCaml Units of computation In OCaml In Java/Python Expressions that evaluate to values
More informationCSE 413 Languages & Implementation. Hal Perkins Winter 2019 Structs, Implementing Languages (credits: Dan Grossman, CSE 341)
CSE 413 Languages & Implementation Hal Perkins Winter 2019 Structs, Implementing Languages (credits: Dan Grossman, CSE 341) 1 Goals Representing programs as data Racket structs as a better way to represent
More informationlow and not larger than high. 18 points
CSE 330 Test 1 (1 point) Spring 015 Multiple Choice. Write your answer to the LEFT of each problem. 3 points each 1. Lisp was invented at: A. IBM B. MIT C. Netscape D. Stanford. In C++, what operator is
More informationAbout Python. Python Duration. Training Objectives. Training Pre - Requisites & Who Should Learn Python
About Python Python course is a great introduction to both fundamental programming concepts and the Python programming language. By the end, you'll be familiar with Python syntax and you'll be able to
More informationCSE413: Programming Languages and Implementation Racket structs Implementing languages with interpreters Implementing closures
CSE413: Programming Languages and Implementation Racket structs Implementing languages with interpreters Implementing closures Dan Grossman Fall 2014 Hi! I m not Hal J I love this stuff and have taught
More informationRuby: Introduction, Basics
Ruby: Introduction, Basics Computer Science and Engineering College of Engineering The Ohio State University Lecture 3 Ruby vs Java: Similarities Imperative and object-oriented Classes and instances (ie
More informationCSE 341, Autumn 2015, Ruby Introduction Summary
CSE 341, Autumn 2015, Ruby Introduction Summary Disclaimer: This lecture summary is not necessarily a complete substitute for atting class, reading the associated code, etc. It is designed to be a useful
More informationC++ Programming: Introduction to C++ and OOP (Object Oriented Programming)
C++ Programming: Introduction to C++ and OOP (Object Oriented Programming) 2018 년도 2 학기 Instructor: Young-guk Ha Dept. of Computer Science & Engineering Contents Brief introduction to C++ OOP vs. Procedural
More informationSimula 67. Simula and Smalltalk. Comparison to Algol 60. Brief history. Example: Circles and lines. Objects in Simula
CS 242 Simula 67 Simula and Smalltalk John Mitchell First object-oriented language Designed for simulation Later recognized as general-purpose prog language Extension of Algol 60 Standardized as Simula
More informationRacket: Macros. Advanced Functional Programming. Jean-Noël Monette. November 2013
Racket: Macros Advanced Functional Programming Jean-Noël Monette November 2013 1 Today Macros pattern-based macros Hygiene Syntax objects and general macros Examples 2 Macros (According to the Racket Guide...)
More informationG Programming Languages - Fall 2012
G22.2110-003 Programming Languages - Fall 2012 Lecture 12 Thomas Wies New York University Review Last lecture Modules Outline Classes Encapsulation and Inheritance Initialization and Finalization Dynamic
More informationCSE341: Programming Languages Lecture 19 Introduction to Ruby and OOP. Dan Grossman Winter 2013
CSE341: Programming Languages Lecture 19 Introduction to Ruby and OOP Dan Grossman Winter 2013 Ruby logistics Next two sections use the Ruby language http://www.ruby-lang.org/ Installation / basic usage
More informationToday. Continue our very basic intro to JavaScript. Lambda calculus
JavaScript (cont) Today Continue our very basic intro to JavaScript Lambda calculus Last lecture recap JavaScript was designed in 10 days Lots of unsatisfactory parts (in retrospect); many due due to the
More information2. Classes & Inheritance. Classes. Classes. Éric Tanter Objects and Design in Smalltalk. How do you create objects?
Objects and Design in Smalltalk 2. Classes & Inheritance Éric Tanter etanter@dcc.uchile.cl 1 Classes How do you create objects? Ex-nihilo in prototype-based languages With a class in class-based languages
More informationObject Model Comparisons
Object Model Comparisons 1 Languages are designed, just like programs Someone decides what the language is for Someone decides what features it's going to have Can't really understand a language until
More informationCustom Specializers in Object-Oriented Lisp
Custom Cadence Design Systems Goldsmiths, University of London 23rd May 2008 Common : Skill: Unification of various dialects; Not dead yet. Common Skill Internal dialect from Cadence Design Systems; Extension
More informationRuby logistics. CSE341: Programming Languages Lecture 19 Introduction to Ruby and OOP. Ruby: Not our focus. Ruby: Our focus. A note on the homework
Ruby logistics CSE341: Programming Languages Lecture 19 Introduction to Ruby and OOP Dan Grossman Autumn 2018 Next two sections use the Ruby language http://www.ruby-lang.org/ Installation / basic usage
More informationGoals of the Lecture OO Programming Principles
Goals of the Lecture OO Programming Principles Object-Oriented Analysis and Design - Fall 1998 n Discuss OO Programming Principles Ð Messages Ð Information Hiding Ð Classes and Instances Ð Inheritance
More informationLecturer: William W.Y. Hsu. Programming Languages
Lecturer: William W.Y. Hsu Programming Languages Chapter 9 Data Abstraction and Object Orientation 3 Object-Oriented Programming Control or PROCESS abstraction is a very old idea (subroutines!), though
More informationScala : an LLVM-targeted Scala compiler
Scala : an LLVM-targeted Scala compiler Da Liu, UNI: dl2997 Contents 1 Background 1 2 Introduction 1 3 Project Design 1 4 Language Prototype Features 2 4.1 Language Features........................................
More informationCIS192 Python Programming
CIS192 Python Programming Introduction Robert Rand University of Pennsylvania September 16, 2015 Robert Rand (University of Pennsylvania) CIS 192 September 16, 2015 1 / 21 Outline 1 Object Orientation
More informationPerl 6 Hands-On Tutorial
Perl 6 Hands-On Tutorial DCBPW 2016 Brock Wilcox awwaiid@thelackthereof.org Rakudo 楽土 Install Resources REPL Script Application Library Install Rakudobrew # Linux sudo apt-get install build-essential git
More informationWhat is a class? Responding to messages. Short answer 7/19/2017. Code Listing 11.1 First Class. chapter 11. Introduction to Classes
chapter 11 Code Listing 11.1 First Class Introduction to Classes What is a class? If you have done anything in computer science before, you likely will have heard the term object oriented programming (OOP)
More informationThe Extensible Java Preprocessor Kit. and a Tiny Data-Parallel Java. Abstract
The Extensible Java Preprocessor Kit and a Tiny Data-Parallel Java Yuuji ICHISUGI 1, Yves ROUDIER 2 fichisugi,roudierg@etl.go.jp 1 Electrotechnical Laboratory, 2 STA Fellow, Electrotechnical Laboratory
More informationObject Model. Object Oriented Programming Winter
Object Model Object Oriented Programming 236703 Winter 2014-5 Class Representation In Memory A class is an abstract entity, so why should it be represented in the runtime environment? Answer #1: Dynamic
More informationCS 360 Programming Languages Interpreters
CS 360 Programming Languages Interpreters Implementing PLs Most of the course is learning fundamental concepts for using and understanding PLs. Syntax vs. semantics vs. idioms. Powerful constructs like
More informationMITOCW watch?v=flgjisf3l78
MITOCW watch?v=flgjisf3l78 The following content is provided under a Creative Commons license. Your support will help MIT OpenCourseWare continue to offer high-quality educational resources for free. To
More informationSOFTWARE ARCHITECTURE 6. LISP
1 SOFTWARE ARCHITECTURE 6. LISP Tatsuya Hagino hagino@sfc.keio.ac.jp slides URL https://vu5.sfc.keio.ac.jp/sa/ 2 Compiler vs Interpreter Compiler Translate programs into machine languages Compilers are
More informationChapter 10 :: Data Abstraction and Object Orientation
Chapter 10 :: Data Abstraction and Object Orientation Programming Language Pragmatics, Fourth Edition Michael L. Scott Copyright 2016 Elsevier Chapter10_Data_Abstraction_and_Object_Orientation_4e 1 Object-Oriented
More informationTopic III. LISP : functions, recursion, and lists References: Chapter 3 of Concepts in programming languages by J. C. Mitchell. CUP, 2003.
Topic III LISP : functions, recursion, and lists References: Chapter 3 of Concepts in programming languages by J. C. Mitchell. CUP, 2003. Chapters 5( 4.5) and 13( 1) of Programming languages: Design and
More informationLecture content. Course goals. Course Introduction. TDDA69 Data and Program Structure Introduction Cyrille Berger
Lecture content TDDA69 Data and Program Structure Introduction Cyrille Berger Course Introduction Concepts and models of programming languages The different programming paradigms Why different paradigms?
More informationJohn McCarthy IBM 704
How this course works SI 334: Principles of Programming Languages Lecture 2: Lisp Instructor: an arowy Lots of new languages Not enough class time to cover all features (e.g., Java over the course of 34-36:
More informationLecture Notes on Programming Languages
Lecture Notes on Programming Languages 85 Lecture 09: Support for Object-Oriented Programming This lecture discusses how programming languages support object-oriented programming. Topics to be covered
More informationAn Explicit Continuation Evaluator for Scheme
Massachusetts Institute of Technology Course Notes 2 6.844, Spring 05: Computability Theory of and with Scheme February 17 Prof. Albert R. Meyer revised March 3, 2005, 1265 minutes An Explicit Continuation
More informationParsing Scheme (+ (* 2 3) 1) * 1
Parsing Scheme + (+ (* 2 3) 1) * 1 2 3 Compiling Scheme frame + frame halt * 1 3 2 3 2 refer 1 apply * refer apply + Compiling Scheme make-return START make-test make-close make-assign make- pair? yes
More informationChapter3: Introduction to Classes and Objects
Chapter3: Introduction to Classes and Objects Classes and Objects: Definitions Objectives What is an object What is a class UML representation of a class Objects and Instance variables Primitive types
More informationSymbolic Computation and Common Lisp
Symbolic Computation and Common Lisp Dr. Neil T. Dantam CSCI-56, Colorado School of Mines Fall 28 Dantam (Mines CSCI-56) Lisp Fall 28 / 92 Why? Symbolic Computing: Much of this course deals with processing
More informationMonday Feb 16, 5pm. solve these equalities. Midterm Thursday Feb 12. covers only ocaml part of the course, assignments 1 through 3.
News Programming Assignment 4 is up, due Monday Feb 16, 5pm Long assignment, start early Midterm Thursday Feb 12 covers only ocaml part of the course, assignments 1 through 3. Recap: Inferring types Introduce
More informationAspect-Oriented Programming On Lisp
6 th International Conference on Applied Informatics Eger, Hungary, January 27 31, 2004. Aspect-Oriented Programming On Lisp Miklós Espák Department of Information Technology, University of Debrecen e-mail:
More informationCase Study: Meta Classes
1 Case Study: Meta Classes Class representation in memory Class variables and methods Meta Classes 3 Level System 4 Level System 5 Level System 1 Level System Infinite Levels System Class Representation
More information