Wydział Matematyki i Informatyki Uniwersytetu Łódzkiego
Języki i paradygmaty programowania wykład 1
Dariusz Wardowski
24 lutego 2012
dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 1 / 25
Wykład 1 Wiadomości wstępne
Kontakt
Dariusz Wardowski pokój: A334
e-mail: wardd@math.uni.lodz.pl www: www.math.uni.lodz.pl/˜wardd
dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 2 / 25
Wykład 1 Wiadomości wstępne
Zasady zaliczenia wykładu i laboratorium
Laboratorium
2 projekty Kolokwium
Ocena: 0,5*(średnia z projektów)+ 0,5*(ocena z kolokwium), przy czym obowiązuje zasada:
do 3,25 - dostateczny 3,26 - 3,75 - dostateczny plus 3,76 - 4,25 - dobry
4,26 - 4,75 - dobry plus 4,76 i powyżej - bardzo dobry
Wykład
Brak egzaminu
dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 3 / 25
Wykład 1 Wiadomości wstępne
Zasady zaliczenia wykładu i laboratorium
Laboratorium 2 projekty
Kolokwium
Ocena: 0,5*(średnia z projektów)+ 0,5*(ocena z kolokwium), przy czym obowiązuje zasada:
do 3,25 - dostateczny 3,26 - 3,75 - dostateczny plus 3,76 - 4,25 - dobry
4,26 - 4,75 - dobry plus 4,76 i powyżej - bardzo dobry
Wykład
Brak egzaminu
dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 3 / 25
Wykład 1 Wiadomości wstępne
Zasady zaliczenia wykładu i laboratorium
Laboratorium 2 projekty Kolokwium
Ocena: 0,5*(średnia z projektów)+ 0,5*(ocena z kolokwium), przy czym obowiązuje zasada:
do 3,25 - dostateczny 3,26 - 3,75 - dostateczny plus 3,76 - 4,25 - dobry
4,26 - 4,75 - dobry plus 4,76 i powyżej - bardzo dobry
Wykład
Brak egzaminu
dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 3 / 25
Wykład 1 Wiadomości wstępne
Zasady zaliczenia wykładu i laboratorium
Laboratorium 2 projekty Kolokwium
Ocena: 0,5*(średnia z projektów)+ 0,5*(ocena z kolokwium), przy czym obowiązuje zasada:
do 3,25 - dostateczny 3,26 - 3,75 - dostateczny plus 3,76 - 4,25 - dobry
4,26 - 4,75 - dobry plus 4,76 i powyżej - bardzo dobry
Wykład
Brak egzaminu
dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 3 / 25
Wykład 1 Wiadomości wstępne
Zasady zaliczenia wykładu i laboratorium
Laboratorium 2 projekty Kolokwium
Ocena: 0,5*(średnia z projektów)+ 0,5*(ocena z kolokwium), przy czym obowiązuje zasada:
do 3,25 - dostateczny 3,26 - 3,75 - dostateczny plus 3,76 - 4,25 - dobry
4,26 - 4,75 - dobry plus 4,76 i powyżej - bardzo dobry
Wykład
Brak egzaminu
dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 3 / 25
Wykład 1 Wiadomości wstępne
Zasady zaliczenia wykładu i laboratorium
Laboratorium 2 projekty Kolokwium
Ocena: 0,5*(średnia z projektów)+ 0,5*(ocena z kolokwium), przy czym obowiązuje zasada:
do 3,25 - dostateczny 3,26 - 3,75 - dostateczny plus 3,76 - 4,25 - dobry
4,26 - 4,75 - dobry plus 4,76 i powyżej - bardzo dobry
Wykład
Brak egzaminu
dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 3 / 25
Wykład 1 Wiadomości wstępne
Literatura
1 R. W. Sebesta, Concepts of Programming languages, Addison-Wesley 2004
2 M. L. Scott, Programming Language Pragmatics, Morgan Kaufmann 2009.
3 B. C. Pierce, Types and Programming Languages, The MIT Press 2002.
4 P. Van-Roy, S. Haridi, Concepts, Techniques, and Models of Computer Programming, The MIT Press 2004.
5 L. B. Wilson, R. G. Clark, Comparative Programming Languages, Addison Wesley 2000.
6 M. Ben-Ari, Understanding Programming Languages, John Wiley and Sons 1996.
7 M. Abadi, L. Cardelli, A Theory of Objects, Springer 1996.
8 G. E. Revesz, Lambda-calculus, Combinators and Functional Programming, Cambridge University Press 1998.
9 G. Hutton, Programming in Haskell, Cambridge University Press 2007.
10 R. Bird, Introduction to Functional Programming using Haskell, Prentice Hall PTR 1998.
11 U. Nilsson, J. Maluszynski, Logic, Programming and Prolog, John Wiley and Sons
dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 4 / 25
Wykład 1 Wiadomości wstępne
Literatura
1 An introduction to logic programming through Prolog, PrenticeHall International 1995
2 U. Endriss, An Introduction to Prolog Programming, Lecture Notes, University of Amsterdam 2007
3 W. F. Clocksin, C. S. Mellish, Prolog. Programowanie, Hellion 2003.
4 A. Csenki, Prolog Techniques, Attila Csenki and Ventus Publishing 2009
5 http://wazniak.mimuw.edu.pl/
dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 5 / 25
Wykład 1 Paradygmaty i języki programowania
Paradygmat - defincija
Paradygmat
Paradygmat to zbiór pojęć i teorii tworzących podstawy danej nauki (Thomas Kuhn).
Paradygmat to przyjęty sposób widzenia rzeczywistości w danej dziedzinie, doktrynie itp.
Zespół form fleksyjnych (deklinacyjnych lub koniugacyjnych), właściwy danemu typowi wyrazów; wzorzec, model deklinacyjny lub koniugacyjny (Słownik języka polskiego PWN)
Paradygmat programowania
Wzorzec programowania przedkładany w danym okresie rozwoju informatyki ponad inne lub szczególnie ceniony w pewnych okolicznościach lub zastosowaniach. Zbiór mechanizmów, jakich programista używa, pisząc program, i o to, jak ów program jest następnie wykonywany przez komputer. To ogół oczekiwań programisty wobec języka programowania i komputera, na którym będzie działał program.
dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 6 / 25
Wykład 1 Paradygmaty i języki programowania
Paradygmat - defincija
Paradygmat
Paradygmat to zbiór pojęć i teorii tworzących podstawy danej nauki (Thomas Kuhn).
Paradygmat to przyjęty sposób widzenia rzeczywistości w danej dziedzinie, doktrynie itp.
Zespół form fleksyjnych (deklinacyjnych lub koniugacyjnych), właściwy danemu typowi wyrazów; wzorzec, model deklinacyjny lub koniugacyjny (Słownik języka polskiego PWN)
Paradygmat programowania
Wzorzec programowania przedkładany w danym okresie rozwoju informatyki ponad inne lub szczególnie ceniony w pewnych okolicznościach lub zastosowaniach. Zbiór mechanizmów, jakich programista używa, pisząc program, i o to, jak ów program jest następnie wykonywany przez komputer. To ogół oczekiwań programisty wobec języka programowania i komputera, na którym będzie działał program.
dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 6 / 25
Wykład 1 Paradygmaty i języki programowania
Paradygmat - defincija
Paradygmat
Paradygmat to zbiór pojęć i teorii tworzących podstawy danej nauki (Thomas Kuhn).
Paradygmat to przyjęty sposób widzenia rzeczywistości w danej dziedzinie, doktrynie itp.
Zespół form fleksyjnych (deklinacyjnych lub koniugacyjnych), właściwy danemu typowi wyrazów; wzorzec, model deklinacyjny lub koniugacyjny (Słownik języka polskiego PWN)
Paradygmat programowania
Wzorzec programowania przedkładany w danym okresie rozwoju informatyki ponad inne lub szczególnie ceniony w pewnych okolicznościach lub zastosowaniach.
Zbiór mechanizmów, jakich programista używa, pisząc program, i o to, jak ów program jest następnie wykonywany przez komputer. To ogół oczekiwań programisty wobec języka programowania i komputera, na którym będzie działał program.
dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 6 / 25
Wykład 1 Paradygmaty i języki programowania
Paradygmat - defincija
Paradygmat
Paradygmat to zbiór pojęć i teorii tworzących podstawy danej nauki (Thomas Kuhn).
Paradygmat to przyjęty sposób widzenia rzeczywistości w danej dziedzinie, doktrynie itp.
Zespół form fleksyjnych (deklinacyjnych lub koniugacyjnych), właściwy danemu typowi wyrazów; wzorzec, model deklinacyjny lub koniugacyjny (Słownik języka polskiego PWN)
Paradygmat programowania
Wzorzec programowania przedkładany w danym okresie rozwoju informatyki ponad inne lub szczególnie ceniony w pewnych okolicznościach lub zastosowaniach.
Zbiór mechanizmów, jakich programista używa, pisząc program, i o to, jak ów program jest następnie wykonywany przez komputer. To ogół oczekiwań programisty wobec języka programowania i komputera, na którym będzie działał program.
dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 6 / 25
Wykład 1 Paradygmaty i języki programowania
Paradygmaty programowania - przegląd
1 Programowanie proceduralne
2 Programowanie strukturalne
3 Programowanie funkcyjne
4 Programowanie imperatywne
5 Programowanie obiektowe
6 Programowanie uogólnione
7 Programowanie zdarzeniowe
8 Programowanie logiczne
9 Programowanie aspektowe
10 Programowanie deklaratywne
11 Programowanie agentowe
12 Programowanie modularne
dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 7 / 25
Wykład 1 Paradygmaty i języki programowania
Paradygmaty programowania - przegląd
1 Programowanie proceduralne
2 Programowanie strukturalne
3 Programowanie funkcyjne
4 Programowanie imperatywne
5 Programowanie obiektowe
6 Programowanie uogólnione
7 Programowanie zdarzeniowe
8 Programowanie logiczne
9 Programowanie aspektowe
10 Programowanie deklaratywne
11 Programowanie agentowe
12 Programowanie modularne
dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 7 / 25
Wykład 1 Paradygmaty i języki programowania
Paradygmaty programowania - przegląd
1 Programowanie proceduralne
2 Programowanie strukturalne
3 Programowanie funkcyjne
4 Programowanie imperatywne
5 Programowanie obiektowe
6 Programowanie uogólnione
7 Programowanie zdarzeniowe
8 Programowanie logiczne
9 Programowanie aspektowe
10 Programowanie deklaratywne
11 Programowanie agentowe
12 Programowanie modularne
dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 7 / 25
Wykład 1 Paradygmaty i języki programowania
Paradygmaty programowania - przegląd
1 Programowanie proceduralne
2 Programowanie strukturalne
3 Programowanie funkcyjne
4 Programowanie imperatywne
5 Programowanie obiektowe
6 Programowanie uogólnione
7 Programowanie zdarzeniowe
8 Programowanie logiczne
9 Programowanie aspektowe
10 Programowanie deklaratywne
11 Programowanie agentowe
12 Programowanie modularne
dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 7 / 25
Wykład 1 Paradygmaty i języki programowania
Paradygmaty programowania - przegląd
1 Programowanie proceduralne
2 Programowanie strukturalne
3 Programowanie funkcyjne
4 Programowanie imperatywne
5 Programowanie obiektowe
6 Programowanie uogólnione
7 Programowanie zdarzeniowe
8 Programowanie logiczne
9 Programowanie aspektowe
10 Programowanie deklaratywne
11 Programowanie agentowe
12 Programowanie modularne
dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 7 / 25
Wykład 1 Paradygmaty i języki programowania
Paradygmaty programowania - przegląd
1 Programowanie proceduralne
2 Programowanie strukturalne
3 Programowanie funkcyjne
4 Programowanie imperatywne
5 Programowanie obiektowe
6 Programowanie uogólnione
7 Programowanie zdarzeniowe
8 Programowanie logiczne
9 Programowanie aspektowe
10 Programowanie deklaratywne
11 Programowanie agentowe
12 Programowanie modularne
dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 7 / 25
Wykład 1 Paradygmaty i języki programowania
Paradygmaty programowania - przegląd
1 Programowanie proceduralne
2 Programowanie strukturalne
3 Programowanie funkcyjne
4 Programowanie imperatywne
5 Programowanie obiektowe
6 Programowanie uogólnione
7 Programowanie zdarzeniowe
8 Programowanie logiczne
9 Programowanie aspektowe
10 Programowanie deklaratywne
11 Programowanie agentowe
12 Programowanie modularne
dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 7 / 25
Wykład 1 Paradygmaty i języki programowania
Paradygmaty programowania - przegląd
1 Programowanie proceduralne
2 Programowanie strukturalne
3 Programowanie funkcyjne
4 Programowanie imperatywne
5 Programowanie obiektowe
6 Programowanie uogólnione
7 Programowanie zdarzeniowe
8 Programowanie logiczne
9 Programowanie aspektowe
10 Programowanie deklaratywne
11 Programowanie agentowe
12 Programowanie modularne
dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 7 / 25
Wykład 1 Paradygmaty i języki programowania
Paradygmaty programowania - przegląd
1 Programowanie proceduralne
2 Programowanie strukturalne
3 Programowanie funkcyjne
4 Programowanie imperatywne
5 Programowanie obiektowe
6 Programowanie uogólnione
7 Programowanie zdarzeniowe
8 Programowanie logiczne
9 Programowanie aspektowe
10 Programowanie deklaratywne
11 Programowanie agentowe
12 Programowanie modularne
dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 7 / 25
Wykład 1 Paradygmaty i języki programowania
Paradygmaty programowania - przegląd
1 Programowanie proceduralne
2 Programowanie strukturalne
3 Programowanie funkcyjne
4 Programowanie imperatywne
5 Programowanie obiektowe
6 Programowanie uogólnione
7 Programowanie zdarzeniowe
8 Programowanie logiczne
9 Programowanie aspektowe
10 Programowanie deklaratywne
11 Programowanie agentowe
12 Programowanie modularne
dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 7 / 25
Wykład 1 Paradygmaty i języki programowania
Paradygmaty programowania - przegląd
1 Programowanie proceduralne
2 Programowanie strukturalne
3 Programowanie funkcyjne
4 Programowanie imperatywne
5 Programowanie obiektowe
6 Programowanie uogólnione
7 Programowanie zdarzeniowe
8 Programowanie logiczne
9 Programowanie aspektowe
10 Programowanie deklaratywne
11 Programowanie agentowe
12 Programowanie modularne
dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 7 / 25
Wykład 1 Paradygmaty i języki programowania
Paradygmaty programowania - przegląd
1 Programowanie proceduralne
2 Programowanie strukturalne
3 Programowanie funkcyjne
4 Programowanie imperatywne
5 Programowanie obiektowe
6 Programowanie uogólnione
7 Programowanie zdarzeniowe
8 Programowanie logiczne
9 Programowanie aspektowe
10 Programowanie deklaratywne
11 Programowanie agentowe
12 Programowanie modularne
dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 7 / 25
Wykład 1 Paradygmaty i języki programowania
Paradygmaty programowania - przegląd
1 Programowanie proceduralne
2 Programowanie strukturalne
3 Programowanie funkcyjne
4 Programowanie imperatywne
5 Programowanie obiektowe
6 Programowanie uogólnione
7 Programowanie zdarzeniowe
8 Programowanie logiczne
9 Programowanie aspektowe
10 Programowanie deklaratywne
11 Programowanie agentowe
12 Programowanie modularne
dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 7 / 25
Wykład 1 Paradygmaty i języki programowania
Programowanie imperatywne
Programowanie imperatywne to najbardziej pierwotny sposób programowania, w którym program postrzegany jest jako ciąg poleceń dla komputera
1 obliczenia rozumiemy tu jako sekwencję poleceń zmieniających krok po kroku stan maszyny, aż do uzyskania oczekiwanego wyniku.
2 Stan maszyny należy z kolei rozumieć jako zawartość całej pamięci oraz rejestrów i znaczników procesora.
3 Ten sposób patrzenia na programy związany jest ściśle z budową sprzętu komputerowego o architekturze von Neumanna, w którym poszczególne instrukcje (w kodzie maszynowym) to właśnie polecenia zmieniające ów globalny stan.
4 Języki wysokiego poziomu takie jak Fortran, Algol, Pascal, Ada lub C posługują się pewnymi abstrakcjami, ale wciąż odpowiadają paradygmatowi programowania imperatywnego.
5 Przykładowo, instrukcje podstawienia działają na danych pobranych z pamięci i umieszczają wynik w tejże pamięci, zaś abstrakcją komórek pamięci są zmienne.
dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 8 / 25
Wykład 1 Paradygmaty i języki programowania
Programowanie imperatywne
Programowanie imperatywne to najbardziej pierwotny sposób programowania, w którym program postrzegany jest jako ciąg poleceń dla komputera
1 obliczenia rozumiemy tu jako sekwencję poleceń zmieniających krok po kroku stan maszyny, aż do uzyskania oczekiwanego wyniku.
2 Stan maszyny należy z kolei rozumieć jako zawartość całej pamięci oraz rejestrów i znaczników procesora.
3 Ten sposób patrzenia na programy związany jest ściśle z budową sprzętu komputerowego o architekturze von Neumanna, w którym poszczególne instrukcje (w kodzie maszynowym) to właśnie polecenia zmieniające ów globalny stan.
4 Języki wysokiego poziomu takie jak Fortran, Algol, Pascal, Ada lub C posługują się pewnymi abstrakcjami, ale wciąż odpowiadają paradygmatowi programowania imperatywnego.
5 Przykładowo, instrukcje podstawienia działają na danych pobranych z pamięci i umieszczają wynik w tejże pamięci, zaś abstrakcją komórek pamięci są zmienne.
dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 8 / 25
Wykład 1 Paradygmaty i języki programowania
Programowanie imperatywne
Programowanie imperatywne to najbardziej pierwotny sposób programowania, w którym program postrzegany jest jako ciąg poleceń dla komputera
1 obliczenia rozumiemy tu jako sekwencję poleceń zmieniających krok po kroku stan maszyny, aż do uzyskania oczekiwanego wyniku.
2 Stan maszyny należy z kolei rozumieć jako zawartość całej pamięci oraz rejestrów i znaczników procesora.
3 Ten sposób patrzenia na programy związany jest ściśle z budową sprzętu komputerowego o architekturze von Neumanna, w którym poszczególne instrukcje (w kodzie maszynowym) to właśnie polecenia zmieniające ów globalny stan.
4 Języki wysokiego poziomu takie jak Fortran, Algol, Pascal, Ada lub C posługują się pewnymi abstrakcjami, ale wciąż odpowiadają paradygmatowi programowania imperatywnego.
5 Przykładowo, instrukcje podstawienia działają na danych pobranych z pamięci i umieszczają wynik w tejże pamięci, zaś abstrakcją komórek pamięci są zmienne.
dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 8 / 25
Wykład 1 Paradygmaty i języki programowania
Programowanie imperatywne
Programowanie imperatywne to najbardziej pierwotny sposób programowania, w którym program postrzegany jest jako ciąg poleceń dla komputera
1 obliczenia rozumiemy tu jako sekwencję poleceń zmieniających krok po kroku stan maszyny, aż do uzyskania oczekiwanego wyniku.
2 Stan maszyny należy z kolei rozumieć jako zawartość całej pamięci oraz rejestrów i znaczników procesora.
3 Ten sposób patrzenia na programy związany jest ściśle z budową sprzętu komputerowego o architekturze von Neumanna, w którym poszczególne instrukcje (w kodzie maszynowym) to właśnie polecenia zmieniające ów globalny stan.
4 Języki wysokiego poziomu takie jak Fortran, Algol, Pascal, Ada lub C posługują się pewnymi abstrakcjami, ale wciąż odpowiadają paradygmatowi programowania imperatywnego.
5 Przykładowo, instrukcje podstawienia działają na danych pobranych z pamięci i umieszczają wynik w tejże pamięci, zaś abstrakcją komórek pamięci są zmienne.
dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 8 / 25
Wykład 1 Paradygmaty i języki programowania
Programowanie imperatywne
Programowanie imperatywne to najbardziej pierwotny sposób programowania, w którym program postrzegany jest jako ciąg poleceń dla komputera
1 obliczenia rozumiemy tu jako sekwencję poleceń zmieniających krok po kroku stan maszyny, aż do uzyskania oczekiwanego wyniku.
2 Stan maszyny należy z kolei rozumieć jako zawartość całej pamięci oraz rejestrów i znaczników procesora.
3 Ten sposób patrzenia na programy związany jest ściśle z budową sprzętu komputerowego o architekturze von Neumanna, w którym poszczególne instrukcje (w kodzie maszynowym) to właśnie polecenia zmieniające ów globalny stan.
4 Języki wysokiego poziomu takie jak Fortran, Algol, Pascal, Ada lub C posługują się pewnymi abstrakcjami, ale wciąż odpowiadają paradygmatowi programowania imperatywnego.
5 Przykładowo, instrukcje podstawienia działają na danych pobranych z pamięci i umieszczają wynik w tejże pamięci, zaś abstrakcją komórek pamięci są zmienne.
dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 8 / 25
Wykład 1 Paradygmaty i języki programowania
Programowanie imperatywne - przykład
#include <iostream>
int main() {
std::cout << "Prosty program";
return 0;
}
dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 9 / 25
Wykład 1 Paradygmaty i języki programowania
Programowanie obiektowe
W programowaniu obiektowym program to zbiór porozumiewających się ze sobą obiektów, czyli jednostek zawierających pewne dane i umiejących wykonywać na nich pewne operacje. Główne cechy to:
1 Powiązanie danych z operacjami na nich w jedną w całość, stanowiącą odrębną jednostkę obiekt.
2 Mechanizm dziedziczenia, czyli możliwość definiowania nowych, bardziej złożonych obiektów, na bazie obiektów już istniejących.
3 Enkapsulacja danych - ukrywanie niektórych elementów obiektów danej klasy. Zwolennicy programowania obiektowego uważają, że ten paradygmat dobrze odzwierciedla sposób, w jaki ludzie myślą o świecie. Programowanie
obiektowe zdobyło ogromną popularność i można go uznać za paradygmat obecnie dominujący.
dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 10 / 25
Wykład 1 Paradygmaty i języki programowania
Programowanie obiektowe
W programowaniu obiektowym program to zbiór porozumiewających się ze sobą obiektów, czyli jednostek zawierających pewne dane i umiejących wykonywać na nich pewne operacje. Główne cechy to:
1 Powiązanie danych z operacjami na nich w jedną w całość, stanowiącą odrębną jednostkę obiekt.
2 Mechanizm dziedziczenia, czyli możliwość definiowania nowych, bardziej złożonych obiektów, na bazie obiektów już istniejących.
3 Enkapsulacja danych - ukrywanie niektórych elementów obiektów danej klasy. Zwolennicy programowania obiektowego uważają, że ten paradygmat dobrze odzwierciedla sposób, w jaki ludzie myślą o świecie. Programowanie
obiektowe zdobyło ogromną popularność i można go uznać za paradygmat obecnie dominujący.
dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 10 / 25
Wykład 1 Paradygmaty i języki programowania
Programowanie obiektowe
W programowaniu obiektowym program to zbiór porozumiewających się ze sobą obiektów, czyli jednostek zawierających pewne dane i umiejących wykonywać na nich pewne operacje. Główne cechy to:
1 Powiązanie danych z operacjami na nich w jedną w całość, stanowiącą odrębną jednostkę obiekt.
2 Mechanizm dziedziczenia, czyli możliwość definiowania nowych, bardziej złożonych obiektów, na bazie obiektów już istniejących.
3 Enkapsulacja danych - ukrywanie niektórych elementów obiektów danej klasy.
Zwolennicy programowania obiektowego uważają, że ten paradygmat dobrze odzwierciedla sposób, w jaki ludzie myślą o świecie. Programowanie
obiektowe zdobyło ogromną popularność i można go uznać za paradygmat obecnie dominujący.
dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 10 / 25
Wykład 1 Paradygmaty i języki programowania
Programowanie obiektowe
W programowaniu obiektowym program to zbiór porozumiewających się ze sobą obiektów, czyli jednostek zawierających pewne dane i umiejących wykonywać na nich pewne operacje. Główne cechy to:
1 Powiązanie danych z operacjami na nich w jedną w całość, stanowiącą odrębną jednostkę obiekt.
2 Mechanizm dziedziczenia, czyli możliwość definiowania nowych, bardziej złożonych obiektów, na bazie obiektów już istniejących.
3 Enkapsulacja danych - ukrywanie niektórych elementów obiektów danej klasy.
Zwolennicy programowania obiektowego uważają, że ten paradygmat dobrze odzwierciedla sposób, w jaki ludzie myślą o świecie. Programowanie
obiektowe zdobyło ogromną popularność i można go uznać za paradygmat obecnie dominujący.
dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 10 / 25
Wykład 1 Paradygmaty i języki programowania
Programowanie obiektowe - przykład
class Osoba {
private String imie;
private String nazwisko;
private int wiek;
}
public class Main {
public static void main(String[] args) {
Osoba o = new Osoba;
System.out.println("Obiekt klasy Osoba");
} }
dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 11 / 25
Wykład 1 Paradygmaty i języki programowania
Programowanie funkcyjne
Tutaj program to po prostu złożona funkcja (w sensie matematycznym), która otrzymawszy dane wejściowe wylicza pewien wynik.
1 Zasadniczą różnicą w stosunku do poprzednich paradygmatów jest brak stanu maszyny: nie ma zmiennych, a co za tym idzie nie ma żadnych efektów ubocznych.
2 Nie ma pętli (te wymagają np. zmiennych do sterowania ich przebiegiem).
3 Konstruowanie programów to składanie funkcji, zazwyczaj z istotnym wykorzystaniem rekurencji. 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).
dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 12 / 25
Wykład 1 Paradygmaty i języki programowania
Programowanie funkcyjne
Tutaj program to po prostu złożona funkcja (w sensie matematycznym), która otrzymawszy dane wejściowe wylicza pewien wynik.
1 Zasadniczą różnicą w stosunku do poprzednich paradygmatów jest brak stanu maszyny: nie ma zmiennych, a co za tym idzie nie ma żadnych efektów ubocznych.
2 Nie ma pętli (te wymagają np. zmiennych do sterowania ich przebiegiem).
3 Konstruowanie programów to składanie funkcji, zazwyczaj z istotnym wykorzystaniem rekurencji. 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).
dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 12 / 25
Wykład 1 Paradygmaty i języki programowania
Programowanie funkcyjne
Tutaj program to po prostu złożona funkcja (w sensie matematycznym), która otrzymawszy dane wejściowe wylicza pewien wynik.
1 Zasadniczą różnicą w stosunku do poprzednich paradygmatów jest brak stanu maszyny: nie ma zmiennych, a co za tym idzie nie ma żadnych efektów ubocznych.
2 Nie ma pętli (te wymagają np. zmiennych do sterowania ich przebiegiem).
3 Konstruowanie programów to składanie funkcji, zazwyczaj z istotnym wykorzystaniem rekurencji. 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).
dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 12 / 25
Wykład 1 Paradygmaty i języki programowania
Programowanie funkcyjne
Tutaj program to po prostu złożona funkcja (w sensie matematycznym), która otrzymawszy dane wejściowe wylicza pewien wynik.
1 Zasadniczą różnicą w stosunku do poprzednich paradygmatów jest brak stanu maszyny: nie ma zmiennych, a co za tym idzie nie ma żadnych efektów ubocznych.
2 Nie ma pętli (te wymagają np. zmiennych do sterowania ich przebiegiem).
3 Konstruowanie programów to składanie funkcji, zazwyczaj z istotnym wykorzystaniem rekurencji. 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).
dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 12 / 25
Wykład 1 Paradygmaty i języki programowania
Programowanie funkcyjne - przykład
kwadrat x = x*x kwadrat 5;
dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 13 / 25
Wykład 1 Paradygmaty i języki programowania
Programowanie logiczne
Na program składa się zbiór zależności (przesłanki) i pewne stwierdzenie (cel).
1 Wykonanie programu to próba udowodnienia celu w oparciu o podane przesłanki.
2 Obliczenia wykonywane podczas dowodzenia celu.
3 Podobnie jak w programowaniu funkcyjnym, nie ”wydajemy rozkazów”, a jedynie opisujemy, co wiemy i co chcemy uzyskać.
dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 14 / 25
Wykład 1 Paradygmaty i języki programowania
Programowanie logiczne
Na program składa się zbiór zależności (przesłanki) i pewne stwierdzenie (cel).
1 Wykonanie programu to próba udowodnienia celu w oparciu o podane przesłanki.
2 Obliczenia wykonywane podczas dowodzenia celu.
3 Podobnie jak w programowaniu funkcyjnym, nie ”wydajemy rozkazów”, a jedynie opisujemy, co wiemy i co chcemy uzyskać.
dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 14 / 25
Wykład 1 Paradygmaty i języki programowania
Programowanie logiczne
Na program składa się zbiór zależności (przesłanki) i pewne stwierdzenie (cel).
1 Wykonanie programu to próba udowodnienia celu w oparciu o podane przesłanki.
2 Obliczenia wykonywane podczas dowodzenia celu.
3 Podobnie jak w programowaniu funkcyjnym, nie ”wydajemy rozkazów”, a jedynie opisujemy, co wiemy i co chcemy uzyskać.
dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 14 / 25
Wykład 1 Paradygmaty i języki programowania
Programowanie logiczne
Na program składa się zbiór zależności (przesłanki) i pewne stwierdzenie (cel).
1 Wykonanie programu to próba udowodnienia celu w oparciu o podane przesłanki.
2 Obliczenia wykonywane podczas dowodzenia celu.
3 Podobnie jak w programowaniu funkcyjnym, nie ”wydajemy rozkazów”, a jedynie opisujemy, co wiemy i co chcemy uzyskać.
dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 14 / 25
Wykład 1 Paradygmaty i języki programowania
Programowanie logiczne - przykład
lubi(jan,ania).
lubi(jan,basia).
?- lubi(jan,X).
dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 15 / 25
Wykład 1 Paradygmaty i języki programowania
Języki programowania a paradygmat
Konkretny język programowania ucieleśnia jeden lub więcej paradygmatów.
1 programowanie imperatywne: Fortran, Algol, Pascal, C, Ada.
2 programowanie obiektowe: Java, C#, Smalltalk
3 programowanie imperatywne i obiektowe: C++
4 programowanie logiczne: Prolog
5 programowanie funkcyjne: IPL (Information Processing Language), Lisp, Scheme, ML, Miranda, Haskell
dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 16 / 25
Wykład 1 Paradygmaty i języki programowania
Języki programowania a paradygmat
Konkretny język programowania ucieleśnia jeden lub więcej paradygmatów.
1 programowanie imperatywne:
Fortran, Algol, Pascal, C, Ada.
2 programowanie obiektowe: Java, C#, Smalltalk
3 programowanie imperatywne i obiektowe: C++
4 programowanie logiczne: Prolog
5 programowanie funkcyjne: IPL (Information Processing Language), Lisp, Scheme, ML, Miranda, Haskell
dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 16 / 25
Wykład 1 Paradygmaty i języki programowania
Języki programowania a paradygmat
Konkretny język programowania ucieleśnia jeden lub więcej paradygmatów.
1 programowanie imperatywne: Fortran, Algol, Pascal, C, Ada.
2 programowanie obiektowe: Java, C#, Smalltalk
3 programowanie imperatywne i obiektowe: C++
4 programowanie logiczne: Prolog
5 programowanie funkcyjne: IPL (Information Processing Language), Lisp, Scheme, ML, Miranda, Haskell
dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 16 / 25
Wykład 1 Paradygmaty i języki programowania
Języki programowania a paradygmat
Konkretny język programowania ucieleśnia jeden lub więcej paradygmatów.
1 programowanie imperatywne: Fortran, Algol, Pascal, C, Ada.
2 programowanie obiektowe:
Java, C#, Smalltalk
3 programowanie imperatywne i obiektowe: C++
4 programowanie logiczne: Prolog
5 programowanie funkcyjne: IPL (Information Processing Language), Lisp, Scheme, ML, Miranda, Haskell
dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 16 / 25
Wykład 1 Paradygmaty i języki programowania
Języki programowania a paradygmat
Konkretny język programowania ucieleśnia jeden lub więcej paradygmatów.
1 programowanie imperatywne: Fortran, Algol, Pascal, C, Ada.
2 programowanie obiektowe: Java, C#, Smalltalk
3 programowanie imperatywne i obiektowe: C++
4 programowanie logiczne: Prolog
5 programowanie funkcyjne: IPL (Information Processing Language), Lisp, Scheme, ML, Miranda, Haskell
dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 16 / 25
Wykład 1 Paradygmaty i języki programowania
Języki programowania a paradygmat
Konkretny język programowania ucieleśnia jeden lub więcej paradygmatów.
1 programowanie imperatywne: Fortran, Algol, Pascal, C, Ada.
2 programowanie obiektowe: Java, C#, Smalltalk
3 programowanie imperatywne i obiektowe:
C++
4 programowanie logiczne: Prolog
5 programowanie funkcyjne: IPL (Information Processing Language), Lisp, Scheme, ML, Miranda, Haskell
dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 16 / 25
Wykład 1 Paradygmaty i języki programowania
Języki programowania a paradygmat
Konkretny język programowania ucieleśnia jeden lub więcej paradygmatów.
1 programowanie imperatywne: Fortran, Algol, Pascal, C, Ada.
2 programowanie obiektowe: Java, C#, Smalltalk
3 programowanie imperatywne i obiektowe: C++
4 programowanie logiczne:
Prolog
5 programowanie funkcyjne: IPL (Information Processing Language), Lisp, Scheme, ML, Miranda, Haskell
dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 16 / 25
Wykład 1 Paradygmaty i języki programowania
Języki programowania a paradygmat
Konkretny język programowania ucieleśnia jeden lub więcej paradygmatów.
1 programowanie imperatywne: Fortran, Algol, Pascal, C, Ada.
2 programowanie obiektowe: Java, C#, Smalltalk
3 programowanie imperatywne i obiektowe: C++
4 programowanie logiczne: Prolog
5 programowanie funkcyjne: IPL (Information Processing Language), Lisp, Scheme, ML, Miranda, Haskell
dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 16 / 25
Wykład 1 Paradygmaty i języki programowania
Języki programowania a paradygmat
Konkretny język programowania ucieleśnia jeden lub więcej paradygmatów.
1 programowanie imperatywne: Fortran, Algol, Pascal, C, Ada.
2 programowanie obiektowe: Java, C#, Smalltalk
3 programowanie imperatywne i obiektowe: C++
4 programowanie logiczne: Prolog
5 programowanie funkcyjne:
IPL (Information Processing Language), Lisp, Scheme, ML, Miranda, Haskell
dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 16 / 25
Wykład 1 Paradygmaty i języki programowania
Języki programowania a paradygmat
Konkretny język programowania ucieleśnia jeden lub więcej paradygmatów.
1 programowanie imperatywne: Fortran, Algol, Pascal, C, Ada.
2 programowanie obiektowe: Java, C#, Smalltalk
3 programowanie imperatywne i obiektowe: C++
4 programowanie logiczne: Prolog
5 programowanie funkcyjne: IPL (Information Processing Language), Lisp, Scheme, ML, Miranda, Haskell
dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 16 / 25
Wykład 1 Paradygmaty i języki programowania
Składnia i semantyka
Składnia
To zbiór reguł, mówiących jak wygląda poprawny program w danym języku, czyli np.:
1 Jak tworzy się polecenia i wyrażenia.
2 Jaką postać mają struktury sterowania (if, while, for itp.).
3 Jak zapisuje się deklaracje. Semantyka
Semantyka języka programowania definiuje precyzyjnie znaczenie poszczególnych symboli oraz ich funkcję w programie. Semantykę najczęściej definiuje się słownie, ponieważ większość z jej zagadnień jest trudna lub wręcz niemożliwa do ujęcia w jakikolwiek formalizm. Semantyka to znaczenie wspomnianych wyżej form, czyli
”co one robią”.
dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 17 / 25
Wykład 1 Paradygmaty i języki programowania
Składnia i semantyka
Składnia
To zbiór reguł, mówiących jak wygląda poprawny program w danym języku, czyli np.:
1 Jak tworzy się polecenia i wyrażenia.
2 Jaką postać mają struktury sterowania (if, while, for itp.).
3 Jak zapisuje się deklaracje. Semantyka
Semantyka języka programowania definiuje precyzyjnie znaczenie poszczególnych symboli oraz ich funkcję w programie. Semantykę najczęściej definiuje się słownie, ponieważ większość z jej zagadnień jest trudna lub wręcz niemożliwa do ujęcia w jakikolwiek formalizm. Semantyka to znaczenie wspomnianych wyżej form, czyli
”co one robią”.
dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 17 / 25
Wykład 1 Paradygmaty i języki programowania
Składnia i semantyka
Składnia
To zbiór reguł, mówiących jak wygląda poprawny program w danym języku, czyli np.:
1 Jak tworzy się polecenia i wyrażenia.
2 Jaką postać mają struktury sterowania (if, while, for itp.).
3 Jak zapisuje się deklaracje.
Semantyka
Semantyka języka programowania definiuje precyzyjnie znaczenie poszczególnych symboli oraz ich funkcję w programie. Semantykę najczęściej definiuje się słownie, ponieważ większość z jej zagadnień jest trudna lub wręcz niemożliwa do ujęcia w jakikolwiek formalizm. Semantyka to znaczenie wspomnianych wyżej form, czyli
”co one robią”.
dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 17 / 25
Wykład 1 Paradygmaty i języki programowania
Składnia i semantyka
Składnia
To zbiór reguł, mówiących jak wygląda poprawny program w danym języku, czyli np.:
1 Jak tworzy się polecenia i wyrażenia.
2 Jaką postać mają struktury sterowania (if, while, for itp.).
3 Jak zapisuje się deklaracje.
Semantyka
Semantyka języka programowania definiuje precyzyjnie znaczenie poszczególnych symboli oraz ich funkcję w programie. Semantykę najczęściej definiuje się słownie, ponieważ większość z jej zagadnień jest trudna lub wręcz niemożliwa do ujęcia w jakikolwiek formalizm. Semantyka to znaczenie wspomnianych wyżej form, czyli
”co one robią”.
dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 17 / 25
Wykład 1 Paradygmaty i języki programowania
Składnia i semantyka
Składnia
To zbiór reguł, mówiących jak wygląda poprawny program w danym języku, czyli np.:
1 Jak tworzy się polecenia i wyrażenia.
2 Jaką postać mają struktury sterowania (if, while, for itp.).
3 Jak zapisuje się deklaracje.
Semantyka
Semantyka języka programowania definiuje precyzyjnie znaczenie poszczególnych symboli oraz ich funkcję w programie. Semantykę najczęściej definiuje się słownie, ponieważ większość z jej zagadnień jest trudna lub wręcz niemożliwa do ujęcia w jakikolwiek formalizm. Semantyka to znaczenie wspomnianych wyżej form, czyli
”co one robią”.
dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 17 / 25
Wykład 1 Paradygmaty i języki programowania
Typy danych
Typ danych
Jest to opis rodzaju, struktury i zakresu wartości, jakie może przyjmować dany literał, zmienna, stała, argument, wynik funkcji lub wartość. Każdy język operuje na jakimś zestawie danych, dlatego niezbędne jest podzielenie danych na
odpowiednie typy, zdefiniowanie ich właściwości oraz operacji, jakie można na nich realizować. Większość języków posiada typy danych do reprezentowania:
1 Liczb całkowitych w różnych zakresach.
2 Liczb zmiennoprzecinkowych (reprezentacje liczb rzeczywistych o różnym stopniu dokładności)
3 Ciągów tekstowych.
Od strony sprzętowej wszystkie te informacje wyrażane są za pomocą sekwencji zer i jedynek. Język programowania nakłada jedynie odpowiednie ograniczenia i zasady ich przetwarzania. Zjawisko konwersji wartości jednego typu na inną nazywa się rzutowaniem.
dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 18 / 25
Wykład 1 Paradygmaty i języki programowania
Co to jest język?
Język to zbiór skończonych ciągów utworzonych ze znaków z ustalonego alfabetu.
NiechP będzie skończonym i niepustym zbiorem zwanym alfabetem; jego elementy nazywamy symbolami, znakami lub literami. Zbiór wszystkich napisów, jakie można utworzyć z symboli alfabetuP, oznaczamy przez P∗. Każdy podzbiór zbioruP∗
to pewien język.
dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 19 / 25
Wykład 1 Paradygmaty i języki programowania
Co to jest język?
Język to zbiór skończonych ciągów utworzonych ze znaków z ustalonego alfabetu.
NiechP będzie skończonym i niepustym zbiorem zwanym alfabetem; jego elementy nazywamy symbolami, znakami lub literami. Zbiór wszystkich napisów, jakie można utworzyć z symboli alfabetuP, oznaczamy przez P∗. Każdy podzbiór zbioruP∗
to pewien język.
dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 19 / 25
Wykład 1 Paradygmaty i języki programowania
Język programowania
Język programowania to zbiór zasad określających, kiedy ciąg symboli tworzy program (czyli ciąg symboli opisujący obliczenia) oraz jakie obliczenia opisuje.
Podobnie jak języki naturalne, język programowania składa się ze zbiorów reguł syntaktycznych oraz semantycznych, które opisują, jak należy budować poprawne wyrażenia oraz jak komputer ma je rozumieć. Wiele języków programowania posiada pisemną specyfikację swojej składni oraz semantyki, lecz inne zdefiniowane są jedynie przez oficjalne implementacje.
dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 20 / 25
Wykład 1 Paradygmaty i języki programowania
Opis języków programowania
1 Składnię języków opisujemy za pomocą notacji BNF, która odpowiada gramatykom bezkontekstowym.
2 Semantykę konstrukcji opisujemy w sposób w sposób nieformalny.
dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 21 / 25
Wykład 1 Paradygmaty i języki programowania
Opis języków programowania
1 Składnię języków opisujemy za pomocą notacji BNF, która odpowiada gramatykom bezkontekstowym.
2 Semantykę konstrukcji opisujemy w sposób w sposób nieformalny.
dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 21 / 25
Wykład 1 Paradygmaty i języki programowania
Notacja BNF
Notacja BNF (Backus Naur Form) jest powszechnie używana właśnie do opisu składni języków programowania. Stworzona została w trakcie prac nad językami Fortran i Algol na przełomie lat pięćdziesiątych i sześćdziesiątych XX wieku.
Notacja BNF (Backus Naur Form) jest powszechnie używana właśnie do opisu składni języków programowania.
Notacja BNF jest zestawem reguł o następującej postaci:
<symbol> ::= <wyrażenie zawierające symbole> Symbole >,<,::=,| to symbole metajęzyka, służą do definiowania języka.
dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 22 / 25
Wykład 1 Paradygmaty i języki programowania
Notacja BNF
Notacja BNF (Backus Naur Form) jest powszechnie używana właśnie do opisu składni języków programowania. Stworzona została w trakcie prac nad językami Fortran i Algol na przełomie lat pięćdziesiątych i sześćdziesiątych XX wieku.
Notacja BNF (Backus Naur Form) jest powszechnie używana właśnie do opisu składni języków programowania.
Notacja BNF jest zestawem reguł o następującej postaci:
<symbol> ::= <wyrażenie zawierające symbole>
Symbole >,<,::=,| to symbole metajęzyka, służą do definiowania języka.
dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 22 / 25
Wykład 1 Paradygmaty i języki programowania
Przykład użycia BNF
Liczby naturalne
<zero>::= 0
Przykład wartości: 0
<cyfra niezerowa>::= 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 Przykład wartości: 1, 2, 3
<cyfra>::= <zero> | <cyfra niezerowa>
Przykład wartości: 0, 1, 2, 3
<ciąg cyfr> ::= <cyfra> | <cyfra><ciąg cyfr>
Przykład wartości: 0, 1, 01, 23, 45, 99, 10023, 000001
<liczba naturalna>::= <cyfra> | <cyfra niezerowa><ciąg cyfr>
Przykład wartości: 0, 1, 2, 34 56, 406, 556066
Powyższa definicja ma charakter rekurencyjny.
dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 23 / 25
Wykład 1 Paradygmaty i języki programowania
Przykład użycia BNF
Liczby naturalne
<zero>::= 0
Przykład wartości: 0
<cyfra niezerowa>::= 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 Przykład wartości: 1, 2, 3
<cyfra>::= <zero> | <cyfra niezerowa>
Przykład wartości: 0, 1, 2, 3
<ciąg cyfr> ::= <cyfra> | <cyfra><ciąg cyfr>
Przykład wartości: 0, 1, 01, 23, 45, 99, 10023, 000001
<liczba naturalna>::= <cyfra> | <cyfra niezerowa><ciąg cyfr>
Przykład wartości: 0, 1, 2, 34 56, 406, 556066
Powyższa definicja ma charakter rekurencyjny.
dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 23 / 25
Wykład 1 Paradygmaty i języki programowania
Kompilacja i linkowanie
Kompilacja
To proces automatycznego tłumaczenia kodu napisanego w języku programowania na kod maszynowy. Dane wejściowe najczęściej nazywa się kodem źródłowym.
Program wykonujący tłumaczenie to kompilator.
Linkowanie
Konsolidacja (linkowanie od ang. link - łączyć) to proces polegający na połączeniu skompilowanych modułów (plików zawierających kod obiektowy lub plików bibliotek statycznych) i utworzeniu pliku wykonywalnego lub rzadziej innego pliku obiektowego. Dodatkowo podczas konsolidacji do pliku wynikowego mogą być dołączone odpowiednie nagłówki i informacje charakterystyczne dla konkretnego formatu pliku wykonywalnego.
dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 24 / 25
Wykład 1 Paradygmaty i języki programowania
Kompilacja i linkowanie
Kompilacja
To proces automatycznego tłumaczenia kodu napisanego w języku programowania na kod maszynowy. Dane wejściowe najczęściej nazywa się kodem źródłowym.
Program wykonujący tłumaczenie to kompilator.
Linkowanie
Konsolidacja (linkowanie od ang. link - łączyć) to proces polegający na połączeniu skompilowanych modułów (plików zawierających kod obiektowy lub plików bibliotek statycznych) i utworzeniu pliku wykonywalnego lub rzadziej innego pliku obiektowego. Dodatkowo podczas konsolidacji do pliku wynikowego mogą być dołączone odpowiednie nagłówki i informacje charakterystyczne dla konkretnego formatu pliku wykonywalnego.
dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 24 / 25
Wykład 1 Paradygmaty i języki programowania
koniec
DZIĘKUJĘ ZA UWAGĘ
dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 25 / 25