Programowanie. Koncepcje, Informatyka -STUDIA, informatyka i zarządzanie

[ Pobierz całość w formacie PDF ]
IDZ DO
PRZYK£ADOW
Programowanie. Koncepcje,
techniki i modele
SPIS TREŒCI
KATALOG KSI¥¯EK
Autorzy: Peter Van Roy, Seif Haridi
T³umaczenie: Bart³omiej Garbacz (wstêp, rozdz. 1–4, 9),
Andrzej Gra¿yñski (rozdz. 10–13, dod. A–D), Pawe³
Koronkiewicz (rozdz. 5–8)
ISBN: 83-7361-979-8
Tytu³ orygina³
Format: B5, stron: 860
KATALOG ONLINE
ZAMÓW DRUKOWANY KATALOG
TWÓJ KOSZYK
DODAJ DO KOSZYKA
Poznanie istoty programowania komputerów mo¿na zacz¹æ od analizy jêzyków
programowania, ich struktur, typów danych i instrukcji. Jednak mnogoœæ jêzyków,
ró¿nice pomiêdzy nimi i mo¿liwoœæ wykorzystania ich do ró¿nych zadañ sprawiaj¹,
¿e przeprowadzenie takiej analizy bêdzie niezwykle czasoch³onne, a jednoczeœnie nie
bêdzie gwarantowa³o poznania wszystkich koncepcji i paradygmatów programowania.
Naukê koncepcji programowania najlepiej rozpocz¹æ od poznania modelowych struktur
realizowanych za pomoc¹ modeli obliczeniowych -- konstrukcji definiuj¹cych sposób
realizacji obliczeñ, nie powo³uj¹cych siê na konkretny jêzyk.
Ksi¹¿ka „Programowanie. Koncepcje, techniki i modele” prezentuje programowanie jako
zbiór takich w³aœnie modeli. Opisuje je w postaci kodów stworzonych w prostym jêzyku
podstawowym przeznaczonym dla abstrakcyjnego komputera. W ksi¹¿ce
przedstawiono zarówno modele ogólne — programowanie deklaratywne, wspó³bie¿noœæ
deklaratywn¹, wspó³bie¿noœæ przesy³ania komunikatów, stan jawny, programowanie
zorientowane obiektowo, wspó³bie¿noœæ stanu dzielonego oraz programowanie
relacyjne — jak i modele specjalizowane, takie jak programowanie graficznych
interfejsów u¿ytkownika, programowanie rozproszone oraz programowanie
z ograniczeniami. Publikacja zawiera wiele fragmentów programów i æwiczeñ.
Mo¿na je uruchomiæ w ramach systemu Mozart Programming System — pakietu
programistycznego rozprowadzanego na licencji open source.
Podstawowe za³o¿enia problematyki programowania
Notacja Backusa-Naura
Gramatyki kontekstowe i bezkontekstowe
Zasada dzia³ania maszyny abstrakcyjnej
Typy danych, instrukcje i funkcje
Drzewa i analiza sk³adniowa
Metodologie projektowania programów
Programowanie wspó³bie¿ne
Zasady projektowanie i programowanie obiektowego
CENNIK I INFORMACJE
ZAMÓW INFORMACJE
ONOWOŒCIACH
ZAMÓW CENNIK
CZYTELNIA
FRAGMENTY KSI¥¯EK ONLINE
Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl
Spis treści
Wstęp ...........................................................................................................................7
Uruchamianie przykładowych programów ...............................................................21
1.
Wprowadzenie do problematyki programowania .....................................................23
1.1. Kalkulator ................................................................................................................................23
1.2. Zmienne ...................................................................................................................................24
1.3. Funkcje ....................................................................................................................................24
1.4. Listy .........................................................................................................................................26
1.5. Funkcje operujące na listach ....................................................................................................28
1.6. Poprawność ..............................................................................................................................31
1.7. Złożoność .................................................................................................................................32
1.8. Ewaluacja leniwa .....................................................................................................................33
1.9. Programowanie wyższego rzędu ..............................................................................................35
1.10. Współbieżność .........................................................................................................................36
1.11. Przepływ danych ......................................................................................................................37
1.12. Stan jawny ................................................................................................................................38
1.13. Obiekty ....................................................................................................................................39
1.14. Klasy ........................................................................................................................................40
1.15. Niedeterminizm i czas ..............................................................................................................41
1.16. Niepodzielność .........................................................................................................................43
1.17. Dalsza lektura ..........................................................................................................................44
1.18. Ćwiczenia .................................................................................................................................45
I
OGÓLNE MODELE OBLICZENIOWE .........................................................................49
2.
Deklaratywny model obliczeniowy ...........................................................................51
2.1. Definiowanie praktycznych języków programowania .............................................................52
2.2. Obszar jednokrotnego przypisania ...........................................................................................63
2.3. Język modelowy ......................................................................................................................69
2.4. Semantyka języka modelowego ...............................................................................................75
2.5. Zarządzanie pamięcią ...............................................................................................................91
2.6. Od języka modelowego do języka praktycznego .....................................................................98
2.7. Wyjątki ..................................................................................................................................108
2.8. Zagadnienia zaawansowane ...................................................................................................115
2.9. Ćwiczenia ..............................................................................................................................125
 4
