Советы и лайфхаки

Учебники по программированию для начинающих – Книги об основах программирования | ForCoder

Содержание

Учебник по основам программирования для новичков

×

Правила и Условия


На форуме отсутствует предварительная фильтрация отправляемых тем и сообщений. Как только Вы отправляете сообщение — оно появляется на форуме. Администрация форума не несёт никакой ответственности за содержание сообщений. Ответственность за содержание сообщения несёт только его автор.

Предложения по организации форума отправляйте на адрес администратора.

На форуме запрещено:

  • отправка сообщений не по содержанию форума/темы, оскорбление и угрозы в адрес участников конференции, пропаганда расовой, национальной и религиозной вражды;
  • реклама и самореклама;
  • ненормативная лексика, сексуальные домогательства и т.д.

Нарушители правил будут строго наказаны модераторами или администратором форума и им будет полностью закрыт доступ на форум.

Используя этот форум Вы можете:

  • увеличивать статус по мере увеличения количества Ваших сообщений на форуме;
  • также Вы можете редактировать или удалять собственные сообщения, подписываться на получение ответов с любой созданной на форуме теме на свой e-mail адрес, закрывать свою тему;
  • получать информацию об обновлениях.

Администрация форума, оставляет за собой право удаления непристойных сообщений и тем.


iguania.ru

Что читать айтишнику. Книги по программированию | GeekBrains

Краткий обзор главных книг общей тематики.

Как известно, одна из основополагающих заповедей успешного программиста – никогда не прекращать обучение, что неизменно связано с чтением профессиональной литературы. Сегодня мы поговорим про лучшие книги по программированию из числа тех, что не имеют привязки к определённому языку или среде. Вот 12 из них:  

Совершенный код, Стив Макконнелл

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

Чистый код. Создание, анализ и рефакторинг, Роберт К. Мартин

Кажется, это тот случай, когда даже не совсем правильный перевод названия книги (в оригинале «Clean Code: A Handbook of Agile Software Craftsmanship»), вполне чётко отражает её содержимое. Роберт Мартин в своём творении, опираясь на личный опыт и, что даже важнее, конкретные примеры из своей практики, рассказывает о том, как нужно кодить. Принципиальное отличие от книги Макконелла заключается в том, что здесь очень мало статистических обоснований правильности тех или иных действий, только код (занимающий почти треть книги) и рекомендации автора.

Программист-прагматик. Путь от подмастерья к мастеру, Эндрю Хант, Дэвид Томас

Ещё один представитель программистской литературы, где на трёхстах страницах методично описываются основные принципы создания качественного кода и условия, при которых вы будете получать удовольствие от работы, а клиент от результатов. Написана книга приятным языком, поэтому много времени на её освоение не уйдёт.

Путь программиста,  Джон Сонмез

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

Структура и Интерпретация Компьютерных Программ, Харольд Абельсон, Джеральд Джей Сассман

Эта книга рассматривает создание кода на уровне общих принципов, то есть описываются алгоритмы, объясняется взаимодействие программной среды и машины и, как следствие, предлагаются методы оптимизации будущего кода. Несмотря на довольно общую тематику, в профессиональных кругах эта книга считается учебником, как для новичков, так и для настоящих зубров IT-цеха.

Алгоритмы. Построение и анализ, Томас Кормен, Чарльз Лейзерсон, Рональд Ривест, Клиффорд Штайн

Ещё одна увесистая книга по алгоритмам, впервые изданная в 1990 году в Массачусетском технологическом институте с авторством местных преподавателей. Несмотря на то, что написана она простым и понятным языком, из-за объёма и подачи материала (каждая глава имеет законченный вид) использовать лучше в качестве справочника, периодически обращаясь к нужной информации.

Release it! Проектирование и дизайн ПО для тех, кому не все равно, Майкл Нейгард

От серьёзных и фундаментальных принципов построения кода перейдём непосредственно к практической части создания ПО, а именно юзабилити, производительности, масштабированию, администрированию и далее по списку. Здесь вас ждут реальные примеры из жизни автора, несколько типовых кодов на Java (при этом сам язык никакой роли не играет) и профессиональные советы, как общего плана, так и вполне конкретные по созданию кода.

Кодеры за работой. Размышления о ремесле программиста, Питер Сейбел

Если вам когда-нибудь хотелось подсмотреть за работой других программистов высокого полёта, то это книга придётся вам по душе. Пятнадцать человек в формате живого общения расскажут об отношении к профессии, о будущем программирования и дадут конкретные практические советы.

Мифический человеко-месяц, Хилл Чапел, Фредерик Брукс

Эта книга в США входит в список must-read любого разработчика ПО. Написана она была в далёком 1975 году, но описанные этапы, проблемы и советы по разработке ПО актуальны и по сей день. Вряд ли она будет полезна для человека, который уже несколько лет варится в профессии и на личном опыте знает об этом процессе, а вот студентам и новичкам в IT – прочитать действительно следует.

Не заставляйте меня думать!, Стив Круг

Если «Мифический человеко-месяц» — книга для разработчиков, то это своего рода библия для работников веб-индустрии. Как повысить производительность и привлекательность веб-сайта, советы для новичков, ветеранов и руководителей – всё это можно подчеркнуть из немного ироничной и крайне полезной книги Стива Круга.

Жемчужины программирования, Джон Бентли

Очень хорошее чтиво для людей, начинающих свой путь в программировании. Здесь автор доступным языком описывает основные этапы написания качественного кода: от идеи до финального тестирования. Для лучшего понимания темы рекомендуем вкупе с чтением пройти бесплатный интенсив по основам программирования.

Карьера программиста. Как устроиться на работу в Google, Microsoft или другую ведущую IT-компанию, Г. Лакман Макдауэлл

Не обращайте внимание на российского название, в оригинале это «Cracking the Coding Interview: 150 Programming Interview Questions and Solution», то есть просто 150 наиболее часто задаваемых вопросов на собеседованиях в крупных IT-компаниях. Ответы, разумеется, прилагаются. Помогает не только потренировать собственный мозг, но и получить представление об образе мышления в Amazon, Apple, Facebook, Google и Microsoft.

