В. Н. Брагилевский Южный федеральный университет, факультет математики, механики и компьютерных наук bravit@sfedu ru Доклад

Вид материалаДоклад

Содержание


2. Традиции преподавания истории информатики и цели разработки нового курса
3. Примерная программа курса
4. Проблема литературных источников
Подобный материал:

Курс истории информатики
в магистратуре по направлению
«Информационные технологии»

В. Н. Брагилевский
Южный федеральный университет,
факультет математики, механики и компьютерных наук
bravit@sfedu.ru


Доклад посвящен анализу необходимости изучения истории развития информатики и информационных технологий при подготовке ИТ-специалистов и разработке соответствующего курса в магистратуре по направлению «Информационные технологии».

1. Важность изучения истории информатики

Первым делом необходимо ответить на вопрос, нужно ли вообще изучать историю информатики. Возможно, еще раньше следовало бы определиться, что понимать под самой информатикой, однако ответ на этот вопрос может оказаться слишком сложным. В рамках обсуждаемого курса под историей информатики понимается история вычислительной техники, теоретической информатики, программирования и информационных технологий.

Представляется, что причин для изучения информатики несколько.

Для начала можно привести ряд аргументов на тему «без прошлого нет будущего». В области информатики этот тезис подтверждается идеей повторного использования технологических достижений. Например, принцип непрерывного размещения файлов на магнитных лентах после появления жестких дисков был на долгое время забыт, а при возникновении однократно записываемых компакт-дисков возродился вновь [1]. Таким образом, знакомство с технологическими решениями прошлого помогает находить удобные решения в настоящем.

Как и во многих других дисциплинах, в информатике анализ имеющихся трудностей приводит к появлению новых концепций. Этот путь был проделан неоднократно: например, трудности при разработке программ в рамках структурного программирования привели к генезису объектно-ориентированного программирования. Изучение подобных примеров способствует развитию науки: будущие ученые получают рабочий инструмент для своих исследований, они могут видеть недостатки существующих концепций и технологий и искать новые решения.

История информатики может излагаться одновременно как в хронологическом порядке, так и по разделам. Это позволяет формировать общее представление о дисциплине в целом и взаимосвязях между отдельными ее частями. Очень редко в традиционных курсах есть время на обсуждение связей с другими дисциплинами, в то время как их изложение в рамках курса истории может выглядеть вполне органичным. Например, кажутся очень интересными следующие положения и концепции, связывающие математику и информатику:
  • Парадокс Рассела в теории множеств и проблемы оснований математики – лямбда-исчисление Черча (создававшееся как инструмент разрешения парадокса Рассела, но ставшее формальной моделью вычислений и далее теоретической основой функционального программирования).
  • Проблемы Гильберта — машина Тьюринга (инструмент для решения проблемы разрешимости, формальная модель вычислений и теоретическая основа императивного программирования).
  • Теория типов Рассела — типы в языках программирования (функциональные типы, абстрактные и алгебраические типы данных).
  • Математическая логика и интуиционистская математика, конструктивная теория типов Мартина-Лёфа, изоморфизм Карри—Ховарда — полиморфизм в языках программирования.

Не менее важно указание на связи между теорией и практикой в информатике. Скажем, возникновение и функционирование современных компьютеров немыслимо без булевой алгебры (Джордж Буль) и основанной на ней теории релейно-контактных схем (созданной Клодом Шенноном в рамках магистерской диссертации). Кстати, сам Шеннон утверждал, что смог создать эту теорию только потому, что был знаком одновременно и с булевой алгеброй, и с принципами работы электронных устройств.

Еще один аргумент связан с изучением роли личности в истории информатики. Картины из жизни выдающихся деятелей способны увлечь будущих ученых не меньше, чем их достижения. Можно себе представлять, как молодой Стивен Клини вбегает в кабинет своего научного руководителя Алонсо Чёрча с криком о том, что он решил проблему вычитания единицы в лямбда-исчислении, над которой сам Чёрч бился в течение нескольких месяцев и уже почти разуверился в его полноте. Другая сцена: появление давно отошедшего от дел Клода Шеннона на конференции по теории информации в 80-е годы, сравнимое с появлением Ньютона на современной конференции по физике.

