10 книг о работе программистов

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

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

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

Скачать или читать онлайн

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

Скачать или читать онлайн

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

Скачать или читать онлайн

В книге собраны эссе из блога сооснователя платформы Stack Overflow. Автор затрагивает все аспекты создания ПО: от способов устройства рабочего места до лучших способов написания кода. Будет полезна всем, кто работает в команде с программистами.

Скачать

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

Читать онлайн

Книга ориентирована на широкий круг читателей: от менеджеров, работающих с программистами, до самих программистов. Автор собрал более 60 фактов и заблуждений, связанных с работой в IT индустрии. Факты и заблуждения подтверждаются научными исследованиями или другими весомыми источниками, так что всё, что написано в книге — чистая правда.

Скачать или читать онлайн

Это сборник мнений звёзд IT индустрии, где каждый поделился своими способами достижения успеха. Эти люди исповедуют разные взгляды, относятся к разным социальным группам, но их объединяет страсть к своему делу, которая способствует развитию бизнеса.

Читать онлайн

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

Скачать или читать онлайн

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

Скачать или читать онлайн

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

Скачать или читать онлайн

И всё-таки, книги книгами, а без практики ничего не выйдет. Программируйте больше, и всё получится

Другие полезные материалы по теме:

proglib.io

Инструкция для тех, кто хочет стать программистом с нуля

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

С чего начать

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

Если с вами ничего из вышеперечисленного не произошло, значит, у вас есть выбор из четырёх вариантов:

  • Самообразование
    . Этот вариант можно использовать как самостоятельно, так и в паре с другими методами. В интернете полно сайтов, книг и приложений, которые помогают изучать различные языки программирования и технологии. Но это самый тяжёлый путь для начинающих.
  • Университет. Если вы оканчиваете школу и хотите быть программистом, тогда идите в университет. Если не за знаниями, тогда за корочкой. Она может послужить бонусом при устройстве на работу. Хотя и какие-то знания вы тоже получите. Но не забывайте заниматься и самообучением. К выбору вуза стоит подойти очень ответственно. Внимательно изучите программы обучения и выбирайте лучшие технические вузы.
  • Ментор
    . Будет очень неплохо, если вы найдёте человека, который согласится помочь вам и направит вас в правильную сторону. Он подскажет подходящие книги и ресурсы, проверит ваш код, даст полезные советы. Кстати, мы уже писали о полезном ресурсе, где вы сможете найти ментора. Наставника можно искать среди знакомых программистов, на IT-тусовках и конференциях, на онлайн-форумах и так далее.
  • Специализированные практические курсы. Попробуйте поискать в своём городе курсы, где вас обучат какому-нибудь языку программирования или технологии. Я был приятно удивлён количеством таких курсов в Киеве, в том числе бесплатных и с последующим трудоустройством.

Какой язык, технологию и направление выбрать

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

  • Наличие на рынке вакансий. Конечная цель этого пути — найти работу программистом. А это будет трудно сделать, если на рынке вакансий никто не будет искать разработчиков на вашем языке программирования. Проверьте сайты с вакансиями, посмотрите, кого больше ищут, выпишите десяток языков. И переходите к следующему критерию.
  • Низкий уровень вхождения. Если вам придётся потратить длительное время на изучение языка, это может отбить у вас охоту к программированию вообще. Почитайте о тех языках, которые вы выбрали выше. Просмотрите литературу, которую нужно будет прочитать, чтобы изучить эти языки. И выберите те, о которых пишут, что они лёгкие, или которые вам показались лёгкими. Такими языками могут оказаться PHP, Ruby, Python.
  • Кайф от процесса. Если вам не нравится писать код на выбранном языке, вы не будете получать удовольствия от этого процесса, от работы и от жизни. А оно вам надо? Делайте правильный выбор.

Также вам придётся определиться с направлением программирования. Мобильное, десктопное, игры, веб, низкоуровневое программирование и так далее. Самые популярные и относительно лёгкие отрасли — разработка под веб, мобильные и десктопные клиенты. Под каждое направление может подходить один язык и совсем не подходить другой. То есть при выборе языка программирования также стоит отталкиваться и от этого фактора.

В любом случае изучите веб-технологии. Это язык разметки HTML, стили CSS и JavaScript, который позволит сделать вашу страницу динамической. На следующем этапе изучите серверный язык (Python, PHP, Ruby и другие) и подходящие для него веб-фреймворки. Изучите базы данных: практически в каждой вакансии программиста это упоминается.

Как получить начальный опыт

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

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

Во-вторых, вам нужно найти свои первые проекты. Это, наверное, самый сложный вариант, но рабочий. Вам придётся самому искать заказы, выполнять их, заморачиваться с оплатой. Для новичка это архисложно, но зато затем все остальные варианты покажутся плёвым делом. Выполненные проекты можно будет записать в опыт и показать вашему будущему работодателю. Реальные проекты являются большим плюсом в вашем резюме.

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

