Книги по программированию

Содержание

Какие книги читать начинающему программисту?

21 Авг. 2016, Книги, 4269 просмотров

У меня есть книга, которую я уже пытаюсь раза с третьего осилить, но всё никак не дойду до последней страницы. Называется она «Человеческий фактор. Успешные проекты и компании«, в простонародье «Peopleware» и является хрестоматией по разработке программного обеспечения наряду с классическим трудом под названием «Мифический человеко-месяц» от Фредерика Брукса. Так вот, там есть интересное выражение, которое гласит следующее:

«Статистика по чтению литературы обескураживает особенно сильно: средний разработчик программного обеспечения, к примеру, не имеет ни единой книги по предмету собственной работы и не может похвастать тем, что читал такую книгу»

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

Софтостроение специфическая отрасль, где специалисту необходимо обладать рядом навыков и знаний. Возьмём самый простой пример: веб-разработка. Современному веб-разработчику нужно иметь представление о множестве тем: веб-программирование, веб-дизайн, основы безопасности веб-приложений, навыки системного администрирования (чаще всего unix-подобных систем), навыки работы с СУБД, паттерны проектирования веб-приложений, хотя бы поверхностно понимать методологии разработки ПО, их плюсы и минусы, не говоря уже о множестве инструментов, используемых ежедневно (VCS, IDE, ОС, пакетные менеджеры и так далее). Веб-разработчик, не знающий основ безопасности веб-приложений, может ненамеренно оставить серьёзную брешь в системе, которая в будущем обернётся серьёзными финансовыми потерями, а может и вовсе иметь катастрофические последствия. Порой «гугля» очередное решение проблемы, мы не задумываясь копируем код или используем сомнительную библиотеку, даже не заглянув внутрь. Главное работает 🙂 А ведь за всем этим могут скрываться серьёзные проблемы…

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

Список книг:

  • Программист-прагматик. Путь от подмастерья к мастеру
  • Чистый код
  • Джоэл о программировании (Joel on Software)
  • Джоэл. И снова о программировании (More Joel on Software)
  • Программист-фанатик (Passionate Programmer)
  • Человеческий фактор. Успешные проекты и команды (Peopleware)
  • Язык программирования C
  • Код. Тайный язык информатики

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

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

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

Чистый код

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

Джоэл о программировании

Если вы ни разу не слышали о Джоэле Спольски, то стоит задуматься, а тем ли делом вы занимаетесь 🙂 Мистер Спольски автор популярного блога «Joel on Software», а также… один из создателей StackOverflow 🙂 Книга является сборником эссе, опубликованных на личном блоге автора. В ней собраны самые популярные темы о программировании. Вот лишь малая часть из них:

  • Какой язык программирования стоит изучать первым
  • Что необходимо знать про UTF-8
  • Зачем программисту понимать алгоритмы и структуры данных
  • Как проводить собеседование с кандидатами на работу

Продолжением «Джоэл о программировании» является «Джоэл.

И снова о программировании». Однозначный must read!

P.S. Перевод его блога (к сожалению, не все статьи) на русский язык можно посмотреть тут.

Программист-фанатик

Эта книга была переведена на русский язык совсем недавно, но существует по технологичным меркам давно (~2009 год). Написана программистом для программистов и затрагивает щепетильные для разработчиков темы:

  • Кто такой настоящий программист
  • Что необходимо знать программисту, чтобы всегда быть «на плаву»
  • Почему не стоит бояться конкуренции со стороны программистов-индусов 🙂
  • Как «не перегореть» на работе

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

Человеческий фактор

Эту книгу я рекомендовал на прошедшем Python митапе в Алматы в прошлом году. Она из тех книг, которые перечитывая — узнаёшь новое. С опытом начинаешь по-другому смотреть на, может быть, привычные для себя вещи. «Человеческий фактор» основан на эмпирических исследованиях, проводимых авторами. Цель заключалась в том, чтобы понять почему одни проекты (как и люди) успешны, а другие нет, само собой в нашем с вами общем деле. Читать в первую очередь рекомендую руководителям и менеджерам в сфере IT, разработчикам она тоже будет очень полезна.

Язык программирования C

