Чистая архитектура. Искусство разработки программного обеспечения - Роберт Мартин

- Автор: Роберт Мартин
- Серия: Библиотека программиста (Питер)
- Жанр: зарубежная компьютерная литература, программирование
- Размещение: фрагмент
- Теги: архитектура информационных систем, искусство программирования, разработка программного обеспечения, технологии разработки программного обеспечения, технология программирования
- Год: 2018
Чистая архитектура. Искусство разработки программного обеспечения
Поспешай не торопясь.
Роберт С. Мартин
Получайте удовольствие от путешествия.
Кевлин Хенни
май, 2017
От издательства
Ваши замечания, предложения, вопросы отправляйте по адресу comp@piter. com (издательство «Питер», компьютерная редакция).
Мы будем рады узнать ваше мнение!
На веб-сайте издательства www. piter. com вы найдете подробную информацию о наших книгах.
Вступление
Эта книга называется «Чистая архитектура». Смелое название. Кто-то посчитает его самонадеянным. Почему я решил написать эту книгу и выбрал такое название?
Свою первую строку кода я написал в 1964 году, в 12 лет. Сейчас на календаре 2016-й, то есть я пишу код уже больше полувека. За это время я кое-что узнал о структурировании программных систем, и мои знания, как мне кажется, многие посчитали бы ценными.
Я приобрел эти знания, создав множество систем, больших и маленьких. Я создавал маленькие встраиваемые системы и большие системы пакетной обработки, системы реального времени и веб-системы, консольные приложения, приложения с графическим интерфейсом, приложения управления процессами, игры, системы учета, телекоммуникационные системы, инструменты для проектирования, графические редакторы и многое, многое другое.
Я писал однопоточные и многопоточные приложения, приложения с несколькими тяжеловесными процессами и приложения с большим количеством легковесных процессов, многопроцессорные приложения, приложения баз данных, приложения для математических вычислений и вычислительной геометрии и многие, многие другие.
Я написал очень много приложений, я создал очень много систем. И благодаря накопленному опыту я пришел к потрясающему выводу:
Все архитектуры подчиняются одним и тем же правилам!
Потрясающему, потому что все системы, в создании которых я участвовал, радикально отличались друг от друга. Почему архитектуры таких разных систем подчиняются одним и тем же правилам? Я пришел к выводу, что правила создания архитектур не зависят от любых других переменных.
Этот вывод кажется еще более потрясающим, если вспомнить, как изменились компьютеры за те же полвека. Я начинал программировать на машинах размером с холодильник, имевших процессоры с тактовой частотой в полмегагерца, 4 Кбайт оперативной памяти, 32 Кбайт дисковой памяти и интерфейс телетайпа со скоростью передачи данных 10 символов в секунду. Это вступление я написал в автобусе, путешествуя по Южной Африке. Я использовал MacBook, оснащенный процессором i7 с четырьмя ядрами, каждое из которых действует на тактовой частоте 2, 8 ГГц, имеющий 16 Гбайт оперативной памяти, 1 Тбайт дисковой памяти (на устройстве SSD) и дисплей с матрицей 2880? 1800, способный отображать высококачественное видео. Разница в вычислительной мощности умопомрачительная. Любой анализ покажет, что этот MacBook по меньшей мере в 1022 раз мощнее ранних компьютеров, на которых я начинал полвека назад.
Двадцать два порядка – очень большое число. Это число ангстремов от Земли до альфы Центавра. Это количество электронов в мелких монетах в вашем кармане или кошельке. И еще это число описывает, во сколько раз (как минимум) увеличилась вычислительная мощность компьютеров на моем веку.
А как влиял рост вычислительной мощности на программы, которые мне приходилось писать? Определенно они стали больше. Раньше я думал, что 2000 строк – это большая программа. В конце концов, такая программа занимала полную коробку перфокарт и весила 4, 5 килограмма. Однако теперь программа считается по-настоящему большой, только если объем кода превысит 100 000 строк.
Программное обеспечение также стало значительно более производительным. Сегодня мы можем быстро выполнять такие вычисления, о которых и не мечтали в 1960-х. В произведениях The Forbin Project [2 - Фильм, вышедший в США в 1970 году, в нашей стране известный под названием «Колосс: Проект Форбина». – Примеч. пер. ], The Moon Is a Harsh Mistress [3 - «Луна жестко стелет», роман Роберта Хайнлайна. – Примеч. пер. ] и 2001: A Space Odyssey [4 - Фильм, вышедший в 1968 году, в нашей стране известный под названием «2001 год: Космическая одиссея». – Примеч. пер. ] была сделана попытка изобразить наше текущее будущее, но их авторы серьезно промахнулись. Все они изображали огромные машины, обладающие чувствами. В действительности мы имеем невероятно маленькие машины, которые все же остаются машинами.
И еще одно важное сходство современного программного обеспечения и прошлого программного обеспечения: и то и другое сделано из того же материала. Оно состоит из инструкций if, инструкций присваивания и циклов while.
Да, вы можете возразить, заявив, что современные языки программирования намного лучше и поддерживают превосходящие парадигмы. В конце концов, мы программируем на Java, C# или Ruby и используем объектно-ориентированную парадигму. И все же программный код до сих пор состоит из последовательностей операций, условных инструкций и итераций, как в 1950-х и 1960-х годах.
Внимательно рассмотрев практику программирования компьютеров, вы заметите, что очень немногое изменилось за 50 лет. Языки стали немного лучше. Инструменты стали фантастически лучше. Но основные строительные блоки компьютерных программ остались прежними.
Если взять программиста из 1966 года, переместить ее [5 - Именно «ее», потому что в те годы программистами были в основном женщины. ] в 2016-й, посадить за мой MacBook, запустить IntelliJ и показать ей Java, ей потребовались бы лишь сутки, чтобы оправиться от шока. А затем она смогла бы писать современные программы. Язык Java не сильно отличается от C или даже от Fortran.
И если вас переместить обратно в 1966-й год и показать, как писать и править код на PDP-8, пробивая перфокарты на телетайпе, поддерживающем скорость 10 символов в секунду, вам также могут понадобиться сутки, чтобы оправиться от разочарования. Но потом и вы смогли бы писать код. Сам код мало бы изменился при этом.
В этом весь секрет: неизменность принципов программирования – вот причина общности правил построения программных архитектур для систем самых разных типов. Правила определяют последовательность и порядок компоновки программ из строительных блоков. И поскольку сами строительные блоки являются универсальными и не изменились с течением времени, правила их компоновки также являются универсальными и постоянными.
Начинающие программисты могут подумать, что все это чепуха, что в наши дни все совсем иначе и лучше, что правила прошлого остались в прошлом. Если они действительно так думают, они, к сожалению, сильно ошибаются. Правила не изменились. Несмотря на появление новых языков, фреймворков и парадигм, правила остались теми же, как во времена, когда в 1946-м Алан Тьюринг написал первый программный код.
Изменилось только одно: тогда, в прошлом, мы не знали этих правил. Поэтому нарушали их снова и снова. Теперь, с полувековым опытом за плечами, мы знаем и понимаем правила.
Читать похожие на «Чистая архитектура. Искусство разработки программного обеспечения» книги

