Księgarnia naukowo-techniczna styczna.pl

Księgarnia naukowo-techniczna
styczna.pl

 


Zaawansowane wyszukiwanie
  Strona Główna » Sklep » Informatyka » Programowanie » Moje Konto  |  Zawartość Koszyka  |  Do Kasy   
 Wybierz kategorię
Albumy
Architektura
Beletrystyka
Biochemia
Biologia
Biznes
Budownictwo
Chemia
Design DTP
E-biznes
Ekologia i środowisko
Ekonometria
Ekonomia Finanse
Elektronika
Elektrotechnika
Encyklopedie
Energetyka
Fizyka
Fotografia
Geografia
Historia
Informatyka
  Bazy danych
  Bezpieczeństwo
  CAD
  Grafika komputerowa
  iPod Pocket PC
  Kursy
  Media społecznościowe
  Office
  Programowanie
  Programy graficzne
  Sieci bezprzewodowe
  Sieci komputerowe
  Systemy operacyjne
  Techniki programowania
  Webmasterstwo
Maszynoznawstwo
Matematyka
Medycyna
Motoryzacja
Polityka
Popularnonaukowe
Poradniki
Prawo
Sport
Sztuka
Słowniki
Technika
Telekomunikacja
Turystyka
Zarządzanie jakością

Zobacz pełny katalog »
 Wydawnictwo:
 WNT
Technika wodno-mułowa Urządzenia i procesy

Technika wodno-mułowa Urządzenia i procesy

54.00zł
Java. Programowanie funkcyjne 89.00zł 66.75zł
Java. Programowanie funkcyjne

Tytuł: Java. Programowanie funkcyjne
Autor: Pierre-Yves Saumont
ISBN: 978-83-283-3324-6
Ilość stron: 480
Data wydania: 09/2017
Format: 170x230
Wydawnictwo: HELION

Cena: 89.00zł 66.75zł


Większość programistów pracuje zgodnie z paradygmatem programowania imperatywnego, który polega na tworzeniu ciągu instrukcji zmieniających stan programu. Najpoważniejszą wadą tej metody pracy jest podatność kodu na błędy, które trudno jest później wykryć i usunąć. Alternatywą jest programowanie funkcyjne — metodyka, która kładzie największy nacisk na stałe i funkcje. Takie programowanie polega na konstruowaniu funkcji oraz na obliczaniu wartości wyrażeń. W ten sposób otrzymuje się kod odporny na błędy. Niestety, nie zawsze można skorzystać z języków do programowania funkcyjnego.

Niniejsza książka stanowi znakomite wprowadzenie do programowania funkcyjnego na przykładzie Javy. Przedstawiono tu zasady programowania funkcyjnego i metody budowania funkcyjnych struktur danych. Poprzez poznanie paradygmatu funkcyjnego możliwe staje się pisanie lepszych programów, a tworzony kod zawiera mniej błędów i staje się zdecydowanie bardziej niezawodny. W każdym rozdziale znalazły się przykłady kodu, a także ćwiczenia, instrukcje i wskazówki, dzięki którym opanowanie poszczególnych koncepcji stanie się o wiele łatwiejsze. Wyczerpująco omówiono tu m.in. transparentność referencyjną, niezmienność, trwałość i leniwe obliczanie wartości.

Najważniejsze zagadnienia:

  • sterowanie wykonaniem programu
  • różne rodzaje funkcji w Javie
  • rekurencja i jej różne zastosowania
  • operacje wejścia-wyjścia
  • obsługa błędów
  • Java 8 a programowanie funkcyjne

Programowanie funkcyjne — pisz kod funkcjonalny!

Rozdziały:

Przedmowa (13)

Podziękowania (17)

O książce (19)

Rozdział 1. Czym jest programowanie funkcyjne? (23)

  • 1.1. Czym jest programowanie funkcyjne? (24)
  • 1.2. Pisanie użytecznych programów bez efektów ubocznych (26)
  • 1.3. W jaki sposób transparentność referencyjna czyni program bezpieczniejszym? (28)
  • 1.4. Zalety programowania funkcyjnego (28)
  • 1.5. Wykorzystanie modelu z zastępowaniem do rozumowania na temat programu (30)
  • 1.6. Zastosowanie zasad funkcyjnych na prostym przykładzie (31)
  • 1.7. Osiąganie limitów abstrakcji (36)
  • 1.8. Podsumowanie (37)