Свой путь в мир программирования я, можно сказать, начинал с этого легендарного языка. Си является родителем для многих современных высокоуровневых языков, например того же Python. На нём написано множество софта, начиная от встроенного (привет прошивкам микроконтроллеров) заканчивая сложными вычислительными системами, работающими на Земле и в Космосе (ядро Linux, современный Интернет, ПО в медицине и военной промышленности и многое-многое другое). В рейтинге самых популярных языков он до сих пор занимает лидирующие позиции. Книга «Язык программирования C» является бессмертной классикой, а среди её авторов есть создатель Unix (Dennis Ritchie). Прелесть Си в том, что программист полностью контролирует ход выполнения программы: ручной доступ к памяти и работа с указателями, строгая типизация, контроль за размером входных данных и многое другое. За счёт низкого уровня при работе с «железом» компьютера, а следовательно отсутствия дополнительных абстракций (в простонародье «свистелок и перделок»), код выполняется очень быстро. Но за скорость нужно платить. В неумелых руках системы, написанные на Си, подвержены известным уязвимостям: переполнение стэка, переполнение кучи, ошибки форматирования строки и многие другие. Изучив Си, вы начнёте лучше понимать как работает компьютер, а следовательно станете лучшим программистом.

Код. Тайный язык информатики

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

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

Если у вас есть идеи или замечания по моему списку книг, добро пожаловать в комментарии 🙂

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

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. Вам необходимо изучить правила работы с базами данных, паттерны программирования, структуры данных, ознакомиться с репозиториями кода, системами версионного контроля. Программисту нужно знать операционную систему, доступные инструменты, с которыми ему придется работать и среду разработки. И, главное, научитесь быстро и точно искать нужную информацию в сети. Без этого сегодня, вообще, никуда.

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

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

 

Какие книги читать начинающему программисту?

21 Авг. 2016, Книги, 4268 просмотров

У меня есть книга, которую я уже пытаюсь раза с третьего осилить, но всё никак не дойду до последней страницы. Называется она «Человеческий фактор. Успешные проекты и компании«, в простонародье «Peopleware» и является хрестоматией по разработке программного обеспечения наряду с классическим трудом под названием «Мифический человеко-месяц» от Фредерика Брукса. Так вот, там есть интересное выражение, которое гласит следующее:

«Статистика по чтению литературы обескураживает особенно сильно: средний разработчик программного обеспечения, к примеру, не имеет ни единой книги по предмету собственной работы и не может похвастать тем, что читал такую книгу»

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

Софтостроение специфическая отрасль, где специалисту необходимо обладать рядом навыков и знаний. Возьмём самый простой пример: веб-разработка. Современному веб-разработчику нужно иметь представление о множестве тем: веб-программирование, веб-дизайн, основы безопасности веб-приложений, навыки системного администрирования (чаще всего unix-подобных систем), навыки работы с СУБД, паттерны проектирования веб-приложений, хотя бы поверхностно понимать методологии разработки ПО, их плюсы и минусы, не говоря уже о множестве инструментов, используемых ежедневно (VCS, IDE, ОС, пакетные менеджеры и так далее). Веб-разработчик, не знающий основ безопасности веб-приложений, может ненамеренно оставить серьёзную брешь в системе, которая в будущем обернётся серьёзными финансовыми потерями, а может и вовсе иметь катастрофические последствия. Порой «гугля» очередное решение проблемы, мы не задумываясь копируем код или используем сомнительную библиотеку, даже не заглянув внутрь. Главное работает 🙂 А ведь за всем этим могут скрываться серьёзные проблемы…

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

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

Список книг:

  • Программист-прагматик. Путь от подмастерья к мастеру
  • Чистый код
  • Джоэл о программировании (Joel on Software)
  • Джоэл.

    И снова о программировании (More Joel on Software)

  • Программист-фанатик (Passionate Programmer)
  • Человеческий фактор. Успешные проекты и команды (Peopleware)
  • Язык программирования C
  • Код. Тайный язык информатики

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

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

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

Чистый код

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

Джоэл о программировании

Если вы ни разу не слышали о Джоэле Спольски, то стоит задуматься, а тем ли делом вы занимаетесь 🙂 Мистер Спольски автор популярного блога «Joel on Software», а также… один из создателей StackOverflow 🙂 Книга является сборником эссе, опубликованных на личном блоге автора. В ней собраны самые популярные темы о программировании. Вот лишь малая часть из них:

  • Какой язык программирования стоит изучать первым
  • Что необходимо знать про UTF-8
  • Зачем программисту понимать алгоритмы и структуры данных
  • Как проводить собеседование с кандидатами на работу

