Я довольно опытный инженер-программист, но я не знаю много теории. Я хочу узнать больше теории. Конкретные темы, которые меня интересуют: вычислительная сложность, формальные языки и теория типов. Но я не знаю, как начать изучать эти области.
Какие ресурсы вы бы порекомендовали кому-то, кто хочет узнать больше теории через самообучение? Существуют ли какие-либо теоретические руководства по информатике для программистов?
soft-question
teaching
books
Генри Х.
источник
источник
Ответы:
Это широкое поле с несколькими совершенно разными областями.
Я бы начал с некоторых из самых фундаментальных идей о том, что такое компьютеры: Хопкрофт и Уллман, «Введение в теорию автоматов, языков и вычислений».
Причина, по которой я бы порекомендовал это, - это их акцент на доказательствах. Они проведут вас через строгий образ мышления. В этом разница между написанием программ и научным.
источник
Есть несколько способов узнать о теории типов. Для работающего программиста « Типы и языки программирования » Б. Пирса - хорошее начало. Практические основы языков программирования Р. Харпера также могут быть хорошими. Если вы хотите немного легкого для понимания фона по операционной семантике, я рекомендую книгу Г. Винскеля « Формальная семантика языков программирования: введение» . С Т. Нипковым, Г. Кляйном, Конкретная семантикавариант книги Винскеля был оформлен для интерактивного помощника Изабель / HOL. Я подозреваю, что действительно трудно справиться с прувером только из этой (или любой) книги, вы бы хотели, чтобы эксперт поблизости задавал вопросы. Если вам нужен более математический подход к теории типов, вы можете взглянуть на JR Hindley, JP Seldin, Lambda-Calculus and Combinators: Введение , или H. Barendregt, Lambda Calculi with Types . Хотя я бы не рекомендовал начинать с Барендрегта.
Если вам нужна единственная рекомендация, я бы сказал, что прочитал все Пирса, кроме Части VI (Системы высшего порядка), и реализовал игрушечные языки, обсуждаемые в книге. Вы получите хорошее знание теории типов и, вероятно, лучший программист.
источник
Я рекомендую вычислимость, сложность и языки Мартина Дэвиса, Рона Сигала и Элейн Вейукер.
источник
Я большой поклонник теории и алгоритмов. Однажды у меня была возможность посетить Теоретическую информатику в Индийском технологическом институте, Мадрас (ИИТ-М), Индия. Я узнал о многих теоретиках в ИИТ-М. Когда я пришел туда, я понятия не имел, что такое Теория, но сегодня я полностью влюблен в нее.
Спасибо @Kate F за указатель, да, Hopcroft и Ullman - отличное место для старта.
Однако вот как я начал,
Прочтите Введение в алгоритмы от Кормена. <\ Br> Это отличное место для начала. Когда вы учитесь, постарайтесь понять каждое доказательство как можно более подробно. Если вы хорошо понимаете доказательство, попробуйте написать ту же логику на любом языке по вашему выбору. (Это займет немного больше времени, но стоит попробовать)
Следуйте за главными конференциями в Теории как
FOCS
SODA
STOC
EC (Электронная коммерция) - Алгоритмическая теория игр
COLT (Конференция по теории обучения) - Теория обучения
CRYPTO - Криптография
SOCG (Симпозиум по вычислительной геометрии) - Вычислительная геометрия
CCC (Конференция по Вычислительная сложность) - Теория сложности
Даже если вы плохо понимаете, старайтесь читать и ДУМАТЬ как можно больше. Вы должны сделать как можно больше доказательств ..
источник