^ 2. Традиции преподавания истории информатики и цели разработки нового курса

Нельзя не отметить некоторую скудость информации о курсах по истории информатики в российских и зарубежных учебных заведениях. Тем не менее, удалось выявить следующие принципы их построения.

Во-первых, большая часть таких курсов основывается почти полностью на истории вычислительной техники. Программированию и информационным технологиям время уделяется по остаточному принципу, и в лучшем случае их изложение сводится к последовательному рассмотрению конструкций языков программирования и хронологии возникновения различных технологий.

Во-вторых, в отечественных условиях постепенно появляющиеся курсы по истории информатики в большинстве случаев доверялись специалистам по истории математики. Хорошо еще, если эти специалисты были знакомы с прикладной математикой, математической логикой или программированием, в этом случае их курс имел шанс приблизиться к реальной истории информатики.

В-третьих, как в зарубежных, так и в отечественных университетах, курс истории информатики находится на обочине учебных планов. Отчетность по нему обычно выставляется по итогам сдачи реферата (и зачастую это зачет), что превращает чтение лекций в необязательное мероприятие, «отбытие номера» для преподавателей и студентов.

Осознание этих фактов сделало очевидным необходимость построения нового курса истории информатики. При его разработке преследовалось несколько основных целей.

Во-первых, курс должен давать общую хронологию достижений в разных разделах информатики, причем особенное внимание должно уделяться причинам возникновения этих разделов и взаимосвязям между ними.

Во-вторых, необходимо осветить жизнь и деятельность «отцов-основателей», параллельно обосновывая тезис о роли личности в истории. Студенты обязаны знать биографии и важнейшие работы выдающихся деятелей информатики.

В-третьих, курс должен отражать общую структуру информатики: различные разделы не должны затенять единство всех ее составляющих.

В-четвертых, курс должен выявлять связи теории с практикой, и в первую очередь с практикой программирования. Студенты должны понимать причины появления тех или иных концепций программирования и отражающих их языковых средств.

В качестве вспомогательной цели рассматривалось формирование у студентов навыков публичных выступлений и подготовки рефератов по тематике выбранной для научной деятельности области науки.

^ 3. Примерная программа курса

Курс рассчитан на три аудиторных часа в неделю (2 часа лекций, 1 час семинарских занятий).

Первая часть курса (примерно 20 %) посвящена истории вычислительной техники. При этом бегло рассматриваются достижения докомпьютерной эпохи, а первым объектом пристального изучения оказывается деятельность Чарлза Бэббиджа (разностная и аналитическая машины) и «Примечания переводчика» Ады Августы Лавлейс. Основной упор раздела делается на первых компьютерах с хранимой программой, построенных согласно фоннеймановской архитектуре. Здесь же в порядке развенчания укоренившихся мифов уточняется роль Джона фон Неймана в разработке этой архитектуры.

Во второй части курса (также 20 %) рассказывается история возникновения и развития теоретической информатики. При этом раздел основывается на противоборстве и сотрудничестве двух ветвей дисциплины: кибернетики (происходящей из техники) и теории вычислений (берущей начало из математической логики). Подробно рассматривается история теории информации (как раздела, более близкого к кибернетике) и теории алгоритмов (как раздела теории вычислений). Эта часть курса также интересна тем, что при ее изучении в явном виде возникают теоретические основания программирования и информационных технологий, осознается взаимосвязь между различными разделами информатики как научной дисциплины.

Третья, самая большая часть курса (около 40 %), — это история программирования. Программирование здесь рассматривается в широком смысле: это языки и концепции программирования, программная инженерия, методы разработки программного обеспечения (например, тестирование или коллективная разработка). Особый интерес данного раздела заключается во взаимосвязи языков, концепций и методов программирования, когда появление новых идей в одной области оказывает влияние на другую и приводит к ее изменению. Важнейшим наблюдаемым в настоящее время эффектом такого влияния является проникновение приемов функционального программирования в промышленные (традиционно императивные) языки программирования, хотя достаточно долгое время функциональное программирование представляло собой совершенно независимую ветвь информатики. Подобное происходило при создании языка C++ (библиотека STL), тот же процесс повторяется сейчас при разработке языка C#. Следует заметить также, что сам процесс программирования в разные времена — ушедшие в прошлое перекоммутация электронных схем, работа в пакетном режиме, подготовка перфокарт и распечатка листингов программ — вызывает у современных студентов неподдельный интерес.