Продолжением «Джоэл о программировании» является «Джоэл. И снова о программировании». Однозначный must read!

P.S. Перевод его блога (к сожалению, не все статьи) на русский язык можно посмотреть тут.

Программист-фанатик

Эта книга была переведена на русский язык совсем недавно, но существует по технологичным меркам давно (~2009 год).

Написана программистом для программистов и затрагивает щепетильные для разработчиков темы:

  • Кто такой настоящий программист
  • Что необходимо знать программисту, чтобы всегда быть «на плаву»
  • Почему не стоит бояться конкуренции со стороны программистов-индусов 🙂
  • Как «не перегореть» на работе

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

Человеческий фактор

Эту книгу я рекомендовал на прошедшем Python митапе в Алматы в прошлом году. Она из тех книг, которые перечитывая — узнаёшь новое. С опытом начинаешь по-другому смотреть на, может быть, привычные для себя вещи. «Человеческий фактор» основан на эмпирических исследованиях, проводимых авторами. Цель заключалась в том, чтобы понять почему одни проекты (как и люди) успешны, а другие нет, само собой в нашем с вами общем деле. Читать в первую очередь рекомендую руководителям и менеджерам в сфере IT, разработчикам она тоже будет очень полезна.

Язык программирования C

Свой путь в мир программирования я, можно сказать, начинал с этого легендарного языка. Си является родителем для многих современных высокоуровневых языков, например того же Python. На нём написано множество софта, начиная от встроенного (привет прошивкам микроконтроллеров) заканчивая сложными вычислительными системами, работающими на Земле и в Космосе (ядро Linux, современный Интернет, ПО в медицине и военной промышленности и многое-многое другое). В рейтинге самых популярных языков он до сих пор занимает лидирующие позиции. Книга «Язык программирования C» является бессмертной классикой, а среди её авторов есть создатель Unix (Dennis Ritchie). Прелесть Си в том, что программист полностью контролирует ход выполнения программы: ручной доступ к памяти и работа с указателями, строгая типизация, контроль за размером входных данных и многое другое. За счёт низкого уровня при работе с «железом» компьютера, а следовательно отсутствия дополнительных абстракций (в простонародье «свистелок и перделок»), код выполняется очень быстро. Но за скорость нужно платить. В неумелых руках системы, написанные на Си, подвержены известным уязвимостям: переполнение стэка, переполнение кучи, ошибки форматирования строки и многие другие. Изучив Си, вы начнёте лучше понимать как работает компьютер, а следовательно станете лучшим программистом.

Код. Тайный язык информатики

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

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

Если у вас есть идеи или замечания по моему списку книг, добро пожаловать в комментарии 🙂

Какие книги читать начинающему программисту?

21 Авг. 2016, Книги, 4267 просмотров

У меня есть книга, которую я уже пытаюсь раза с третьего осилить, но всё никак не дойду до последней страницы. Называется она «Человеческий фактор. Успешные проекты и компании«, в простонародье «Peopleware» и является хрестоматией по разработке программного обеспечения наряду с классическим трудом под названием «Мифический человеко-месяц» от Фредерика Брукса. Так вот, там есть интересное выражение, которое гласит следующее:

«Статистика по чтению литературы обескураживает особенно сильно: средний разработчик программного обеспечения, к примеру, не имеет ни единой книги по предмету собственной работы и не может похвастать тем, что читал такую книгу»

Мой опыт работы с программистами лишь доказывает слова ДеМарко и Листера.

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

Софтостроение специфическая отрасль, где специалисту необходимо обладать рядом навыков и знаний. Возьмём самый простой пример: веб-разработка. Современному веб-разработчику нужно иметь представление о множестве тем: веб-программирование, веб-дизайн, основы безопасности веб-приложений, навыки системного администрирования (чаще всего unix-подобных систем), навыки работы с СУБД, паттерны проектирования веб-приложений, хотя бы поверхностно понимать методологии разработки ПО, их плюсы и минусы, не говоря уже о множестве инструментов, используемых ежедневно (VCS, IDE, ОС, пакетные менеджеры и так далее).

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

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

Список книг:

  • Программист-прагматик. Путь от подмастерья к мастеру
  • Чистый код
  • Джоэл о программировании (Joel on Software)
  • Джоэл. И снова о программировании (More Joel on Software)
  • Программист-фанатик (Passionate Programmer)
  • Человеческий фактор. Успешные проекты и команды (Peopleware)
  • Язык программирования C
  • Код. Тайный язык информатики

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

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

