Так что же такое информатика?

Лавров C.

С. Б. Энтина в статье [6] ставит вопрос "Что такое информатика", приводит ряд услышанных ею ответов на него и задает ряд уточняющих вопросов. Чтобы ответить на главный вопрос, сначала следовало бы договориться о том, что такое информация. В словаре [9] даны следующие определения:

Данные (data) - Представление фактов или идей в формализованном виде, пригодном для передачи или обработки в некоем процессе.

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

Здесь уже использован термин обработка данных, определяемый в словаре несколько ниже с примечанием: "В тех случаях, когда обработка данных выполняется для усиления значения или ценности (с определенной точки зрения) информации, переносимой данными, она может называться обработкой информации".

Словарь издан от имени двух организаций: IFIP - Международной федерации по обработке информации и ICC - Международного вычислительного центра. В комитетах и комиссиях IFIP работали известные специалисты из многих стран. С мнением издателей словаря не грех и согласиться. Думается, что значение или ценность этих определений за 33 года, истекших с тех пор, нисколько не ослабли.

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

Итак, информация может исходить только от человека, восприниматься и обрабатываться только человеком. Именно такое содержание этого термина подразумевается в выражениях: "средства массовой информации", "информационная культура" и т. п. Компьютер может иметь дело лишь с данными. Ему безразлично, закодирована ли в этих данных заурядная сводка продаж за день или письмо ученого в Доклады Академии наук о сделанном им открытии - была бы программа, способная те или иные данные обработать.

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

Есть, впрочем, наука - теория информации - где термины "информация" и "энтропия" тесно связаны, но употребляются в существенно ином смысле. Там речь идет об измерении количества информации при передаче сигналов (сообщений). Энтропия служит мерой количества информации, приходящегося на один символ сообщения. Если распространить эти понятия на природные процессы, то грубо можно сказать, что возрастание энтропии равно количеству информации, утрачиваемой в любом таком процессе. Именно потеря информации и является причиной необратимости этих процессов. Интересующимся рекомендую книги [1] и [5].

Есть ли смысл в этих условиях пользоваться термином "информатика"? Если и есть, то следовало бы относить его к тем или иным сторонам человеческой деятельности, связанной с порождением, восприятием, хранением и передачей информации: "Информатика - это исследование сущности и обстоятельств подобной деятельности". Компьютеры не имеют никакого отношения к сущности этой деятельности, но стали, наряду с книгопечатанием, средствами связи и т. п., одним из важнейших ее обстоятельств и инструментов. По этой причине имеет некоторый смысл связать термин "информатика" с использованием компьютеров в качестве подручного средства при обработке информации: "Информатика в узком смысле - это исследование роли компьютеров и способов их использования в процессах хранения, обработки и передачи информации". Более естественным был бы иной термин, например, "компьюматика", "компьютеристика" или "датаматика", но ломать копья из-за этой терминологической проблемы уже поздно, а потому бессмысленно.

Из существующих термин "программирование" мне представляется в этой роли наиболее удачным. Беда в том, что многие привыкли относить его к общению человека с компьютером с помощью искусственных, специально для этого созданных, языков (Фортрана, "Паскаля", C++ и многих других). Термин возник, когда других средств еще не было, они и даже сами эти языки еще не зарождались. Сейчас положение изменилось в соответствии с общественными потребностями.

Д. Кнут, автор знаменитой монографии [10] и не менее известной типографской системы ТеХ, на основании собственных и чужих наблюдений утверждал [7]: "лишь около 2% всех людей "мыслят алгоритмически" в том смысле, что они могут быстро рассуждать об алгоритмических процессах". А также: "из каждой сотни студентов, записавшихся на вводный курс по программированию, лишь двое действительно "настроены" на этот предмет, как будто они прирожденные информатики (computer scientists в оригинале)".

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

Это и толкает меня на расширительное толкование термина "программирование". Мне не раз случалось пояснять, что "программирование - это искусство заставить компьютер решить стоящую перед человеком задачу". Я не причисляю к программистам кассира, чей аппарат подсчитывает общую стоимость сделанных кем-то покупок, - искусством здесь не пахнет.

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

После всех этих разъяснений я буду заменять термин "информатика" термином "программирование" в указанном его толковании, никому это словоупотребление не навязывая. Попытаюсь ответить на вопросы, заданные С. Б. Энтиной.

1) Информатика - это одна из фундаментальных наук или информатика - это технологии?

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

Если же у кого-то возникает желание считать программирование наукой, то уж никак не фундаментальной. У программирования есть своя теория. Ее естественно так и называть - теория программирования. Думаю, что это вполне достойная прикладная наука. Фундаментальности ей недостает все по той же причине - не успевает этот фундамент затвердеть, как его надо перекладывать.