Ещё одним неплохим вариантом для получения реального опыта является open source. Таким проектам всегда нужны новые люди, пусть даже и новички. Вы можете поискать в проекте баги или посмотреть в баг-трекере и предложить методы их решения. Найти такие проекты легко на GitHub или других сервисах для хостинга кода. Не стесняйтесь задавать там вопросы.

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

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

Почему стоит выбрать Python

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

Код программы на Python читабелен. Вам даже не нужно быть программистом, чтобы в общих чертах понять, что происходит в программе. Из-за несложного синтаксиса Python вам понадобится меньше времени для написания программы, чем, например, на Java. Огромная база библиотек, которая сэкономит вам кучу сил, нервов и времени. Python является высокоуровневым языком. А значит, вам не нужно особо думать о ячейках памяти и о том, что там разместить. Python — язык широкого назначения. И он такой простой, что даже дети могут его выучить.

Справедливости ради стоит упомянуть и о других языках программирования. Java может стать неплохим выбором для новичка. Этот язык популярнее, чем Python, но и немного сложнее. Зато инструменты для разработки гораздо лучше проработаны. Стоит только сравнить Eclipse и IDLE. После Java вам будет проще перейти к работе с низкоуровневыми языками программирования.

PHP — ещё один очень популярный язык. И, мне кажется, он даже проще, чем Python. Очень легко найти себе ментора или решение какой-нибудь проблемы на форуме. Всё потому, что в мире существует огромное количество PHP-программистов разного уровня. В PHP нет нормального импорта, есть множество вариантов решения одной и той же задачи. А это усложняет обучение. И PHP заточен исключительно под веб.

Языки C и C# очень сложны для новичка. Ruby — хороший выбор в качестве второго языка, но не первого. JavaScript — очень простой язык, но ничему хорошему он вас не научит. А задача первого языка программирования всё-таки научить вас чему-то правильному, задать какую-то логику.

Важен ли английский язык

Важен! Не знаете? Учите. Знаете? Совершенствуйте. Учитесь читать, писать, слушать и говорить на английском. Делайте упор на техническую литературу. Слушайте англоязычные подкасты. Читайте англоязычные учебники по программированию.

Что нужно знать, кроме языка программирования

Конечно же, кроме языка программирования и английского, нужно знать что-то ещё. А вот что — зависит от направления, которое вы выберете. Веб-программист обязан знать HTML, CSS, JavaScript. Десктоп-программист учит API операционной системы и различные фреймворки. Разработчик мобильных приложений учит фреймворки Android, iOS или Windows Phone.

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

Последние шаги

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

lifehacker.ru

Какие книги следует читать, чтоб стать программистом — Toster.ru

Какие тысячи книг надо прочитать, чтоб выявить те «три», которые реально помогли стать хорошим программистом? Хочется поговорить не столько о конкретных книгах, сколько о типах книг. И в чем заключался академический подход к этому в СССР…

В свободное время модерирую JAVA раздел на одном из интернет форумов. Часто приходят ребята и спрашивают посоветовать пару книг или видеокурсов, чтобы быстро изучить язык и быстрей начать программировать и, став профессионалом, зарабатывать на этом. Все-таки, а что значит программировать?

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

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

Чтоб стать таким проводником, нужно одновременно соприкоснуться с двумя формами:

1. миром железа
1000610452.jpg1001085325.jpg

2. сторона человеческого восприятия

1002729662.jpg1001694665.jpg

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

Как считаете?

toster.ru

10 книг для программистов, которые хотят стать эффективнее

Хотите стать эффективнее? Мы подготовили подборку книг для программистов, которые стремятся лучше управлять рабочими процессами.

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

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

Если при изменении, кода вы не получаете быстрого ответа на внесенные изменения или не можете его прочитать, вероятно, код был унаследован. Книга научит, как получать выгоду от использования устаревших систем и повышать их работоспособность. Она основана на стратегиях, сформированных компанией Object Mentor, и сейчас сотни разработчиков делают так, чтобы время, потраченное, на устаревший код, не прошло впустую: они подчиняют себе нерегулируемые системы.

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

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

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

Легендарная книга, которую стоит прочитать всем, кто связан с программированием и управлением проектами в ИТ. Здесь описаны наиболее интересные случаи и главные проблемы в разработке, с которыми сталкивались авторы. Быть прагматиком в сфере IT – значит работать эффективно, и данная книга поможет этого добиться.

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

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

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

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

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

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

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

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

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

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

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

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