А какую книгу добавили бы в этот список вы?

 

geekbrains.ru

Глава 1. Начинаем свой путь

Это первая глава моего учебника по программированию для начинающих, так называемое введение в программирование, в которой мы рассмотрим основные моменты обучения программированию. Излагать информацию я буду подробно, но сжато, т.к. считаю, что программирование начинающему нужно сначала понять и «прощупать», а понимание начинается с основ и подробного разъяснения этих самых основ, а различные более сложные конструкции и альтернативные решения пусть останутся на потом, т.к. сейчас в них нет острой нужды. До них вы всегда сможете дойти и сами, если хорошо усвоите именно основную информацию. Все строится именно на основах, не поняв основы программирования или плохо с ними разобравшись, вы никогда не дойдете до более углубленного материала и различных альтернативных методов и конструкций своим умом, максимум на что вы будете способны — это, не поняв как это работает, «содрать» чужой код, например с какого-либо форума, и «влепить» в свою программу. Действуя таким образом, можно как-то закончить ВУЗ, но найти работу программистом вы, конечно же, вряд ли сможете. Настоящий программист — это именно тот, кто строит сам, а не пользуется чужими программами. А если и пользуется (своими же, написанными ранее, либо чужими), то понимает, что делает.

Во второй главе учебника мы рассмотрим компьютер с точки зрения программиста, то, каким образом он работает и выполняет свои функции, из каких логических частей состоит. Почему это важно нам!? Да потому что компьютер — это наш, так называемый «подопытный кролик», над которым мы и будем проводить свои «испытания», методом его программирования (задания ему программ). А своего подопечного мы должны знать в лицо и понимать каким образом он устроен и как может нас понять.

