Проголосовал Естественная, т.к. разделяю точку зрения, что CS - экспериментальная наука:
Цитата:
· Каждая новая построенная машина есть эксперимент. Строя машину, мы задаем вопросы природе и получаем ответ посредством наблюдения и анализа поведения машины.
· Каждая новая программа есть эксперимент. Мы задаем вопрос природе, и поведение программы дает нам подсказки к ответу.
(Newell, Allen; Simon, H. A. (1976), "Computer Science as Empirical Inquiry: Symbols and Search", Communications of the ACM, 19 - лекция на получении премии Тьюринга)
Однако если посмотреть статью википедии "Точные науки", то естественные являются их подмножеством. Гуманитарная составляющая конечно же присутствует в CS - простейший пример - GUI: для создания хорошего графического интерфейса пользователя необходимо учитывать не только психологические аспекты, но даже и национальные традиции (См. Inside Macintosh, Apple Developer Documentation). Более сложные примеры гуманитарной составляющей в CS - это задачи AI: распознавание естественного языка, речи и т.д.
Я не склонен относить hardware к Computer Science (у меня к нему примерно такое же отношение, как у физика к математике -- использую, но это не физика)
Не согласен (см. цитату выше): путь от аналитической машины Бэббиджа до современных суперкомпов огромен и был проделан благодаря CS. И сейчас многие специалисты CS занимаются созданием уникальных вычислительных кластеров, роботов, бортовых систем. Там железо и код зачастую неразрывно связаны. А квантовые компы? Как с ними быть? Разве это не CS?!
Под мое определения -- и я не претендую на его общепринятость -- ассемблер не подпадает. Как и вообще языки программирования. И не случайно. Программирование, в его обычном понимании, суть инженерная деятельность.
Не согласен. Есть такое направление в CS: дизайн языков программирования. В его истории было три революции (переворота): структурная, модульная и ОО, значение которых трудно переоценить. И такие важнейшие события, как появление и повсеместное распространение визуального программирования. Огромная подтема этого направления - сравнение языков. Это явно научная, а не инженерная сфера. Современное многопоточное программирование распределенных вычислений также зачастую не выглядит как чисто инженерная область. Хотя если тупо держаться рамок какой- либо библиотеки типа TBB, то такое кодирование сводится к простому ремеслу. И к ассемблеру можно относиться ремесленно, но вот задача написать эмулятор зачастую оказывается более чем нетривиальной. То же относится к программированию драйверов и многих других компонентов ОС.
И еще одно важное направление: создание новых алгоритмов и программ для научных исследований: здесь образуются пересечения CS с предметной областью другой науки, например, с химией - возникает компьютерная (математическая) химия, где от исследователя требуется быть специалистом и в области химии, и в области CS, решая не просто научные задачи, а задачи фундаментальной науки.