Rachunek Lambda + Obiektowość część 1. – motywacja

Slides:



Advertisements
Podobne prezentacje
DYSKRYMINACJA W MIEJSCU PRACY W POLSCE
Advertisements

Wzorce Projektowe Bartosz Baliś, Na podstawie
Klasy i obiekty.
Zaawansowane metody programowania – Wykład V
Static, const, volatile.
Wprowadzenie do C++ Zajęcia 2.
Obiektowe metody projektowania systemów Design Patterns STRATEGY.
XPath XSLT – część XPath. XSLT – część 12 XPath – XML Path Language Problem: –jednoznaczne adresowanie fragmentów struktury dokumentu XML.
11 XML a SGML. Standardy pokrewne.. 22 SGML a XML – różnice Deklaracja SGML: konfiguracja wyglądu znaczników, ich maksymalnej długości, itp., definicja.
Analiza i Projektowanie Obiektowe
Wielodziedziczenie od środka Konrad Lipiński
Mateusz Srebrny 15 grudnia 2003 Motif, okienka i obiekty Mateusz Srebrny 15 grudnia 2003.
PLAN Wstęp Smalltalk (Alan Kay, Xerox, Palo Alto)
„Piramid Match Kernel”
Projektowanie oprogramowania
Organizacja Przedsięwzięć Programistycznych Projektowanie
Obiektowe metody projektowania systemów
Marcin Kujawa Michał Łobarzewski
Inteligentne Systemy Informacyjne
Inżynieria Oprogramowania dla Fizyków
Programowanie zorientowane obiektowo 1 Programowanie zorientowane obiektowo (object-oriented programming) jest to metodologia programowania bazująca na.
Wykład 8 Wojciech Pieprzyca
Mgr inż. Bartłomiej Stasiak Instytut Informatyki Wydział Fizyki Technicznej, Informatyki i Matematyki Stosowanej Politechnika Łódzka Data i miejsce.
Mechanizmy dziedziczenia
Wstęp do programowania obiektowego
Project made by Bartosz Rumiński Kl. III i rok 2007/2008.
Projektowanie i programowanie obiektowe II - Wykład I
Spring podstawy.
Programowanie obiektowe W1 Wprowadzenie
Wykład 4 Analiza i projektowanie obiektowe
czyli (anty)wzorzec Singleton
czyli (anty)wzorzec Singleton
Infrastruktura języka UML w wersji 2.2
Podstawy C# Grupa .NET PO.
Języki wysokiego poziomu: – funkcje i programowanie bezklasowe
Projektowanie obiektowe
Jakub Wołczko W obiektowym świecie… Jakub Wołczko
Programowanie obiektowe III rok EiT
ŻYWE JĘZYKI PROGRAMOWANIA LIVING IT UP WITH A LIVE PROGRAMMING LANGUAGE Sean McDirmid Ecole Polytechnique Fédérale de Lausanne (EPFL)
Języki i środowiska programowania systemów rozproszonych, Wykład 03, Slajd Języki i środowiska programowania systemów rozproszonych Wykładowca:
Projektowanie obiektowe
Projektowanie obiektowe
ZAKŁAD SYSTEMÓW KOMPUTEROWYCH
Programowanie obiektowe 2013/2014
Technologie Programowania seminarium
Institute of Computer Science PAS Warsaw, The Project is co-financed by the European Union from resources of the European Social Found.
Programowanie w języku C++
Filtr Kalmana (z ang. Kalman Filter w skrócie KF)
OOP, Desing Patterns … and more Michał Dubel
Technologie internetowe
OOPSmalltalk - Licznik, metodologia1 Analiza i projektowanie obiektowe 3 fazy: –analiza problemu - modelowanie (m.in. podział na klasy) –projektowanie.
mgr inż. Michał Czubenko Katedra Systemów Decyzyjnych WETI PG
Paweł Starzyk Obiektowe metody projektowania systemów
Wzorce Projektowe w JAVA
Komponentowe i rozproszone Interludium czyli krótki wykład o rozpraszaniu.
Wstęp do systemów informatycznych Diagramy klas. Odbiór świata  Myślenie o dziedzinie problemu powinno być możliwie zbliżone do myślenia o systemie 
Refaktoryzacja „Any fool can write a code that computer understands. Good programers write code that human can understand” – Martin Fowler.
Inżynieria oprogramowania Wzorce konstrukcyjne WWW: Jacek Matulewski Instytut Fizyki, UMK.
Programowanie Obiektowe – Epilog
Różnice między programowanie strukturalnym a obiektowym
Portfolio umiejętności i wykonanych projektów
(według:
Programowanie Obiektowe – Wykład 2
A prototype of distributed modelling environment
AOP – Aspect Oriented Programming
Computing situation in Poland
Założenia projektowe Javy
NEMERLE Michał Maliszewski.
Programming with Live Distributed Objects
Object vs. class (rozdzial 13 The NEURON book)
Zapis prezentacji:

Rachunek Lambda + Obiektowość część 1. – motywacja na podstawie: [1] A Lambda Calculus of Objects and Method Specialization [2] Matching [for] the Lambda Calculus of Objects

Plan Prezentacji Przykłady motywujące Formalizm: Rachunek Lambda z Obiektami System Typów dla powyższego

Przykłady motywujące

JavaScript, Przykład 1. Metody niezdefiniowane w obiekcie (message-not-understood)

JavaScript, Przykład 2. Specjalizacja metod klasowych (method specialization) cp:

Cele 1. papieru zamodelować rozszerzanie obiektów... … pamiętając o specjalizacji metod zrozumieć jak zmienia się znaczenie metody w zależności od zmiany this / self przy dziedziczeniu analiza znaczenia metody w oderwaniu od miejsca deklaracji

Cel: formalizm – abstrakcja obiektowości Środek: rachunek lambda rozszerzony o obiekty

Klasy vs Prototypy obiektowość tworzenie obiektów wg klas (class-based) Java, Python, Smalltalk, ... tworzenie obiektów wg instancji (delegation-based, prototype-based) JavaScript, Self, ...

Rachunek lambda + obiekty (Untyped Lambda Calculus of Objects)

Rachunek lambda + obiekty (Untyped Lambda Calculus of Objects) Przykład

Rachunek lambda + obiekty (Untyped Lambda Calculus of Objects) Funkcyjna forma rozszerzania obiektów: : Object → Method → Object

Rachunek lambda + obiekty (Untyped Lambda Calculus of Objects) Modelowanie self za pomocą λ-abstrakcji (funkcji):

obserwacje na temat Rachunku Lambda z Obiektami

Wzajemnie rekursywne metody (mutually recursive methods) chcemy wykrywać takie błędy: x niezdefiniowane!: ok: problem gdy 2 metody: m() {n()}, n() {m()} są wzajemnie rekursywne

Rachunku Lambda z Obiektowością System typów dla Rachunku Lambda z Obiektowością Przykład wyprowadzenia

Reguły typowania obiektów czyli specjalizacja raz jeszcze (ale teraz formalniej)

Java, Przykład 2. Specjalizacja metod klasowych (method specialization) cp:

Reguły typowania obiektów

Interpretacja metody poza kontekstem jej definicji

Specjalizacja metod klasowych – inne prace like Current zaproponowane do języka Eiffel Przykład 2.: nie trzeba rzutować cp.move() z Point na ColoredPoint W.R. Cook. A proposal for making Eiffel type- safe. W European Conf. on Object-Oriented Programming, strony 57–72, 1989.

Specjalizację metod opisano także w: J.C. Mitchell. Toward a typed foundation for method specialization and inheritance. W Proc. 17th ACM Symp. on Principles of Programming Languages, strony 109–124, Styczeń 1990.

obserwacje na temat Systemu Typów dla Rachunku Lambda z Obiektami

[1] pokazuje poprawność systemu typów [1]: problem "czy typowalne termy są równe" jest nierozstrzygalny w tym systemie typów

pytania?

Bibliografia [1] Kathleen Fisher, Furio Honsell, John C. Mitchell. A Lambda Calculus of Objects and Method Specialization W Nordic Journal of Computing, 1(1):3–37 1994 [2] Viviana Bono, Michele Bugliesi. Matching [for] the Lambda Calculus of Objects W Theoretical Computer Science, 212(1-2):101–140 1999