Пожалуй, это одна из немногих книг, эффект от прочтения которой я почувствовал практически сразу.

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

Чистый код

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

Джоэл о программировании

Если вы ни разу не слышали о Джоэле Спольски, то стоит задуматься, а тем ли делом вы занимаетесь 🙂 Мистер Спольски автор популярного блога «Joel on Software», а также… один из создателей StackOverflow 🙂 Книга является сборником эссе, опубликованных на личном блоге автора. В ней собраны самые популярные темы о программировании. Вот лишь малая часть из них:

  • Какой язык программирования стоит изучать первым
  • Что необходимо знать про UTF-8
  • Зачем программисту понимать алгоритмы и структуры данных
  • Как проводить собеседование с кандидатами на работу

Продолжением «Джоэл о программировании» является «Джоэл. И снова о программировании». Однозначный must read!

P.S. Перевод его блога (к сожалению, не все статьи) на русский язык можно посмотреть тут.

Программист-фанатик

Эта книга была переведена на русский язык совсем недавно, но существует по технологичным меркам давно (~2009 год). Написана программистом для программистов и затрагивает щепетильные для разработчиков темы:

  • Кто такой настоящий программист
  • Что необходимо знать программисту, чтобы всегда быть «на плаву»
  • Почему не стоит бояться конкуренции со стороны программистов-индусов 🙂
  • Как «не перегореть» на работе

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

Человеческий фактор

Эту книгу я рекомендовал на прошедшем Python митапе в Алматы в прошлом году. Она из тех книг, которые перечитывая — узнаёшь новое. С опытом начинаешь по-другому смотреть на, может быть, привычные для себя вещи. «Человеческий фактор» основан на эмпирических исследованиях, проводимых авторами. Цель заключалась в том, чтобы понять почему одни проекты (как и люди) успешны, а другие нет, само собой в нашем с вами общем деле. Читать в первую очередь рекомендую руководителям и менеджерам в сфере IT, разработчикам она тоже будет очень полезна.

Язык программирования C

Свой путь в мир программирования я, можно сказать, начинал с этого легендарного языка. Си является родителем для многих современных высокоуровневых языков, например того же Python. На нём написано множество софта, начиная от встроенного (привет прошивкам микроконтроллеров) заканчивая сложными вычислительными системами, работающими на Земле и в Космосе (ядро Linux, современный Интернет, ПО в медицине и военной промышленности и многое-многое другое). В рейтинге самых популярных языков он до сих пор занимает лидирующие позиции. Книга «Язык программирования C» является бессмертной классикой, а среди её авторов есть создатель Unix (Dennis Ritchie). Прелесть Си в том, что программист полностью контролирует ход выполнения программы: ручной доступ к памяти и работа с указателями, строгая типизация, контроль за размером входных данных и многое другое. За счёт низкого уровня при работе с «железом» компьютера, а следовательно отсутствия дополнительных абстракций (в простонародье «свистелок и перделок»), код выполняется очень быстро. Но за скорость нужно платить. В неумелых руках системы, написанные на Си, подвержены известным уязвимостям: переполнение стэка, переполнение кучи, ошибки форматирования строки и многие другие. Изучив Си, вы начнёте лучше понимать как работает компьютер, а следовательно станете лучшим программистом.

Код. Тайный язык информатики

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

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

Если у вас есть идеи или замечания по моему списку книг, добро пожаловать в комментарии 🙂

Программирование для начинающих

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

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

Универсальные сайты по программированию

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

  • geekbrains.ru. Онлайн-обучение программированию и общение с коллегами и профессионалами. Бесплатные и платные курсы и вебинары: начала программирования, веб-дизайн, разработка игр, обслуживание СУБД и многое другое.
  • proklondike.com. Отличный сайт, предлагающий множество учебников по всем разделам программирования: языки программирования, веб-технологии, разработка приложений, базы данных, операционные системы. Все книги выложены на сайте, их можно быстро и удобно скачать. Также публикуются статьи по программированию.
  • ph4s.ru. Множество книг и учебников по программированию и компьютерным технологиям, доступные для бесплатного скачивания (на этом же сайте еще учебники по другим наукам).
  • programm.ws. Небольшой, но весьма полезный сайт с книгами и уроками по Java, C++, Delphi и Assembler. Почему полезный? Выложены полнотекстовые сборники задач и примеров на разных языках: постановка задачи, разбор, исходник, скриншот.