SPIS TREŚCI
3.
Techniki programowania deklaratywnego ..............................................................129
3.1. Definicja deklaratywności ......................................................................................................132
3.2. Obliczenia iteracyjne .............................................................................................................135
3.3. Obliczenia rekurencyjne ........................................................................................................141
3.4. Programowanie rekurencyjne ................................................................................................145
3.5. Złożoność czasowa i pamięciowa ..........................................................................................183
3.6. Programowanie wyższego rzędu ............................................................................................194
3.7. Abstrakcyjne typy danych ......................................................................................................210
3.8. Wymagania niedeklaratywne .................................................................................................225
3.9. Projektowanie programu w skali mikro .................................................................................233
3.10. Ćwiczenia ...............................................................................................................................245
4.
Współbieżność deklaratywna ..................................................................................249
4.1. Model współbieżny sterowany danymi ..................................................................................251
4.2. Podstawowe techniki programowania z użyciem wątków .....................................................262
4.3. Strumienie ..............................................................................................................................271
4.4. Bezpośrednie używanie deklaratywnego modelu współbieżnego .......................................287
4.5. Wykonywanie leniwe .............................................................................................................293
4.6. Programowanie nieścisłego czasu rzeczywistego ..................................................................319
4.7. Język Haskell .........................................................................................................................323
4.8. Ograniczenia i rozszerzenia programowania deklaratywnego ...............................................328
4.9. Zagadnienia zaawansowane ...................................................................................................340
4.10. Rys historyczny ......................................................................................................................351
4.11. Ćwiczenia ...............................................................................................................................352
5.
Współbieżność z przesyłaniem komunikatów ..........................................................359
5.1. Model współbieżny oparty na przesyłaniu komunikatów ......................................................361
5.2. Obiekty portów ......................................................................................................................363
5.3. Proste protokoły komunikatów ..............................................................................................367
5.4. Projektowanie programów pod kątem pracy współbieżnej ....................................................375
5.5. System sterowania windami ...................................................................................................379
5.6. Bezpośrednie wykorzystanie modelu przesyłania komunikatów ...........................................390
5.7. Język Erlang ...........................................................................................................................398
5.8. Dodatkowe informacje ...........................................................................................................407
5.9. Ćwiczenia ..............................................................................................................................411
6.
Stan jawny ...............................................................................................................415
6.1. Pojęcie stanu ..........................................................................................................................418
6.2. Stan i budowa systemów ........................................................................................................420
6.3. Model deklaratywny ze stanem jawnym ................................................................................423
6.4. Abstrakcja danych ..................................................................................................................428
6.5. Stanowe kolekcje ...................................................................................................................443
6.6. Wnioskowanie o programach stanowych ...............................................................................448
6.7. Projektowanie programów w dużej skali ...............................................................................458
6.8. Studia przypadków ................................................................................................................469
6.9. Zagadnienia zaawansowane ...................................................................................................485
6.10. Ćwiczenia ...............................................................................................................................488
SPIS TREŚCI
5
7.
Programowanie obiektowe ......................................................................................493
7.1. Dziedziczenie .........................................................................................................................495
7.2. Klasy jako pełne abstrakcje danych .......................................................................................496
7.3. Klasy jako przyrostowe abstrakcje danych ............................................................................505
7.4. Programowanie z użyciem dziedziczenia ..............................................................................521
7.5. Model obiektowy a inne modele obliczeniowe ......................................................................539
7.6. Implementowanie systemu obiektowego ...............................................................................546
7.7. Język Java (część sekwencyjna) .............................................................................................551
7.8. Obiekty aktywne ....................................................................................................................557
7.9. Ćwiczenia ..............................................................................................................................567
8.
Współbieżność ze stanem dzielonym ......................................................................569
8.1. Model współbieżny ze stanem dzielonym .............................................................................571
8.2. Programowanie z użyciem współbieżności ............................................................................572
8.3. Blokady ..................................................................................................................................581
8.4. Monitory ................................................................................................................................590
8.5. Transakcje ..............................................................................................................................597
8.6. Język Java (część współbieżna) .............................................................................................612
8.7. Ćwiczenia ..............................................................................................................................614
9.
Programowanie relacyjne ........................................................................................617
9.1. Relacyjny model obliczeniowy ..............................................................................................619
9.2. Kolejne przykłady ..................................................................................................................623
9.3. Związki z programowaniem logicznym .................................................................................628
9.4. Analiza składniowa języka naturalnego .................................................................................637
9.5. Interpreter gramatyki .............................................................................................................646
9.6. Bazy danych ...........................................................................................................................651
9.7. Język Prolog ...........................................................................................................................657
9.8. Ćwiczenia ..............................................................................................................................667
II
SPECJALISTYCZNE MODELE OBLICZENIOWE ....................................................673
10.
Projektowanie interfejsu GUI ..................................................................................675
10.1. Koncepcja podejścia deklaratywno-proceduralnego ..............................................................677
10.2. Zastosowanie podejścia deklaratywno-proceduralnego .........................................................678
10.3. Prototyper — interaktywne narzędzie treningowe .................................................................685
10.4. Analizy przypadków ..............................................................................................................686
10.5. Implementacja narzędzia GUI ...............................................................................................698
10.6. Ćwiczenia ..............................................................................................................................699
11.
Programowanie rozproszone ...................................................................................701
11.1. Taksonomia systemów rozproszonych ..................................................................................705
11.2. Model dystrybucji ..................................................................................................................706
11.3. Dystrybucja danych deklaratywnych .....................................................................................708
11.4. Dystrybucja stanu ..................................................................................................................715
11.5. Rozpoznanie sieci ..................................................................................................................718
6
SPIS TREŚCI
11.6. Powszechne wzorce programowania rozproszonego .............................................................720
11.7. Protokoły dystrybucyjne ........................................................................................................728
11.8. Częściowe awarie .................................................................................................................. 735
11.9. Bezpieczeństwo .....................................................................................................................739
11.10. Tworzenie aplikacji ...............................................................................................................741
11.11. Ćwiczenia ..............................................................................................................................742
12.
Programowanie z ograniczeniami ...........................................................................745
12.1. Przeszukiwanie z propagacją informacji ................................................................................746
12.2. Techniki programowania .......................................................................................................751
12.3. Model obliczeniowy bazujący na ograniczeniach ..................................................................755
12.4. Definiowanie i wykorzystywanie przestrzeni obliczeniowych ..............................................758
12.5. Implementacja modelu obliczeń relacyjnych .........................................................................769
12.6. Ćwiczenia ..............................................................................................................................771
III
SEMANTYKA ...............................................................................................................775
13.
Semantyka języka programowania ..........................................................................777
13.1. Generalny model obliczeniowy .............................................................................................778
13.2. Współbieżność deklaratywna .................................................................................................803
13.3. Osiem modeli obliczeń ..........................................................................................................805
13.4. Semantyka popularnych abstrakcji programistycznych .........................................................807
13.5. Uwagi historyczne .................................................................................................................807
13.6. Ćwiczenia ..............................................................................................................................808
DODATKI ......................................................................................................................811
A
Zintegrowane środowisko systemu Mozart .............................................................813
B
Podstawowe typy danych ........................................................................................817
C
Składnia języka .......................................................................................................833
D
Generalny model obliczeniowy ...............................................................................843
Bibliografia ..............................................................................................................853
Skorowidz ................................................................................................................865
[ Pobierz całość w formacie PDF ]