Книги для программиста

Книги для программиста

Алгоритмы — это то, что мы делаем, чтобы не делать что-то. По сути это инструкции для выполнения скучных и повторяющихся задач. Задача, решение которой без алгоритмов может занять несколько часов, с алгоритмами решается практически мгновенно, — пишет сайт pythonist.ru.

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

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

Содержание

Грокаем алгоритмы

Адитья Бхаргава. Год издания: 2017.

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

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

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

Совершенный алгоритм. Основы

Тим Рафгарден. Год издания: 2019.

Тим Рафгарден — профессор информатики, член института Data Science при Колумбийском университете. Серия книг «Совершенный алгоритм» (англ. Algorithms Illuminated) написана им на основе онлайн-курсов, которые он ведет на платформах Coursera и edX.

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

В этой книге читатели также найдут упражнения на закрепление материала и разборы решений.

Совершенный алгоритм. Графовые алгоритмы и структуры данных

Рафгарден Тим. Год издания: 2019.

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

Алгоритмы для начинающих

Луридас Панос. Год издания: 2018.

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

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

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

Введение в анализ алгоритмов

Майкл Солтис. Год издания: 2019.

Это второе, полностью обновленное и переработанное издание книги.

«Введение в анализ алгоритмов» будет отличным учебным руководством и справочником как студентов, так и для разработчиков, ориентированных на создание надежного кода. Материал в книге изложен достаточно сжато, но, тем не менее, он охватывает все необходимые основы.

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

Алгоритмы: разработка и применение

Авторы: Джон Клейнберг, Эва Тардос. Год издания: 2016.

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

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

В книге рассматриваются (среди прочих) такие темы как основы анализа алгоритмов, графы, жадные алгоритмы, алгоритмы «разделяй и властвуй», динамическое программирование, NP-полнота, аппроксимирующие и рандомизированные алгоритмы.

Алгоритмы. Руководство по разработке

Стивен С. Скиена. Год издания: 2011.

Книга, ставшая классикой. Первое издание вышло еще в 1997 году. Мы представляем вам второе издание, которое было существенно обновлено.

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

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

  1. Head First Java
  2. Java. Руководство для начинающих
  3. Java для чайников
  4. Java. Полное руководство
  5. Java. Библиотека профессионала
  6. Java. Методы программирования
  7. Java. Справочник разработчика
  8. Java SE 9. Базовый курс
  9. Effective Java
  10. Философия Java

«Для самых маленьких»

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

«Head First Java, Изучаем Java», Кэти Сьерра, Берт Бэйтс

Я начал с этой книги не потому, что она мне больше всего нравится, а потому, что она самая простая. Эта книга, по мнению очень многих программистов, — лучший самоучитель Java с нуля. Причём она по-настоящему и совсем «с нуля», то есть подходит тем, кто только-только начинает и не совсем понимает ещё, что за зверь такой — программирование. Ко мне она попала слишком поздно. Думаю, именно поэтому я не смог её оценить по достоинству. «Просто читать» её было очень приятно, а вот искать что-то конкретное в ней мне приходилось подолгу. Материал там подан живо, но довольно поверхностно (потому что с нуля!) и многих тем и нужных пояснений попросту нет. А вот мой друг, которому она ушла по наследству, был от нее в восторге и кричал, что это не просто лучший учебник по Java для начинающих, а прям мировой шедевр и именно так нужно подавать сложный материал. Достоинства:

  • Лучший самоучитель Java с нуля, для полных чайников, написан живым языком;
  • Прикольные иллюстрации и юмор;
  • Пояснения с жизненными примерами.

Недостатки:

  • Многовато «воды» для тех, кто уже въехал в тему;
  • Не всегда удачные паззлы и упражнения.

«Java. Руководство для начинающих», Герберт Шилдт

Полистав этот учебник, я подумал, что он хорошо подойдёт тем, кому нравится более традиционное изложение материала, нежели в Headfirst, и при этом они ищут самоучитель «с нуля». Местами изложение в книге очень детальное, напоминает расширенную и переведённую документацию с хорошими наглядными примерами. Иногда, как по мне, автор переходит границу, и начинает слишком уж разжевывать, читать становиться скучновато… и вдруг — кульбит — и какое-то довольно сложное место проскакивается почти мгновенно, и ты в полном недоумении пытаешься понять, что и где пропустил. Тем не менее, таких мест в книге не слишком много, и я знаю людей, которые считают, что «Руководство для начинающих» — лучший самоучитель Java для тех, кто ещё ничего не знает. Лично мне он показался не очень ровным. Скажем, начинаю разбирать коллекции, и вместо человеческого пояснения мне подсовывают задачу по самостоятельному созданию Set на основе массивов. Классная задача, но я бы хотел для начала лучше понять, что такое стандартные коллекции! Хотя эта книга, как и предыдущая, считается учебником для начинающих, мой опыт преподавателя подсказывает, что она хороша только в совокупности с другими материалами: гуманитарию-свитчеру будет не всё просто и понятно. Лучше всего «Руководство для начинающих» подойдёт тому, кто худо-бедно учил программирование (например, в универе), давным-давно на него забил, и при этом ему нравится стиль изложения автора. Особенно радует, что учебник стабильно обновляется, и в нём рассмотрены и особенности Java 8, а актуальное на 2020 год издание (седьмое) учитывает JDK 9 и JDK 10. Достоинства:

  • Традиционное вдумчивое изложение основ;
  • Хорошие примеры.

Недостатки:

  • Есть «прыжки» от «слишком разжевано» до «мельком сказано»;
  • Местами скучновато.

Кстати, у Герберта Шилдта есть ещё одна известная книга по программированию — «Java. Полное руководство». Это совсем другой учебник, более фундаментальный. К нему и переходим.

«Java для чайников», Барри Бёрд

Эта книга, признаться, попала ко мне уже когда я работал программистом. В более ранней версии статьи о полезных книгах в комментариях мне задали вопрос о ней, и когда увидел её у джуна-тестировщика на работе, решил к ней присмотреться. «Java для чайников» Барри Бёрда — интересная книга для новичков, которые готовы использовать несколько ресурсов для своего обучения. Это не учебник для начинающих, а скорее, первый справочник по Java. Её эффективнее всего изучать параллельно с пошаговыми уроками (как на JavaRush) и (обязательно!) закреплять изученное на практике сразу. По изложению я сразу признал в авторе коллегу-учителя, поскольку местами он делает остановки в неожиданных на первый взгляд местах и рассматривает затронутые вопросы очень подробно. Это неспроста: именно на этих вопросах его студенты чаще всего спотыкались. А вот некоторые темы раскрыты поверхностно… Впрочем, это книга для начинающих, от неё не стоит ждать глубин. Скажем, первые две главы хороши для начинающих, ООП (глава 3) лучше изучать по другой книге, а вот главы 4 (продвинутые методики программирования — пояснения, как пользоваться классами и методами, начала коллекций, многопоточности, обработки исключений) и 5 (советы по избеганию ошибок) я считаю очень удачными и полезными. По книге чувствуется, что автор является преподавателем, поэтому моментами в книге Несколько вопросов подробно рассмотрены здесь. Возможно, вы чувствуете, что автор является учителем, поэтому он излагает те проблемы, которые вызвали самые значительные трудности для его начинающих учеников. Но вот некоторые темы, раскрытые довольно поверхностно, на уровне информативных статей. Тем не менее, Java для чайников это книга для начинающих. Поэтому это может быть ваша первая итерация знакомства с языком. Более того, Java For Dummies легко читается, полна ярких и забавных примеров. Его можно легко прочитать в любом месте на дороге или перед сном. Если вас, конечно, устраивает авторский стиль. И помните: ни одна книга в этом мире не может превратить вас в разработчика программного обеспечения. Только практика может. Достоинства:

  • Лёгкий язык;
  • Дельные советы и удачное введение в ряд тем (главы 1,2, 4);
  • Хорошие примеры.

Недостатки:

  • Не все темы изложены одинаково хорошо;
  • Авторский стиль может и не нравиться.

Справочники и руководства

Книги из этого раздела пригодятся тем, кто уже ввязался в программирование на Java по полной и ищет книги для лучшего понимания теории и практики.

«Java. Полное руководство», Герберт Шилдт

Эту книгу я решил загрузить из интернета, чтобы оценить, а потом — купить или не купить. Шутка ли, 1300 страниц текста! Ну и цена впечатляет не меньше объема. Точно так же я поступил и с двухтомником «Библиотека профессионала» Кея Хорстманна (о ней — ниже). Забегая наперед скажу, что я остановил свой выбор на второй. Почему? Потому что в книге «Java. Полное руководство» я узрел те же недостатки, что и в «Руководстве для начинающих». Иногда разжевано, иногда — скомкано, но при этом не просто скомкано, а как-то многословно скомкано. Вероятно, это — авторский стиль и, думаю, кому-то он будет по нраву, а точнее — по мышлению. В целом «Java 8. Полное руководство» — это неплохой справочник по Java. Но лично мне изложение тех же самых тем больше понравилось в другой книге. Достоинства:

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

Недостатки:

  • Много воды (но это кому-то может нравиться!);
  • Русский перевод не лучший.

«Java. Библиотека профессионала», Кей С. Хорстманн, Гари Корнелл

Книги Шилдта и Хорстманна часто сравнивают друг с другом. И у той, и у другой есть преданные поклонники. Для меня именно двухтомник Хорстманна — лучший учебник по Java. Он же стал для меня настольной книгой на начальных и средних уровнях JavaRush. Когда я не понимал какую-то тему, в основном лез именно в Хорстманна, и тот многое прояснял. В книге рассматривается всё — от синтаксиса до многопоточного программирования, локализации приложений и работы с XML. И пусть вас не пугает название «Библиотека профессионала» (меня именно оно и отпугнуло), основы тут разобраны довольно хорошо. Кроме того, её полезно периодически перечитывать, чтобы освежить и упорядочить знания. Говорят, даже профессионалы находят в ней что-то полезное для себя… Не знаю. Стану профессионалом — расскажу! Достоинства:

  • При впечатляющем количестве страниц — мало воды (в отличие от Шилдта).
  • Содержит всё, что нужно новичкам.
  • Раскрывает Java 8, учитывает изменения в JDK 9, 10 и 11.
  • Хорошая подача тем по коллекциям и дженерикам.
  • Очень хорошо сочетается с JavaRush. Доходите до темы, решаете задачки, в какой-то момент что-то не понимаете — смотрите Хорстманна, пробуете снова.

Недостатки:

  • Кому-то может показаться, что книга суховата;
  • Нет практики;
  • Русский перевод с ляпами.

«Java. Методы программирования», Блинов, Романчик

Когда-то я вычитал на форуме, что есть такая книга «Промышленное программирование», и в ней неплохие задачи. Оказалось — не соврали. Я нашёл еёкопию в PDFна сайте белорусского EPAM’а. Там издание не самое новое (по Java 6), а написана книга как основательный университетский учебник, то есть местами изложение несколько тяжеловесное, академическое. НО! Там действительно очень хороший сборник задач по программированию на Java, а также тестовые задания. Говорят, по этой книге учатся стажёры EPAM, а также её взяли на вооружение многие оффлайновые курсы по Java. Там подход к задачам немного не такой, как у JavaRush, то есть, в среднем тут задачи чуть сложнее и каждая из них — что-то вроде… не мини, но микро-проекта. Так что рекомендую даже студентам JavaRush, так как недостатком практической стороны курса я считаю то, что все задачи в нём уже полностью спроектированы и есть слишком много подсказок. Скажем, задачи на ООП из этого сборника помогли мне очень неплохо разобраться в этом самом ООП наряду с книгами «неувядающей классики», о которых я пишу ниже. Книга написана как бы для будущих «гребцов», поэтому в ней описаны технологии Hibernate для разработки распределённых систем, а также основы HTML, XML, JavaScript. «Промышленное программирование» — если не лучший самоучитель Java, то очень неплохое учебное пособие. Но к ней нужно приходить уже подготовленным. Скажем, после десятка-другого уровней JavaRush. Позднее я обнаружил её более новое и переработанное издание, уже под именем «Java. Методы программирования«. Достоинства:

  • Отличная подборка задач и тестовых заданий;
  • Есть официальная бесплатная версия (я полагаю, что она официальная, поскольку лежит не на каком-нибудь рутрекере, а на сайте EPAM);
  • Сравнение с С++.
  • Возможность понять, что проходят на стажировке EPAM.

Недостатки:

  • Слишком фундаментальное изложение. Но для повторения с практикой — подойдёт.
  • Не учитывает Java 8 и последующих JDK. Впрочем, в этой книге главное — удачный подбор задач.

Расширенные руководства

«Java. Справочник разработчика», Бенджамин Дж. Эванс, Дэвид Флэнаган

Хороший универсальный справочник, альтернатива книгам Хорстманна. Содержит информацию полезную как начинающим, так и продолжающим Java-разработчикам. Последнее на момент написания этой фразы издание (седьмое) опирается на Java 11, то есть в нём есть всё, что нужно знать начинающему разработчику. Книга не затянута, есть много примеров, рассмотрены Java API и лучшие практики разработки. Книга легко читается и из неё можно узнать и основы языка, и полезные приёмы программирования, и новые тенденции в Java. Достоинства:

  • Краткое и хорошее изложение;
  • Есть всё, что нужно;
  • Хорошее описание современных инструментальных средств;
  • Удачные примеры.

Недостатки:

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

«Java SE 9. Базовый курс», Кей Хорстманн

В оригинале эта книга называется Core Java SE 9 for the Impatient, или «Java Core SE 9 для нетерпеливых”. Не знаю, почему это не обыграли в переводе, как по мне, книга бы не терялась среди себе подобных. Так вот, в предыдущем пункте перед нами были подробные справочники для начинающих программистов, здесь же — введение в курс дела тех, кто уже неплохо разбирается в программировании. Книга организована как краткий справочник, и им очень удобно пользоваться для поиска ответа на конкретный вопрос если вы что-то забыли или раньше программировали на других языках. Что мне особенно понравилось — тексты очень краткие, по существу, без разжёвывания и воды. В книге хорошо описаны лямбда-выражения, потоки ввода-вывода, модули. Однако стоит понимать, что это книга не для полных новичков, и тут нет пояснений, что такое переменная или цикл. Зато есть, помимо того, то я уже упомянул, фундаментальные структуры, коллекции, аннотации, дженерики, логирование, многопоточность — всё то, с чем вы будете работать на практике. Признаться, эта книга мне очень нравится, и я даж сейчас иногда в неё заглядываю. Только следует помнить, что это книга не подходит тем, кто совсем ничего не знает о программировании. Она скорее для тех, кто уже изучал какой-то другой язык или тот же Java, но давно и не полностью. Достоинства:

  • Краткость информационных блоков. Всё по делу;
  • Нет лишних тем;
  • Очень хороший подбор актуальных тем для изучения начинающими Java-программистами;
  • Удачные примеры.

Недостатки:

  • Книга не подходит для тех, кто начинает изучать программирование с нуля и до этого ни разу с ним не сталкивался.

Неувядающая классика

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

«Effective Java», Джошуа Блох

Это просто сокровище, а не книга, и посвящена она базовым принципам языка от одного из его авторов Джошуа Блоха. Скорее всего, вы уже пользовались его библиотеками (в Java Collection, например). Сразу оговорюсь: полнейшим новичкам, кроме каких-нибудь вундеркиндов-спидлёрнеров книга Effective Java не нужна. Сначала лучше усвоить синтаксис, и получить хоть какую-то практику программирования, так сказать, «набить шишки», а затем уже — браться за творение Джошуа Блоха. Книга пригодится тем, кто хочет по-настоящему понимать Java, сформировать правильный подход при программировании на этом языке, понять не только как нужно делать, но прочему нужно делать именно так. А ещё тем, кто хочет глубоко познать ООП (в принципе, это взаимосвязанные вещи). Эта книга — лучший учебник по Java в разрезе объектно-ориентированного подхода к программированию. Достоинства

  • Блестящее изложение материала по теме ООП.
  • Приведены лучшие практики программирования.
  • Автор очень хорошо знает Java изнутри.

Недостатки

  • Новичкам может показаться сложной.

«Философия Java», Брюс Эккель

Название этой книги говорит само за себя. Это ещё одна «альфа и омега» для всех, кто хочет знать Java! В этой книге вы найдёте хорошие и внятные примеры, и из них будет понятно, как работает Java. Мне сложно сказать, какая из двух книг — «Философия Java» или «Эффективное программирование» — лучше. Я бы сказал, что Эккель несколько лояльнее к новичкам, в то время как Блох требует какого-никакого опыта. Впервые я прочитал главу из «Философии Java», когда только начинал учиться на JavaRush (кажется, на одном из ранних уровней она значилась в рекомендованных). Тогда она мне не пошла. Зато после 10 или 12 уровня — это была песня! И, я скажу, очень полезная песня. Я возвращался к ней и позже, уже когда пришёл к «Эффективному программированию». Скажу так: Блох и Эккель пускай говорят об одном и том же, но по-разному, и примеры приводят разные. Достоинства

  • Глубокое изложение принципов Java от профессионала;
  • Хорошо зайдет тем, кто переходит с других языков — много сравнений с С++, например.
  • Как мне кажется, её можно начинать читать уровня с 10-го, а вот Эккеля — чуть позднее.

Недостатки

  • Очень неудачные русские переводы;
  • Отсутствие нового издания книги на русском.

Краткие выводы

  1. Лучший самоучитель Java с нуля для тех, кто совсем ничего не знает — Head First Java;
  2. Лучший справочник-учебник по Java и настольная книга — «Библиотека профессионала». И, конечно, документация Oracle.
  3. Лучший сборник задач по программированию на Java — JavaRush. Ну а среди книг — «Java. Методы программирования».
  4. Лучшая неувядающая классика — «Философия Java» и «Effective Java». Это must read для всех, кто решил разобраться во всем по-настоящему, для глубокого понимания. Но лучше их читать постепенно и с расстановкой.
  5. Дополнительный вывод: есть возможность — читайте на английском. Русские переводы в основном очень слабые.

Автор статьи — Лада Борисовна Есакова, автор учебного пособия «Информатика. Авторский курс подготовки к ЕГЭ»

В этой статье дан наиболее полный обзор книг и учебников для подготовки к ЕГЭ по информатике.

Информатика – предмет довольно молодой, и даже строгой программы по нему нет. К тому же ЕГЭ по информатике не обязателен для сдачи. Как же готовиться тем, кто выбрал ЕГЭ по информатике?

Вот самые популярные книги и учебники для подготовки к ЕГЭ по информатике.Их используют преподаватели большинства школ:

1. Информатика, 11 класс, Семакин И.Г., Хеннер Е.К., Шеина Т.Ю. (базовый уровень)

Учебник призван всего лишь дать общее описательное представление об информационных технологиях.

2. Информатика, 11 класс Поляков К.Ю., Еремин Е.А. (углубленный уровень)

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

Информация, несомненно, интересная и полезная. У нее есть только один недостаток: она полностью находится за пределами тем, включенных в ЕГЭ по информатике. Чтобы не быть голословной, привожу оглавление учебника:

Часть 1

— От авторов

— Информация и информационные процессы

— Моделирование

— Базы данных

— Создание веб-сайтов

Часть 2

— Элементы теории алгоритмов

— Алгоритмизация и программирование

— Объектно-ориентированное программирование

— Компьютерная графика и анимация

— Трехмерная графика

Темы ЕГЭ по информатике абсолютно другие!

3. Информатика, 11 класс. Н.Д.Угринович (профильный уровень)

Учебник является обзором основных периферийных устройств компьютера и наиболее распространенных приложений. И, несмотря на профильный уровень, не затрагивает практически ни одну из тем ЕГЭ (системы счисления, алгебра логики, комбинаторика, основы теории графов и т.д.). Как эксперта меня заинтересовала одна глава, а именно: «Глава 7. Подготовка к ЕГЭ. Тесты», — но там оказались только тесты.

Привожу оглавление этого учебника для подготовки к ЕГЭ по информатике:

Глава 1. Построение и исследование информационных моделей

(Построение и исследование физических моделей, Биологические модели развития популяций, Модели распознавания химических волокон и пр.)

Глава 2. Технологии создания и обработки текстовой информации

(какие приложения используются для ввода, просмотра и распознавания текста и пр.)

Глава 3. Технология хранения, отбора и сортировки информации

(общее понятие о базах данных, обзор возможностей приложения Access)

Глава 4. Технология создания и обработки графической информации

(общие понятия о компьютерной графике, принтерах, сканерах и пр.)

Глава 5. Коммуникационные технологии

(что такое интернет и как пользоваться наиболее распространенными браузерами)

Глава 6. Информационное общество

(правовые и этические нормы при работе с интернетом)

Глава 7. Подготовка к ЕГЭ. Тесты

Есть такое мнение, что социальные сети — это вредная привычка. И единственное, что они делают — пожирают наше время.

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

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

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

Есть даже шуточное утверждение: Senior-программист отличается от Junior-программиста скоростью поиска информации в интернете.

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

Stack Overflow – своего рода социальная сеть программистов. Это всемирно известная система вопросов и ответов программистов, которую разработали Джоэл Спольски и Джефф Этвуд в 2008 году.

Что можно найти на Stack Overflow?

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

Как говорит сам Джефф Этвуд: «Stack Overflow был создан программистами для программистов с целью повышения общего уровня знаний по программированию во всем мире».

Какие идеи создатели воплотили в этом сайте?

  1. Бесплатный доступ к абсолютно всей информации на сайте.
  2. Конкретный вопрос-ответ строго по теме вопроса. Никаких обсуждений на сторонние темы, общих советов, рассуждений и рекомендаций.
  3. Это сайт о программировании. Здесь нет ничего кроме программирования.
  4. Сообщество само несет ответственность за пополнение общей базы знаний и за поддержание качества и актуальности информации в ней.
  5. Вся информация, размещенная на сайте адаптируется для чтения («один раз задаем вопрос, много раз читаем ответы»).

Stack Overflow — это международная компания, которая состоит из 200 сотрудников и имеет три рабочих офиса: в Лондоне, Денвере и Нью-Йорке.

На сегодняшний момент на Stack Overflow задано около 12 миллионов вопросов и получено более 20 миллионов ответов. К самым популярным темам, согласно указываемым тегам, относятся Java, C#, JavaScript, PHP, Android, jQuery, Python и HTML.

По данным рейтинга Alexa Internet в мае 2018 года сайт Stack Overflow занимал 53 место по посещаемости во всём мире. Каждый месяц его посещают более 45 млн уникальных пользователей.

В прошлом году сервис дополнил свой проект корпоративной версией продукта Stack Overflow for Teams. Эта опция позволила использовать платформу для обсуждения вопросов внутри компании или какой-то проектной команды.

Learn, Share, Build (учиться, делиться, строить) – слоган сообщества Stack Overflow, который мы видим, как только заходим на главную страницу.

Как работает Stack Overflow?

  • Задал вопрос — получил ответ. Это не дискуссионный форум. Там нет болтовни. Это сайт для получения ответов программистов.
  • Хорошие ответы оцениваются и поднимаются на вершину. Лучшие ответы показываются первыми, поэтому их всегда легко найти.
  • Человек, который задал вопрос может пометить ответ как «принятый». Принятие не означает, что это лучший ответ, это просто значит, что информация была полезна для человека, который задал вопрос.
  • Сосредоточьтесь на вопросах о реальной проблеме, с которой вы столкнулись. Включите подробную информацию о том, что вы пытались и что именно вы хотите сделать.
  • Не все вопросы работают одинаково хорошо. Лучше избегать вопросов, которые основаны на чьем-то мнении или могут вызвать обсуждение, а не ответы.
  • Теги позволяют легко находить интересные вопросы. Все вопросы отмечены предметными областями. Каждый вопрос может иметь до 5 тегов.
  • Щелкните любой тег, чтобы просмотреть список вопросов с этим тегом или перейдите в список тегов, чтобы найти темы, которые вас интересуют.
  • Вы зарабатываете репутацию, когда люди голосуют за ваши сообщения: вопросы, ответы и изменения.
  • Когда вы заработаете репутацию, вы откроете новые привилегии, такие как возможность голосовать, комментировать и даже редактировать посты других людей.
  • На самых высоких уровнях у вас будет доступ к специальным инструментам модерации. Вы сможете работать вместе с модераторами сообщества.
  • Улучшение сообщений путем редактирования или комментирования вопросов и ответов.
  • Использование комментариев для запроса дополнительной информации, уточнения вопросов или ответов. Вы всегда можете прокомментировать свои вопросы и ответы.
  • Помните: люди пришли туда учиться, поэтому будьте дружелюбны и полезны!

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

В ежегодном опросе разработчиков от Stack Overflow за 2019 год приняли участие около 90 000 человек из 170 стран.

Вот некоторые интересные факты об участниках этого мирового сообщества программистов:

  • Большая часть пользователей занимается программированием недавно. Около 55% программистов кодит в течение 8 лет, а треть — не более 5 лет.
  • 81 % программистов считают это занятие своим хобби.
  • Образование, связанное с IT-технологиями, есть только у каждого третьего.
  • Все разработчики на постоянной основе повышают свою квалификацию, большинство из них с помощью онлайн-курсов.
  • 85 % разработчиков имеют постоянную работу, фрилансеры составляют около 10 % от общего количества. И примерно 5% разработчиков, желающих работать, находятся в данный момент в поиске работы.
  • Большинство программистов ставят перед собой амбициозные цели. Из 5 разработчиков лишь один согласен работать в тех же условиях, которые есть сейчас, по истечении 5 лет. Около четверти разработчиков ставят своей целью создание собственной компании.
  • 75% опрошенных полностью удовлетворены выбором профессии.
  • У большинства разработчиков на работу уходит по 9-12 часов в сутки.
  • Почти половина всех профессиональных разработчиков симпатизирует открытому исходному коду.
  • Большая часть разработчиков ответили, что никогда не станут писать код, который преследует неэтичную цель (обманывает людей или ворует информацию).

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

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

Начинающие программисты часто спрашивают, какие книги по программированию читать и как, чтобы лучше усвоился материал. Отвечаем на эти вопросы.

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

Зачем нужны книги по программированию?

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

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

Сперва определитесь, что планируете осваивать.

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

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

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

Другой пример:

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

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

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

Подытожим:

  1. Начинаете изучать что-то новое и не знаете, насколько оно сложное? Попробуйте для начала пробежаться по быстрым курсам, статьям и туториалам. Не помогло? Тогда ищите книги по программированию для основательного углубления в теорию.
  2. Уверены, что технология не является «rocket science» (сложной)? В этом случае книгу можно отложить до лучших времен, когда вы обрастете некоторым опытом: так она окажется намного более понятной и полезной.
  3. Если же точно знаете, что будет непросто (язык со сложными конструкциями, парадигмами, разработка под конкретную платформу, etc.), сразу ищите книгу, но также не забывайте о параллельной практике.

Как лучше читать книги по программированию?

Высшая математика – это зачастую исключительно теория. Программирование же в большинстве случаев является практикой.

Книги по технологиям (языки программирования, web-разработка, создание мобильных приложений) переполнены практическими примерами и заданиями, а потому нужно основательно «набить руку»: только так материал правильно осядет в голове.

Правило первое: только практика набивает руку.

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

Правило второе: перечитывайте.

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

Правило третье: пять книг не лучше, чем одна.

Погоня за количеством в надежде забить свой шкаф «умными» книжками ни к чему не приведет. Изучая новое, бывает тяжело заставить себя перейти к практике. Чтобы оставаться в зоне комфорта, мы часто утешаем себя тем, что мало знаем, и попадаем в ловушку под названием «Вечный Студент» – человек, который постоянно что-то учит, но на самом деле ничего со своими знаниями не делает.

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

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

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

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

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

  • 7 книг по UNIX/Linux
  • 6 книг по тестированию ПО
  • 6 книг по информационной безопасности
  • 8 книг по компьютерным сетям
  • 6 книг по компиляторам
  • 16 бесплатных книг по JavaScript
  • 7 книг с задачами по программированию
  • 6 книг по функциональному программированию
  • 9 великолепных бесплатных книг для изучения C
  • 4 лучших книги по ассемблеру: знания и навыки шаг за шагом
  • 7 книг для начинающего специалиста по анализу данных
  • 7 книг, которые стоит прочесть для изучения Python
  • Подборка книг по C++ для любого уровня
  • 10 must-have книг для Java-разработчика
  • 6 бесплатных книг по алгоритмам в программировании
  • 7 «must read» книг по программированию, которые стоит прочесть
  • 30 книг для освоения языка программирования Go
  • 4 книги, которые разбудят в вас математика
  • Разработка игр – это просто: 12 этапов изучения геймдева
  • 4 лучших бесплатных книг по C#

Оригинал статьи


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

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