Od matematyki do programowania uogólnionego - Helion
Tytuł oryginału: From Mathematics to Generic Programming
Tłumaczenie: Zdzisław Płoski
ISBN: 978-83-283-1031-5
stron: 288, Format: ebook
Data wydania: 2015-09-17
Księgarnia: Helion
Cena książki: 36,75 zł (poprzednio: 49,00 zł)
Oszczędzasz: 25% (-12,25 zł)
Pasjonująca matematyka dla programistów!
Program to nic innego jak ciąg poleceń realizujących zadany algorytm. A gdy mówimy o algorytmach, jesteśmy tylko o krok od matematyki! To wyjątkowo interesująca dziedzina, którą w praktyce powinien znać każdy programista. Jeżeli chciałbyś zrozumieć uogólnione zasady programowania oraz podstawy matematycznych abstrakcji, na których się ono opiera, to trzymasz w rękach odpowiednią publikację.Na kolejnych stronach znajdziesz interesujące informacje na temat pierwszych algorytmów, historii zera oraz nowoczesnych teorii liczb. Po zdobyciu podstawowych wiadomości oraz poznaniu ogólnej historii matematyki przejdziesz do zaznajamiania się z abstrakcjami, takimi jak grupy, monoidy, półgrupy. Następnie opanujesz m.in. takie zagadnienia, jak wyprowadzanie algorytmu uogólnionego, struktury algebraiczne oraz sposoby organizacji wiedzy matematycznej. Sprawdzisz też, jak wyglądają najważniejsze koncepcje programowania, co to są algorytmy permutacyjne i czym zajmuje się kryptologia. Książka ta jest doskonałą lekturą, która pochłonie Cię na wiele godzin!
Poznasz między innymi:
- jak uogólnić liczący cztery tysiące lat algorytm, niezrównane ujęcie klarowności i wydajności;
- starożytne paradoksy, piękne twierdzenia i produktywne napięcie występujące między tym, co ciągłe, i tym, co dyskretne;
- prosty algorytm znajdowania największego wspólnego dzielnika (NWD) i nowoczesne, wywodzące się z niego abstrakcje;
- solidne matematyczne podejścia do abstrakcji;
- że algebra abstrakcyjna dostarcza koncepcji pozostających w samym centrum programowania uogólnionego;
- aksjomaty, dowody, teorie i modele, czyli zastosowanie metod matematycznych do organizowania wiedzy o Twoich algorytmach i strukturach danych;
- zaskakujące subtelności tkwiące w prostych zadaniach programistycznych i co jest w nich pouczającego;
- jak wykorzystać wiedzę teoretyczną w praktycznych implementacjach,
Przekonaj się, jakie tajemnice kryje świat matematyki!
Alexander A. Stepanov — jest autorem licznych prac o podstawach programowania. W swojej karierze programowaÅ‚ systemy operacyjne, narzÄ™dzia, kompilatory oraz dodatkowe biblioteki. Jest laureatem nagrody Excellence in Programming, przyznawanej przez miesiÄ™cznik „Dr. Dobb’s Journal”, i autorem projektu standardowej biblioteki szablonów (STL) w jÄ™zyku C++.
Daniel E. Rose — zajmowaÅ‚ kierownicze stanowiska w firmach Apple, AltaVista, Xigo, Yahoo! i A9.com. W swoich badaniach skupia siÄ™ na wszystkich aspektach zwiÄ…zanych z wyszukiwaniem danych. Na Uniwersytecie Kalifornijskim w San Diego zrobiÅ‚ doktorat z kognitywistyki.
Osoby które kupowały "Od matematyki do programowania uogólnionego", wybierały także:
- Algorytmy kryptograficzne. Przewodnik po algorytmach w blockchain, kryptografii kwantowej, protoko 79,00 zł, (39,50 zł -50%)
- Informatyk samouk. Przewodnik po strukturach danych i algorytmach dla pocz 58,98 zł, (29,49 zł -50%)
- My 89,00 zł, (44,50 zł -50%)
- Nauka algorytm 58,98 zł, (29,49 zł -50%)
- 40 algorytmów, które powinien znać każdy programista. Nauka implementacji algorytmów w Pythonie 77,00 zł, (38,50 zł -50%)
Spis treści
Od matematyki do programowania uogólnionego eBook -- spis treści
Podziękowania (7)
O autorach (9)
Nota od autorów (11)
1. O czym jest ta książka (13)
- 1.1. Programowanie a matematyka (14)
- 1.2. Perspektywa historyczna (15)
- 1.3. Wymagania (15)
- 1.4. Przewodnik (16)
2. Pierwszy algorytm (19)
- 2.1. Mnożenie po egipsku (20)
- 2.2. Ulepszenie algorytmu (23)
- 2.3. Przemyślenia związane z rozdziałem (26)
3. Teoria liczb wedÅ‚ug starożytnych Greków (27)
- 3.1. Geometryczne proporcje liczb całkowitych (27)
- 3.2. Odsiewanie liczb pierwszych (30)
- 3.3. Implementacja i optymalizacja kodu (33)
- 3.4. Liczby doskonałe (38)
- 3.5. Program pitagorejski (42)
- 3.6. Fatalny błąd w tym programie (43)
- 3.7. Przemyślenia związane z rozdziałem (47)
4. Algorytm Euklidesa (49)
- 4.1. Ateny i Aleksandria (49)
- 4.2. Algorytm Euklidesa znajdowania najwiÄ™kszej wspólnej miary (51)
- 4.3. TysiÄ…c lat bez matematyki (57)
- 4.4. Dziwna historia zera (58)
- 4.5. Algorytmy obliczania reszty i ilorazu (60)
- 4.6. WspóÅ‚użytkowanie kodu (63)
- 4.7. Uprawomocnienie tego algorytmu (65)
- 4.8. Przemyślenia związane z rozdziałem (67)
5. Pojawienie siÄ™ nowoczesnej teorii liczb (69)
- 5.1. Liczby pierwsze Mersenne'a i liczby pierwsze Fermata (69)
- 5.2. Małe twierdzenie Fermata (74)
- 5.3. Skracanie (78)
- 5.4. Udowodnienie małego twierdzenia Fermata (82)
- 5.5. Twierdzenie Eulera (84)
- 5.6. Zastosowania arytmetyki modularnej (88)
- 5.7. Przemyślenia związane z rozdziałem (89)
6. Abstrakcja w matematyce (91)
- 6.1. Grupy (91)
- 6.2. Monoidy i póÅ‚grupy (95)
- 6.3. Niektóre twierdzenia o grupach (98)
- 6.4. Podgrupy i grupy cykliczne (101)
- 6.5. Twierdzenie Lagrange'a (103)
- 6.6. Teorie i modele (107)
- 6.7. Przykłady teorii kategorycznych i niekategorycznych (110)
- 6.8. Przemyślenia związane z rozdziałem (113)
7. Wyprowadzenie algorytmu uogólnionego (115)
- 7.1. Rozwikłanie wymagań dotyczących algorytmu (115)
- 7.2. Wymagania dotyczÄ…ce A (116)
- 7.3. Wymagania dotyczÄ…ce N (120)
- 7.4. Nowe wymagania (122)
- 7.5. Zamiana mnożenia na potęgowanie (123)
- 7.6. Uogólnianie operacji (124)
- 7.7. Obliczanie liczb Fibonacciego (127)
- 7.8. Przemyślenia związane z rozdziałem (130)
8. Więcej struktur algebraicznych (131)
- 8.1. Wielomiany Stevina i NWD (131)
- 8.2. Getynga i matematyka niemiecka (137)
- 8.3. Noether i narodziny algebry abstrakcyjnej (142)
- 8.4. Pierścienie (144)
- 8.5. Mnożenie macierzy i póÅ‚pierÅ›cienie (147)
- 8.6. Zastosowanie: sieci spoÅ‚eczne i najkrótsze Å›cieżki (149)
- 8.7. Dziedziny euklidesowe (151)
- 8.8. Ciała i inne struktury algebraiczne (152)
- 8.9. Przemyślenia związane z rozdziałem (154)
9. UporzÄ…dkowanie wiedzy matematycznej (157)
- 9.1. Dowody (157)
- 9.2. Pierwsze twierdzenie (160)
- 9.3. Euklides i metoda aksjomatyczna (163)
- 9.4. Geometrie alternatywne wobec euklidesowej (165)
- 9.5. Formalistyczne podejście Hilberta (168)
- 9.6. Peano i jego aksjomaty (171)
- 9.7. Budowanie arytmetyki (174)
- 9.8. Przemyślenia związane z rozdziałem (177)
10. Podstawowe koncepcje programowania (179)
- 10.1. Arystoteles i abstrakcja (179)
- 10.2. Wartości i typy (182)
- 10.3. Koncepty (183)
- 10.4. Iteratory (187)
- 10.5. Kategorie, cechy i operacje iteratorowe (188)
- 10.6. Przedziały (191)
- 10.7. Wyszukiwanie liniowe (193)
- 10.8. Wyszukiwanie binarne (194)
- 10.9. Przemyślenia związane z rozdziałem (199)
11. Algorytmy permutacyjne (201)
- 11.1. Permutacje i transpozycje (201)
- 11.2. Zamiana przedziaÅ‚ów (205)
- 11.3. Rotacja (208)
- 11.4. Zastosowanie cykli (211)
- 11.5. Odwracanie (215)
- 11.6. Złożoność przestrzenna (218)
- 11.7. Algorytmy dostosowujące się do pamięci (219)
- 11.8. Przemyślenia związane z rozdziałem (220)
12. Rozszerzenia NWD (221)
- 12.1. Ograniczenia sprzętowe i efektywniejsze algorytmy (221)
- 12.2. Uogólnienie algorytmu Steina (224)
- 12.3. Tożsamość Bézouta (227)
- 12.4. Rozszerzony NWD (231)
- 12.5. Zastosowania NWD (235)
- 12.6. Przemyślenia związane z rozdziałem (236)
13. Zastosowanie praktyczne (237)
- 13.1. Kryptologia (237)
- 13.2. Sprawdzanie pierwszości (240)
- 13.3. Test Millera-Rabina (243)
- 13.4. Algorytm RSA - jak działa i dlaczego (245)
- 13.5. Przemyślenia związane z rozdziałem (248)
14. Wnioski (249)
Lektury uzupełniające (251)
A. Notacja (257)
B. Typowe techniki dowodowe (261)
- B.1. Dowód nie wprost (261)
- B.2. Dowód przez indukcjÄ™ (262)
- B.3. Zasada klatek w gołębniku (263)
C. C++ dla nieprogramujÄ…cych w C++ (265)
- C.1. Funkcje szablonowe (265)
- C.2. Koncepty (266)
- C.3. Składnia deklaracji i stałe z typami (267)
- C.4. Obiekty funkcyjne (268)
- C.5. Warunki początkowe i końcowe oraz asercje (269)
- C.6. Algorytmy STL i struktury danych (269)
- C.7. Iteratory i przedziały (271)
- C.8. Zastosowanie synonimów i funkcji typów w C++11 (272)
- C.9. Listy inicjatorów w C++11 (272)
- C.10. Funkcje lambda w C++11 (273)
- C.11. Uwaga o podprogramach otwartych (273)
Literatura (275)
Skorowidz (279)
ŹródÅ‚a materiaÅ‚u zdjÄ™ciowego (281)