В третьей главе учебника по программированию, после того как мы узнаем, что компьютер — это всего лишь аппарат, состоящий из различных плат и проводов, и который умеет выполнять только вычисления на очень большой скорости и принимать логические решения (в нем это заложено изначально, на то он и компьютер (с англ. «вычислитель»), мы рассмотрим способ, с помощью которого мы сможем приказывать ему, давать указания на выполнение каких-либо нужных для нас действий. Этим приказом для компьютера, являются инструкции, написанные на каком-либо языке программирования. Компьютер не человек, поэтому человеческого языка ему не понять, для общения с ним служат специальные языки, так называемые языки программирования. Их существует на данных момент не мало, но основных лишь несколько. Каждый язык программирования более или менее подходит для выполнения какой-либо своей задачи. Например, есть языки, с помощью, которых легче писать web-приложения (например PHP, Perl) или языки для прикладного программирования (С, C++, Delphi и т.д.). Мы с вами будем рассматривать язык программирования С++. Почему именно С++, а не какой-нибудь другой язык!? Да потому что С++ — это самый популярный в нынешнее время, мощный и гибкий язык программирования, с помощью которого можно творить практически все. На языке С++ в нынешнее время пишется примерно 70 — 80 % всего программного обеспечения (Windows также написана именно на С++). Зная этот язык вы обеспечите себе дорогу в будущее, где вас будут уважать и ценить, как хорошего специалиста.

В четвертой главе учебника мы рассмотрим установку и запуск среды программирования Code::Blocks. Среда программирования — это, так называемая, программа для написания программ. Так, я думаю, что новичку будет легче понять ее цель. Иными словами, среда программирования — это наш инструмент, в котором мы и будем проводить большую часть своего времени, занимаясь программированием. В этой среде разработки есть все необходимое для написания программ: редактор, компилятор и отладчик (подробнее об их назначении будет написано в последующих главах). Почему именно эта среда программирования, а не другая!? Да потому что она проста и понятна новичку, не смотря на то, что имеет богатый функционал, поддержку множества компиляторов и многое другое. В этой среде работают и новички и профессионалы, т.к. она очень удобна, в ней нет ничего лишнего. Говорят, что в скором времени, Code::Blocks сможет составить достойную конкуренцию самой Microsoft Visual Studio. Лично я работаю в Code::Blocks уже несколько лет и менять ничего не хочу. Подробнее прочитать об этой среде разработки и скачать ее вы сможете в разделе Скачать -> В помощь программисту.

В пятой главе учебника по программированию, мы с вами, наконец то, начнем программировать! Итак, начинаем программировать и пишем свою первую программу.

В последующих главах учебника для начинающих будут рассматриваться различные понятия программирования, такие как переменная, конструкции языка, способы представления данных в компьютере и т.д. Итак, за дело!

P.S. И запомните, что самый лучший способ научиться программировать — это программировать! 80% вашего времени должно проходить в среде программирования, остальные 20% в чтении материалов по программированию для начинающих с нашего сайта!

iguania.ru

Программирование с нуля: 4 лучших книги для детей и взрослых


Алена Лепилина

Не знать программирования через десять лет — это как не знать английского языка сейчас. Без знаний обойтись можно, но с ними открываются совсем другие перспективы. Выбрали книги по программированию с нуля для детей и взрослых.

Пусть вас не смущает, что книги детские — их заказывают себе многие взрослые, которым программирование в новинку, а освоить тот или иной язык хочется или требуется по работе (например, аналитикам). С профессиональных книг начинать сложновато, а вот самоучители — самое то.

Python — очень популярный язык программирования. На нем написаны многие мобильные банки, популярные приложения для браузера и программы, которыми вы пользуетесь каждый день. При этом язык очень прост в изучении и подходит для обучения программированию детей. И, конечно, взрослых. Вы создадите собственную игру, даже целых две!

Помимо простой структуры языка, в Python есть инструменты, заметно ускоряющие обучение и позволяющие создавать несложные анимации для своих видеоигр.

Эта книга позволит вам погрузиться в программирование и с легкостью освоить JavaScipt. Вы напишете несколько настоящих игр — поиск сокровищ на карте, «Виселицу» и «Змейку». На каждом шаге вы сможете оценить результаты своих трудов — в виде работающей программы, а с понятными инструкциями, примерами и забавными иллюстрациями обучение будет только приятным.

Эта книга — не только введение в JavaScript, но и вообще в программирование.

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

Подробные объяснения, разобранные по шагам примеры и множество упражнений помогут освоить Scratch без труда.

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

Многие считают, что программирование — одно из наиболее важных в ХХI веке умений.

Читайте, учитесь и создавайте собственные программы. Это клево 😉

blog.mann-ivanov-ferber.ru

список литературы и краткий обзор книг

Если вы хотите заниматься программированием, то ваш жизненный путь свяжется с непрерывным самообразованием. Информационная сфера, технологии не стоят на месте. То, что актуально сегодня, завтра уже не будет иметь ценности. Однако возможно выбрать лучшие книги по программированию, которые полезны и по сей день, особенно для начинающих специалистов. В статье мы приведем обзор изданий, признанных профессионалами и тысячами читателей.

«Совершенный код»

Автор одной из лучших книг по программированию — С. Макконнелл. Сам создатель утверждает: «Пишите код так, будто сопровождать его будет психопат-насильник, знающий, где вы живете».

Трудно найти гуру программирования, который бы обошел стороной это творение. Предупредим сразу, что книга — вовсе не справочник, а объемное издание в 900 страниц. Макконнелл описал здесь все, с чем может столкнуться начинающий программист:

  • «Рецепты» написания кодов высокого качества.
  • Механизмы отладки и тестирования.
  • Стратегии оптимизации кода.
  • Человеческие факторы, влияющие на разработку, и проч.

Автор провел впечатляющую исследовательскую работу: библиография занимает 20 страниц материала, включая в себя порядка 500 источников! Поэтому не удивительно, что книга была признана читателями суперполезной, не раз возглавляла рейтинги изданий по программированию. Немаловажно, что ее отличает простая манера изложения, своеобразный стиль автора и его чувство юмора.

Содержание «Совершенного кода»

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

Есть специальный раздел по качеству ПО в целом. Создатель книги говорит, что повышение качества системы всегда гарантирует снижение расходов на ее разработку. Поддержание качества кода на необходимом уровне не только экономит время программиста, но и повышает его КПД.

Макконнелл приводит в «Совершенном коде» несколько методов разработки: ревизии кода, парное программирование, неформальные и формальные инспекции, разработки на базе тестирования — темы широко раскрываются в материале.

Лучшей книгой по программированию это издание считает Джон Роббинс. Он говорит, что «Совершенный код» от корки до корки должен перечитвапть каждый программист ежегодно. Сам Д. Роббинс делает это на протяжении девяти лет.

«Рефакторинг»

Еще одна лучшая книга по программированию авторства Мартина Фаулера. Начнем знакомство со слов самого автора: «Каждый может написать код, понятный компьютеру. И лишь хорошие программисты пишут код, понятный человеку».

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

Важные разделы «Рефакторинга»

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

Важен раздел, где автор подробно описывает характеристики кода, требующего улучшения: большой класс, длинный метод, временные поля, дублирование, отказ от наследства и проч. Другая полезная глава: каталог методов рефакторинга. Это составление методов, перемещение между объектами функций, упрощение условного выражения и проч.

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

«Паттерны проектирования»

Ищете отличные книги по программированию для начинающих? Тогда обратите внимание на это издание союза авторов:

  • Э. Гамма.
  • Р. Хелм.
  • Д. Влиссидес.
  • Р. Джонсон.

Если вы попросите любого из профессионалов посоветовать вам издание по объектно-ориентированному программированию, то в 9 из 10 случаев вам посоветуют именно эту книгу! Издание давно перешло через статус «бестселлер». Смотрите сами, ведь книга была опубликована более чем на 30 языках и распространена 500 тысячами экземпляров.

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

Безусловно, это одна из лучших книг для изучения программирования. Но отметим, что перед ее прочтением у читателя уже должны быть накоплены знания по объектно-ориентированному проектированию. Издание недостаточно просто прочесть. Книгу нужно буквально пропустить через себя.

Содержание «Паттернов проектирования»

Издание состоит из 350 страниц. Книга поделена на две части:

  • Общее понятие паттернов в проектировании, описание их практического применения.
  • Каталог с паттернами с описанием структуры, назначения, особенностей реализации.

Все паттерны авторы разделяют на три основные категории:

  • Порождающие. Решают задачи инстанцирования классов.
  • Структурные. Решение вопросов компоновки системы на базе классов и объектов.
  • Паттерны поведения. Связаны с распределением обязанностей между классами, алгоритмами.

Единственный минус книги: примеры написаны на малоизвестном сегодня языке Smalltalk.

«Чистый код»

Творение Робина Мартина нельзя не причислить к лучшим книгам про программирование. Сам автор предупреждает читателя: «Написание кода — тяжелая задача. Тут точно придется попотеть».

360 страниц издания (не считая приложений) посвящены написанию высококачественного кода. Главное достоинство: издание составлено доступным и понятным языком. Поэтому его реально полностью осилить всего лишь за несколько вечеров. Подкупает и дружеская манера повествования, обилие примеров из реальной практики автора.

Три части «Чистого кода»

Свое издание Р. Мартин разделил на три части:

  • Теоретический раздел. Это именно теория написания «чистого» кода: приемы, паттерны и принципы, которые должен знать каждый разработчик.
  • Практический раздел. Автор рассказывает, как следует «чистить» коды существующих на сегодня приложений.
  • Итог. Здесь располагается перечень «запахов кода», а также инструкции по их устранению.

Почему издание относят к самым лучшим книгам по программированию? Создатель здесь подробно расписывает принципы именования переменных, правила создания функций, форматирования кода, написания комментариев, принципы написания модульных тестов и обработки ошибок. Большой раздел посвящен созданию многопоточных приложений.

Робин Мартин вводит основное правило: с каким бы участком кода вы не работали, ваша задача — сделать его чище, качественнее, чем он был. Только в таком случае код не будет «загнивать».

Безусловно, это одна из лучших книг по программированию для начинающих. Читатели отмечают только один ее минус: Java-ориентированность.

«Искусство программирования»

Продолжаем знакомить вас с лучшими книгами по основам программирования. Создатель данной, Дональд Кнут, метко подмечает: «Лучший способ в чем-то разобраться — попробовать научить этому компьютер». Почитатели книги говорят, что программист, не имеющий «Искусство программирования» в своей библиотеке, похож на священнослужителя без Библии.

Чем же хороша монография Д. Кнута? Автор подробно описывает и анализирует фундаментальные алгоритмы информатики, приводит практические задачи для усвоения материала. Работа была начата еще в 1962 году. В полном варианте издание будет включать в себя 7 томов. Пока что издано три — это уже 3000 страниц. Книга не является готовым «рецептом» к решению задач. Читать ее нелегко — примеры рассматриваются на низкоуровневом языке программирования, созданного автором для гипотетического компьютера.

Тома «Искусства программирования»

Рассмотрим части научно-практического произведения:

  • Первый том. Посвящен основным алгоритмам и в целом подготавливает читателя к работе над книгой. Рассматриваются математические теоремы, термины, язык программирования, созданный автором, — все то, на чем будет базироваться повествование. Также здесь упомянуты информационные системы и алгоритмы взаимодействия с ними.
  • Второй том. Рассматриваются упражнения со случайными числами и их последовательностями. Описываются важные вопросы арифметики: системы счисления, арифметика чисел, имеющих плавающую точку, полиноминальная арифметика и проч.
  • Третий том. Алгоритмы поиска и сортировки.
  • Четвертый том. Написан не полностью, готовится к выпуску. Здесь будут разбираться вопросы комбинаторного поиска.

«Искусство программирования» было высоко оценено Биллом Гейтсом. В своем отзыве о издании он сказал, что каждый, кто смог осилить творение Кнута, определенно может отправить резюме в его корпорацию.

«Программист-прогматик»

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

Размер книги небольшой — 270 страниц. Однако в ее содержании сконцентрирована необходимая для программиста информация. Все разбираемые темы авторы сопровождают выразительными аналогиями: некачественный код и теория разбитого окна, вождение автомобиля и написание кода, столярная работа и деятельность программиста.

Хант и Томас формируют замечательный принцип программирования: «Не повторяй самого себя». В данном контексте это значит, что каждый фрагмент знания — это лишь однозначное представление в системе. В итоге такой подход повышает надежность, простоту и доступность программируемого продукта.

Главы «Программиста-прагматика»

Давайте кратко рассмотрим содержание книги:

  • Общая философия прагматичного программирования. Каким авторы видят успешного специалиста.
  • Прагматичный подход. Методики разработки, а также оценки трудоемких проектов.
  • Гибкость против хрупкости. Как именно создаются устойчивые к переменам гибкие системы.
  • Перед началом проекта. Рассказывается, как сформировать и утвердить требования к системе.
  • Прагматически проекты. Важные аспекты создания реальных проектов: особенности работы в команде, тестирование, оформление документов.

Единственное, что здесь может огорчить, — некачественный перевод на русский язык, наличие опечаток. Поэтому книгу лучше всего читать в оригинале.

Библиотека программиста

Представим список из нескольких культовых произведений, признанных самыми лучшими книгами по программированию с нуля:

  • «Эффективная работа с унаследованным кодом». Создатель — М. К. Физерс.
  • «JavaScript: сильные стороны». Создатель — Д. Крокфорд.
  • «Шаблоны корпоративных приложений». Создатель — М. Фаулер.
  • «Язык программирования С». Создатели — Б. У. Керниган, Д. М. Ритчи.
  • «Эффективное использование С+++». Создатель — С. Майерс.
  • «Экспериментальное программирование». Создатель — К. Бек.
  • «Алгоритмы. Построение и анализ». Создатели — Т. Кормен и др.
  • «Регулярные выражения». Создатель — Д. Фридл.
  • «Современное проектирование на С++». Создатель — А. Александреску.

Издания для юных программистов

Представим также лучшие книги по программированию для детей:

  • «Scratch для детей». Автор — М. Марджи.
  • «JavaScript для детей». Автор — Н. Морган.
  • «Python для детей». Автор — Д. Бриггс.

На этом закончим знакомство с топовыми изданиями для взрослых и юных программистов. Надеемся, что представленные списки, обзоры на книги помогут вам выбрать достойный самоучитель, обогатить копилку знаний, воспринять новый опыт.

fb.ru

Лучшие книги по программированию для начинающих

Программирование с нуля, или как стать программистом

2017-05-24

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

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

Начинаем движение к своей цели

Стать программистом можно разными способами. Например, изучать языки программирования и работать за компьютером с детства. Обычно из таких людей получаются профессионалы, которым не нужно получать образование в университете. Вы можете пойти в учебное заведение, выбрать модное направление IT и получить профессию. Многие становятся программистами в результате того, что их хобби плавно перерастает в высокооплачиваемую работу.

Способы получения профессии программиста:

1. Поиск учебного материала и самостоятельное изучение основ программирования.

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

2. Учебное заведение.

Этот вариант позволяет получить знания и диплом, который подтверждает то, что вы специалист, независимо от того, насколько хорошо вы знаете предмет. Документ об образования никогда не бывает лишним. Знания придут с опытом, который будет оплачен работодателем. Подходите к выбору университета ответственно, внимательно изучайте программы обучения, подавайте документы только в лучшие технические вузы.

3. Помощь наставника.

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

4. Пройти специализированные курсы.

Курсы – самый простой и доступный метод изучения сложного материала. Они позволяют быстро освоить языки программирования на среднем уровне. Материал подается в удобной, понятной форме, поэтому редко у кого возникают трудности с изучением. Существуют как бесплатные, так и платные курсы. Например очень качественные курсы по программированию от ITVDN.

  

Как выбрать язык программирования и направление?

Когда у вас будет достаточно знаний и опыта в работе над созданием нового программного обеспечения, вы сможете выбирать любой язык программирования, который понравится. Но для начала карьеры пойдет только тот, кто востребован на рынке труда.

При выборе новичок должен учитывать следующие факторы:

1. Наличие на рынке соответствующих вакансий.

Вы изучаете язык с одной целью – найти работу по специальности.

Поэтому прежде чем сделать окончательный выбор, следует посетить сетевые ресурсы, которые публикуют объявления с вакансиями, определить самый востребованный среди работодателей язык программирования. Как только найдете несколько предварительных вариантов, переходите к следующему пункту.

2. Сложность изучения.

Существует большое количество языков программирования, которые отличаются не только возможностями в реализации программных продуктов, но и сложностью изучения, использования на практике.

Прочитайте как можно больше информации про разные языки. Для вас важно определить, какой из них позволит вам быстро стать хорошим программистом. Общайтесь с людьми на форумах, читайте соответствующую литературу. Наиболее популярными среди новичков языками являются Ruby, Python, PHP.

3. Работа программиста должна вам нравиться.

Если вы не будете получать удовольствие от того, чем занимаетесь, вам будет сложно профессионально выполнять свои обязанности. Ищите то, что вам действительно по душе.

4. Направление программирования.

Существует несколько направлений в разработке программного обеспечения. Например, вы можете отдать предпочтение написанию мобильных приложений, игр, веб-программ, низкоуровневому программированию. Сегодня популярностью пользуются программисты, реализующие мобильные и веб-приложения. Некоторые языки могут не подходить под разработку программ определенного типа, поэтому внимательнее относитесь к выбору.

В любом случае рекомендуется подробно изучить веб-технологии. С развитием интернета программисты, способные реализовывать качественные проекты на языках разметки HTML, стилей CSS и JavaScript, пользуются популярностью. На этих языках создают динамические страницы сайтов. Серверные языки Ruby, PHP, Python и основы работы с базами данных также рекомендуется изучить досконально. Практически в каждой вакансии программиста эти языки упоминаются в качестве основных требований к кандидату.

Получить необходимый опыт

Без опыта в разработке программного обеспечения сложно получить хорошую должность. Получается замкнутый круг, из которого вам необходимо найти выход.

Советы:

1. Не стоит все свободное время тратить на изучение теоретического материала, сразу переходите к практическим заданиям.

После изучения основ программирования начинайте писать простые программы, разбирайте специально подготовленные примеры или просто перепечатывайте код, пытаясь понять назначение той или иной строки. В книгах бывает много различных примеров, направленных на закрепление знаний пройденной главы. Не пренебрегайте предложенными задачами, попробуйте самостоятельно найти решение своим способом.   

2. Ищите заказы и выполняйте их.

Самостоятельно реализованные проекты можно записать в опыт работы над разработкой различных программных продуктов. Реально существующие приложения являются доказательством ваших теоретических и практических знаний. Их вы сможете показать своему работодателю.

3. При выборе биржи для поиска заданий по разработке программного обеспечения рекомендуется обращать внимание на англоязычные площадки.

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

4. Open source – неплохой вариант получения опыта в работе над созданием приложений.

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

5. Просите помощи у знакомых программистов.

Участвуйте в реализации их проектов, выполняя несложные задачи. Если у вас поначалу не будет получаться, то вам помогут все исправить. Со временем вы получите реальный опыт и будете быстро справляться даже со сложными и объемными заданиями.

6. Создание собственных проектов.

Самый сложный вариант, поэтому лучше начинать работу в команде из друзей и знакомых.

 

Выбираем Python

Сейчас поговорим о выборе языка программирования, который вы будете изучать в начале карьеры. Он должен быть востребованным на рынке и простым для изучения. Python имеет несложный синтаксис, поэтому начинающему потребуется меньше времени на изучение, чем, например, при попытке разобраться с основами программирования на Java.

На Python написана огромная база библиотек, которая позволяет экономить много времени, сил и нервов при реализации проектов. Язык программирования относится к высокоуровневому типу, поэтому вам не придется думать о ячейках памяти и методах размещения в них информации. По сути, язык настолько простой, что в его коде смогут разобраться даже дети.

Ради справедливости следует немного сказать и о других языках программирования. Например, Java может стать отличным вариантом для изучения. Этот популярный язык немного сложнее Python, но инструменты для разработки приложений у него реализованы гораздо лучше. Изучение Java подготовит вас к переходу к работе с низкоуровневыми языками.

PHP также пользуется популярностью. Некоторые считают, что он проще, чем Python. Если выбрать PHP в качестве первого языка для изучения, то вы легко найдете наставника или решение любой задачи на сетевом ресурсе, которых очень много в интернете. В мире есть множество специалистов, работающих с использованием PHP. В отличие от многих других языков в PHP нет удобного импорта, любую задачу можно решить множеством вариантов и это усложняет процесс изучения материала.

Этот язык предназначен исключительно для реализации веб-приложений.

 Языки C и C# не рекомендуется новичкам. В качестве второго языка, которым стоит овладеть в первую очередь, рекомендуется выбрать Ruby. JavaScript – язык простой, но почти бесполезный на начальном этапе становления. Изучая JavaScript, вы не сможете понять логику программирования, поэтому не стоит выбирать его в качестве первого языка для изучения.

Зачем знать английский язык?

Очень важно изучать английский язык. Если вы его знаете, продолжайте совершенствовать. Старайтесь в свободное время писать, читать на английском, слушать речь, пытаться говорить. Изучайте доступную литературу, слушайте подкасты по программированию.

Что потребуется еще программисту?

Определить, что необходимо хорошему программисту поможет выбранное направление. Если вы планируете стать веб-программистом, то параллельно изучению основного языка читайте о HTML, CSS, JavaScript. Если у вас есть желание писать десктопные приложения, то потребуется изучить API операционной системы и различные фреймворки. Разработчику программ для мобильных устройств необходимо знать фреймворки и операционные системы Android, iOS или Windows Phone.

Каждый программист должен знать алгоритмы. Найдите в сети книгу по алгоритмам или пройдите специальный курс на Coursera. Вам необходимо изучить правила работы с базами данных, паттерны программирования, структуры данных, ознакомиться с репозиториями кода, системами версионного контроля. Программисту нужно знать операционную систему, доступные инструменты, с которыми ему придется работать и среду разработки. И, главное, научитесь быстро и точно искать нужную информацию в сети. Без этого сегодня, вообще, никуда.

Предоставляем информацию о себе

Подготовьте резюме. Желательно предварительно прочитайте, как правильно создавать подобные документы. Пишите кратко по делу, не нужно прятать от работодателя свои знания и умения за большим количеством, по сути, бесполезного текста. Если ваше резюме заинтересует, то вас пригласят на интервью, к которому необходимо тщательно подготовиться. Прочитайте внимательно свое резюме, повторно просмотрите проекты, над которыми вы работали.

 

rpilot62.ru

Каждому программисту. Лучшие книги по программированию. Обзор: fir_vst

Должен знать каждый программист | Философия программирования | Совершенный код | Эти книги должен прочитать каждый | Для профессионального программиста | Книги по программированию для начинающих | Подборка: 5 лучших книг | Как улучшить плохой код? | Библиотека программиста

Бьярне Страуструп. Программирование: Принципы и практика с использованием C++ (2-е издание). М.: Издательский дом «Вильямс», 2016. Пер. с англ. – 1328 стр. Тираж 300 экз.

Bjarne Stroustrup. Programming: Principles and Practice Using C++. Second edition.

Программирование – это искусство выражать решения задач так, чтобы компьютер мог их осуществить. Основные усилия программиста направлены на то, чтобы найти и уточнить решение, причем довольно часто полное понимание задачи приходит лишь в ходе программирования ее решения.
Эта книга предназначена для тех, кто еще никогда не программировал, но готов учиться этому ценой тяжелого и упорного труда. Она поможет овладеть главными принципами и приобрести практический опыт программирования на языке C++. Моя цель заключается в том, чтобы изложить достаточный объем сведений и научить вас решать простые и полезные задачи по программированию с помощью самых лучших и современных методов. Если вы учитесь на первом курсе университета, то можете изучать эту книгу на протяжении семестра (в предположении, что у вас имеется еще четыре курса средней сложности). Если вы изучаете программирование самостоятельно, то не ждите, что сможете освоить этот курс за меньшее время (ну, при условии, что вы будете работать по 15 часов в неделю, возможно, вам хватит 14 недель).
Три месяца могут показаться долгими, но объем курса довольно велик, и первые простые программы вы сможете написать, проработав над книгой около часа. Кроме того, сложность материала постепенно возрастает: в каждой главе вводятся новые полезные понятия, которые иллюстрируются реальными примерами.

* * *
Станете ли вы профессиональным программистом или экспертом по языку C++, прочитав эту книгу? Конечно, нет! Настоящее программирование – это тонкое, глубокое и очень сложное искусство, требующее знаний и технических навыков. Рассчитывать на то, что за четыре месяца вы станете экспертом по программированию, можно с таким же успехом, как и на то, что за полгода или даже год вы полностью изучите биологию, математику или иностранный язык (например, китайский, английский или датский) или научитесь играть на виолончели. Если подходить к изучению книги серьезно, то можно ожидать, что вы сможете писать простые полезные программы, читать более сложные программы и получите хорошие теоретическую и практическую основы для дальнейшей работы.
Прослушав этот курс, лучше всего поработать над реальным проектом.

* * *
Когда – начиная с 1949 года – в мире появились первые электронные компьютеры с хранимыми программами, каждый из них имел собственный язык программирования. Существовало взаимно однозначное соответствие между выражением алгоритма (например, вычисления орбиты планеты) и командами конкретной машины. Очевидно, что ученый (пользователями чаще всего были ученые) писал математические формулы, но программа представляла собой список машинных инструкций. Первые примитивные списки состояли из десятичных или восьмеричных цифр, точно соответствовавших их представлению в машинной памяти. Позднее появились ассемблер и «автокоды»; иначе говоря, люди разработали языки, в которых машинные команды и машинное оборудование (например, регистры) имели символические имена. Так, программист мог написать «LD R0 123», чтобы загрузить содержимое ячейки памяти, расположенной по адресу 123, в нулевой регистр. Однако каждая машина по-прежнему имела собственный набор команд и собственный язык программирования. (С. 893)

Стив Макконнелл. Совершенный код. Мастер-класс (Практическое руководство по разработке программного обеспечения). М.: Русская редакция, Спб: Питер, 2005. Пер. с англ. – 896 стр.

© Steven C. McConnell, 2004

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

«Великолепное руководство по стилю программирования и конструированию ПО».
Мартин Фаулер, автор книги «Refactoring»

«Книга Стива Макконнелла… это быстрый путь к мудрому программированию… Его книги увлекательны, и вы никогда не забудете то, что он рассказывает, опираясь на свой с трудом полученный опыт».
Джон Бентли, автор книги «Programming Pearls, 2d ed»

«Современное ПО должно быть надежным и гибким, а создание защищенного кода начинается с дисциплинированного конструирования программы. За десять лет так и не появилось лучшего руководства по этой теме, чем эта книга».
Майкл Ховард, специалист по защите ПО, корпорация Microsoft; один из авторов книги «Writing Secure Code»

Если вы не имеете специального образования, вы не одиноки. Ежегодно программистами становятся около 50 000 человек (BLS, 2004, Heскеr, 2004), однако число дипломов, вручаемых ежегодно в нашей отрасли, составляет лишь около 35 000 (NCES, 2002). Легко прийти к выводу, что многие программисты изучают разработку ПО самостоятельно. Программисты-самоучки встречаются среди инженеров, бухгалтеров, ученых, преподавателей, владельцев малого бизнеса и представителей других профессий, которые занимаются программированием в рамках своей работы, но не всегда считают себя программистами. Каким бы ни было ваше программистское образование, в этом руководстве вы найдете информацию об эффективных методиках программирования.

* * *
Методики, описанные в этой книге, заполняют пустоту, остающуюся в знаниях программистов после прочтения вводных и более серьезных учебников по программированию. Что читать человеку, изучившему книги типа «Introduction to Java», «Advanced Java» и «Advanced Advanced Java» и желающему узнать о программировании больше? Вы можете читать книги о процессорах Intel или Motorola, функциях ОС Microsoft Windows или Linux или о другом языке программирования – невозможно эффективно программировать, не имея хорошего представления о таких деталях. Но эта книга относится к числу тех немногих, в которых обсуждается программирование как таковое. Наибольшую пользу приносят те методики, которые можно использовать независимо от среды или языка. В других источниках такие методики обычно игнорируются, и именно поэтому я сосредоточился на них.
Как показано ниже, информация, представленная в этой книге, выжата из многих источников. Единственным другим способом получения этой информации является изучение горы книг и нескольких сотен технических журналов, дополненное значительным реальным опытом. Если вы уже проделали всё это, данная книга всё равно окажется вам полезной как удобный справочник.

* * *
За доказательствами влияния, оказываемого языками программирования на мышление программистов, далеко ходить не надо. Типичная история такова: «Мы писали новую систему на C++, но большинство наших программистов не имели особого опыта работы на C++. Раньше они использовали Fortran. Они писали код, который компилировался на C++, но на самом деле это был замаскированный Fortran. В итоге они заставили C++ эмулировать недостатки языка Fortran (такие как операторы goto и глобальные данные) и проигнорировали богатый набор объектно-ориентированных возможностей C++». Данный феномен наблюдается в отрасли уже много лет (Hanson, 1984; Yourdon, 1986a). (С. 60)

Питер Гудлиф. Ремесло программиста. Практика написания хорошего кода. Спб.: Символ-Плюс, 2009. Пер. с англ. – 704 стр.

Pete Goodliffe. Code Craft: The Practice of Writing Excellent Code.

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

«Легко читается, занимательно, даже забавно… Книга полна мудрости, накопленной за годы реальной работы, мучений и побед в сфере программных разработок… Жаль, что у меня не было такой книги, когда я начинал работать программистом».
Стив Лав (Steve Love), старший разработчик

«Именно та книга, которая нужна необстрелянным новобранцам. Рассказывает всю правду, легко читается и охватывает широкий круг тем, которые должен знать новичок».
Джон Джеггер (Jon Jagger), преподаватель, программист

Программирование – ваша страсть. Печально, но это так. И как закоренелый технарь вы программируете чуть ли не во время ночного сна. И вот вы попали в центр реального мира, в саму эту отрасль, и занимаетесь тем, о чем и не мечтали: забавляетесь с компьютером, а вам за это еще и деньги платят. Ведь вы сами готовы были заплатить за то, чтобы иметь такую возможность!
Но всё не так просто и не похоже на то, чего вы ожидали. Огорошенные назначением вам нереальных сроков выполнения задач и неумелым руководством (если его можно назвать этим словом), непрерывным изменением технического задания и необходимостью разбираться в дрянном коде, доставшемся вам от предшественников, вы начинаете сомневаться в том, что выбрали для себя правильный путь. Всё вокруг мешает вам писать тот код, о котором вы мечтали. Что ж, таковы условия существования в организациях, где пишут программы. Вы попали на передний край упорной битвы за создание шедевров художественного мастерства и научного гения. Удачи вам!

* * *
Программные ошибки распадаются на несколько крупных категорий, знание которых облегчит дальнейшие действия. Природа некоторых ошибок такова, что их труднее отыскать, и это связано с тем, к какой категории они относятся. Слегка отстранившись и прищурясь, мы обнаружим следующие три класса ошибок:

Сбой при компиляции
Крайне досадно, когда код, на который вы потратили столько времени, отказывается компилироваться. Это значит, что вам придется вернуться и исправить противную маленькую опечатку или несоответствие типов параметров, а затем снова компилировать и только потом приниматься по-настоящему тестировать свой труд. Как ни странно, это лучший тип ошибок, с которым вы можете столкнуться. Почему? Просто потому, что их проще всего обнаружить и исправить. Они проявляются сразу и наиболее очевидны.
Чем дольше поиск ошибок, тем дороже их исправление; это проиллюстрировано в разделе «Экономика ошибок» на стр. 216. Чем раньше вы сможете найти и исправить каждую ошибку, тем скорее вы сможете продолжить работу и тем меньшим объемом неприятностей и затрат обойдетесь. Ошибки компиляции очень легко заметить (на них просто трудно не обратить внимания) и обычно легко исправить. Вы не сможете запустить программу, пока не устраните их.
Чаще всего сбой при компиляции бывает вызван глупой синтаксической ошибкой или обычной невнимательностью, например при вызове функции с параметром неверного типа. Сбой может быть вызван ошибкой в make-файле, ошибкой этапа сборки (например, отсутствием реализации функции) или даже нехваткой дискового пространства на машине, где осуществляется сборка. <…> (С. 214)

Роберт Мартин. Чистый код: Создание, анализ и рефакторинг. (Библиотека программиста). Спб.: Питер, 2010. – 464 стр.

Robert C. Martin. Clean Code: A Handbook of Agile Software Craftsmanship.

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

* * *
…И предоставлю всю необходимую для этого информацию. Но когда вы впервые заберетесь на велосипед, вы всё равно неизбежно упадете.
С программированием дело обстоит точно так же. Конечно, мы могли бы записать все «хорошие» принципы чистого кода, а потом доверить вам всю практическую работу (другими словами, позволить вам упасть, забравшись на велосипед), но какие бы из нас тогда были учителя?
Нет. В этой книге мы пойдем по другому пути.
Умение писать чистый код – тяжелая работа. Она не ограничивается знанием паттернов и принципов. Над кодом необходимо попотеть. Необходимо пытаться и терпеть неудачи. Необходимо наблюдать за тем, как другие пытаются и терпят неудачи. Необходимо видеть, как они спотыкаются и возвращаются к началу; как мучительно принимаются решения и какую цену приходится платить за неверный выбор.
Приготовьтесь основательно потрудиться во время чтения книги. Перед вами не «легкое чтиво», которое можно проглотить в самолете и перевернуть последнюю страницу перед посадкой. Книга заставит вас потрудиться, и потрудиться усердно. Какая работа вам предстоит? Вы будете читать код – много кода. И нам придется как следует подумать, что в этом коде правильно, а что нет. Вы будете наблюдать за тем, как мы разбираем эти модули, а потом собираем заново. Это потребует немало времени и усилий; но мы считаем, что результат того стоит.
Книга разделена на три части. В первых нескольких главах излагаются принципы, паттерны и приемы написания чистого кода. В них приводится довольно солидный объем кода, и читать их будет непросто. Весь этот материал подготовит вас ко второй части. Если вы отложите книгу после первой части – всего хорошего!
Во второй части книги трудиться придется еще больше. Она состоит из нескольких практических сценариев нарастающей сложности. Каждый сценарий представляет собой упражнение по чистке кода – или преобразовании проблемного кода в код с меньшим количеством проблем. Чтобы усвоить материал этой части, <…>

* * *
Правило № 1: выполнение всех тестов
Прежде всего система должна делать то, что задумано ее проектировщиком. Система может быть отлично спланирована «на бумаге», но если не существует простого способа убедиться в том, что она действительно решает свои задачи, то результат выглядит сомнительно.
Система, тщательно протестированная и прошедшая все тесты, контролируема. На первый взгляд утверждение кажется очевидным, но это весьма важно. Невозможно проверить работу системы, которая не является контролируемой, а непроверенные системы не должны запускаться в эксплуатацию.
К счастью, стремление к контролируемости системы ведет к архитектуре с компактными узкоспециализированными классами. Всё просто: классы, соответствующие принципу SRP, проще тестировать. Чем больше тестов мы напишем, тем дальше продвинемся к простоте тестирования. Таким образом, обеспечение полной контролируемости системы помогает повысить качество проектирования.
Жесткая привязка усложняет написание тестов. Таким образом, чем больше тестов мы пишем, тем интенсивнее используем такие принципы, как DIP, и такие инструменты, как внедрение зависимостей, интерфейсы и абстракции, для минимизации привязок.
Как ни удивительно, выполнение простого и очевидного правила, гласящего, что для системы необходимо написать тесты и постоянно выполнять их, влияет на соответствие системы важнейшим критериям объектно-ориентированного программирования: устранению жестких привязок и повышению связности. Написание тестов улучшает архитектуру системы. (С. 201)

Гради Буч. Объектно-ориентированный анализ и проектирование с примерами приложений (3-е издание). Издательский дом «Вильямс», 2008. Пер. с англ. – 720 стр.

Grady Booch and oth. Object-oriented Analysis and Design with Application. Third edition.

Аннотация. Книга представляет собой новое издание бестселлера Гради Буча по объектно-ориентированному анализу и проектированию. Авторы описывают объектные методы решения сложных проблем, связанные с разработкой систем и программного обеспечения. Используя многочисленные примеры, они иллюстрируют основные концепции объектно-ориентированного подхода на примере разработки систем управления, сбора данных и искусственного интеллекта. Читатели найдут в книге практичные советы, касающиеся важных вопросов анализа, проектирования, реализации и оптимального управления проектами.
Книга будет полезна системным аналитикам и архитекторам, программистам, преподавателям и студентам высших учебных заведений, а также всем специалистам по информационным технологиям.

Гради Буч получил всемирное признание за его новаторскую работу в области архитектуры, проектирования и моделирования программных систем. С момента создания компании IBM Rational в 1981 году, он работал ее ведущим научным сотрудником. В марте 2003 года Гради получил звание почетного сотрудника IBM (IBM Fellow).
Гради – один из основоположников языка Unified Modeling Language (UML), а также автор нескольких оригинальных разработок компании Rational. Работая над многочисленными проектами, связанными с интенсивным программированием, Гради был не только архитектором программных систем, но и учил сотрудников принципам проектирования.

«Чем сложнее система, тем она уязвимее». Трудно себе представить строителя, размышляющего, а не вырыть ли еще один подвальный этаж под уже построенным стоэтажным зданием. Такое мероприятие было бы слишком дорогим и опасным. Как ни странно, пользователи программного обеспечения, не задумываясь, просят делать аналогичные изменения в программах. Более того, они считают, что для программиста эта задача не представляет никаких трудностей.
Наша неспособность справиться со сложностью, характерной для программного обеспечения, приводит к задержкам, дополнительным расходам и нарушениям технического задания. Такую ситуацию часто называют кризисом программного обеспечения, но, откровенно говоря, болезнь, длящуюся столь долго, следует называть нормальным состоянием. К сожалению, этот кризис уже привел в расточительному расходованию трудовых ресурсов – самого дорогого товара, – и многие возможности оказались упущенными. Для того чтобы создать новое программное обеспечение, необходимое пользователям, совершенно не достаточно просто собрать команду хороших программистов. Кроме того, во многих организациях большое количество персонала вынуждено отвлекаться на поддержку морально устаревших программ. Учитывая прямой и косвенный вклад, который вносит программное обеспечение в экономику наиболее развитых стран, а также огромные возможности, появляющиеся благодаря информатизации, следует признать, что мириться с такой ситуацией больше нельзя.
Как изменить эту мрачную картину? Поскольку источником всех проблем является сложность, присущая программному обеспечению, следует начать с изучения сложных систем, существующих в других научных дисциплинах. Действительно, если оглянуться вокруг, то можно обнаружить весьма успешно функционирующие системы, обладающие значительной сложностью. Некоторые из этих систем созданы человеком, например, космический корабль «Space Shuttle», туннель, соединяющий Англию и Францию, а также крупные корпорации. В природе существуют еще более сложные системы, такие как система циркуляции крови у человека <…> (С. 34)

* * *
Дилетанты постоянно ищут некий волшебный метод или инструмент, который мог бы сделать процесс разработки программ тривиальным. В отличие от них, профессионалы знают, что такой панацеи не существует. Дилетанты хотят иметь готовые рецепты; профессионалы знают, что такой подход ведет к негодным проектным решениям и нагромождению лжи, за которой разработчики скрываются от ответственности за ранее принятые неверные решения. Дилетанты либо игнорируют документацию вообще, либо делают из нее фетиш, заботясь больше о том, как их бумажный продукт выглядит в глазах заказчика, чем о его сути. Профессионал признает важность документации, но всегда отдает предпочтение разумным архитектурными новшествам.
Процесс объектно-ориентированного анализа и проектирования невозможно описать с помощью рецептов, однако он определен достаточно хорошо, чтобы стать основой прогнозируемого и воспроизводимого процесса разработки программного обеспечения. В главе изучаются процессы анализа и проектирования (его цели, результаты, этапы и критерии успеха), а также приведен обзор процесса разработки программного обеспечения в целом. (С. 281)

________
Книги по языку Java: Топ-5
Программирование «с нуля». Как изучать системное программирование («Магия ПК»)

fir-vst.livejournal.com

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *