Kategorie
Ebooki
-
Biznes i ekonomia
- Bitcoin
- Bizneswoman
- Coaching
- Controlling
- E-biznes
- Ekonomia
- Finanse
- Giełda i inwestycje
- Kompetencje osobiste
- Komputer w biurze
- Komunikacja i negocjacje
- Mała firma
- Marketing
- Motywacja
- Multimedialne szkolenia
- Nieruchomości
- Perswazja i NLP
- Podatki
- Polityka społeczna
- Poradniki
- Prezentacje
- Przywództwo
- Public Relation
- Raporty, analizy
- Sekret
- Social Media
- Sprzedaż
- Start-up
- Twoja kariera
- Zarządzanie
- Zarządzanie projektami
- Zasoby ludzkie (HR)
-
Dla dzieci
-
Dla młodzieży
-
Edukacja
-
Encyklopedie, słowniki
-
E-prasa
- Architektura i wnętrza
- Biznes i Ekonomia
- Dom i ogród
- E-Biznes
- Finanse
- Finanse osobiste
- Firma
- Fotografia
- Informatyka
- Kadry i płace
- Komputery, Excel
- Księgowość
- Kultura i literatura
- Naukowe i akademickie
- Ochrona środowiska
- Opiniotwórcze
- Oświata
- Podatki
- Podróże
- Psychologia
- Religia
- Rolnictwo
- Rynek książki i prasy
- Transport i Spedycja
- Zdrowie i uroda
-
Historia
-
Informatyka
- Aplikacje biurowe
- Bazy danych
- Bioinformatyka
- Biznes IT
- CAD/CAM
- Digital Lifestyle
- DTP
- Elektronika
- Fotografia cyfrowa
- Grafika komputerowa
- Gry
- Hacking
- Hardware
- IT w ekonomii
- Pakiety naukowe
- Podręczniki szkolne
- Podstawy komputera
- Programowanie
- Programowanie mobilne
- Serwery internetowe
- Sieci komputerowe
- Start-up
- Systemy operacyjne
- Sztuczna inteligencja
- Technologia dla dzieci
- Webmasterstwo
-
Inne
-
Języki obce
-
Kultura i sztuka
-
Lektury szkolne
-
Literatura
- Antologie
- Ballada
- Biografie i autobiografie
- Dla dorosłych
- Dramat
- Dzienniki, pamiętniki, listy
- Epos, epopeja
- Esej
- Fantastyka i science-fiction
- Felietony
- Fikcja
- Humor, satyra
- Inne
- Klasyczna
- Kryminał
- Literatura faktu
- Literatura piękna
- Mity i legendy
- Nobliści
- Nowele
- Obyczajowa
- Okultyzm i magia
- Opowiadania
- Pamiętniki
- Podróże
- Poemat
- Poezja
- Polityka
- Popularnonaukowa
- Powieść
- Powieść historyczna
- Proza
- Przygodowa
- Publicystyka
- Reportaż
- Romans i literatura obyczajowa
- Sensacja
- Thriller, Horror
- Wywiady i wspomnienia
-
Nauki przyrodnicze
-
Nauki społeczne
-
Podręczniki szkolne
-
Popularnonaukowe i akademickie
- Archeologia
- Bibliotekoznawstwo
- Filmoznawstwo
- Filologia
- Filologia polska
- Filozofia
- Finanse i bankowość
- Geografia
- Gospodarka
- Handel. Gospodarka światowa
- Historia i archeologia
- Historia sztuki i architektury
- Kulturoznawstwo
- Lingwistyka
- Literaturoznawstwo
- Logistyka
- Matematyka
- Medycyna
- Nauki humanistyczne
- Pedagogika
- Pomoce naukowe
- Popularnonaukowa
- Pozostałe
- Psychologia
- Socjologia
- Teatrologia
- Teologia
- Teorie i nauki ekonomiczne
- Transport i spedycja
- Wychowanie fizyczne
- Zarządzanie i marketing
-
Poradniki
-
Poradniki do gier
-
Poradniki zawodowe i specjalistyczne
-
Prawo
- BHP
- Historia
- Kodeks drogowy. Prawo jazdy
- Nauki prawne
- Ochrona zdrowia
- Ogólne, kompendium wiedzy
- Podręczniki akademickie
- Pozostałe
- Prawo budowlane i lokalowe
- Prawo cywilne
- Prawo finansowe
- Prawo gospodarcze
- Prawo gospodarcze i handlowe
- Prawo karne
- Prawo karne. Przestępstwa karne. Kryminologia
- Prawo międzynarodowe
- Prawo międzynarodowe i zagraniczne
- Prawo ochrony zdrowia
- Prawo oświatowe
- Prawo podatkowe
- Prawo pracy i ubezpieczeń społecznych
- Prawo publiczne, konstytucyjne i administracyjne
- Prawo rodzinne i opiekuńcze
- Prawo rolne
- Prawo socjalne, prawo pracy
- Prawo Unii Europejskiej
- Przemysł
- Rolne i ochrona środowiska
- Słowniki i encyklopedie
- Zamówienia publiczne
- Zarządzanie
-
Przewodniki i podróże
- Afryka
- Albumy
- Ameryka Południowa
- Ameryka Środkowa i Północna
- Australia, Nowa Zelandia, Oceania
- Austria
- Azja
- Bałkany
- Bliski Wschód
- Bułgaria
- Chiny
- Chorwacja
- Czechy
- Dania
- Egipt
- Estonia
- Europa
- Francja
- Góry
- Grecja
- Hiszpania
- Holandia
- Islandia
- Litwa
- Łotwa
- Mapy, Plany miast, Atlasy
- Miniprzewodniki
- Niemcy
- Norwegia
- Podróże aktywne
- Polska
- Portugalia
- Pozostałe
- Rosja
- Rumunia
- Słowacja
- Słowenia
- Szwajcaria
- Szwecja
- Świat
- Turcja
- Ukraina
- Węgry
- Wielka Brytania
- Włochy
-
Psychologia
- Filozofie życiowe
- Kompetencje psychospołeczne
- Komunikacja międzyludzka
- Mindfulness
- Ogólne
- Perswazja i NLP
- Psychologia akademicka
- Psychologia duszy i umysłu
- Psychologia pracy
- Relacje i związki
- Rodzicielstwo i psychologia dziecka
- Rozwiązywanie problemów
- Rozwój intelektualny
- Sekret
- Seksualność
- Uwodzenie
- Wygląd i wizerunek
- Życiowe filozofie
-
Religia
-
Sport, fitness, diety
-
Technika i mechanika
Audiobooki
-
Biznes i ekonomia
- Bitcoin
- Bizneswoman
- Coaching
- Controlling
- E-biznes
- Ekonomia
- Finanse
- Giełda i inwestycje
- Kompetencje osobiste
- Komunikacja i negocjacje
- Mała firma
- Marketing
- Motywacja
- Nieruchomości
- Perswazja i NLP
- Podatki
- Poradniki
- Prezentacje
- Przywództwo
- Public Relation
- Sekret
- Social Media
- Sprzedaż
- Start-up
- Twoja kariera
- Zarządzanie
- Zarządzanie projektami
- Zasoby ludzkie (HR)
-
Dla dzieci
-
Dla młodzieży
-
Edukacja
-
Encyklopedie, słowniki
-
Historia
-
Informatyka
-
Inne
-
Języki obce
-
Kultura i sztuka
-
Lektury szkolne
-
Literatura
- Antologie
- Ballada
- Biografie i autobiografie
- Dla dorosłych
- Dramat
- Dzienniki, pamiętniki, listy
- Epos, epopeja
- Esej
- Fantastyka i science-fiction
- Felietony
- Fikcja
- Humor, satyra
- Inne
- Klasyczna
- Kryminał
- Literatura faktu
- Literatura piękna
- Mity i legendy
- Nobliści
- Nowele
- Obyczajowa
- Okultyzm i magia
- Opowiadania
- Pamiętniki
- Podróże
- Poezja
- Polityka
- Popularnonaukowa
- Powieść
- Powieść historyczna
- Proza
- Przygodowa
- Publicystyka
- Reportaż
- Romans i literatura obyczajowa
- Sensacja
- Thriller, Horror
- Wywiady i wspomnienia
-
Nauki przyrodnicze
-
Nauki społeczne
-
Popularnonaukowe i akademickie
-
Poradniki
-
Poradniki zawodowe i specjalistyczne
-
Prawo
-
Przewodniki i podróże
-
Psychologia
- Filozofie życiowe
- Komunikacja międzyludzka
- Mindfulness
- Ogólne
- Perswazja i NLP
- Psychologia akademicka
- Psychologia duszy i umysłu
- Psychologia pracy
- Relacje i związki
- Rodzicielstwo i psychologia dziecka
- Rozwiązywanie problemów
- Rozwój intelektualny
- Sekret
- Seksualność
- Uwodzenie
- Wygląd i wizerunek
- Życiowe filozofie
-
Religia
-
Sport, fitness, diety
-
Technika i mechanika
Kursy video
-
Bazy danych
-
Big Data
-
Biznes, ekonomia i marketing
-
Cyberbezpieczeństwo
-
Data Science
-
DevOps
-
Dla dzieci
-
Elektronika
-
Grafika/Wideo/CAX
-
Gry
-
Microsoft Office
-
Narzędzia programistyczne
-
Programowanie
-
Rozwój osobisty
-
Sieci komputerowe
-
Systemy operacyjne
-
Testowanie oprogramowania
-
Urządzenia mobilne
-
UX/UI
-
Web development
-
Zarządzanie
Podcasty
- Ebooki
- Programowanie
- C++
- Programowanie funkcyjne w języku C++. Tworzenie lepszych aplikacji
Szczegóły ebooka
Programowanie jest sztuką, dzięki której możesz stworzyć coś z niczego, przy czym tylko od Ciebie zależy, jak doskonałe będzie to dzieło. Dobrze napisany kod jest wydajny, łatwy w testowaniu, można go używać ponownie i wykazuje mniejszą podatność na błędy. Jednym słowem, taki kod powinien możliwie prosto wyrażać złożoną logikę programu, bezproblemowo obsługiwać błędy i przejrzyście implementować współbieżność. Te wymagania pozwoli Ci spełnić funkcyjny styl programowania. Język C++ umożliwia programowanie funkcyjne dzięki szablonom, wyrażeniom lambda i innym ważnym opcjom. Pomocne też będzie korzystanie z biblioteki STL.
Ta książka jest przeznaczona dla profesjonalnych programistów C++, którzy chcą opanować funkcyjny styl programowania i dzięki temu wykorzystać w nowy sposób potężne zalety tego języka. Po interesującym wprowadzeniu do tej metodologii w książce zamieszczono dziesiątki przykładów, schematów i ilustracji wyjaśniających koncepcje programowania funkcyjnego w C++. Pokazano, jak tworzyć bezpieczniejszy kod bez obniżania wydajności pracy programu, jak stosować obiekty funkcyjne i funkcje stosowane, algebraiczne typy danych oraz wiele innych. Nie zabrakło praktycznych przykładów kodu, który stanowi znakomite uzupełnienie prezentowanych treści.
W tej książce między innymi:
- wprowadzenie do programowania funkcyjnego
- funkcje w C++ i funkcje wyższego rzędu oraz ich rozwijanie
- wartościowanie leniwe i wykorzystanie go do optymalizacji
- korzystanie z funktorów i monad
- funkcyjny sposób testowania i debugowania kodu
Programowanie funkcyjne w C++: twórz najlepsze rozwiązania!
Przedmowa 9
O książce 11
O autorze 15
Rozdział 1. Wprowadzenie do programowania funkcyjnego 17
- 1.1. Co to jest programowanie funkcyjne? 18
- 1.1.1. Związek z programowaniem obiektowym 19
- 1.1.2. Praktyczny przykład porównania programowania imperatywnego i deklaratywnego 20
- 1.2. Funkcje czyste 24
- 1.2.1. Unikanie stanu mutowalnego 27
- 1.3. Myślenie w sposób funkcjonalny 29
- 1.4. Korzyści wynikające z programowania funkcyjnego 31
- 1.4.1. Zwięzłość i czytelność kodu 32
- 1.4.2. Współbieżność i synchronizacja 33
- 1.4.3. Ciągła optymalizacja 33
- 1.5. Przekształcanie C++ w funkcyjny język programowania 34
- 1.6. Czego nauczysz się w trakcie czytania tej książki? 36
- Podsumowanie 36
Rozdział 2. Pierwsze kroki z programowaniem funkcyjnym 39
- 2.1. Funkcje używające innych funkcji? 40
- 2.2. Przykłady z biblioteki STL 42
- 2.2.1. Obliczanie średnich 42
- 2.2.2. Zwijanie 45
- 2.2.3. Przycinanie łańcucha 48
- 2.2.4. Partycjonowanie kolekcji na podstawie predykatu 50
- 2.2.5. Filtrowanie i transformacja 52
- 2.3. Problemy ze składaniem algorytmów STL 53
- 2.4. Tworzenie własnych funkcji wyższego rzędu 55
- 2.4.1. Otrzymywanie funkcji w postaci argumentów 55
- 2.4.2. Implementacja z pętlami 56
- 2.4.3. Rekurencja oraz optymalizacja przez rekurencję ogonową 57
- 2.4.4. Implementacja przy użyciu zwijania 61
- Podsumowanie 62
Rozdział 3. Obiekty funkcyjne 63
- 3.1. Funkcje i obiekty funkcyjne 64
- 3.1.1. Automatyczna dedukcja typu zwracanego 64
- 3.1.2. Wskaźniki do funkcji 67
- 3.1.3. Przeciążanie operatora wywołania 68
- 3.1.4. Tworzenie generycznych obiektów funkcyjnych 70
- 3.2. Wyrażenia lambda i domknięcia 73
- 3.2.1. Składnia wyrażenia lambda 74
- 3.2.2. Co się kryje wewnątrz wyrażenia lambda? 75
- 3.2.3. Tworzenie dowolnych zmiennych składowych w wyrażeniach lambda 77
- 3.2.4. Uogólnione wyrażenia lambda 79
- 3.3. Tworzenie obiektów funkcyjnych, które są jeszcze bardziej zwięzłe niż wyrażenia lambda 80
- 3.3.1. Obiekty funkcyjne operatorów w bibliotece STL 83
- 3.3.2. Obiekty funkcyjne operatorów w innych bibliotekach 84
- 3.4. Opakowywanie obiektów funkcyjnych przy użyciu std::function 86
- Podsumowanie 88
Rozdział 4. Tworzenie nowych funkcji na podstawie istniejących 89
- 4.1. Częściowe stosowanie funkcji 90
- 4.1.1. Ogólny sposób zamiany funkcji dwuargumentowych na jednoargumentowe 92
- 4.1.2. Użycie std::bind do wiązania wartości z określonymi argumentami funkcji 95
- 4.1.3. Zamienianie ze sobą argumentów funkcji dwuargumentowej 97
- 4.1.4. Użycie std::bind z funkcjami mającymi więcej argumentów 98
- 4.1.5. Użycie wyrażeń lambda jako alternatywy dla std::bind 101
- 4.2. Rozwijanie: inny sposób podejścia do funkcji 103
- 4.2.1. Rozwijanie funkcji w prostszy sposób 104
- 4.2.2. Użycie rozwijania podczas dostępu do bazy danych 106
- 4.2.3. Rozwijanie a częściowe stosowanie funkcji 109
- 4.3. Złożenie funkcji 110
- 4.4. Podnoszenie funkcji - kolejne podejście 113
- 4.4.1. Odwracanie elementów par w kolekcji 116
- Podsumowanie 117
Rozdział 5. Czystość: unikanie stanu mutowalnego 119
- 5.1. Problemy ze stanem mutowalnym 120
- 5.2. Funkcje czyste i przejrzystość referencyjna 122
- 5.3. Programowanie bez efektów ubocznych 125
- 5.4. Stan mutowalny i niemutowalny w środowisku współbieżnym 129
- 5.5. Duże znaczenie kwalifikatora const 132
- 5.5.1. Logiczna i wewnętrzna zgodność z deklaracją const 134
- 5.5.2. Optymalizacja funkcji składowych dla zmiennych tymczasowych 136
- 5.5.3. Pułapki związane z użyciem słowa kluczowego const 138
- Podsumowanie 140
Rozdział 6. Wartościowanie leniwe 141
- 6.1. Wartościowanie leniwe w C++ 142
- 6.2. Wartościowanie leniwe jako technika optymalizacyjna 145
- 6.2.1. Sortowanie kolekcji przy wykorzystaniu wartościowania leniwego 145
- 6.2.2. Wyświetlanie elementów w interfejsach użytkownika 147
- 6.2.3. Przycinanie drzew rekurencyjnych przez buforowanie wyników funkcji 148
- 6.2.4. Programowanie dynamiczne jako forma wartościowania leniwego 150
- 6.3. Uogólnione zapamiętywanie 152
- 6.4. Szablony wyrażeń i leniwe łączenie łańcuchów 155
- 6.4.1. Czystość i szablony wyrażeń 159
- Podsumowanie 160
Rozdział 7. Zakresy 163
- 7.1. Wprowadzenie do zakresów 165
- 7.2. Tworzenie widoków danych tylko do odczytu 166
- 7.2.1. Użycie funkcji filter z zakresami 166
- 7.2.2. Użycie funkcji transform z zakresami 167
- 7.2.3. Wartościowanie leniwe wartości zakresów 168
- 7.3. Mutowalność zmiennych w zakresach 170
- 7.4. Używanie zakresów ograniczonych i nieskończonych 172
- 7.4.1. Użycie zakresów ograniczonych do optymalizacji obsługi zakresów wejściowych 172
- 7.4.2. Tworzenie zakresów nieskończonych przy użyciu wartowników 173
- 7.5. Używanie zakresów do obliczania częstości pojawiania się słów 175
- Podsumowanie 178
Rozdział 8. Funkcyjne struktury danych 179
- 8.1. Niemutowalne listy łączone 180
- 8.1.1. Dodawanie i usuwanie elementów z początku listy 180
- 8.1.2. Dodawanie i usuwanie elementów z końca listy 181
- 8.1.3. Dodawanie i usuwanie elementów z wnętrza listy 182
- 8.1.4. Zarządzanie pamięcią 183
- 8.2. Niemutowalne struktury danych podobne do wektorów 185
- 8.2.1. Wyszukiwanie elementu w drzewie trie 187
- 8.2.2. Dołączanie elementów w drzewie trie 189
- 8.2.3. Aktualizacja elementów w drzewie trie 191
- 8.2.4. Usuwanie elementów z końca drzewa trie 192
- 8.2.5. Inne operacje i całkowita wydajność drzewa trie 192
- Podsumowanie 193
Rozdział 9. Algebraiczne typy danych i dopasowywanie do wzorców 195
- 9.1. Algebraiczne typy danych 196
- 9.1.1. Typy sumy uzyskiwane poprzez dziedziczenie 197
- 9.1.2. Typy sumy uzyskiwane dzięki uniom i typowi std::variant 200
- 9.1.3. Implementacja określonych stanów 204
- 9.1.4. Szczególny typ sumy: wartości opcjonalne 205
- 9.1.5. Użycie typów sumy w celu obsługi błędów 207
- 9.2. Modelowanie dziedziny za pomocą algebraicznych typów danych 212
- 9.2.1. Rozwiązanie najprostsze, które czasami jest niewystarczające 213
- 9.2.2. Rozwiązanie bardziej zaawansowane: podejście zstępujące 214
- 9.3. Lepsza obsługa algebraicznych typów danych za pomocą dopasowywania do wzorców 215
- 9.4. Zaawansowane dopasowywanie do wzorców za pomocą biblioteki Mach7 218
- Podsumowanie 219
Rozdział 10. Monady 221
- 10.1. Funktory pochodzące od nie Twojego rodzica 222
- 10.1.1. Obsługa wartości opcjonalnych 223
- 10.2. Monady: więcej możliwości dla funktorów 226
- 10.3. Proste przykłady 229
- 10.4. Składane zakresy i monady 231
- 10.5. Obsługa błędów 234
- 10.5.1. Typ std::optional
jako monada 234 - 10.5.2. Typ expected
jako monada 236 - 10.5.3. Monada Try 237
- 10.5.1. Typ std::optional
- 10.6. Obsługa stanu przy użyciu monad 238
- 10.7. Monada współbieżnościowa i kontynuacyjna 240
- 10.7.1. Typ future jako monada 242
- 10.7.2. Implementacja wartości przyszłych 244
- 10.8. Składanie monad 245
- Podsumowanie 247
Rozdział 11. Metaprogramowanie szablonów 249
- 11.1. Zarządzanie typami w czasie kompilacji 250
- 11.1.1. Debugowanie typów dedukowanych 252
- 11.1.2. Dopasowywanie do wzorców podczas kompilacji 254
- 11.1.3. Udostępnianie metainformacji o typach 257
- 11.2. Sprawdzanie właściwości typu w czasie kompilacji 258
- 11.3. Tworzenie funkcji rozwiniętych 261
- 11.3.1. Wywoływanie wszystkich obiektów wywoływalnych 263
- 11.4. Tworzenie języka dziedzinowego 265
- Podsumowanie 271
Rozdział 12. Projektowanie funkcyjne systemów współbieżnych 273
- 12.1. Model aktora: myślenie komponentowe 274
- 12.2. Tworzenie prostego źródła wiadomości 278
- 12.3. Modelowanie strumieni reaktywnych w postaci monad 281
- 12.3.1. Tworzenie ujścia w celu odbierania wiadomości 283
- 12.3.2. Transformowanie strumieni reaktywnych 286
- 12.3.3. Tworzenie strumienia z określonymi wartościami 288
- 12.3.4. Łączenie strumienia strumieni 289
- 12.4. Filtrowanie strumieni reaktywnych 290
- 12.5. Obsługa błędów w strumieniach reaktywnych 291
- 12.6. Odpowiadanie klientowi 293
- 12.7. Tworzenie aktorów ze stanem mutowalnym 297
- 12.8. Tworzenie systemów rozproszonych z użyciem aktorów 298
- Podsumowanie 299
Rozdział 13. Testowanie i debugowanie 301
- 13.1. Czy program, który się kompiluje, jest poprawny? 302
- 13.2. Testy jednostkowe i funkcje czyste 304
- 13.3. Testy generowane automatycznie 305
- 13.3.1. Generowanie przypadków testowych 306
- 13.3.2. Testowanie oparte na właściwościach 307
- 13.3.3. Testy porównawcze 309
- 13.4. Testowanie systemów współbieżnych opartych na monadach 311
- Podsumowanie 314
Skorowidz 315
- Tytuł: Programowanie funkcyjne w języku C++. Tworzenie lepszych aplikacji
- Autor: Ivan Čukić
- Tytuł oryginału: Functional Programming in C++: How to improve your C++ programs using functional techniques
- Tłumaczenie: Jacek Janusz
- ISBN: 978-83-283-4704-5, 9788328347045
- Data wydania: 2019-09-03
- Format: Ebook
- Identyfikator pozycji: profun
- Wydawca: Helion