Форумы для программистов. Вопросы и ответы

  • cyberforum.ru. Пожалуй, лучший форум по ИТ, с разделами, посвященными программированию на любых языках и платформах, компьютерам (железо, ОС, периферия и т.п.), разработке софта и его обслуживанию, web программированию, учебе и науке и даже бытовой технике. Неважно, кто вы — студент, изучающий Паскаль или бизнесмен, ищущий работников, молодой сайтостроитель или опытный гуру программирования — на этом форуме всем найдется место.
  • programmersforum.ru. Форум о программировании с основными разделами по Delphi, C++,.NET, Java и т.п. Также темы о работе для программистов, веб-программировании, технологиях программирования и т.п.
  • forum.sources.ru. Форум о программировании: языки программирования, сети и технологии, большой раздел по работе с СУБД, web технологии, графика и мультимедиа и т.п.
  • forum.vingrad.ru. Еще один из посещаемых форумов о программировании со стандартными разделами (см. выше аналогичные), а также специальными разделами о мобильной разработке, электронике и микропроцессорах
  • hashcode.ru. Это не традиционный форум о программировании, а скорее сервис вопросов и ответов на любые вопросы, касающиеся информатики, программирования, ИТ и т.п. Здесь вам в том числе помогут с учебными задачами (все решать вряд ли будут, но консультация опытных людей — очень важна).
  • askdev.ru. Еще один сервис вопросов и ответов IT-специалистов о программировании, системном администрировании, веб дизайне и т.п.

Изучаем Basic/VB/VBA: сайты, учебники, исходники

  • vbbook.ru. Сайт с материалами по Visual Basic — статьи, исходники, уроки программирования на VB.

Изучаем Pascal: сайты, учебники, исходники

  • pas1.ru. Начинаете изучать Паскаль? Тогда этот сайт для вас. Подробнейший учебник по синтаксису, структурам данных, операциям, примеры решений задач (условия, циклы, графика, массивы, строки, файлы и т.д.).
  • tp7.info. Сайт о Turbo Pascal 7: статьи, учебники, бесплатные и платные исходные файлы небольших учебных заданий на Паскале.
  • tpdn.ru. Сайт-справочник о Turbo Pascal: справочник по функциям, синтаксису, модулям, директивам компилятора, описание среды разработки и т.п.

  • zedpost.ru. Исходники с подробными комментариями программ на языке Pascal, Pascal ABC с пояснениями, уроки программирования на Паскаль и других языках.
  • borlpasc.narod.ru. Сайт о программировании на Паскале, из полезного — множество бесплатных программ (исходников), в том числе для относительно сложных задач.

Изучаем Delphi: сайты, учебники, исходники

  • delphimaster.ru. Все о Delphi — каталог полезных сайтов, форукм, статьи, книги и т.п.
  • delphikingdom.com. Виртуальный клуб программистов Delphi. Книги, статьи, последние новости, форум, уроки и советы для начинающих программистов.
  • delphisources.ru. Более 1000 исходников на Delphi, статьи, форум и другие полезные материалы по Delphi.
  • delphiexpert.ru. Уроки и статьи по Delphi, исходники и курсовые работы на Delphi, справочник, компоненты, учебники.

Изучаем C/C++: сайты, учебники, исходники

  • cppstudio.com. Основы программирования на Си и Си++ для начинающих: от истории языка и советов по выбору компилятора и среды разработки до полноценных онлайн учебников. А также учебные задачи, исходники на C/C++, тесты и т.п.

Изучаем MS Office: сайты, учебники, примеры

  • www.excelworld.ru. Сайт, посвященный работе в программе MS Excel: статьи, справочники по функциям, учебники и книги, форум по Excel.
  • www.excel-vba.ru. Узнайте об Excel и VBA в одном месте: начиная от истории и возможностях программы Эксель до описания функций VBA. Еще полезное: бесплатные надстройки для Excel, форум и некоторые программы для Excel.
  • access.my-study.info. Сайт, посвященный работе в программе MS Access: видеоуроки, примеры создания баз данных, инструкции и вопросы, VBA программирование для Аксесс.

Книги, формулы, учебники для изучения математики

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

Закрыть меню