Хотите совершать меньше ошибок при написании кода? У более или менее опытных программистов уже есть свой стиль написания, тестирования, принятия, поиска ошибок в коде, и эти стили обычно формируются, когда нет чётких правил.

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

Источник: toster.ru — «Посоветуйте несколько книг для программистов»

proglib.io

Эти книги должен прочитать каждый, кто считает себя программистом! — «Хакер»

Содержание статьи

Польза не во многих, но в хороших книгах.

Сенека

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

В этой статье мы рассмотрели не все книги из золотого фонда программерской мысли. Следующие Х книг ты найдешь в десятом номере.

 

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

Сложно найти гуру программирования, который не читал «Совершенный код» Стива Макконнелла. Действительно, одна книга, хоть и немаленькая (чуть менее 900 страниц), покрывает практически все аспекты разработки ПО: от рецептов написания высококачественного кода, механизмов тестирования и отладки до стратегий оптимизации кода и психологических факторов, влияющих на разработку. Представь себе: библиография книги занимает 20 страниц и содержит более 500 источников! Книга «Совершенный код» — одно из самых полезных и, как следствие, популярных изданий по разработке ПО. Она неоднократно доказала это, возглавляя рейтинги книг по программированию (goo.gl/3q0kx). Благодаря простой манере изложения, особому стилю и чувству юмора Стива книга читается очень легко.

Говоря о проектировании и конструировании программных систем, Макконнелл выделает Главный Технический Императив Разработки ПО — управление сложностью. Простота и ясность исходного кода и архитектуры системы определяют ее качество. Большая часть книги посвящена написанию высококачественного кода. Макконнелл, как никто другой осознавая значимость мелочей, детально описывает все правила, которыми необходимо руководствоваться при написании хорошего кода. Необходимый уровень абстракции, разработка качественных интерфейсов классов и пакетов, написание высококачественных методов, выбор удачных имен переменных, упрощение управляющих структур, комментирование кода — ничто не ускользает от внимания автора. Например, общим принципам использования переменных отведен целый раздел книги более чем на 100 страниц. Только вопросу выбора имен переменных посвящена целая глава на 30 страниц. При этом все правила и советы даются исключительно с практической точки зрения.

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

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

Говоря о повышении производительности ПО, автор приводит убедительные доводы против преждевременной оптимизации, когда программист в процессе разработки интуитивно распознает «узкие» места в программе и незамедлительно принимает меры по оптимизации в ущерб качеству кода. Приводимая статистика показывает, что в 9 из 10 своих предположений программист ошибается.

Подвести итоги можно словами Джона Роббинса: «Это просто самая лучшая книга по конструированию ПО из всех, что когда-либо попадались мне в руки. Каждый разработчик должен иметь ее и перечитывать от корки до корки каждый год. Я ежегодно перечитываю ее на протяжении вот уже девяти лет и все еще узнаю много нового!»

 

Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям.

М. Фаулер

Практически любое издание о рефакторинге ссылается на книгу Мартина Фаулера «Рефакторинг». Действительно, в этой книге Фаулер сделал невозможное — в предельно понятной форме донес до читателей почти полностью исчерпывающее описание понятия «рефакторинг», его назначение, особенности и методы реализации.

При немалом объеме (400 страниц) книга читается буквально за пару вечеров, от нее просто невозможно оторваться. Главная причина головокружительного успеха книги — ее практическая направленность. Все мы знаем, что самая сложная задача при подаче материала — привести хороший показательный пример. В этом Фаулеру нет равных. Книга начинается с примера улучшения программы, который сразу с головой затягивает читателя в мир рефакторинга. Всего 40 страниц примера дают нам вполне конкретное представление о рефакторинге, его целях, принципах и основных методах реализации. Мартин определяет рефакторинг как «изменение во внутренней структуре ПО, имеющее целью облегчить понимание его работы и упростить модификацию, не затрагивая наблюдаемого поведения». Но когда необходимо проводить данное изменение? Какой код должен подвергаться переработке? Автор дает исчерпывающие ответы на эти вопросы. Он вводит правило «трех ударов»: «После трех ударов начинайте рефакторинг». То есть когда вы делаете что-то аналогичное в третий раз, это сигнал для начала рефакторинга. Раздел «Код с душком» дает нам четкое представление о том, какой же код требует улучшения. К признакам такого кода относятся: длинный метод, большой класс, длинный список параметров метода, дублирование кода, операторы типа switch, временные поля, отказ от наследства, неуместная близость классов и многое другое.

Фаулер, как сторонник TDD (Test-driven development), посвящает главу книги созданию автоматических тестов и описанию среды JUnit. Если обнаружена ошибка, сначала необходимо написать автоматический тест, выявляющий ее, и лишь затем проводить исправление. Это позволит в будущем не наступать на одни и те же грабли. Аналогично перед проведением рефакторинга следует написать тест для улучшаемого кода, чтобы обеспечить неизменность его поведения.