Это увлекательное руководство для тех, кто только начинает путь в индустрии игрового дизайна и хочет узнать, чем занимается «игродел» в широком смысле этого слова. Авторы познакомят вас со всеми внутренними процессами разработки игр и поделятся своим богатым опытом. Вы узнаете, как создаются и продвигаются игры, что они собой представляют и кто стоит за творческим процессом. Книга расскажет, в каком состоянии сейчас находится индустрия гейм-дизайна, какие в ней есть профессии и на какие

В книге описывается около 100 объектов самой неоцененной эпохи советской архитектуры. Это первый путеводитель по Москве, который рассматривает как целостное явление архитектуру тридцатилетия от Хрущёва до Горбачёва – от наивного модернизма оттепели до постмодернизма, включая Дворец пионеров, Останкинскую телебашню, кинотеатр «Россия», здание ТАСС, «золотые мозги» Академии наук, а также менее известные проекты, например, «Дом нового быта» или музей АЗЛК. Авторы предлагают увидеть эти

Задумались ли вы, как много можно узнать о европейской истории и развитии архитектуры, просто прогуливаясь по улицам Парижа? Перестроенный с нуля, сегодняшний Париж – результат масштабного эксперимента второй половины XIX века. Лучше всех об этом сможет поведать архитектурный гид и автор телеграм-канала «А как там в Париже?», специалист по творчеству Ле Корбюзье, Мария Троицкая. Прочитав эту книгу, вы не только начнете разбираться в архитектурных стилях, но и узнаете, какие процессы в обществе

