d2 (3)

background image

Języki i paradygmaty 

programowania

II.

 Wprowadzenie (c.d.)

background image

2009-02-26

Jarosław Bylina :: Języki i paradygmaty programowania :: Wprowadzenie (c.d.)

II

-2

background image

2009-02-26

Jarosław Bylina :: Języki i paradygmaty programowania :: Wprowadzenie (c.d.)

II

-3

III.

 Programowanie funkcyjne

Program to po prostu złożona
funkcja (w sensie matematycznym)

,

która otrzymawszy dane wejściowe wylicza
pewien wynik

background image

2009-02-26

Jarosław Bylina :: Języki i paradygmaty programowania :: Wprowadzenie (c.d.)

II

-4

III.

 Programowanie funkcyjne

Zasadniczą różnicą w stosunku do poprzednich
paradygmatów jest brak dostępu do stanu
maszyny

Nie ma zmiennych

A co za tym idzie, nie ma
żadnych efektów ubocznych
(rozumianych w sensie tradycyjnym, jako
zmiana wartości zmiennych)

background image

2009-02-26

Jarosław Bylina :: Języki i paradygmaty programowania :: Wprowadzenie (c.d.)

II

-5

III.

 Programowanie funkcyjne

Nie ma tradycyjnie rozumianych pętli
(imperatywnych z natury)

Tradycyjne pętle wymagają bowiem zwykle
(poza przypadkami zdegenerowanymi, jak
pętle nieskończone) zmiennych (lub innego
dostępu do stanu maszyny) do sterowania ich
przebiegiem

background image

2009-02-26

Jarosław Bylina :: Języki i paradygmaty programowania :: Wprowadzenie (c.d.)

II

-6

III.

 Programowanie funkcyjne

Konstruowanie programów to składanie funkcji

Zazwyczaj z istotnym wykorzystaniem
rekurencji (rekursji)
(tam, gdzie w programowaniu imperatywnym
wykorzystujemy pętle)

Charakterystyczne jest również definiowanie
funkcji wyższego rzędu

, czyli takich, dla

których argumentami i których wynikami mogą
być funkcje (a nie tylko „proste” dane jak
liczby lub napisy)

background image

2009-02-26

Jarosław Bylina :: Języki i paradygmaty programowania :: Wprowadzenie (c.d.)

II

-7

III.

 Programowanie funkcyjne

background image

2009-02-26

Jarosław Bylina :: Języki i paradygmaty programowania :: Wprowadzenie (c.d.)

II

-8

background image

2009-02-26

Jarosław Bylina :: Języki i paradygmaty programowania :: Wprowadzenie (c.d.)

II

-9

IV.

 Programowanie logiczne

Na program składa się
zbiór zależności (przesłanek)
oraz
pewne stwierdzenie/pytanie (cel)

background image

2009-02-26

Jarosław Bylina :: Języki i paradygmaty programowania :: Wprowadzenie (c.d.)

II

-10

IV.

 Programowanie logiczne

Wykonanie programu to
próba udowodnienia celu
w oparciu o podane przesłanki

Obliczenia wykonywane są niejako „przy
okazji” dowodzenia celu

Podobnie jak w programowaniu funkcyjnym,
nie wydajemy rozkazów

,

a jedynie opisujemy,
co wiemy i co chcemy uzyskać

background image

2009-02-26

Jarosław Bylina :: Języki i paradygmaty programowania :: Wprowadzenie (c.d.)

II

-11

IV.

 Programowanie logiczne

background image

2009-02-26

Jarosław Bylina :: Języki i paradygmaty programowania :: Wprowadzenie (c.d.)

II

-12

IV.

 Programowanie logiczne

background image

2009-02-26

Jarosław Bylina :: Języki i paradygmaty programowania :: Wprowadzenie (c.d.)

II

-13

IV.

 Programowanie logiczne

background image

2009-02-26

Jarosław Bylina :: Języki i paradygmaty programowania :: Wprowadzenie (c.d.)

II

-14

background image

2009-02-26

Jarosław Bylina :: Języki i paradygmaty programowania :: Wprowadzenie (c.d.)

II

-15

Inne paradygmaty

Programowanie na poziomie wartości

Programowanie na poziomie funkcji

Programowanie skalarne

Programowanie wektorowe/macierzowe

Programowanie zdarzeniowe

Programowanie z własnym wątkiem sterowania

Programowanie aspektowe

Programowanie uogólnione

Programowanie równoległe/współbieżne/rozproszone

background image

2009-02-26

Jarosław Bylina :: Języki i paradygmaty programowania :: Wprowadzenie (c.d.)

II

-16

Języki a paradygmaty

asemblery, „stary” BASIC

p. imperatywne (proceduralne?)

„stary” Pascal, C, Fortran

p. imperatywne, proceduralne, strukturalne

C++, Object Pascal, Ada