2) Если информатика - это наука, то каково точное определение и содержание ее?

Бейте меня, но ответить на этот вопрос я не могу. Кто-то из великих математиков, когда ему задали подобный вопрос, сказал: "Математика - это то, чем занимаются математики". Я уже довольно много сказал о том, чем занимаются программисты, но считать это описание точным определением ни самого программирования, ни содержания этой благородной деятельности я не смею.

3) Какое место занимает информатика среди других фундаментальных наук?

Как ясно из сказанного, никакого. Место программирования в целом - среди технических видов деятельности, в чем-то - в ряду искусств и ремесел, место его теории - среди прикладных наук.

4) В школе, как известно, преподаются основы наук. Каково содержание основ информатики?

Трудно коротко ответить на этот сложный вопрос - сродни знаменитому Дедекиндову "Was sind und was sollen die...?" [8], но применительно не к числам, а к компьютерам "Что такое компьютеры и чем они должны быть?" (да простят меня коллеги-математики за святотатство).

В сборнике [4] опубликован "Обязательный минимум содержания образования по информатике". Документ носит полуофициальный характер, по содержанию довольно удачен, но в нем обозначены, большей частью, лишь заголовки тем. Я попытаюсь изложить, чем, на мой взгляд, должны быть наполнены его разделы: "Формализация и моделирование", "Информация и информационные процессы", "Алгоритмы и исполнители" и "Компьютер". В разделе "Представление информации", на мой взгляд, существенна лишь тема "Язык как способ представления информации", ее я совсем кратко коснусь ниже. Раздел "Информационные технологии" будет рассмотрен отдельно.

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

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

Не забыл я и про литературу, где слово стоит вроде бы на первом плане. Но:

Есть речи - значенье

Темно иль ничтожно,

Но им без волненья

Внимать невозможно...

Островки понятий рождаются средь моря предметов, событий, фактов. Все это составляет обстановку, в которой живет, трудится и мыслит человек. Обстановка редко удовлетворяет человека. Одни стремятся от нее сбежать, не понимая, что бегут они, в сущности, от себя. Другие мирятся с обстановкой, вживаются в нее - не будем осуждать их за безразличие или равнодушие. Поговорим о тех, кто своими действиями стремится эту обстановку изменить. Появление подобного желания характеризуется словами: перед человеком (или: передо мной) встала задача. Задача решена, если достигнуто желаемое изменение обстановки. Это случай почти невероятный: достигнутое крайне редко совпадает с желаемым. Как говорят, решение одной задачи порождает десять новых. Но отвлечемся и от этой стороны дела.

Прежде чем начать сами действия, надо составить их план. План строится на основе понятийной модели мира: индивидуальной при составлении личного плана, коллективной - если нашлась группа единомышленников. Сначала создается уже упоминавшаяся спецификация задачи - описание связи между располагаемыми средствами и возможностями (исходными данными) и желаемым результатом. Автор плана (не важно - один ли это человек или группа) должен убедить хотя бы самого себя, что планируемые действия приведут в наличных условиях к результату, удовлетворяющему спецификации задачи. Такое обоснование плана опять же исходит из модели. Но обоснование может оказаться ошибочным или неполным. Да и сама модель не может не абстрагироваться от многих составляющих реальной действительности - даже коллективный разум всего человечества составляет лишь часть, причем ничтожную часть, этой действительности. Но "безумству храбрых поем мы славу!".

Когда план действий составлен и обоснован, автор вправе назвать его алгоритмом решения задачи. Подчеркнем, что алгоритм - это всего лишь описание, более или менее подробное, предполагаемых действий. Сложные действия распадаются на ряд более простых, с теми - картина та же. Так мы добираемся до действий, про которые известно, как их исполнить и к какому результату это (предположительно) должно привести. Можно остановиться и на действиях, которые лишь обозначаются, а их планирование откладывается на будущее в надежде, что времени еще хватит. О принципе "Никогда не делай сегодня того, что можно отложить на завтра" при случае стоит еще поговорить.

Итак, осталось исполнить алгоритм - провести в жизнь намеченный план действий. Если, кроме тебя, сделать это некому, то надо, засучив рукава, браться за дело самому. Лучше, если у тебя есть подчиненные, или можно кого-нибудь нанять. Еще лучше, если работу можно поручить машине, а самому только управлять ею. Совсем хорошо, если машина - это автомат, которым и управлять не надо - получай готовый результат и пользуйся им вволю. Но и автомату надо сообщить, чего ты от него хочешь, а то вместо тридевятого царства окажешься у черта на куличках.

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

Простейший пример работ такого класса - это вычисления, когда и то, и другое - это наборы чисел. Потому и