Наконец, четвертая часть курса (примерно 20 %) — это история информационных технологий. Разумеется, в рамках одного курса невозможно охватить все их разнообразие (одно только перечисление могло бы занять целую лекцию), поэтому приходится ограничиваться теми технологиями, которые наиболее близки автору курса. В частности, здесь рассматривается история операционных систем, компьютерных сетей (в том числе Интернета и службы WWW), а также баз данных.

Лекционный курс сопровождается сообщениями (20–25 минут) и докладами (45 минут) студентов. Каждый студент должен выступить с одним докладом и одним сообщением. Сообщения посвящены либо истории крупных компаний — «двигателей» информационных технологий, либо биографиям выдающихся деятелей науки. Приведем для примера темы сообщений в текущем году: «История IBM», «История Intel», «История Microsoft», «История Oracle», «История Apple», «История Sun Microsystems», «Чарлз Бэббидж», «Алан Тьюринг», «Алонсо Чёрч», «Джон фон Нейман», «Клод Шеннон», «Норберт Винер», «Эдсгер Дейкстра», «Дональд Кнут».

Доклады предусматривают более широкое освещение некоторой темы, они равномерно распределяются по всем разделам курса:

1. Устройства обработки и хранения информации.

2. Достижения Bell Labs.

3. Язык программирования Алгол.

4. Алан Кей и язык Smalltalk.

5. Никлаус Вирт и его языки программирования.

6. Скриптовые языки программирования.

7. Фред Брукс и «Мифический человеко-месяц».

8. Движение Open Source.

9. Графические пользовательские интерфейсы.

10. Компьютерные игры и их влияние на развитие информатики.

11. История операционных систем семейства Windows.

12. История информатики в СССР.

13. История криптографии.

14. История технологий искусственного интеллекта.

Каждое сообщение и доклад сопровождаются презентацией, по той же тематике готовится реферат.

^ 4. Проблема литературных источников

Текущее состояние курсов по истории информатики естественным образом отражается на наличии связанной с ними литературы. К счастью, имеется великолепная книга Ю. Л. Полунова «От абака до компьютера: судьбы людей и машин» [2, 3], посвященная преимущественно истории вычислительной техники. Доступно также пособие Ю. П. Петрова «История и философия науки: математика, вычислительная техника, информатика» [4], однако в нём излагается преимущественно история прикладной математики и практически не рассматривается теория вычислений, программирование и информационные технологии. На русском языке имеется также несколько работ биографического характера.

На западе история информатики уже давно стала отдельной областью исследований. К настоящему моменту прошло три конференции «История языков программирования» [5], в ведущих издательствах (ACM, IEEE) выходят журналы по истории информатики в целом и отдельных ее разделов. Правда, зачастую многие работы в этих журналах оказываются слишком «местечковыми» (к примеру, статья «Раннее использование компьютеров в швейцарских банках» [6]). Практически все зарубежные книги по истории информатики построены на истории вычислительной техники, аспекты исторического развития теоретических дисциплин приходится собирать по крупицам в соответствующих работах.

Литература

    1. Таненбаум Э. Современные операционные системы. — 2-е изд. — СПб.: Питер, 2007. — 1038 с. — (Серия «Классика computer science»).

    2. Полунов Ю.Л. От абака до компьютера: судьбы людей и машин. — М.: Русская редакция, 2004. — Т. 1. — 478 с.

    3. Полунов Ю.Л. От абака до компьютера: судьбы людей и машин. Книга для чтения по истории вычислительной техники в двух томах. — М.: Русская редакция, 2004. — Т. 2. — 574 с.

    4. Петров Ю. П. История и философия науки: математика, вычислительная техника, информатика. — СПб.: БХВ-Петербург, 2005. — 442 с.

    5. ACM SIGPLAN History of programming languages Conferences.
    ihost.com/hopl/HOPL.php

    6. Neukom H. Early Use of Computers in Swiss banks // IEEE Annals of the history of computing. — 2004. — V. 26, no. 3. — P. 50–59.