Книги

В этом посте я собрал must-read классическую литературу по computer science, науке, название которой обычно неправильно переводят на русский как "информатика". Купите, или украдите, или скачайте (что почти одно и то же), или возьмите эти книги в библиотеке, достаньте любым способом, но обязательно прочитайте.

Основы

  • Т.Кормен и др. Алгоритмы. Построение и анализ.
    Она у меня самого стоит на книжной полке и прочитана едва ли на треть (там тыщща с фигом страниц), но это абсолютно фундаментальная книга, и кстати, неплохое подспорье при подготовке к экзамену по САОД.
  • А.Ахо и др. Структуры данных и алгоритмы.
    Примерно то же, что и Кормен, но меньше объёмом, ибо без доказательств и прочих академических штучек, эта книжка скорее больше для занятий практикой, чем для изучения теории.
  • Р.Седжвик. Алгоритмы на C++.
    Эта книжка уж точно для занятий практикой - а именно, для реализации прочитанного у Кормена и Ахо на C++. Содержит упражнения. Сам не читал (нашёл у себя в списке "прочитать!!1"), но рекомендую.

Язык C

Не лишним будет напомнить, что C и C++ - это два абсолютно разных языка, хоть и похожих местами; примерно как болгарский перец и красный перец, лол - называются похоже, но разница чудовищна ^_^ Ибо C был создан в конце 60-х годов как низкоуровневый системный язык для написания операционной системы UNIX, а C++ был создан в 80-х как многоцелевой язык общего назначения, и, хочу заметить, через 20+ лет разработки он эту цель достиг.

Язык C++

Начать лучше с
  • Г. Шилдт. Самоучитель C++.
    ибо книжка эта простым и доступным языком описывает основы кодинга на этом языке и кроме того, содержит упражнения, которые (хотя бы некоторые) я настоятельно рекомендую прорешать. Затем от корки до корки читаешь
  • Б.Страуструп. Язык программирования С++.
    - книгу, написанную самим автором языка. Довольно тяжко читается, поэтому к ней лучше не подходить без некоторого опыта за плечами (который и даст Шилдт). После этого пролистываешь
  • Б.Страуструп. Дизайн и эволюция языка C++.
    за его же авторством, в виде исторической справки, почему на тех или иных стадиях развития этого языка были приняты те решения, которые были приняты, чтобы с твоей стороны потом не было нытья "почему C++ такой сложный и нелогичный". Наконец, после этого приходит время стандарта:
  • ISO/IEC 14882: Programming Language C++.
    Стандарт (именно так, с большой буквы) - это официальный документ, создаваемый международным комитетом по стандартизации ISO, и он же - первое место, куда тебе нужно лезть при возникновении вопросов типоразмера "а вот что будет, если я заведу на стеке переменную и навешу на неё модификатор static?!???7". Там описано, каким язык должен быть, как себя должен вести компилятор и вообще всё там есть. На английском. 1300 страниц. Качаешь, офигеваешь, внимательно читаешь содержание, ложишь в какое-нибудь близкодоступное место, чтобы всегда был под рукой.
  • Г.Саттер, А.Александреску. Стандарты программирования на С++: 101 правило и рекомендация.
    Набор простых и несложных советов, следуя которым, ты на порядки облегчишь свою профессиональную деятельность. Я едва ли прочитал 20 советов из неё, а мой пенис уже удлинился на 50 сантиметров я молодец.

Стандартная библиотека C++

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

Теория языков

Также рекомендуется к прочтению теоретический минимум программиста.

И напоследок - небольшой коан.

Если присутствие Дао велико, тогда и операционная система хороша. Если операционная система хороша, тогда и компилятор хорош. Если компилятор хорош, тогда и приложения хороши. Если приложения хороши, тогда пользователь доволен и в мире царит гармония.
Дао дало жизнь машинному языку. Машинный язык дал жизнь ассемблеру. Ассемблер дал жизнь компилятору. Сейчас существует десять тысяч языков.
У каждого языка есть свое назначение, иногда скромное. Каждый язык выражает Инь и Янь программного обеспечения. Каждый язык имеет свое место в Дао.
Hо не программируйте на C#, если вы можете этого избежать.

Комментариев нет:

Отправить комментарий