p. imperatywne, proceduralne, strukturalne, obiektowe

Smalltalk, C#, Java

p. obiektowe

Lisp, Scheme, Logo, ML, Haskell

p. funkcyjne

Planner, Prolog

p. logiczne

Python

p. proceduralne, strukturalne, obiektowe, funkcyjne

SQL

p. deklaratywne (ani ściśle funkcyjne, ani ściśle logiczne)

background image

2008-03-01

Jarosław Bylina :: Języki i paradygmaty programowania :: Zmienne i typy

II

-17

Opisy języków programowania

składnia (syntaksa, gramatyka, forma)

semantyka (znaczenie, treść)

background image

2008-03-01

Jarosław Bylina :: Języki i paradygmaty programowania :: Zmienne i typy

II

-18

Składnia

Przyjmujemy, że mamy ustalony alfabet Σ

skończony i niepusty zbiór

Jego elementy nazywamy symbolami, znakami
lub literami

Zbiór wszystkich napisów, jakie można
utworzyć ze znaków alfabetu Σ, oznaczamy Σ*

Każdy podzbiór zbioru Σ* to pewien język

Innymi słowy: język to zbiór napisów

złożonych ze znaków danego alfabetu

background image

2008-03-01

Jarosław Bylina :: Języki i paradygmaty programowania :: Zmienne i typy

II

-19

Gramatyki

gramatyki regularne

do opisu leksemów czyli podstawowych
(atomowych) elementów języka, takich jak słowa,
liczby, identyfikatory...

wyrażenia regularne

gramatyki bezkontekstowe

do opisu składni, czyli wyglądu całych programów,
wyrażeń, instrukcji...

notacja BNF, EBNF

background image

2008-03-01

Jarosław Bylina :: Języki i paradygmaty programowania :: Zmienne i typy

II

-20

Semantyka

opis formalny

gramatyki atrybutowane

semantyka operacyjna

semantyka aksjomatyczna

semantyka denotacyjna

opis potoczny (naiwny, po ludzku)

background image

2008-03-01

Jarosław Bylina :: Języki i paradygmaty programowania :: Zmienne i typy

II

-21

Notacja Backusa­Naura – (E)BNF

sposób zapisu gramatyk bezkontekstowych

definicja języka to zbiór reguł

ogólna postać reguły:

pojęcie ::= definicja-pojęcia

pojęcie to pojedynczy symbol nieterminalny
(pomocniczy)

definicja-pojęcia to ciąg symboli
terminalnych ujętych w cudzysłowy (to jest
należących do alfabetu języka) oraz
nieterminalnych

background image

2008-03-01

Jarosław Bylina :: Języki i paradygmaty programowania :: Zmienne i typy

II

-22

Rozszerzenia w EBNF

alternatywne warianty:

pojęcie ::= wariant1 | wariant2 | wariant3

opcjonalne części:

pojęcie ::= część-konieczna [ część-opcjonalna ]

wielokrotne powtórzenie:

pojęcie ::= część-konieczna { część-powtarzalna }

grupowanie:

pojęcie ::= ( coś | coś-innego ) coś-jeszcze-innego

background image

2008-03-01

Jarosław Bylina :: Języki i paradygmaty programowania :: Zmienne i typy

II

-23

Przykłady w EBNF

lista-identyfikatorów ::=

identyfikator { "," identyfikator }

pętla-dopóki ::=

"while" wyrażenie "do" instrukcja

podstawienie ::=

l-wartość ":=" wyrażenie

pętla-dopóki ::=

"while" "(" wyrażenie ")" instrukcja

Pascal

język C

background image

2008-03-01

Jarosław Bylina :: Języki i paradygmaty programowania :: Zmienne i typy

II

-24

Architektura von Neumanna

Na razie wszystkie komputery działają
w oparciu o imperatywną
architekturę von Neumanna

Tak więc każdy program, który chcemy
uruchomić, musi być najpierw przetłumaczony
do ciągu rozkazów w języku wewnętrznym
konkretnej maszyny

Różne paradygmaty mogą wymagać
skomplikowanych metod tłumaczenia

;

różna jest też ich efektywność


Wyszukiwarka

Podobne podstrony:
Chopin Bourrée No 2, Op D2 No 2
Lacznica D2 Kotliska id 262802 Nieznany
SEKCJA D2, Dokumenty MON, Album sprzętu bojowego
D2
D2 g
6metoda PJ-IBD str9-10, h3 = 10a2 b3 c d2 e
dyd inz d2 09
2379 Thyrodur D2
D2, fiz lab
TEST - D2, Materiały WSPOL, Filozofia testy
D2 Kalorycznosc paliw id 130516 Nieznany
D2
d2
D2 Wstep do matematyki
d2 (2)
d2 ciagi iczbowe, Finanse SGGW, Matematyka
GI D2 gr4
Mathcad, d2
d2 prosta w R2

więcej podobnych podstron