В этом путеводителе нет ни Эрмитажа, ни Петергофа – авторы приглашают вас в Ленинград. Но Петербург в этой книге тоже есть, потому что именно он определил характер ленинградского модернизма. Модернизм был здесь не отторжением традиции, а рефлексией по ее поводу. Это модернизм традиционализма – не «воинственный», но диалогичный – чем и интересен. В эпоху космоса и джаза ленинградские зодчие продолжали мыслить ансамблями, а не отдельными объектами, что тогда казалось архаикой, но именно такой

Книга историков архитектуры Елены Овсянниковой и Николая Васильева посвящена жилому комплексу, широко известному как Дом Наркомфина, примечательному своим архитектурным решением.

Это саммари – сокращенная версия книги «Ловушка разработки. Как эффективный продакт-менеджмент создает реальную ценность» Мелиссы Перри. Только самые ценные мысли, идеи, кейсы, примеры. Эффективный продакт-менеджер – человек, который руководит командой, создающей продукты – инновационные, сложные, поражающие воображение пользователей. Он придумывает функционал, ставит задачи перед дизайнерами и разработчиками. Это так… но не совсем. Потому что с таким подходом продуктовые команды часто попадают

Архитектуру называют музыкой, застывшей в камне. Сколько же архитектурных «жанров» накопила цивилизация? Архитектура Древней Греции, готика, рококо, хай-тек: изучая архитектуру, мы узнаем историю. Эта книга поможет читателю разобраться в архитектурных стилях от ранних цивилизаций до современного периода. Издание призвано рассказать простым языком о точной и красивой науке, восполнить возможные пробелы в знаниях и побудить читателя на более глубокое изучение предмета.

«В этой книге я возьму вас в путешествие по мозгу в хронологическом порядке его развития. Путешествие, которое начинается в момент, когда женщина беременеет. Что происходит у нее в голове? Действительно ли во время беременности глупеют или это просто миф? Проявляют ли новорожденные склонность к социальному взаимодействию? Отцы тоже испытывают симптомы беременности? И если да, то как это работает? Станет ли ребенок умнее от прослушивания классической музыки? Почему по-прежнему важно уметь писать

Архитектура – это декорации, в которых разворачивается история человечества. Она чутко откликается на изменения, происходящие в обществе, науке и искусстве. Архитектурный критик Мария Элькина написала книгу, которая за несколько вечеров даст читателю представление об архитектуре от истоков цивилизации до наших дней. Автор делится наблюдениями, расширяя восприятие этой важнейшей сферы, сочетающей в себе функциональность и красоту, социальное и эстетическое, уникальное и безликое. Откуда берутся

Из-за глупого стечения обстоятельств я, Кира Иванова, студентка 4 курса, осталась без практики в крупной компании и подработки одновременно. Остро нуждаясь в деньгах, я согласилась пусть и на сомнительное, но все же выгодное предложение стать уборщицей в доме богатого человека. По правилам я бы никогда не встретила владельца квартиры, в которой усердно начищала до блеска полы, если бы вновь не случайность, перевернувшая не только мою жизнь, но и изменившая чужую судьбу. Но обо всем по порядку.