Rozdział 2. Użycie funkcji w języku Java (39)

  • 2.1. Czym jest funkcja? (40)
    • 2.1.1. Funkcje w świecie rzeczywistym (40)
  • 2.2. Funkcje w Javie (45)
    • 2.2.1. Metody funkcyjne (45)
    • 2.2.2. Interfejsy funkcyjne Javy i klasy anonimowe (50)
    • 2.2.3. Złożenie funkcji (52)
    • 2.2.4. Funkcje polimorficzne (52)
    • 2.2.5. Upraszczanie kodu za pomocą funkcji anonimowych (53)
  • 2.3. Zaawansowane funkcjonalności funkcji (55)
    • 2.3.1. Co z funkcjami dotyczącymi kilku argumentów? (56)
    • 2.3.2. Zastosowanie funkcji z częściowym rozwinięciem (57)
    • 2.3.3. Funkcje wyższego rzędu (57)
    • 2.3.4. Polimorficzne funkcje wyższego rzędu (58)
    • 2.3.5. Użycie funkcji anonimowych (61)
    • 2.3.6. Funkcje lokalne (63)
    • 2.3.7. Domknięcia (64)
    • 2.3.8. Częściowe zastosowanie funkcji i automatyczne rozwijanie (66)
    • 2.3.9. Zamiana argumentów częściowo zastosowanych funkcji (70)
    • 2.3.10. Funkcje rekurencyjne (71)
    • 2.3.11. Funkcja tożsamościowa (73)
  • 2.4. Interfejsy funkcyjne Javy 8 (74)
  • 2.5. Debugging funkcji anonimowych (75)
  • 2.6. Podsumowanie (78)

Rozdział 3. Uczynić Javę bardziej funkcyjną (79)

  • 3.1. Zamiana standardowych struktur sterujących na ich funkcyjne odpowiedniki (80)
  • 3.2. Abstrakcja struktur sterujących (81)
    • 3.2.1. Czyszczenie kodu (85)
    • 3.2.2. Alternatywa dla if ... else (88)
  • 3.3. Abstrakcja iteracji (92)
    • 3.3.1. Abstrakcja operacji na liście dzięki odwzorowaniu (94)
    • 3.3.2. Tworzenie list (95)
    • 3.3.3. Wykorzystanie operacji dotyczących głowy i ogona (96)
    • 3.3.4. Funkcyjne dodawanie do listy (97)
    • 3.3.5. Redukcja i zwijanie list (97)
    • 3.3.6. Kompozycja odwzorowań i mapowanie kompozycji (103)
    • 3.3.7. Stosowanie efektów dla list (104)
    • 3.3.8. Funkcyjne podejście do danych wyjściowych (105)
    • 3.3.9. Budowanie list referencji odwrotnych (106)
  • 3.4. Zastosowanie właściwych typów (109)
    • 3.4.1. Problemy ze standardowymi typami (109)
    • 3.4.2. Definiowanie typów wartości (112)
    • 3.4.3. Przyszłość typów wartości w Javie (115)
  • 3.5. Podsumowanie (115)

Rozdział 4. Rekurencja, rekurencja odwrotna i memoizacja (117)

  • 4.1. Różnice między rekurencją i rekurencją odwrotną (118)
    • 4.1.1. Przykład z dodawaniem dla obu rodzajów rekurencji (118)
    • 4.1.2. Implementacja rekurencji w Javie (119)
    • 4.1.3. Wykorzystanie eliminacji wywołania ogonowego (119)
    • 4.1.4. Użycie funkcji i metod z rekurencją ogonową (120)
    • 4.1.5. Abstrakcja rekurencji (120)
    • 4.1.6. Utworzenie wersji zapewniającej prostą podmianę metody rekurencyjnej bazującej na stosie (124)
  • 4.2. Stosowanie funkcji rekurencyjnych (126)
    • 4.2.1. Korzystanie z lokalnie zdefiniowanych funkcji (127)
    • 4.2.2. Zapewnienie funkcji działających jako rekurencje ogonowe (128)
    • 4.2.3. Funkcje podwójnie rekurencyjne - ciąg Fibonacciego (128)
    • 4.2.4. Zamiana metod dla list na wersje rekurencyjne i bezpieczne dla stosu (131)
  • 4.3. Kompozycja ogromnej liczby funkcji (134)
  • 4.4. Korzystanie z memoizacji (137)
    • 4.4.1. Memoizacja w programowaniu imperatywnym (137)
    • 4.4.2. Memoizacja w funkcjach rekurencyjnych (138)
    • 4.4.3. Memoizacja automatyczna (140)
  • 4.5. Podsumowanie (146)

