Andere - Programmierung

577
E-book

Złożone zagadnienia architektury oprogramowania. Jak analizować kompromisy i podejmować trudne decyzje

Neal Ford, Mark Richards, Pramod Sadalage, Zhamak Dehghani

W epoce infrastruktur chmurowych, mikrousług czy wysublimowanych wzorców projektowych architekt oprogramowania musi sobie radzić z trudnym zadaniem, jakim jest wybór odpowiednich rozwiązań. Będą one potem szczegółowo testowane podczas pracy w środowisku produkcyjnym, a także przy późniejszym dostosowywaniu i rozbudowywaniu oprogramowania. Tymczasem w wypadku architektury złożonych systemów nie ma łatwych kompromisów. Konieczne jest bardzo wnikliwe i krytyczne przemyślenie każdej decyzji projektowej, i to na możliwie najwcześniejszym etapie pracy. Ta książka powinna zostać przestudiowana przez każdego architekta nowoczesnych systemów rozproszonych. Jej celem jest pokazanie sposobów rozwiązywania trudnych problemów związanych z projektowaniem takiego oprogramowania. W krytyczny i wszechstronny sposób omówiono w niej najważniejsze problemy utrudniające podejmowanie dobrych decyzji projektowych. Zaprezentowano najskuteczniejsze strategie doboru optymalnej architektury. Na jasnych przykładach pokazano, w jaki sposób należy przystąpić do analizy założeń projektowych ― począwszy od określenia "ziarnistości" usług, przepływów informacji i orkiestracji, poprzez eliminację sprzężenia kontraktów i określenie nadzoru nad transakcjami rozproszonymi, a skończywszy na metodach optymalizowania właściwości operacyjnych, takich jak skalowalność, elastyczność i wydajność. Najciekawsze zagadnienia: analiza kompromisów i dokumentowanie decyzji podejmowanie decyzji dotyczących "ziarnistości" usług złożoność procesu przekształcania aplikacji monolitycznych eliminacja sprzężeń kontraktów wiążących usługi obsługa danych w architekturze o dużym stopniu rozproszenia wzorce zarządzania przepływami informacji i transakcjami Architekt musi być prorokiem... Frank Lloyd Wright

578
E-book

Zrozum struktury danych. Algorytmy i praca na danych w Javie

Allen B. Downey

Niezależnie od tego, jakim językiem programowania się posługujesz, nie staniesz się dobrym programistą ani nawet przeciętnym informatykiem, jeśli nie przyswoisz sobie najważniejszych idei inżynierii oprogramowania: algorytmów i struktur danych. Nie są to zagadnienia proste i z pewnością niejednego studenta informatyki kosztowały wiele zarwanych nocy. Niestety, istniejące na rynku książki dotyczące tych zagadnień nie ułatwiają nauki. Najczęściej są przeładowane matematycznymi wywodami, zbyt teoretyczne, zbyt opasłe i... zbyt oderwane od konkretnych zastosowań! Jeśli postanowiłeś zyskać praktyczną wiedzę o algorytmach i strukturach danych, a przy tym nieźle posługujesz się Javą, to trzymasz w rękach właściwą poublikację. Podstawy teoretyczne zostały w niej ograniczone do niezbędnych, potrzebnych w praktyce zagadnień. Sporo miejsca poświęcono analizie implementacji algorytmów i mierzeniu ich wydajności. Wyczerpująco wyjaśniono tak ważne aspekty praktyki inżynierii oprogramowania, jak kontrola wersji i testy jednostkowe. Mimo niewielkiej objętości książki znalazły się tu również ambitniejsze zagadnienia, np. trwałe struktury danych tworzone przez bazy danych Redis. W każdym rozdziale zamieszczono praktyczne ćwiczenia wraz z odpowiednim kodem testującym. W tej książce między innymi: Wprowadzenie do interfejsów Javy Analiza algorytmów Binarne drzewo przeszukiwania Wyszukiwanie logiczne Sortowanie Myśl jak informatyk i zrozum algorytmy!

579
E-book

Zrozumieć oprogramowanie. O prostocie kodu i doskonaleniu warsztatu programisty

Max Kanat-Alexander

W codziennej praktyce programiści często muszą sobie radzić z coraz większą złożonością tworzonego kodu. Mnożą się błędy, a ryzyko spektakularnej porażki rośnie. Jeśli ten scenariusz dotyczy także Ciebie, poziom złożoności Twoich projektów Cię przytłacza i czujesz, że nie dajesz rady, już teraz wdróż fundamentalne reguły, dzięki którym Twój kod odzyska prostotę i niezawodność! Jeśli każdy dzień z nowym projektem Cię rozczarowuje i przestałeś wierzyć w swoje możliwości, sięgnij po tę książkę! Max Kanat-Alexander, odpowiedzialny za dział Code Health w Google, w tym świetnym zbiorze esejów dzieli się mnóstwem trafnych spostrzeżeń dotyczących zasad programowania, złożoności kodu, pracy zespołowej i filozofii projektowania aplikacji. W książce pokazano bardzo różnorodne zagadnienia, od pisania prostego kodu aż po jego debugowanie i pogłębioną analizę. Dowiesz się także, jaka postawa charakteryzuje naprawdę dobrego programistę. Świeżość spojrzenia i znakomity styl autora sprawią, że tę książkę przeczytasz z przyjemnością. Wiedza techniczna i poziom ekspertyzy przyniosły mu status guru kodu, a jego pomysły zainspirują Cię i odświeżą Twoje podejście do wyzwań związanych z byciem deweloperem. Odzyskaj radość ze swojej pracy i zapomnij o porażkach! Ta książka skłoni Cię do przemyśleń: dlaczego prostota i precyzja są najważniejsze w tworzeniu kodu czym jest mistrzowskie programowanie jak poradzić sobie ze złożonością oprogramowania skąd się biorą porażki programistów i jak ich unikać jak się ma prostota do bezpieczeństwa aplikacji czym są błędy i jak należy rozumieć debugowanie Złożoność jest głupia. Prostota jest mądra.

580
E-book

Zrównoważony kod. Dobre praktyki i heurystyki dla inżynierów oprogramowania

Mark Seemann

Wielu zdolnych programistów uczestniczy w nieefektywnych, źle prowadzonych projektach. Inni muszą utrzymywać kod, który właściwie nigdy nie powinien ujrzeć światła dziennego. Źródeł tego rodzaju trudności jest wiele: programowanie samo w sobie jest niełatwym zagadnieniem, a tworzenie funkcjonalnych aplikacji najczęściej wymaga współdziałania wielu osób. Sprawia to, że kod budujący aplikację szybko zwiększa swoją złożoność, staje się niezrozumiały i bardzo trudny w utrzymaniu. Na szczęście te problemy zostały dostrzeżone i obecnie mamy wiele sposobów ich rozwiązywania. Ta książka jest przeznaczona dla doświadczonych programistów, którzy chcą zdobyć lub pogłębić wiedzę o metodologiach i dobrych praktykach tworzenia złożonego oprogramowania. Stanowi interesująco napisany zbiór heurystyk i technik ułożonych w kolejności stosowania podczas rozwijania projektu programistycznego. Omówiono tu między innymi listy kontrolne, TDD, rozdzielenie poleceń i zapytań, Git, złożoność cyklomatyczną, przezroczystość referencyjną, wycinki pionowe, refaktoryzację zastanego kodu czy programowanie typu outside-in. Pokazano również, jak utrzymać właściwe tempo pracy podczas dodawania funkcjonalności, jak rozwiązywać problemy optymalizacji, enkapsulacji, a także projektowania API i testów jednostkowych. Poszczególne zagadnienia zostały zilustrowane kodem przykładowego projektu napisanego w C#, zrozumiałego dla każdego, kto zna dowolny język zorientowany obiektowo. Dzięki książce zrozumiesz, jak: wybierać sprawdzone procesy tworzyć listy kontrolne ułatwiające polepszenie wyników unikać "paraliżu analitycznego" przeciwdziałać degradacji kodu i niepotrzebnej złożoności stosować lepsze techniki modyfikacji kodu i rozwiązywania problemów skuteczniej godzić wymogi wydajności i bezpieczeństwa Celem nie jest pisanie kodu. Celem jest funkcjonalne oprogramowanie!