Бо́льшую часть книги занимает каталог методов рефакторинга. Он содержит разделы, посвященные составлению методов, перемещению функций между объектами, организации данных, упрощению условных выражений и вызовов методов, решению задач обобщения и крупным архитектурным рефакторингам. Многие из методов рефакторинга автоматизированы в популярных IDE. Например, Visual Studio предоставляет возможности по автоматическому выделению метода (ExtractMethod), удалению параметра (RemoveParameter), выделению интерфейса (ExtractInterface) и пр. В качестве крупных рефакторингов уровня системы Фаулер приводит следующие: разделение иерархии наследования, выполняющей более одной задачи, преобразование процедурного подхода к проектированию в объектно-ориентированный подход, отделение предметной области от уровня представления, а также выделение иерархии, подразумевающее разбиение большого класса на целую иерархию значительно меньших по размеру и более специализированных подклассов.

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

 

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

Э. Гамма

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

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

Коллектив авторов известен как Gang of Four («Банда четырех»), поэтому представленные в книге паттерны называют GoF. Авторы разбивают все множество представленных паттернов на три группы: порождающие паттерны, структурные паттерны и паттерны поведения. Порождающие паттерны решают задачу инстанцирования (создание экземпляров) классов. К самым популярным паттернам в данной группе можно отнести AbstractFactory (абстрактная фабрика), FactoryMethod (фабричный метод) и Singleton (одиночка).

Структурные паттерны предназначены для решения вопросов компоновки системы на основе классов и объектов. К ним относятся такие важнейшие паттерны, как Adapter (адаптер), Bridge (мост), Composite (компоновщик), Proxy (заместитель) и Façade (фасад). Паттерны поведения связаны с алгоритмами и вопросами распределения обязанностей между классами. Здесь необходимо упомянуть Strategy (стратегия), TemplateMethod (шаблонный метод), Observer (наблюдатель), Command (команда) и Iterator (итератор).

Единственное, что может смутить читателя, — некоторые примеры в книге написаны на малоизвестном на сегодняшний день языке программирования Smalltalk, а для изображения диаграмм классов вместо привычного UML используется OMT (Object Modeling Technique).

Гуру ООАиП Мартин Фаулер пишет: «Паттерны GoF — это лучшая из когда-либо изданных книг по объектно-ориентированному проектированию. Эта книга чрезвычайно влиятельна в индустрии программного обеспечения — только посмотрите на библиотеки Java и .NET, которые буквально кишат паттернами GoF». Не существует специалиста в области объектно-ориентированного проектирования, незнакомого с паттернами GoF, а если такой и есть, то в этом случае его, скорее всего, нельзя назвать специалистом.

 

Умение писать код — тяжелая работа. Она не ограничивается знанием паттернов и принципов. Над кодом необходимо попотеть.

Р. Мартин

«Чистый код» — одна из наиболее удачных книг, посвященных написанию высококачественного кода. Размер книги — 360 страниц, не считая приложений. При этом она настолько увлекательна и доступна, что за два-три вечера запросто прочитаешь ее от корки до корки. В дружеской манере «дядюшка» Боб рассказывает нам, какими же принципами нужно руководствоваться, чтобы писать хороший код. Книга изобилует примерами из реальных приложений, с которыми автор сталкивался в своей практике. Среди них такие известные продукты, как JUnit, FitNesse, JDepend, Ant и TomCat.

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

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

Необходимо поддерживать его чистоту с течением времени, чтобы предотвратить «загнивание». Поэтому он вводит «правило бойскаута»: «Оставь место стоянки чище, чем оно было до твоего прихода». То есть с каким бы участком кода мы ни работали, нужно пытаться в итоге сделать его качественнее, чем он был. В таком случае, код не будет загнивать и останется чистым.

При создании функций во главу угла ставятся компактность, правило одной операции и одного уровня абстракции — очевидные на первый взгляд принципы, которые так часто нарушаются программистами. Будучи ярым адептом TDD, Мартин указывает на важность «чистоты» не только кода конечного продукта, но и кода модульных тестов. Он иронически замечает: «Какими отличительными признаками характеризуется чистый тест? Тремя: удобочитаемостью, удобочитаемостью и удобочитаемостью».

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

В начале книги Роберт приводит ответы мэтров программирования на вопрос, что же такое «чистый код». Грэди Буч отвечает: «Чистый код прост и прямолинеен. Чистый код читается, как хорошо написанная проза. Чистый код никогда не затемняет намерения проектировщика; он полон четких абстракций и простых линий передачи управления». Программисты, которые стремятся писать «чистый код», просто обязаны прочитать эту книгу.

 