Rozdział 5. Obsługa danych przy użyciu list (147)

  • 5.1. Jak klasyfikować kolekcje danych? (147)
    • 5.1.1. Różne rodzaje list (148)
    • 5.1.2. Względna oczekiwana wydajność listy (149)
    • 5.1.3. Wymiana czasu na zajętość pamięci lub czasu kontra złożoność (150)
    • 5.1.4. Modyfikacja na miejscu (151)
    • 5.1.5. Trwałe struktury danych (152)
  • 5.2. Implementacja niezmiennej, trwałej listy jednokierunkowej (153)
  • 5.3. Współdzielenie danych w operacjach na liście (156)
    • 5.3.1. Dodatkowe operacje na liście (158)
  • 5.4. Wykorzystanie rekurencji do zwijania list za pomocą funkcji wyższego rzędu (163)
    • 5.4.1. Bazująca na stercie, rekurencyjna wersja foldRight (169)
    • 5.4.2. Odwzorowanie i filtrowanie list (171)
  • 5.5. Podsumowanie (173)

Rozdział 6. Obsługa danych opcjonalnych (175)

  • 6.1. Problemy ze wskaźnikiem null (176)
  • 6.2. Alternatywy dla referencji null (177)
  • 6.3. Typ danych Option (180)
    • 6.3.1. Pobranie wartości z Option (182)
    • 6.3.2. Stosowanie funkcji dla wartości opcjonalnych (184)
    • 6.3.3. Kompozycja obiektów Option (185)
    • 6.3.4. Sposoby użycia Option (187)
    • 6.3.5. Inne sposoby łączenia opcji (191)
    • 6.3.6. Kompozycja List z Option (193)
  • 6.4. Różne narzędzia dodatkowe dla Option (195)
    • 6.4.1. Testowanie, czy to Some, czy None (195)
    • 6.4.2. Implementacja metod equals i hashcode (195)
  • 6.5. Jak i gdzie używać Option? (196)
  • 6.6. Podsumowanie (199)

Rozdział 7. Obsługa błędów i wyjątków (201)

  • 7.1. Problemy do rozwiązania (201)
  • 7.2. Typ Either (203)
    • 7.2.1. Kompozycja klasy Either (204)
  • 7.3. Typ Result (206)
    • 7.3.1. Dodawanie metod do klasy Result (207)
  • 7.4. Wzorce Result (209)
  • 7.5. Zaawansowana obsługa Result (216)
    • 7.5.1. Stosowanie predykatów (216)
    • 7.5.2. Mapowanie porażek (217)
    • 7.5.3. Dodanie metod fabrycznych (220)
    • 7.5.4. Stosowanie efektów (221)
    • 7.5.5. Zaawansowana kompozycja wyników (224)
  • 7.6. Podsumowanie (227)

Rozdział 8. Zaawansowana obsługa list (229)

  • 8.1. Problem z length (230)
    • 8.1.1. Problem wydajności (230)
    • 8.1.2. Zalety memoizacji (231)
    • 8.1.3. Wady memoizacji (231)
    • 8.1.4. Faktyczna wydajność (233)
  • 8.2. Kompozycja List i Result (233)
    • 8.2.1. Metody List zwracające Result (233)
    • 8.2.2. Konwersja z List na Result (235)
  • 8.3. Abstrakcja typowych operacji na listach (238)
    • 8.3.1. Zszywanie i rozszywanie list (238)
    • 8.3.2. Dostęp do elementów na podstawie ich indeksów (241)
    • 8.3.3. Dzielenie list (243)
    • 8.3.4. Poszukiwanie podlist (247)
    • 8.3.5. Różnorakie funkcje dotyczące obsługi list (248)
  • 8.4. Automatyczne przetwarzanie równoległe list (251)
    • 8.4.1. Nie wszystkie obliczenia można zrównoleglić (251)
    • 8.4.2. Podział listy na podlisty (252)
    • 8.4.3. Zrównoleglone przetwarzanie podlist (253)
  • 8.5. Podsumowanie (255)

