Как прокачаться в проектировании программного обеспечения — список книг
В последнее время я часто провожу интервью по проектированию распределенных систем, про которое я подробнее рассказыва в отдельной статье. Часто финальным шагом такого интервью я даю рекомендации кандидату о том, что ему стоит изучить. В итоге, я понял, что хочу написать статью, в которой изложу эти рекомендации, а дальше буду просто давать ссылку на нее. И вот я наконец-то ее написал:) Для затравки прикладываю обложки всех рекомендованных книг на одном рисунке.
Сами книги я условно поделил на 3 категории, которые больше сфокусированы на отдельных вопросах
- что делаем
- как делаем
- как эксплуатируем
И начнем мы с вопроса
Евгений Ющук — Интернет разведка
Автор: Евгений Ющук
Название книги: Интернет разведка
Согласно расхожему мнению, человек, владеющий информацией, владеет миром. Интернет – гигантская информационная база современности, и необходимость освоения тонкостей работы в сети скоро станет насущной для всех – от специалистов по конкурентной разведке, до обычных пользователей.
Как найти нужную информацию? Как уберечься от хакеров и спрятать информацию на своем компьютере от посторонних? Как бороться с вирусами и вредоносными программами? В книге содержатся ответы на эти и многие иные вопросы.
HTML — скачать книги по изучению языка разметки, интернет технологии
На этой странице речь пойдет об основе основ о литературе по HTML, языке гипертекстовой разметки. HTML — это по сути строительный материал, именно из элементов гипертекста и состоит интернет. HTML основа для практически любого интернет документа или веб страницы!
Если вы хотите лучше понять принципы, и так сказать изнанку сети то данный сборник литературы именно то, что вам нужно.
«Архитектура компьютера». Эндрю Таненбаум
Книга посвящена структурной организации компьютера. В ее основе лежит идея о том, что компьютер можно рассматривать как иерархию уровней, каждый из которых выполняет определенную функцию. В рамках этого нетрадиционного подхода подробно описываются цифровой логический уровень, уровень архитектуры команд, уровень операционной системы и уровень языка ассемблера.
При этом «Архитектура компьютера» — первая книга из цикла работ Таненбаума о строении вычислительных устройств. После чтения этой книги все советуют читать «Компьютерные сети» и «Современные операционные системы», чтобы до конца понимать, как будет работать код, который вы напишете.
Современные операционные системы. Эндрю Таненбаум, Херберт Бос
Авторы дают много информации для понимания работы современных ОС. Она включает в себя данные о последних открытиях в сфере информационных технологий. Подробно рассказывается о новейшей ОС на момент написания книги (Windows 8.1). Есть большой раздел, посвященный Android. Много внимания обращено на мультиядерные и многоядерные системы, популярность и важность которых возросла в последние несколько лет. Есть глава, посвящённая виртуализации и вычислениям в облаке. Есть материал о вредоносных программах (вирусах) и средствах защиты от них (антивирусах).
Книга написана в развлекательной форме, что делает ее доступной для широкой аудитории.
Делитесь не попавшими в эту подборку книгами по компьютерной грамотности в комментариях!
Глава 1
Общие сведения о персональном компьютере
Итак, что же представляет собой типичный персональный компьютер? Об этом, а также о многом другом рассказывается в первой главе книги.
1.1. Из чего состоит типичный ПК?
Ключевым элементом каждого ПК является системный блок. Именно он обеспечивает обработку и хранение всех необходимых пользователю данных. Системный блок состоит из целого ряда отдельных элементов, вкупе представляющих собой единое целое. Мы не будем подробно рассматривать каждый из них, поскольку цель книги – научить человека пользоваться компьютером, а не рассказать о его устройстве. Только подчеркнем, что в любой ПК включает в себя:
• жесткий диск (по-простому – «винчестер»);
• оперативное запоминающее устройство (ОЗУ; по-простому – «оперативка»);
Все эти элементы расположены внутри корпуса; без любого из них в принципе невозможна эксплуатация компьютера. Однако в системном блоке могут присутствовать и иные устройства: факс-модем, ТВ-тюнер, сетевая карта, и др. – здесь уже многое зависит от того, какие задачи решаются с помощью данного компьютера. Например, для просмотра телевизионных передач необходимо наличие ТВ-тюнера, для работы в Интернете – модема, и т. д.
Для хранения данных в компьютере предназначен жесткий диск. Но для этого вы можете использовать (а зачастую это и удобнее) и внешние носители – дискеты (которые, признаться, уже доживают свой век), CD и DVD-диски, «флэшки», и т. п. ИХ использование возможно при наличии в системном блоке соответствующих устройства: для дискет – дисковода, для дисков – CD– или DVD-ROM, и т. д. Иногда бывает полезно пользоваться так называемым «съемным винчестером» – например, чтобы не оставлять в компьютере много ценных или секретных данных, к которым не должны иметь доступ посторонние лица.
Помимо системного блока, компьютер включает в себя еще ряд необходимых технических средств – таких, как монитор, клавиатура, мышь и принтер.
Монитор по своему внешнему виду напоминает обычный телевизор. На его экран выводится результат протекающих в системном блоке процессов. Сегодня на рынке предлагается широкий ассортимент любых мониторов – как с электронно-лучевой трубкой – век которых, впрочем, уже заканчивается, так и жидкокристаллических. О том, как выбрать себе подходящий монитор и протестировать его, мы еще поговорим ниже.
Совет. Учтите, что выбор монитора – очень ответственный процесс. Постарайтесь перед этим получить консультацию специалистов либо хотя бы более опытных пользователей. Грамотный выбор монитора имеет важное значение для здоровья (в первую очередь глаз), а также для комфорта, поэтому данный вопрос заслуживает самого пристального внимания. Очень нежелательно покупать мониторы, уже побывавшие в употреблении.
Клавиатура представляет собой устройство, которое используется для ввода и вывода информации. Попросту говоря, с помощью клавиатуры пользователь задает команды компьютеру на выполнение тех или иных заданий (операций). Работать с клавиатурой просто даже новичкам; единственные сложности на начальных этапах связаны с тем, чтобы запомнить расположение клавиш и, соответственно – быстро найти требуемый символ.
Функции, которые выполняет компьютерный манипулятор «мышь», во многом сходны с функциями клавиатуры: в первую очередь это ввод и вывод информации. Кроме этого, целый ряд действий удобнее выполнять именно с помощью мыши.
Ключевыми элементами мыши являются ее кнопки. Левая кнопка предназначена для выполнения большинства наиболее распространенных действий (вызов пунктов меню, выделение текстовых фрагментов, и др.); что касается правой кнопки, то обычно с ее помощью вызываются команды контекстного меню.
Клавиатуры и мыши также широко представлены на рынке. Здесь и беспроводные, и оптические, и еще целый ряд разных моделей и вариантов исполнения. Выбирая клавиатуру и мышь, в первую очередь руководствуйтесь соображениями практичности – иначе вы рискуете потратить деньги за совершенно лишние «навороты».
Принтер – это печатающее устройство, с помощью которого отображающиеся на экране монитора данные выводятся на бумажный носитель. Принтер соединяется с компьютером так же, как монитор, клавиатура и мышь – с помощью кабеля, вставляемого в порт на задней панели системного блока. Сегодня на российском рынке представлены принтеры трех видов: матричные, струйные и лазерные.
Несомненный плюс матричных принтеров – это их относительно небольшая стоимость и простота в обслуживании. Главный недостаток – это издаваемый при печати шум, который часто становится причиной серьезного дискомфорта (особенно если в одном помещении эксплуатируется несколько матричных принтеров).
Струйные принтеры также отличаются невысокой стоимостью, но при этом они по сравнению со своими матричными «собратьями» отличаются лучшим качеством печати. Главный недостаток струйных принтеров – неоправданная дороговизна в обслуживании (цена нового картриджа иногда составляет более половины стоимости всего принтера).
Наиболее «современными» в наши дни принтерами являются лазерные. Они дешевле матричных и струйных, а качество печати лучше, причем цена технического обслуживания (в частности, заправки картриджа) вполне разумна.
Итак, с самыми важными элементами современного компьютера мы уже более-менее знакомы. Однако существуют также технические устройства, не являющиеся «жизненно важными», но необходимые для некоторых операций. Наиболее характерный пример – модем.
Это устройство предназначено для соединения компьютера с Интернетом. Модемы могут быть встроенными (то есть расположенными внутри системного блока), так и внешними, выполненными в виде отдельного устройства, подключаемого к компьютеру через кабель. Чтобы связь с Всемирной Паутиной была возможной, необходимо настроить подключение к Интернету (об этом мы поговорим ниже). Модем выполняет получение и отправку данных через Интернет.
Чтобы оперативно перенести информацию с бумажного носителя в компьютер, используется специальный прибор – сканер. Он позволяет не вводить с клавиатуры напечатанный на бумаге текст, и тем самым экономит массу времени. Кроме этого, возможности сканера дают возможность создать и распечатать документ, формирование которого традиционным способом нереально либо нецелесообразно.
1.2. Основные технические характеристики компьютера
Основными техническими характеристиками компьютера являются: объем жесткого диска, тактовая частота процессора и объем оперативной памяти. Конечно, это еще далеко не все параметры, имеющиеся у ПК, и свои показатели существуют, например, у модема, видеокарты, звуковой карты, и т. д. Однако именно эти три характеристики дают наиболее полное представление о конкретном компьютере, его быстродействии и способности удовлетворить потребности пользователя. Кратко рассмотрим каждый из них.
Что представляет собой объем жесткого диска, догадаться несложно: этот показатель характеризует емкость винчестера, и исходя из этого можно определить, сколько и какой информации можно хранить и обрабатывать на компьютере. Для работы большинства пользователей вполне подойдет жесткий диск, способный вместить от 80 до 160 Гб информации.
Тактовая частота процессора также имеет большое значение. Наряду с объемом оперативной памяти, этот показатель непосредственно влияет на быстродействие компьютера. Если вы не собираетесь играть на компьютере в мощные современные игры, заниматься сложной обработкой музыкальных файлов, видео, графики и т. п., то вам будет вполне достаточно частоты процессора 1,5–2 ГГц.
Но даже если на вашем компьютере используется винчестер большого объема и мощный процессор, а оперативной памяти недостаточно – возникнут проблемы с быстродействием. Средний объем ОЗУ, который вполне удовлетворит большинство пользователей – 1024 Мб.
Примечание. Приведенные здесь рекомендации являются условными и «усредненными»: кому-то нужен более мощный компьютер, а кто-то вполне удовлетворен вдвойне меньшими характеристиками. Многое зависит от того, для решения каких задач используется компьютер.
1.3. Основные правила работы на компьютере
Правила работы на персональном компьютере сформировались уже давно на основе многолетнего опыта эксплуатации ПК. Их должен знать каждый пользователь: это необходимо и для защиты компьютера от неприятностей, и для сохранности находящейся в нем информации.
1. На ПК надо обязательно установить надежную антивирусную программу. Даже если вы не пользуетесь Всемирной Паутиной, подцепить вирус всегда можно с чужого CD– или DVD-диска, из локальной сети, и т. д. Время от времени нужно полностью проверять компьютер на предмет обнаружения вредоносных программ.
2. Если вы выходите в Интернет, обязательно защищайте компьютер сетевым экраном (наверняка многие слышали такое слово – «файрволл»). Самый распространенный браузер Internet Explorer от компании Microsoft защищен штатным брандмауэром, но даже не самые «продвинутые» хакеры давно нашли в нем лазейки. Поэтому применяйте более надежную защиту (например, неплохой файрволл – Zone Alarm, причем он имеет и бесплатную версию, которую можно скачать из Сети).
3. Не экспериментируйте с содержимым системного блока. Если вам нужно как-то изменить конфигурацию компьютера – воспользуйтесь услугами профессионалов (либо, в крайнем случае, хотя бы получите у них исчерпывающую консультацию).
4. Обеспечьте стабильное бесперебойное электропитание. Учтите, что качество российской электроэнергии является далеко не самым лучшим (это наследство СССР – подобная проблема имеется во всех странах бывшего Союза), поэтому компьютер должен быть защищен от скачков напряжения, неожиданного отключения электроэнергии, и т. п. Сетевой фильтр необходимо приобрести в любом случае, а еще лучше – не пожалеть денег и купить источник бесперебойного питания.
5. Если компьютер сколько-то времени находился на холоде, то не включайте его сразу после того, как он оказался в теплом месте, а обязательно дайте ему постоять хотя бы 1,5–2 часа.
6. Не устанавливайте ПК там, где он может перегреться (возле батарей отопления, в зоне попадания прямых солнечных лучей, и т. п.).
7. Никогда не запускайте неожиданно возникшие на рабочем столе и незнакомые вам значки и ярлыки (о том, что такое рабочий стол, значок и ярлык мы поговорим ниже) – таким нехитрым способом часто распространяются вредоносные программы. Если вы обнаружили у себя нечто подобное – немедленно просканируйте компьютер хорошим антивирусом (обязательно – с обновленными и свежими антивирусными базами).
8. Отслеживайте температурный режим работы компонентов ПК. Все штатные вентиляторы должны работать, при выходе из строя какого-то из них его следует быстро починить или заменить исправным. Наблюдать за температурным режимом можно с помощью специальных утилит, которые можно найти в Интернете.
9. Старайтесь минимизировать попадание пыли в системный блок. Не все знают, что она может стать причиной перегрева компонентов компьютера, исчезновения контактов и иных подобных неполадок. Старайтесь не ставить системный блок на пол, так как на полу всегда много пыли. Время от времени (например, раз в полгода) чистите системный блок и удаляйте из него накопившийся мусор (для этого можно использовать пылесос).
10. Любой сеанс работы завершайте корректно, с использованием штатного режима завершения работы (об этом мы поговорим в следующем разделе).
Соблюдение перечисленных правил позволит существенно продлить жизнь вашему компьютеру и намного повысит его надежность.
1.4. Как правильно включать, выключать и перезагружать компьютер
Даже такие, на первый взгляд – несложные операции, как включение, выключение и перезагрузка компьютера, требуют от пользователя определенных знаний.
Например, включение компьютера (осуществляется нажатием соответствующей кнопки). Не все новички знают, что перед тем как это сделать, необходимо подключить к системному блоку все используемые устройства: монитор, мышь, клавиатуру, и др. Дело в том, что их распознавание компьютером происходит в процессе загрузки операционной системы. Поэтому, если вы вначале включите компьютер, и только после этого – подсоедините к нему мышь или клавиатуру, они могут остаться не распознанными, следовательно – их использование будет невозможным (вернее, придется перезагружаться).
Еще раз напомним, что категорически не рекомендуется включать компьютер в электрическую сеть напрямую, без «буфера» в виде сетевого фильтра или источника бесперебойного питания. Иначе малейший скачок напряжения приведет к поломке компьютера: может выйти из строя материнская плата, блок питания, и т. д. Как правило, ремонт в подобных случаях стоит немалых денег. Кроме этого, вы рискуете потерять данные.
Выключать компьютер нужно обязательно с использованием соответствующего штатного режима, предварительно закрыв все работающие программы и открытые документы. В меню Пуск нужно выбрать команду Выключение – в результате откроется окно, изображенное на рис. 1.1.
Рис. 1.1. Выключение системы
В данном окне нажмите кнопку Выключение и дождитесь завершения работы системы. Никаких кнопок после этого нажимать не нужно – компьютер выключится автоматически.
Необходимость перезагрузки компьютера возникает при установке или удалении некоторых программ, при возникновении проблем с быстродействием (попросту говоря, при «зависании»), а также в некоторых иных случаях. Перезагрузка осуществляется так же, как и выключение компьютера – с той разницей, что в окне (см. рис. 1.1) нужно нажимать кнопку не Выключение, а Перезагрузка.
Однако иногда компьютер зависает настолько, что даже меню Пуск не открывается. В этом случае перезагрузка инициируется нажатием специально предназначенной для этого кнопки, которая находится на системном блоке (на ней может быть надпись Reset).
UML и объектно-ориентированный анализ
Буч Градди Объектно-ориентированный анализ и проектирование с примерами приложений, 3-е изд. / Буч Градди, Максимчук Роберт А., Энгл Майкл У., Янг Бобби Дж., Коналлен Джим, Хьюстон Келли А.: Пер с англ. — М.: ООО «И.Д. Вильямс», 2010. — 720 с. |
Классическая книга по программированию от очень авторитетного автора. В книге есть множество интересных и важных для программиста вещей, но они обильно разбавлены рассуждениями на отвлеченные темы и, на мой взгляд, очень неудачными примерами про теплицы. Во второй вам расскажут про общие принципы ООП; в третьей главе — дополнят некоторыми обозначениями UML и интересным разделом про качество классов и объектов; в четвертой — рассматриваются различные подходы к классификации и уточнению абстракций. Пятая глава книги содержит описание 13 видов UML диаграмм, но на мой взгляд Буч выбрал не самые лучшие примеры и недостаточно времени уделил описанию назначения этих диаграмм. Шестая глава содержит описание процесса разработки программного обеспечения, при этом выделяются макропроцесс (жизненный цикл проекта) и микропроцесс (проектирование) — для них описываются стадии с видами деятельности на каждой из них. Седьмая глава завершает изложение очень коротким описанием организационных вопросов. Вторую половину книги составляют примеры приложений (можно посмотреть в каком порядке Буч предлагает их проектировать и какие виды диаграмм использовать).
Все главы кроме пятой очень обзорные — в них нет смысла вчитываться, по этим темам написаны отдельные толстые книги. Например, про качество ПО в нескольких книгах рассуждает Роберт Мартин, а про проектирование ПО (микропроцесс) написал отдельную книгу Розенберг — при этом он использует другой подход (ICONIX). Очень часто долгие рассуждения Буча касаются очевидных вещей и как бы вы не вчитывались — не получится узнать что-то новое, поэтому я считаю, что книгу достаточно бегло просмотреть. Наиболее полезные, на мой взгляд, части книги:
- описание элементов объектной модели во второй главе;
- большая часть третьей главы, посвященная основам ООП;
- описание UML в пятой главе;
- по диагонали можно прочитать шестую главу и просмотреть несколько примеров из приложения.
Книга посвящена разработке программного обеспечения в соответствии с процессом ICONIX, поэтому несмотря на то, что в названии фигурирует UML — рассматриваются всего 4 вида диаграмм (прецедентов, пригодности, последовательности и классов). Диаграмма пригодности не описана во многих других книгах по UML, т.к. в стандарте UML она описана в дополнении. В книге не только описываются сами диаграммы, но и процесс разработки ICONIX, который является итеративным, что оказывает влияние на процесс построения диаграмм. Каждому виду диаграммы посвящена отдельная глава, в конце которой приводится топ 10 ошибок — это тоже очень полезная и интересная часть. Книга в 7 раз тоньше произведения Буча, а полезной информации, на мой взгляд, в ней больше.
Буч Г., Рамбо Д., Джекобсон А. Язык UML Руководство пользователя — С-П.: Издательство «Питер», 2010 — 432 с. |
Долгое время единственной действительно хорошей книгой, посвященной объектно-ориентированному анализу и проектированию, была книга Буча, в которой рассматривалась его нотация. Основываясь на ней, конечно же, можно было понять UML, но почему-то лишь немногие были на это способны. В тоже самое время, иногда появлялись какие-то журнальные статьи, в которых упоминался UML. Обычно эти статьи не отличались подробностью и просто пересказывали то, что когда-то услышал автор по этой теме. Вообще, это происходит потому, что практикующие пользователи UML редко когда пишут статьи.
Практически каждый программист слышал словосочетание Rational Rose, но обычно плохо себе представляет что это такое. Мало того, традиционна следующая ситуация: программист что-то услышал о программном продукте, с радостью его установил себе на компьютер (давайте не будем уточнять, как он достал себе копию), запустил программу… а она оказалась совсем не похожей на WinWord. Т.е., как нарисовать стрелку ясно, а что за ней стоит и как это потом использовать — непонятно.
Надо сказать, что использование CASE продуктов подразумевает наличие хотя бы базовых знаний об используемой технологии. Я сомневаюсь, что человек, основываясь на одном лишь здравом смысле, сможет понять зачем нужна Rational Rose. По крайней мере потому, что там используется специфическая терминология для выбранной нотации.
Так вот, эта книга, является одной из трех книг, написанных создателями UML. Это полное изложение UML, позволяющее читателю изучить его и приступить к практическому использованию. В книге не рассматриваются принципы объектно-ориентированного анализа, поэтому от читателя потребуется знакомство с ним (например, по соседней книге Буча).
Поэтому, если вы уже применяете UML достаточно долгое время, то «Руководство пользователя» вряд ли будет для вас обладать какой-то особенной ценностью, но если вы хотите овладеть им — нверное, это то что нужно.
Итог:
Книга, несомненно, достойна того, что бы ее прочитали хотя бы для ознакомления с нотацией. Она не является основополагающей, как «Объектно-ориентированный анализ и проектирование» Гради Буча, но все равно достаточно интересна.