Основы
-
Т.Кормен и др. Алгоритмы. Построение и анализ.
Она у меня самого стоит на книжной полке и прочитана едва ли на треть (там тыщща с фигом страниц), но это абсолютно фундаментальная книга, и кстати, неплохое подспорье при подготовке к экзамену по САОД. -
А.Ахо и др. Структуры данных и алгоритмы.
Примерно то же, что и Кормен, но меньше объёмом, ибо без доказательств и прочих академических штучек, эта книжка скорее больше для занятий практикой, чем для изучения теории. -
Р.Седжвик. Алгоритмы на C++.
Эта книжка уж точно для занятий практикой - а именно, для реализации прочитанного у Кормена и Ахо на C++. Содержит упражнения. Сам не читал (нашёл у себя в списке "прочитать!!1"), но рекомендую.
Язык C
Не лишним будет напомнить, что C и C++ - это два абсолютно разных языка, хоть и похожих местами; примерно как болгарский перец и красный перец, лол - называются похоже, но разница чудовищна ^_^ Ибо C был создан в конце 60-х годов как низкоуровневый системный язык для написания операционной системы UNIX, а C++ был создан в 80-х как многоцелевой язык общего назначения, и, хочу заметить, через 20+ лет разработки он эту цель достиг.
-
Б.Керниган, Д.Ритчи. Язык программирования C.
Книга, написанная самими авторами языка (и по совместительству - авторами ОС UNIX). Содержит много исторической шелухи и вообще всякой философии, но тем не менее обязательна к прочтению. -
Г.Шилдт. Полный справочник по C.
Более простой справочник/учебник по C.
Язык C++
Начать лучше с-
Г. Шилдт. Самоучитель C++.
ибо книжка эта простым и доступным языком описывает основы кодинга на этом языке и кроме того, содержит упражнения, которые (хотя бы некоторые) я настоятельно рекомендую прорешать. Затем от корки до корки читаешь -
Б.Страуструп. Язык программирования С++.
- книгу, написанную самим автором языка. Довольно тяжко читается, поэтому к ней лучше не подходить без некоторого опыта за плечами (который и даст Шилдт). После этого пролистываешь -
Б.Страуструп. Дизайн и эволюция языка C++.
за его же авторством, в виде исторической справки, почему на тех или иных стадиях развития этого языка были приняты те решения, которые были приняты, чтобы с твоей стороны потом не было нытья "почему C++ такой сложный и нелогичный". Наконец, после этого приходит время стандарта: -
ISO/IEC 14882: Programming Language C++.
Стандарт (именно так, с большой буквы) - это официальный документ, создаваемый международным комитетом по стандартизации ISO, и он же - первое место, куда тебе нужно лезть при возникновении вопросов типоразмера "а вот что будет, если я заведу на стеке переменную и навешу на неё модификатор static?!???7". Там описано, каким язык должен быть, как себя должен вести компилятор и вообще всё там есть. На английском. 1300 страниц. Качаешь, офигеваешь, внимательно читаешь содержание, ложишь в какое-нибудь близкодоступное место, чтобы всегда был под рукой. -
Г.Саттер, А.Александреску. Стандарты программирования на С++: 101 правило и рекомендация.
Набор простых и несложных советов, следуя которым, ты на порядки облегчишь свою профессиональную деятельность. Я едва ли прочитал 20 советов из неё, амой пенис уже удлинился на 50 сантиметровя молодец.
Стандартная библиотека C++
-
Н.М.Джосаттис. C++. Стандартная библиотека.
Любой язык - ничто без библиотек для него, и есть одна библиотека, которая доступна всегда, на любой платформе и при любом компиляторе, и имя ей - стандартная библиотека. -
Д.Р.Мюссер и др. C++ и STL. Справочное руководство.
Важнейшая часть стандартной библиотеки С++ - STL (Standard Template Library), бибилотека, содержащая шаблонные реализации контейнеров (тех самых, которые описаны у Кормена и Ахо), обобщённых алгоритмов и прочих полезняшек. -
С.Мейерс. Эффективное использование STL.
Про неочевидные вещи, подводные камни и, собственно, эффективное использование STL.
Объектно-ориентированное программирование
-
Б.Мейер. Объектно-ориентированное конструирование программных систем.
Фундаментальный труд по ООП. Не читал - считай, не знаешь ООП, так, каску надел. -
Г.Буч. Объектно-ориентированный анализ и проектирование с примерами приложений.
Книга тяжёлая и полная мутной философии, но, тем не менее, написана одним из отцов-основателей всей этой петрушки (ООП). -
С.Макконнелл. Совершенный код.
Ещё один необходимый к прочтению бестселлер, хоть и скорее больше про проектирование, чем про программирование.
Кстати, Макконнел - автор абсолютно правильной фразы "Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете."
Теория языков
-
Дж.Хопкрофт и др. Введение в теорию автоматов, языков и вычислений.
Классический труд по теории автоматов и формальных языков. -
А.Ахо и др. Компиляторы. Принципы, технологии и инструментарий.
Легендарный dragon book (у неё на обложке дракон нарисован, лол), на котором с 1986-го выросло не одно поколение студентов-математиков в Принстоне и Стэнфорде.
Также рекомендуется к прочтению теоретический минимум программиста.
И напоследок - небольшой коан.
Если присутствие Дао велико, тогда и операционная система хороша. Если операционная система хороша, тогда и компилятор хорош. Если компилятор хорош, тогда и приложения хороши. Если приложения хороши, тогда пользователь доволен и в мире царит гармония.
Дао дало жизнь машинному языку. Машинный язык дал жизнь ассемблеру. Ассемблер дал жизнь компилятору. Сейчас существует десять тысяч языков.
У каждого языка есть свое назначение, иногда скромное. Каждый язык выражает Инь и Янь программного обеспечения. Каждый язык имеет свое место в Дао.
Hо не программируйте на C#, если вы можете этого избежать.
Комментариев нет:
Отправить комментарий