дабы заслюнявить это обсуждение окончательно хочу привести цитату из SICP, предисловие к первому изданию. SICP валяется в буках, недавно заливал. Можете прочесть сами. Даю большой кусок, чтобы не было ощущения, что вырываю из контекста. Я не стану выделять значимые места с моей точки зрения, хотя очень хочется.
«Структура и интерпретация компьютерных программ» — это вводный курс по ин-
форматике в Массачусетском Технологическом институте (MIT). Он обязателен для всех
студентов MIT на специальностях «электротехника» и «информатика», как одна из че-
тырех частей «общей базовой программы обучения», которая включает еще два курса по
электрическим схемам и линейным системам, а также курс по проектированию цифровых
систем. Мы принимали участие в развитии этого курса начиная с 1978 года и преподава-
ли этот материал в его нынешней форме начиная с осени 1980 года шестистам–семистам
студентам в год. Большая часть этих студентов не имела почти или совсем никако-
го формального образования в области вычислительной техники, хотя у многих была
возможность общения с компьютерами, а некоторые обладали значительным опытом в
программировании либо проектировании аппаратуры.
Построение этого вводного курса по информатике отражает две основные задачи. Во-
первых, мы хотим привить слушателям идею, что компьютерный язык — это не просто
способ заставить компьютер производить вычисления, а новое формальное средство вы-
ражения методологических идей. Таким образом, программы должны писаться для того,
чтобы их читали люди, и лишь во вторую очередь для выполнения машиной. Во-вторых,
мы считаем, что основной материал, на который должен быть направлен курс этого
уровня, — не синтаксис определенного языка программирования, не умные алгоритмы
для эффективного вычисления определенных функций, даже не математический анализ
алгоритмов и оснований программирования, но методы управления интеллектуальной
сложностью больших программных систем.
Наша цель — развить в студентах, проходящих этот курс, хороший вкус к элементам
стиля и эстетике программирования. Они должны овладеть основными методами управ-
ления сложностью в большой системе, уметь прочитать 50-ти страничную программу,
если она написана в хорошем стиле. Они должны в каждый данный момент понимать,
чего сейчас не следует читать и что сейчас не нужно понимать. Они не должны испыты-
вать страха перед модификацией программы, сохраняя при этом дух и стиль исходного
автора.
Все эти умения ни в коем случае не исчерпываются компьютерным программирова-
нием. Методы, которым мы учим и из которых мы черпаем, одни и те же в любом техни-
ческом проектировании. Мы управляем сложностью с помощью построения абстракций,
скрывающих, когда это нужно, детали. Мы управляем сложностью путем установления
стандартных интерфейсов, которые позволяют нам строить системы из единообразных,
хорошо понимаемых кусков способом «смеси и стыковки». Мы управляем сложностью с
помощью построения новых языков для описания проекта, каждый из которых концен-
трирует внимание на определенных деталях проекта и уводит его от других.
-
- Книжка супер. Тут комментировать нечего. - Evgeny_CD(04.02.2008 17:34)