Лучший способ в чем-то разобраться до конца — это попробовать научить этому компьютер.

Д. Кнут

Программист, у которого нет книги «Искусство программирования», как священнослужитель, у которого нет Библии. Монографию Дональда Кнута часто называют «Библией программиста». Она содержит подробное описание и анализ важнейших фундаментальных алгоритмов, используемых в информатике, а также множество практических задач для усвоения и закрепления представленного материала. Журнал American Scientist включил работу Кнута в список двенадцати лучших физико-математических монографий XX века наряду с работой Эйнштейна по теории относительности. Успех книги определило качество изложения и глубина анализа общих вопросов программирования.

Кнут начал работу над «Искусством программирования» еще в 1962 году. По замыслу автора монография должна состоять из семи томов. Пока было издано три первых тома, а также первая половина четвертого. Все изданные на сегодняшний день материалы составляют почти 3000 страниц. Читать книгу совсем не просто (как, впрочем, и Библию), главным образом потому, что все примеры рассматриваются на низкоуровневом языке программирования — ассемблере для гипотетического выдуманного автором компьютера MIX. Поэтому у программиста вряд ли получится использовать книгу в качестве набора готовых рецептов для решения конкретных задач. Эта книга дает программисту не рыбу, а скорее хорошую удочку, с помощью которой он сможет не без определенных усилий самостоятельно наловить рыбы.

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

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

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

В своем отзыве о работе Кнута Билл Гейтс сказал: «Если вы считаете себя действительно хорошим программистом… прочитайте „Искусство программирования“ (Кнута)… Если вы сможете прочесть весь этот труд, то вам определенно следует отправить мне резюме». Цитата лишний раз подчеркивает, что, несмотря на сложность материала, настоящий профессионал обязательно должен осилить труд Дональда Эрвина Кнута «Искусство программирования».

Программисты-прагматики не уклоняются от ответственности. Вместо этого они испытывают радость, принимая вызовы и распространяя свой опыт.

Эндрю Хант

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

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

Одним из самых замечательных принципов программирования, которым мы обязаны авторам, является принцип DRY (Don’t Repeat Yourself), что в переводе на русский означает: «Не повторяй самого себя». Это значит, что каждый фрагмент знания должен иметь единственное и однозначное представление в системе. Следование данному принципу позволяет повысить надежность, доступность и простоту сопровождения программного продукта.

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

Единственное, что может подпортить впечатление о книге, так это недостаточно качественный перевод на русский язык и наличие множества опечаток. Книгу лучше всего читать в оригинале на английском языке. Нельзя не согласиться с отзывом Кента Бека: «Главное в этой книге то, что она поддерживает процесс создания программ в хорошей форме. [Книга] способствует вашему постоянному росту и явно написана людьми, знающими толк в программировании». Если вы стремитесь к постоянному росту как программист, эта книга обязательна к прочтению.

 

Заключение

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

 

xakep.ru

Книга «Идеальный программист. Как стать профессионалом разработки ПО»

Всех программистов, которые добиваются успеха в мире разработки ПО, отличает один общий признак: они больше всего заботятся о качестве создаваемого программного обеспечения. Это — основа для них. Потому что они являются профессионалами своего дела. В этой книге леген-дарный эксперт Роберт Мартин (более известный в сообществе как «Дядюшка Боб»), автор бестселлера «Чистый код», рассказывает о том, что значит «быть профессиональным програм-мистом», описывая методы, инструменты и подходы для разработки «идеального ПО». Книга насыщена практическими советами в отношении всех аспектов программирования: от оценки проекта и написания кода до рефакторинга и тестирования. Эта книга — больше, чем описание методов, она о профессиональном подходе к процессу разработки.

Почему вас заинтересовала эта книга? Наверное, потому что вы — программист, и вас интересует понятие профессионализма. И правильно! Профессионализм — то, чего так отчаянно не хватает в нашей профессии. Я тоже программист. Я занимался программированием 42 года и за это время повидал многое. Меня увольняли. Меня превозносили до небес. Я побывал руководителем группы, начальником, рядовым работником и даже исполнительным директором. Я работал с выдающимися программистами, и я работал со слизняками2. Я занимался разработкой как самых передовых встроенных программных/аппаратных систем, так и корпоративных систем начисления зарплаты. Я программировал на COBOL, FORTRAN, BAL, PDP-8, PDP-11, C, C++, Java, Ruby, Smalltalk и на многих других языках. Я работал с бездарными халявщиками, и я работал c высококвалифицирован-ными профессионалами. Именно последней классификации посвящена эта книга.

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