Rozdział 9. Wykorzystywanie leniwości obliczeń (257)

  • 9.1. Zrozumieć rygor i lenistwo (258)
    • 9.1.1. Java jest językiem rygorystycznym (258)
    • 9.1.2. Problem z rygorem (259)
  • 9.2. Implementacja wersji leniwej (261)
  • 9.3. Rzeczy, których nie wykonamy bez lenistwa (262)
  • 9.4. Dlaczego nie użyjemy klasy Stream z Javy 8? (263)
  • 9.5. Tworzenie struktury danych dla leniwej listy (263)
    • 9.5.1. Memoizacja wyliczonych wartości (265)
    • 9.5.2. Modyfikacja strumienia (268)
  • 9.6. Prawdziwa esencja lenistwa (271)
    • 9.6.1. Zwijanie strumieni (273)
  • 9.7. Obsługa strumieni nieskończonych (278)
  • 9.8. Unikanie referencji null i modyfikowalnych pól (280)
  • 9.9. Podsumowanie (282)

Rozdział 10. Obsługa danych za pomocą drzew (285)

  • 10.1. Drzewo binarne (286)
    • 10.1.1. Drzewa zrównoważone i niezbalansowane (287)
    • 10.1.2. Rozmiar, wysokość i głębia (287)
    • 10.1.3. Drzewa liściaste (288)
    • 10.1.4. Uporządkowane drzewa binarne lub też drzewa binarne wyszukiwania (288)
    • 10.1.5. Kolejność wstawiania (289)
    • 10.1.6. Kolejność przejścia przez drzewo (290)
  • 10.2. Implementacja drzewa binarnego (292)
  • 10.3. Usuwanie elementów z drzew (298)
  • 10.4. Łączenie dowolnych drzew (300)
  • 10.5. Zwijanie drzewa (304)
    • 10.5.1. Zwijanie za pomocą dwóch funkcji (305)
    • 10.5.2. Zwijanie za pomocą jednej funkcji (307)
    • 10.5.3. Którą implementację zwinięcia wybrać? (308)
  • 10.6. Odwzorowanie drzew (310)
  • 10.7. Równoważenie drzew (311)
    • 10.7.1. Obracanie drzew (311)
    • 10.7.2. Równoważenie drzew za pomocą algorytmu Day-Stout-Warren (314)
    • 10.7.3. Automatycznie równoważące się drzewa (315)
    • 10.7.4. Rozwiązywanie właściwego problemu (316)
  • 10.8. Podsumowanie (317)

Rozdział 11. Rozwiązywanie rzeczywistych problemów przy użyciu zaawansowanych drzew (319)

  • 11.1. Lepsza wydajność i bezpieczeństwo stosu dzięki samobalansującym się drzewom (320)
    • 11.1.1. Prosta struktura drzewa (320)
    • 11.1.2. Wstawianie elementu do drzewa czerwono-czarnego (325)
  • 11.2. Przykład użycia drzew czerwono-czarnych - mapowanie (330)
    • 11.2.1. Implementacja klasy Map (330)
    • 11.2.2. Rozbudowania klasy Map (333)
    • 11.2.3. Użycie klasy Map dla kluczy bez możliwości porównywania (334)
  • 11.3. Implementacja funkcyjnej kolejki priorytetowej (336)
    • 11.3.1. Protokół dostępowy dla kolejki priorytetowej (336)
    • 11.3.2. Sposoby użycia kolejek priorytetowych (337)
    • 11.3.3. Wymagania implementacyjne (337)
    • 11.3.4. Struktura danych nazywana kopcem lewostronnym (338)
    • 11.3.5. Implementacja kopca lewostronnego (338)
    • 11.3.6. Implementacja interfejsu przypominającego kolejkę (343)
  • 11.4. Kolejka priorytetowa dla elementów bez możliwości porównywania (344)
  • 11.5. Podsumowanie (349)

Rozdział 12. Obsługa zmian stanu w sposób funkcyjny (351)

  • 12.1. Funkcjonalny generator liczb losowych (352)
    • 12.1.1. Interfejs generatora liczb losowych (353)
    • 12.1.2. Implementacja generatora liczb losowych (354)
  • 12.2. Ogólne API do obsługi stanu (357)
    • 12.2.1. Korzystanie z operacji na stanie (358)
    • 12.2.2. Kompozycja operacji na stanie (359)
  • 12.3. Ogólna obsługa stanu (363)
    • 12.3.1. Wzorce stanu (364)
    • 12.3.2. Tworzenie maszyny stanowej (365)
    • 12.3.3. Kiedy korzystać ze stanu i maszyny stanowej (370)
  • 12.4. Podsumowanie (371)

Rozdział 13. Funkcyjne wejście-wyjście (373)

  • 13.1. Stosowanie efektów w kontekście (374)
    • 13.1.1. Czym są efekty? (374)
    • 13.1.2. Implementacja efektów (375)
    • 13.1.3. Bardziej użyteczne efekty dla porażek (377)
  • 13.2. Odczyt danych (380)
    • 13.2.1. Odczyt danych z konsoli (380)
    • 13.2.2. Odczyt danych z pliku (384)
    • 13.2.3. Testowanie z zadanymi danymi wejściowymi (386)
  • 13.3. Naprawdę funkcyjne wejście-wyjście (387)
    • 13.3.1. W jaki sposób zapewnić pełną funkcyjność wejścia-wyjścia? (387)
    • 13.3.2. Implementacja w pełni funkcyjnego wejścia-wyjścia (388)
    • 13.3.3. Łączenie operacji wejścia-wyjścia (389)
    • 13.3.4. Obsługa wejścia za pomocą IO (390)
    • 13.3.5. Rozszerzanie typu IO (393)
    • 13.3.6. Uczynienie typu IO bezpiecznym dla stosu (395)
  • 13.4. Podsumowanie (400)

Rozdział 14. Współdzielenie zmiennego stanu przy użyciu aktorów (401)

  • 14.1. Model aktora (402)
    • 14.1.1. Asynchroniczne komunikaty (403)
    • 14.1.2. Obsługa zrównoleglenia (403)
    • 14.1.3. Obsługa zmiany stanu aktora (404)
  • 14.2. Budowanie frameworka aktora (405)
    • 14.2.1. Ograniczenia prezentowanego frameworka aktora (405)
    • 14.2.2. Projektowanie interfejsów frameworka aktorów (405)
    • 14.2.3. Implementacja AbstractActor (407)
  • 14.3. Zmuszenie aktorów do działania (408)
    • 14.3.1. Implementacja przykładu z ping-pongiem (409)
    • 14.3.2. Bardziej poważny przykład - równoległe wykonywanie obliczeń (410)
    • 14.3.3. Zmiana kolejności wyników (415)
    • 14.3.4. Rozwiązanie problemu wydajności (418)
  • 14.4. Podsumowanie (423)

Rozdział 15. Rozwiązywanie typowych problemów w sposób funkcyjny (425)

  • 15.1. Wykorzystanie asercji do walidacji danych (426)
  • 15.2. Odczyt właściwości z pliku (430)
    • 15.2.1. Wczytywanie pliku właściwości (430)
    • 15.2.2. Odczyt właściwości jako tekstu (431)
    • 15.2.3. Tworzenie lepszych komunikatów o błędzie (432)
    • 15.2.4. Odczyt właściwości jako listy (435)
    • 15.2.5. Odczytywanie wyliczeń (436)
    • 15.2.6. Odczyt właściwości dowolnych typów (437)
  • 15.3. Konwersja programu imperatywnego - czytnik plików XML (440)
    • 15.3.1. Zebranie potrzebnych funkcji (441)
    • 15.3.2. Kompozycja funkcji i stosowanie efektu (442)
    • 15.3.3. Implementacja funkcji (443)
    • 15.3.4. Uczynienie programu nawet bardziej funkcyjnym (444)
    • 15.3.5. Rozwiązanie problemu z typem argumentu (448)
    • 15.3.6. Zmiana funkcji przetwarzającej element na parametr (449)
    • 15.3.7. Obsługa błędów dla nazw elementów (450)
  • 15.4. Podsumowanie (451)

Dodatek A. Wykorzystanie elementów funkcyjnych Javy 8 (453)

  • A.1. Klasa Optional (454)
  • A.2. Strumienie (455)

Dodatek B. Monady (461)

Dodatek C. Co dalej? (467)

  • C.1. Wybór nowego języka (467)
    • C.1.1. Haskell (467)
    • C.1.2. Scala (468)
    • C.1.3. Kotlin (468)
    • C.1.4. Frege (469)
    • C.1.5. A co z dynamicznie typowanymi językami funkcyjnymi? (469)
  • C.2. Pozostanie z Javą (469)
    • C.2.1. Functional Java (470)
    • C.2.2. Javaslang (470)
    • C.2.3. Cyclops (470)
    • C.2.4. Inne biblioteki funkcyjne (471)
  • C.3. Dodatkowe lektury (471)

Najniższa cena z 30 dni przed obniżką 66,75zł

Tytuł książki: "Java. Programowanie funkcyjne"
Autor: Pierre-Yves Saumont
Wydawnictwo: HELION
Cena: 89.00zł 66.75zł
Klienci, którzy kupili tę książkę, kupili także
Partnerstwo publiczno - prywatne
Partnerstwo publiczno - prywatne
Edward R. Yescombe
Wolters Kluwer
Wpływ aktywności finansowej Unii Europejskiej na położenie społeczne Romów w Polsce
Wpływ aktywności finansowej Unii Europejskiej na położenie społeczne Romów w Polsce
Talewicz-Kwiatkowska Joanna
Wydawnictwo Uniwersytetu Jagiellońskiego
Litwa Łotwa i Estonia Zielony Przewodnik
Litwa Łotwa i Estonia Zielony Przewodnik
Praca zbiorowa
Septem
Słownik PLUS rozmówki polsko-niemieckie niemiecko-polskie
Słownik PLUS rozmówki polsko-niemieckie niemiecko-polskie
praca zbiorowa
LANGENSCHEIDT
Jerzy Popiełuszko kapłan milości
Jerzy Popiełuszko kapłan milości
Paweł Milcarek
Demart
Najpiękniejsze miasta Europy
Najpiękniejsze miasta Europy
Praca zbiorowa
SBM
 Koszyk
1 x Joga nidra Szybki relaks dla zmęczonych kobiet
1 x Bzyk Pasjonujące zespolenie nauki i seksu
1 x Dawna medycyna Jej tajemnice i potęga. Egipt, Babilonia, Indie, Chiny, Meksyk, Peru
1 x Neonatologia
1 x Dziewczyna Misia Życie jak film - niebanalna historia dziewczyny z Londynu
1 x Fizjoterapia ogólna
1 x Jednolity plik kontrolny dla podatkowej księgi przychodów i rozchodów (JPK_PKPIR) wskazówki dla księgowych
1 x Sztuki walki Zwycięstwo nad sobą
1 x Anatomia strachu
1 x Fotografia cyfrowa dla nastolatków
1 x 365 dni seksu
1 x Trening mentalny biegacza Jak utrzymać motywację
1 x Angielski Rozmówki z wymową i słowniczkiem Mów śmiało!
1 x Antologia muzyki wiolonczelowej Utwory na wiolonczelę i fortepian
1 x Ćwiczenia z biochemii dla studentów Wydziału Lekarskiego
1 x Bieszczady Beskid Niski Przewodnik z górskiej półki
1 x 365 dni z ojcem Pio
1 x Czytaj dwa razy szybciej!
1 x MS SQL Server Zaawansowane metody programowania
1 x Brydż dla żółtodziobów
1 x Zioła pól i ogrodów
1 x Piersi. Poradnik dla każdej kobiety
1 x Chiny od góry do dołu
1 x Historia architektury
1 x Konstytucyjny system organów państwa
1 x Tajlandia Południe przewodnik Dumont
1 x Foresight w turystyce Bariery wykorzystania i rozwoju
1 x Arkadiusz Onyszko. Fucking Polak. Nowe życie
1 x Myśli to materia
1 x Dlaczego prawda jest piękna O symetrii w matematyce i fizyce
1 x Antidotum na zmęczenie Odkryj niewyczerpane źródło energii życiowej
1 x Chińska droga Podróż w głąb Państwa Środka
1 x Lokalne interfejsy szeregowe w systemach cyfrowych
1 x Prawo konstytucyjne w pytaniach i odpowiedziach
1 x UX i analiza ruchu w sieci Praktyczny poradnik
1 x Boli tylko, gdy się śmieję... Listy i rozmowy
1 x Kali Linux. Testy penetracyjne i bezpieczeństwo sieci dla zaawansowanych. Wydanie II
1 x Bezprawność jako przesłanka odpowiedzialności odszkodowawczej
1 x Udary mózgu Kompendium diagnostyki i postępowania Tom 1
1 x Korekcja wad postawy. Techniki terapeutyczne
1 x Grzywna samoistna w stawkach dziennych
1 x Kodeks pracy Komentarz Wydanie 9
1 x Georóżnorodność i atrakcje geoturystyczne Województwa Małopolskiego Wydanie 2
1 x Projekt Lady I Ty możesz być damą
1 x "Bo każda książka to czyn..." Sienkiewicz
1 x Vademecum żeglarstwa morskiego
1 x Aspekte 1 Lehrerhandreichungen Mittelstufe Deutsch
1 x Wybrałam życie Aborcja to nie jest powód do dumy
1 x Antynomie i paradoksy współczesnej demokracji
1 x Automatyczna klasyfikacja obiektów
1 x Prawo ochrony środowiska
1 x Astrologia miłość i przeznaczenie
1 x 100 problemów w RTG klatki piersiowej
1 x Mikrokontrolery STM32 w sieci Ethernet w przykładach
1 x 1848 Rewolucja intelektualistów
1 x Atlas anatomii palpacyjnej Tom 1-2
1 x Dawkowanie leków u noworodków dzieci i młodzieży Wydanie 7
1 x Analiza porównawcza polityki energetycznej importerów i eksporterów surowców energetycznych na przykładzie Niemiec i Arabii Saudyj
1 x Audyt wewnętrzny zamówień publicznych w JSFP wzory list kontrolnych z komentarzem
1 x Jak biegać zdrowo
1 x Groch i kapusta Podróżuj po Polsce Południowy zachód
1 x Chorwacja Dalmacja Przewodnik Marco Polo
1 x Bobby Fischer
1 x Agent Naga prawda o kulisach futbolu
1 x Kodeks pracy Komentarz Wydanie 3
1 x Chronologia sztuki Oś czasu kultury zachodniej od czasów prehistorycznych po współczesne
1 x Cuda Polski Zwierzęta
1 x Alergologia praktyczna
4,021.67zł
Wydawnictwo
Tu można zobaczyć wszystkie książki z wydawnictwa:

Wydawnictwo Helion
 Kategoria:
 Biologia
Taniec życia Jak stajemy się ludźmi

Taniec życia Jak stajemy się ludźmi

49.99zł
42.49zł
Informacje
Regulamin sklepu.
Koszty wysyłki.
Polityka prywatności.
Jak kupować?
Napisz do Nas.
 Wydawnictwa
 Polecamy
OpenGL Księga eksperta Wydanie V Richard S. Wright, Jr., Nicholas Haemel, Graham Sellers, Benjamin Lipc HELION
Przystępny kurs statystyki z zastosowaniem STATISTICA PL na przykładach z medycyny KOMPLET Tom 1 Tom 2 Tom 3 Andrzej Stanisz StatSoft
MERITUM Podatki 2018 Aleksander Kaźmierski Wolters Kluwer
Fizyka współczesna Paul A. Tipler Ralph A. Llewellyn PWN
Programowanie Microsoft SQL Server 2008 Tom 1 + Tom 2 Leonard Lobel, Andrew J. Brust, Stephen Forte Microsoft Press
Rachunek różniczkowy i całkowy Tom 1 Wydanie 12 Grigorij M. Fichtenholz PWN
Słownik naukowo-techniczny angielsko-polski Wydanie XIII Red. M.Berger, T.Jaworska, A.Baranowska, M.Barańska WNT
Matematyka konkretna Wydanie 4 Ronald L. Graham, Donald E. Knuth, Oren Patashnik PWN
Autodesk Inventor Professional /Fusion 2012PL/2012+ Metodyka projektowania z płytą CD Andrzej Jaskulski PWN