Programowanie. Koncepcje, techniki i modele - Helion
Tytuł oryginału: Concepts, Techniques, and Models of Computer Programming
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
stron: 904, Format: B5, okładka: twarda
Data wydania: 2005-10-06
Księgarnia: Helion
Cena książki: 89,00 zł
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
- Projektowanie interfejsów użytkownika
- Obliczenia rozproszone
Pisanie niezawodnych programów wymaga opanowania koncepcji leżących u ich podstaw. Dzięki tej książce poznasz je wszystkie.
Osoby które kupowały "Programowanie. Koncepcje, techniki i modele", wybierały także:
- F# 4.0 dla zaawansowanych. Wydanie IV 96,45 zł, (29,90 zł -69%)
- Systemy reaktywne. Wzorce projektowe i ich stosowanie 65,31 zł, (20,90 zł -68%)
- Scratch. Komiksowa przygoda z programowaniem 36,06 zł, (11,90 zł -67%)
- GameMaker. Kurs video. Kompleksowy przewodnik tworzenia gier platformowych 154,58 zł, (55,65 zł -64%)
- Dost 89,00 zł, (35,60 zł -60%)
Spis treści
Programowanie. Koncepcje, techniki i modele -- 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)
CZĘŚĆ 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)
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)
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)
CZĘŚĆ 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)
- 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)
CZĘŚĆ 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)