Это было в 1969 году. Мне тогда было 17 лет. Мой отец убедил местную фирму под названием ASC нанять меня программистом на неполный рабочий день. (Да, мой отец это умеет. Однажды он на моих глазах встал на пути разгоняющейся машины, поднял руку и приказал: «Стоять!» Машина остановилась. Моему папе вообще трудно отказать.) Меня приняли на работу, посадили в комнату, где хранились все руководства к компьютерам IBM, и заставили записывать в них описания обновлений за несколько лет. Именно тогда я впервые увидел фразу: «Страница намеренно оставлена пустой».

Через пару дней обновления руководств мой начальник предложил мне написать простую программу на Easycoder. Его просьба вызвала у меня бурный энтузиазм, ведь до этого я еще не написал ни одной программы для настоящего компьютера. Впрочем, я бегло просмотрел несколько книг по Autocoder и примерно представлял, с чего следует начать. Моя программа должна была прочитать записи с магнитной ленты и изменить идентификаторы этих записей. Значения новых идентификаторов начинались с 1 и увеличива-лись на 1 для каждой последующей записи. Записи с обновленными идентификаторами должны были записываться на новую ленту.

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

Моя программа была написана на программных формулярах — больших прямоугольных листах бумаги, разделенных на 25 строк и 80 столбцов. Каждая строка соответствовала одной карте. Программа записывалась на формуляре прописными буквами. В последних 6 столбцах каждой строки записывался ее номер. Номера обычно увеличивались с приращением 10, чтобы позднее в стопку можно было вставить новые карты. Формуляры передавались операторам подготовки данных. В компании работало несколько десятков женщин, которые брали формуляры из большого ящика и «набивали» их на клавишных перфораторах. Эти машины были очень похожи на пишущие машинки, но они не печатали вводимые знаки на бумаге, а кодировали их, пробивая отверстия в перфокартах. На следующий день операторы вернули мою программу по внутренней почте. Маленькая стопка перфокарт была завернута в формуляры и перетянута резинкой. Я поискал на перфокартах ошибки набора. Вроде все нормально. Я положил библиотечную колоду в конец своей стопки программ и отнес ее наверх операторам.

Компьютеры были установлены в машинном зале за закрытыми дверями, в зале с регулируемым микроклиматом и фальшполом (для прокладки кабелей). Я постучал в дверь, суровый оператор забрал у меня колоду и положил ее в другой ящик. Моя программа будет запущена, когда до нее дойдет очередь. На следующий день я получил свою колоду обратно. Она была завернута в листинг и перетянута резинкой. (Да, в те дни мы использовали очень много резинок!).

Я открыл листинг и увидел, что программа не прошла компиляцию. Сообщения об ошибках в листинге оказались слишком сложными для моего понимания, поэтому я отнес их своему начальнику. Он просмотрел листинг, что-то пробормотал про себя, сделал несколько пометок, взял колоду и приказал следовать за ним. Он прошел в операторскую, сел за свободный перфоратор, исправил все карты с ошибками и добавил еще пару карт. Он на скорую руку объяснил суть происходящего, но все промелькнуло в одно мгновение. Он отнес новую колоду в машинный зал, постучал в дверь, сказал какие-то «волшебные слова» оператору, а затем прошел в компьютер-ный зал. Оператор установил магнитные ленты на накопители и загрузил колоду, пока мы наблюдали. Завертелись ленты, затарахтел принтер — и на этом все кончилось. Программа заработала. На следующий день начальник поблагодарил меня за помощь, и моя работа на этом завершилась. Очевидно, фирма ASC посчитала, что ей некогда нянчиться с 17-летними новичками.

Впрочем, моя связь с ASC на этом не завершилась. Через несколько месяцев я получил постоянную работу в вечернюю смену в ASC на
обслуживании принтеров. Эти принтеры печатали всякую ерунду с образов, хранившихся на ленте. Я должен был своевременно заправлять принтеры бумагой, ставить ленты с образами, извлекать замятую бумагу и вообще следить за тем, чтобы машины нормально работали. Все это происходило в 1970 году. Я не мог себе позволить учебу в колледже, да она меня, признаться, не особенно привлекала. Война во Вьетнаме еще не закончилась, и в студенческих городках было неспокойно. Я продолжал штудировать книги по COBOL, Fortran, PL/1, PDP-8 и ассемблеру для IBM 360. Я намеревался обойтись без учебы и как можно быстрее заняться реальным программированием.

Через год я достиг этой цели — меня повысили до штатного программиста в ASC. Я с двумя друзьями Ричардом и Тимом, которым тоже
было по 19 лет, трудились вместе с тремя другими программистами над бухгалтерской системой реального времени для фирмы, занимающейся грузовыми перевозками. Мы работали на Varian 620i — простых мини-компьютерах, по архитектуре сходных с PDP-8, не считая того, что у них были 16-разрядные слова и два регистра. Программирование велось на ассемблере.

Мы написали каждую строку кода в этой системе. Да, без преувеличения каждую. Мы написали операционную систему, обработчики
прерываний, драйверы ввода/вывода, файловую систему для дисков, систему подгрузки оверлеев и даже компоновщик с динамической
переадресацией — не говоря уже о коде приложения. Мы написали все это за 8 месяцев, работая по 70–80 часов в неделю для соблюдения немыслимо жестких сроков. Тогда я получал $7200 в год.

Система была закончена в срок. А потом мы уволились.

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

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

Я засиживался до трех часов ночи, поедая пиццу и смотря старые фильмы ужасов по черно-белому телевизору моих родителей. Постепенно кошмары стали просачиваться с экрана в мою жизнь. Я валялся в постели до часа дня, потому что не хотел видеть очередной унылый день. Я поступил на курсы математического анализа в региональном колледже и провалил экзамен. Моя жизнь летела под откос. Моя мать поговорила со мной и объяснила, что так жить нельзя и что я был идиотом, когда уволился, не найдя себе новую работу — да еще со скандалом и на пару с приятелем. Она сказала, что увольняться, не имея новой работы, вообще нельзя, и делать это следует спокойно, трезво и в одиночку. Она сказа-ла, что мне следует позвонить старому начальнику и попроситься на старое место — по ее выражению, «проглотить обиду». Девятнадцатилетние парни не склонны признавать свои ошибки, и я не был исключением. Тем не менее обстоятельства взяли верх над гордостью. В конечном итоге я позвонил своему начальнику. И ведь сработало! Он охотно принял меня на $6800 в год, а я охотно принял его предложение.

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

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

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

Более подробно с книгой можно познакомиться на сайте издательства
Оглавление
Отрывок

Для Хаброжителей скидка 25% по купону — Идеальный программист.

По факту оплаты бумажной книги отправляем на e-mail электронные версии книг, при покупке электронной книги — все доступные версии отправляются пользователям.

+ читатель бесплатно получает электронную книгу (pdf и epub) Сергея Тарасова «Дефрагментация мозга. Софтостроение изнутри»

habr.com

Как стать программистом

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

В этой организации я разрабатывал систему управления производством на базе 1С7.7. Это заняло у меня несколько лет. И хотя в связи с переходом на другую работу закончить этот проект я не успел, на этом предприятии до сих пор используют эту систему. Если кому интересно, описание её можно найти здесь.

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

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

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

Возможно, некоторая информация пригодится школьникам и студентам.

Также хотелось бы узнать ваши отзывы. Мне это очень важно. Обратная связь поможет мне найти ошибки и сделать книгу ещё более понятной и полезной.

Содержание


СПИСОК СОРАЩЕНИЙ ……………………………………………………………………………………………………………………………………	6
	
ПРЕДИСЛОВИЕ …………………………………………………………………………………………………………………………………………………	7
	
1. ОБЩИЕ СВЕДЕНИЯ …………………………………………………………………………………………………………………………………	9
   1.1. Что такое программа ………………………………………………………………………………………………………	9
   1.2. Как устроен компьютер и
        как заставить его выполнять программу ………………………………………………………	11
   1.3. Работа с файлами ………………………………………………………………………………………………………………	14
        1.3.1. Имя файла ………………………………………………………………………………………………………………	15
        1.3.2. Типы файлов …………………………………………………………………………………………………………	16
        1.3.3. Путь к файлу ………………………………………………………………………………………………………	18
        1.3.4. Ярлыки ………………………………………………………………………………………………………………………	19
        1.3.5. Основные операции с файлами ………………………………………………………………	21
        1.3.6. Поиск файлов ………………………………………………………………………………………………………	24
        1.3.7. Файловые менеджеры ………………………………………………………………………………………	26
        1.3.8. Командная строка ……………………………………………………………………………………………	28
        1.3.9. Пора становиться на путь программиста ……………………………………	31
	
2. ЯЗЫКИ ПРОГРАММИРОВАНИЯ ……………………………………………………………………………………………………………	32
   2.1. Компиляторы и средства разработки …………………………………………………………………	34
   2.2. Еще немного о языках программирования ………………………………………………………	35
	
3. СРЕДА РАЗРАБОТКИ FREE PASCAL ……………………………………………………………………………………………	37
   3.1. Общие сведения ……………………………………………………………………………………………………………………	37
   3.2. Установка среды разработки Free Pascal ……………………………………………………	37
   3.3. Запускаем… ………………………………………………………………………………………………………………………………	38
   3.4. Первая программа ………………………………………………………………………………………………………………	39
   3.5. Типы данных ……………………………………………………………………………………………………………………………	43
   3.6. Переменные и константы ………………………………………………………………………………………………	45
   3.7. Подпрограммы …………………………………………………………………………………………………………………………	48
   3.8. Математика ………………………………………………………………………………………………………………………………	53
   3.9. Программирование для Windows ………………………………………………………………………………	59
   3.10. Путь к совершенству ……………………………………………………………………………………………………	62
	
4. РАЗРАБОТКА ПРОГРАММ ДЛЯ WINDOWS ……………………………………………………………………………………	63
   4.1. Создание нового проекта ……………………………………………………………………………………………	63
   4.2. Компиляция ………………………………………………………………………………………………………………………………	64
   4.3. Первая программа ………………………………………………………………………………………………………………	65
   4.4. Пишем калькулятор ……………………………………………………………………………………………………………	68
   4.5. Работа с базами данных ………………………………………………………………………………………………	79
	
5. ЯЗЫКИ СЦЕНАРИЕВ ………………………………………………………………………………………………………………………………	84
   5.1. Командные файлы …………………………………………………………………………………………………………………	84
   5.2. Скрипты ………………………………………………………………………………………………………………………………………	86
        5.2.1. Первый скрипт ……………………………………………………………………………………………………	86
        5.2.2. Получение информации о диске ……………………………………………………………	87
        5.2.3. Диалог с пользователем ……………………………………………………………………………	91
        5.2.4. Работа с каталогами и файлами …………………………………………………………	94
        5.2.5. Отладка сценариев …………………………………………………………………………………………	98
        5.2.6. Сценарии для Интернета ……………………………………………………………………………	100
        5.2.7. Средства разработки сценариев …………………………………………………………	106
   5.3. Ближе к «железу» ………………………………………………………………………………………………………………	108
	
	
6. ПРОГРАММИРУЕМЫЕ ЛОГИЧЕСКИЕ КОНТРОЛЛЕРЫ …………………………………………………………………	109
   6.1. Первое знакомство ……………………………………………………………………………………………………………	109
   6.2. Средства для разработки ПО ……………………………………………………………………………………	110
   6.3. CoDeSys: первые шаги ……………………………………………………………………………………………………	111
        6.3.1. Создание нового проекта …………………………………………………………………………	111
        6.3.2. Объявление переменных ………………………………………………………………………………	113
        6.3.3. Пишем программу ………………………………………………………………………………………………	115
        6.3.4. Компиляция, запуск и отладка ……………………………………………………………	117
        6.3.5. Визуализация ………………………………………………………………………………………………………	119
   6.4. Разрабатываем АСУ ……………………………………………………………………………………………………………	123
        6.4.1. Постановка задачи …………………………………………………………………………………………	124
        6.4.2. Решения ……………………………………………………………………………………………………………………	125
        6.4.3. Определение состава входных и выходных сигналов …………	126
        6.4.4. Разработка алгоритмов ………………………………………………………………………………	127
        6.4.5. Исходные коды ……………………………………………………………………………………………………	128
        6.4.6. Визуализация процесса ………………………………………………………………………………	130
        6.4.7. Резюме ………………………………………………………………………………………………………………………	131
	
7. МИКРОКОНТРОЛЛЕРЫ ……………………………………………………………………………………………………………………………	132
   7.1. Чем дальше в лес… ……………………………………………………………………………………………………………	132
   7.2. Микроконтроллеры семейства PIC16F8x ……………………………………………………………	132
   7.3. Что со всем этим делать? …………………………………………………………………………………………	134
   7.4. Схема устройства ………………………………………………………………………………………………………………	134
   7.5. Пишем программу …………………………………………………………………………………………………………………	135
        7.5.1. Объявление переменных и констант …………………………………………………	137
        7.5.2. Макросы ……………………………………………………………………………………………………………………	138
        7.5.3. Инициализация ……………………………………………………………………………………………………	140
        7.5.4. Основная программа ………………………………………………………………………………………	140
   7.6. Средства разработки ………………………………………………………………………………………………………	141
        7.6.1. Создание нового проекта …………………………………………………………………………	142
        7.6.2. Компиляция ……………………………………………………………………………………………………………	145
        7.6.3. Отладка программ ……………………………………………………………………………………………	145
   7.7. Как загрузить программу в микроконтроллер ……………………………………………	149
   7.8. О непонятном …………………………………………………………………………………………………………………………	149
	
8. И ЭТО ЕЩЁ НЕ ВСЁ? …………………………………………………………………………………………………………………………	148
	
ЗАКЛЮЧЕНИЕ ……………………………………………………………………………………………………………………………………………………	149
	
СПИСОК ИСПОЛЬЗУЕМЫХ ИСТОЧНИКОВ ………………………………………………………………………………………………	150
	
КНИГИ …………………………………………………………………………………………………………………………………………………………………	151

Читать отзывы или оставить свой

info-master.su