Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

История развития программирования в России (Исторические этапы развития языков программирования)

Содержание:

Введение

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

Объектом исследования в курсовой работе являются направления развития компьютерных технологий в России.

Предмет исследования – история развития программирования в России.

Целью исследования в курсовой работе является углубленное изучение истории развития программирования в России.

Для достижения поставленной цели сформулированы следующие задачи:

  1. изучить теоретические основы развития программирования;
  2. рассмотреть вклад отдельных ученых в развитие программирования в России.

Методологической основой исследования являются учебная и методическая литература по программированию, статьи в периодической печати и Интернет-ресурсы.

1. Теоретические аспекты развития программирования

1.1. Исторические этапы развития языков программирования

С глубокой древности известны попытки создать устройства, ускоряющие и облегчающие процесс вычислений. Еще древние греки и римляне применяли приспособление, подобное счетам, -- абак. Такие устройства были известны и в странах Древнего Востока. В XV в. немецкие ученые В. Шиккард (1623), Г.Лейбниц (1673) и французский ученый Б. Паскаль (1642) создали механические вычислительные устройства -- предшественники всем известного арифмометра. Вычислительные машины совершенствовались в течении нескольких веков. Но при этом не применялось понятие «программа и программирование».

В начале XIX в. (1830) английский ученый, профессор математики Кэмбриджского университета Чарльз Бэббидж, анализируя результаты обработки переписи населения во Франции, теоретически исследовал процесс выполнения вычислений и обосновал основы архитектуры вычислительной машины. Работая над проектом аналитической машины -- «Машины для исчисления разностей», Ч. Бэббидж предсказал многие идеи и принципы организации и работы современных ЭВМ, в частности принцип программного управления и запоминаемой программы. Общая увлеченность наукой дала ученому и Аде Лавлейс (1815--1852) долгие годы плодотворного сотрудничества. В 1843 г. она перевела статью Менабреа по лекциям Ч. Бэббиджа, где в виде подробных комментариев (по объему они превосходили основной текст) сформулировала главные принципы программирования аналитической машины. Она разработала первую программу (1843) для машины Бэббиджа, убедила его в необходимости использования в изобретении двоичной системы счисления вместо десятичной, разработала принципы программирования, предусматривающие повторение одной и той же последовательности команд при определенных условиях. Именно она предложила термины «рабочая ячейка» и «цикл».

А. Лавлейс составила первые программы для решения системы двух уравнений и вычисления чисел Бернулли по довольно сложному алгоритму и предположила, что со временем аналитическая машина будет сочинять музыкальные произведения, рисовать картины и использоваться в практической и научной деятельности. Время подтвердило ее правоту и точность прогнозов. Своими работами А. Лавлейс заложила теоретические основы программирования и по праву считается первым в мире программистом и основоположником научного программирования.

В 1854 г. английский математик Джордж Буль опубликовал книгу «Законы мышления», в которой развил алгебру высказываний --Булеву алгебру. На ее основе в начале 80-х гг. XIX в. построена теория релейно-контактных схем и конструирования сложных дискретных автоматов. Алгебра логики оказала многогранное влияние на развитие вычислительной техники, являясь инструментом разработки и анализа сложных схем, инструментом оптимизации большого числа логических элементов, из многих тысяч которых состоит современная ЭВМ.

Идеи Ч. Бэббиджа реализовал американский ученый Г. Холлерит, который с помощью построенной счетно-аналитической машины и перфокарт за три года обработал результаты переписи населения в США по состоянию на 1890г. В машине впервые было использовано электричество. В 1896 г. Холлеритом была основана фирма по выпуску вычислительных перфорационных машин и перфокарт.

В 1936 г. английский математик А. Тьюринг ввел понятие машины Тьюринга, как формального уточнения интуитивного понятия алгоритма. Ученый показал, что любой алгоритм в некотором смысле может быть реализован на машине Тьюринга, а следовательно, доказывал возможность построения универсальной ЭВМ. И та, и другая машины аналогично могут быть снабжены исходными данными решаемой задачи и программой ее решения. Машину Тьюринга можно считать как бы идеализированной моделью универсальной ЭВМ. В 40-х гг. XX в. механическая элементная база вычислительных машин стала заменяться электрическими и электронными устройствами. Первые электромеханические машины были созданы в Германии К. Цузе (Ц-3, 1941г.) и в США под руководством профессора Гарвардского университета Г. Айкена (МАРК-1, 1944 г.). Первая электронная машина создана в США группой инженеров под руководством доктора Пенсильванского университета Дж. Мочли и аспиранта Дж. Экксрта (ЭНИАК -- электронный числовой интегратор и калькулятор, 1946 г.). В 1949 г. в Англии была построена EDSAC -- первая машина, обладающая автоматическим программным управлением, внутренним запоминающим устройством и другими необходимыми компонентами современных ЭВМ.

Логические схемы вычислительных машин были разработаны в конце  1940-х гг. Дж. фон Нейманом, Г. Гольдстайном и А. В. Берксом. Особый вклад в эту работу внес американский математик Джон фон Нейман, принимавший участие в создании ЭНИАК. Он предложил идею хранения команд управления и данных в машинной памяти и сформулировал основные принципы построения современных ЭВМ. ЭВМ с хранимой программой оказались более быстродействующими и гибкими, чем ранее созданные.

В 1951 г. в США было налажено первое серийное производство электронных машин УНИВАК (универсальная автоматическая вычислительная машина). В это же время фирма IBM начала серийный выпуск машины IBM/701.

В СССР первыми авторами ЭВМ, изобретенной в декабре 1948 г., являются И. С. Брук и Б. И. Рамеев. А первая советская ЭВМ с сохраняющейся программой создана в 1951 г. под руководством С. А Лебедева (МЭСМ -- малая электронная счетная машина). В 1953 г. в Советском Союзе начался серийный выпуск машин, первыми их которых были БЭСМ-1, «Стрела».

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

До конца 1950-х гг. ЭВМ основным элементом конструкции были электронные лампы (1-е поколение). В этот период развитие идеологии и техники программирования шло за счет достижений американских ученых Дж. фон Неймана, сформулировавшего основные принципы построения ЭВМ, и Дж. Бэкуса, под руководством которого в 1954 г. был создан Fortran (Formula Translation) -- первый язык программирования высокого уровня, используемый до настоящего времени в разных модификациях. Так, в 1965 г. в Дартмутском колледже Д. Кэмэни и Т. Куртцем была разработана упрощенная версия Фортрана -- Basic. В 1966 г. комиссия при Американской ассоциации стандартов (ASA) разработала два стандарта языка: Фортран и Базисный Фортран. Используются также дальнейшие модификации языка (например 1970, 1990 гг.).

Достижения в области электроники и микроэлектроники позволили заменить элементную базу ЭВМ на более совершенную. В конце 1950-х гг. громоздкие электронные лампы заменяют полупроводниками (миниатюрными транзисторами). Появляются ЭВМ II поколения; затем примерно через 10 лет -- ЭВМ III поколения на интегральных схемах; еще через 10 лет -- ЭВМ IV поколения на больших интегральных схемах (БИС). В Японии в 1990-х гг. реализованы проекты ЭВМ V поколения, в которых использованы достижения в области искусственного интеллекта и биоэлектроники. Если объем оперативного запоминающего устройства (ОЗУ) одной из лучших отечественных машин 1960-х гг. М-20, созданной под руководством С.А.Лебедева в 1958 г., имел 4096 слов (8 Кбайт) и быстродействие 20 тыс. операций в секунду, то современные персональные компьютеры характеризуются ОЗУ в десятки Мбайт и быстродействием в сотни миллионов операций в секунду, что позволяет решать сложнейшие задачи.

В 1953 г. А.А.Ляпуновым был предложен операторный метод программирования, который заключался в автоматизации программирования, а алгоритм решения задачи представлялся в виде совокупности операторов, образующих логическую схему задачи. Схемы позволяли расчленить громоздкий процесс составления программы, части которой составлялись по формальным правилам, а затем объединялись в целое. Для проверки идей операторного метода в СССР в 1954 г. была разработана первая программирующая программа ПП-1, а в 1955 г. более совершенная -- ПП-2. В 1956 г. разработана ПП БЭСМ, в 1957 г. - ППСВ, в 1958 г. -- для машины «Стрела».

В США в 1954 г. стал применяться алгебраический подход, совпадающий, по существу, с операторным методом. В 1956 г. корпорацией IBM разработана универсальная ПП Фортран для автоматического программирования на ЭВМ IBM/704. В этот период по мере накопления опыта и теоретического осмысления совершенствовались языки программирования. В 1958--1960 гг. в Европе был создан ALGOL, который породил целую серию алголоподобных языков: Algol W, (1967), Algol 68, Pascal (Н. Вирт, 1970 г.), С (Д. Ритчи и Б. Керниган, 1972 г.), Ada (под руководством Ж. Ишбиа, 1979 г.), C++ (1983). В 1961-1962 гг. Дж. Маккарти в Массачусетском технологическом институте был создан язык функционального программирования Lisp, открывший в программировании одно из альтернативных направлений, предложенных Дж. фон Нейманом. На начало 1970-х гг. существовало более 700 языков высокого уровня и около 300 трансляторов для автоматизации программирования.

1.2. Русские программисты, внесшие вклад в историю программирования

Россия традиционно ассоциируется с огромной территорией и бесконечными природными ресурсами. Нефть, газ, уголь и древесина по-прежнему остаются наиболее важными составляющими валового национального продукта России, на этом фоне индустрия программирования почти незаметна. Однако, помимо лидерства на сырьевом рынке, Россия занимает первое место в мире по количеству технических специалистов. Согласно отчету World Bank/UNESCO, более миллиона человек в стране работает в области научных исследований. У России есть все предпосылки для того, чтобы стать заметной силой на международном рынке программирования.

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

В те времена количество программистов (да и самих компьютеров) было очень небольшим, так как область применения программирования была достаточно ограниченной. Так, за все 20 лет производства БЭСМ-6, одного из самых успешных компьютеров тех времен (было выпущено всего около 300 штук). Тем не менее, к концу 60-х советская школа программирования находилась на мировом уровне и в промышленной разработке программ, и в научных исследованиях.

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

Проанализируем вклад в развитие программирования самых известных и знаменитых программистов СССР и России.

Давид Ян. Российская компания ABBYY (до 1997 год а – BIT Software) была основана в 1989 г. в Москве студентом четвертого курса Московского физико-технического института (МФТИ) Давидом Яном.

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

В группу компаний ABBYY входит десять международных офисов в России, США, Германии, Великобритании, Японии, Тайване, на Украине и Кипре, высокотехнологичное российское агентство по переводу ABBYY Language Services (Perevedem.ru) и издательство ABBYY Press. Головной офис ABBYY, находящийся в Москве, отвечает за разработку продуктов и координацию деятельности офисов компании в других странах.

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

Бакунов Григорий Николаевич (род. 19 апреля 1972 года). С 2001 г. руководил отделом разработки в SWSoft. В настоящее время является заместителем руководителя департамента разработки компании Яндекс. Ранее работал по рабочим контрактам в Бельгии, Израиле и США.

Внес вклад в разработку ряда программ с открытым исходным кодом, в том числе ASPLinux.

Евгений Валентинович Касперский (4 октября 1965 г., Новороссийск) – российский программист, специалист по информационной безопасности, один из основателей, ведущий разработчик и крупнейший акционер ЗАО «Лаборатория Касперского» – международной компании, занимающейся разработкой решений для обеспечения IT-безопасности, имеющей более 30 региональных офисов и ведущей продажи в 200 странах. Лауреат Государственной Премии в области науки и технологий за 2008 год. В прессе характеризуется как «гроза компьютерной преступности»

Сергей Михайлович Брин родился 21 августа 1973 г., в Москве, СССР. Разработчик и сооснователь поисковой системы Google. легенда компьютерного бизнеса, сооснователь и президент по технологии компании Google Inc., миллиардер, ныне один из самых богатых людей Америки. Брин – русский, впервые названный газетой «Financial Times» «человеком года» не как актер, политик или олигарх, а как математик, прославившийся на весь мир творением собственного ума – поисковой системой Google.

2. Развитие новосибирской школы программирования

2.1. Начальный этап формирования школы программирования в России

Один из первых советских программистов Игорь Васильевич Поттосин родился 21 февраля 1933 г. в селе Кинель-Черкассы Самарской (тогда Куйбышевской) области. Несомненно, его жизненный путь во многом был предопределен семьей и общей атмосферой студенческого Томска. Отец, Василий Васильевич (1905–1993), происходил из семьи служащих, окончил техникум, работал учителем, после окончания Московского педагогического института и аспирантуры был направлен в Томск, в НИИ математики и механики при ТГУ (1934). В 1940 г. был избран деканом спецфакультета, в 1941 г. защитил кандидатскую диссертацию. В годы войны был на фронте, воевал в рядах политсостава. В 1947 г. он вернулся в Томск на родной факультет. С 1960 по 1965 г. работал заместителем декана и деканом физико-технического факультета, затем преподавал на кафедре гидродинамики ФТФ, на пенсию ушел почти в 80 лет. Председатель совета ветеранов ТГУ. Член КПСС с 1941 г., делегат XIX съезда КПСС, награжден орденами и медалями. Мать, Елизавета Павловна Поттосина, работала научным сотрудником в Томском институте вакцин и сывороток.

В школе Игорь Поттосин учился отлично, окончил школу с золотой медалью. В1950 г. поступил на специальное отделение механико-математического (затем физического) факультета Томского государственного университета, где готовили кадры для Министерства обороны СССР. Учился в университете на «отлично» и окончил его по специальности «баллистика». В 1955 г. с характеристикой, в которой была отмечена склонность к исследовательской работе, Поттосин распределен в Москву, инженером в в/ч 01168.

Это был годом ранее созданный ЦНИИ-27 — ВЦ-1 Министерства обороны СССР — первый советский вычислительный центр, предназначенный для решения особо важных задач оборонного характера на основе использования вычислительной техники. Его создателем и первым руководителем являлся подполковник Анатолий Иванович Китов (в дальнейшем заместитель начальника по научной части). Центр размещался в Москве, сначала в здании Артиллерийской академии имени Дзержинского, а затем в доме № 5 в Первом Хорошевском проезде. В то время ВЦ-1 МО СССР включал три научных подразделения: отдел эксплуатации вычислительной машины «Стрела» (была установлена в 1956 г., на ней делались расчеты орбит всех запускаемых в СССР искусственных спутников Земли и решались другие задачи); отдел эксплуатации ЭВМ «Интеграл» и отдел программирования.

В отделе программирования ВЦ-1 И.В. Поттосин рос как профессионал под руководством таких выдающихся ученых, как Л.А. Люстерник, А.А. Ляпунов, Н.А. Криницкий, Н.П. Бусленко и др. Обучение новых сотрудников, инженеров и программистов, было организовано А.И. Китовым. Сам он читал курс «Программирование для ЭВМ», Л.А. Люстерник читал курс вариационного исчисления, теорию функций комплексного переменного — Н.А. Криницкий, некоторые вопросы теории множеств — А.А. Ляпунов [1]. Одновременно шла работа над созданием программ для ЭВМ. Первые публикации И.В. Поттосина появились в сборнике трудов Министерства обороны под редакцией А.И. Китова. Его работы начального периода связаны с автоматизацией программирования, он ищет способы экономии машинного времени при решении систем дифференциальных уравнений, зависящих от параметров. Вместе с Н.А. Криницким, Н.А. Бухтияровым, Л.В. Войтишек и другими он участвовал в создании программирующей программы для машины «Стрела» [2; 3].

Интерес к проблеме автоматизации программирования привел И.В. Поттосина и его друга со школьной скамьи Г.И. Кожухина1 на семинар к А.П. Ершову в Вычислительный центр АН СССР. Случилось это, видимо, не без влияния А.А. Ляпунова. В 1957 г., когда было принято решение об организации Сибирского отделения Академии наук СССР, А.П. Ершов с благословения академика С.Л. Соболева занялся формированием коллектива отдела программирования Института математики с Вычислительным центром СО АН. Друзья, узнав об организации научного центра в родной Сибири, захотели там работать, обратились к С.Л. Соболеву. Отношение с просьбой о переводе И.В. Поттосина в Институт математики СО АН датировано 24 апреля 1958 г. Оно было составлено на имя начальника войсковой части 01168 генерал-майора Березина в канцелярии комплекса физико-математических институтов СО АН. Развитие науки в Сибири было объявлено государственным приоритетом. Руководители всех ведомств, в том числе и Министерства обороны, обязаны были направлять своих сотрудников в распоряжение СО АН по первому требованию. Таким образом, 9 июня 1958 г. И.В. Поттосин стал младшим научным сотрудником Института математики с Вычислительным центром Сибирского отделения АН СССР, который базировался еще в Москве. Он приступил к работе в отделе программирования под руководством Андрея Петровича Ершова.

Со временем А. П. Ершов, Г.И. Кожухин и И.В. Поттосин составили интеллектуальное ядро отдела программирования ВЦ СО АН.

К концу 1958 г. было решено, что Игорь Васильевич переедет в Новосибирск, и с 1 ноября до приезда А.П. Ершова будет исполнять обязанности заведующего Отделом программирования Института математики с Вычислительным центром СО АН. Дата, когда Поттосин приступил к своим обязанностям, стала считаться днем рождения Отдела. В апреле 1959 г. Игорь Васильевич был назначен заведующим группой подготовки задач, затем, в мае 1960 г., когда утверждалась структура отдела программирования, заместитель директора ИМ СО АН Ю.Г. Косарев предложил Поттосину возглавить лабораторию стандартных подпрограмм. В его активе уже была разработка принципов организации библиотеки стандартных программ (совместно с Г.И. Кожухиным и Н.М. Нагорным). В течение первых трех лет Игорь Васильевич обучал сотрудников ИМ СО АН работе на ЭВМ, занимался разработкой СП. Поскольку в первой половине 1960 г. шла активная подготовка к пуску М-20, поступившей на вооружение ВЦ СО АН, Игорь Васильевич руководил программированием производственных задач, чтобы обеспечить загрузку машины2. Он запрограммировал ряд задач для институтов СО АН, в частности сделал расчет сопла для парогазотурбинной установки, детища академика С. А. Христиановича, директора ИТПМ. В 1961 именно за подготовку программного хозяйства ИМ СО АН И.В. Поттосин был награжден Почетной грамотой ЦК ВЛКСМ.

Поначалу И.В. Поттосин не участвовал в разработке Альфа-транслятора, много сил отдавая разработке стандартных программ. Однако А.П. Ершов считал, что Игорь Васильевич должен больше внимания уделять проекту, который становился главным в работе Отдела. Так, во втором квартале 1960 г. в индивидуальном плане Поттосина появился пункт — овладение Сибирским языком (этот язык, разработанный Ершовым и коллегами и названный Альфа, стал входным языком Альфа-транслятора). После переезда в Новосибирск в начале 1961 г. Ершов настоял на том, чтобы Поттосин подключился к проекту. В 1961–1965 гг. Игорь Васильевич стал одним из ведущих разработчиков Альфа-транслятора. Он выполнял сложную координирующую работу как заведующий группой, создал ряд оригинальных алгоритмов трансляции. Альфа-транслятор оказался очень удачным проектом, он широко использовался для решения научных задач, в дальнейшем И.В. Поттосин руководил модификацией Альфа-транслятора для БЭСМ-6 (Альгибр, Альфа-6).

В 1964 г. отдел программирования практически в полном составе перешел в только что созданный Вычислительный центр СО АН. К концу 1965 г. в Отдел входили лаборатория теории программирования (заведующий А.П. Ершов), лаборатория автоматического построения вычислительных алгоритмов под руководством В.Л. Каткова и лаборатория систем программирования, возглавляемая И.В. Поттосиным3. В это время здесь разрабатывался транслятор для ЭВМ Минск-2, Альфа-отладчик. Из-за несовершенства ЭВМ и лимита на ее использование часто приходилось жертвовать свободным временем, чтобы попасть на машину. Сотрудник лаборатории системного программирования ИСИ СО РАН А. Ф. Рар рассказывал: «Стоит вспомнить, как проходило наше взаимодействие с машиной. Она была на ВЦ в единственном экземпляре, часто зависала, время для работы на ней распределялось квотами по 5-10 минут; из-за нехватки времени мы иногда приходили к машине в надежде, что очередной пользователь недоиспользует свою квоту и можно будет урвать пару минуток. В общем весело было, но из-за всего этого порой приходилось приходить на работу ранним утром, а возвращаться домой поздним вечером. И вот однажды моя дочь, тогда второклассница, встретила меня запомнившимися мне словами: “ДАЖЕ ПРИ ЦАРИЗМЕ КАПИТАЛИСТЫ заставляли рабочих работать только 12 часов!”» [4].

Во время работы над Альфа-транслятором выстроились отношения в отделе программирования: авторитет руководителя установился и поддерживался сознательно. Игорь Васильевич писал по этому поводу: «Вспоминаю наш разговор с Геной Кожу-хиным во время начала работы в проекте АИСТ. Сошлись мы с ним на том, что если в тактических и технических решениях “мы и сами не дураки”, то в стратегических решениях надо больше верить интуиции Андрея Петровича, чем собственному мнению, даже если его точка зрения противоречит нашей» [5]. Это признание — свидетельство глубокой порядочности отношений, которые культивировались в ОП его ведущими сотрудниками.

Практически вслед за Альфой в 1965 г. была инициирована разработка нового языка программирования для работы с символьной информацией, обусловленная собственными нуждами системных программистов. В соответствии с ритуалом того времени, завершение проекта было приурочено «к дате», вошло в планы СО АН к 50-летию Октября (Великой Октябрьской социалистической революции): «Создать транслятор с языка СИГМА». Вне планов отдела в рамках этой тематики И. В. Поттосин, М. М. Бежанова и Б. А. Загацкий создавали язык Эпсилон, близкой к машинному языку семантики и удобного синтаксиса (название E \|>iA´ov (греч.: E простое) подчеркивало простоту языка). Противоречие с генеральным направлением, в которое вошли разработчики, было снято, когда были получены основные контуры языка. К группе создателей Эпсилон присоединился А. Ф. Рар, было проявлено завидное упорство при отстаивании своего детища. И. В. Поттосин вспоминал: «К 1968 году система “вышла на простор”. Она использовалась и в ВЦ СО АН СССР, и в других организациях. Особую роль она играла как основной инструмент создания системы коллективного пользования АИСТ-0: все программное обеспечение размером в несколько сотен тысяч команд — и операционные системы, и трансляторы, и информационные системы, и системы компьютерной алгебры, и игровые программы (кроме ядра ОС, который работал на Минске-22 и был написан в мнемонике Минска) - было написано на Эпсилон»4. А. П. Ершов, который поначалу не одобрил увлечения своих сотрудников Эпсилоном, впоследствии включил его в текущий отчет и даже просил руководство премировать разработчиков.

В 1969 г. И. В. Поттосин подготовил диссертацию на соискание ученой степени кандидата физико-математических наук. Она была посвящена некоторым приемам и методам оптимизации, а именно экономии выражений и оптимизации при программировании циклов и индексных выражений, реализованных в системе Альфа [6]. Научным руководителем диссертации стал д-р физ.-мат. наук А.П. Ершов, оппонентами — чл.-корр. АН СССР С.С. Лавров и канд. физ.-мат. наук Н.А. Криницкий. Игорь Васильевич так сформулировал проблемную область своего исследования: «Появление языков с богатыми изобразительными средствами, достаточно далеких от языков вычислительных машин, таких как Алгол 60, поставило перед автоматическим программированием ряд новых проблем, заключающихся в разработке более сложных и менее тривиальных алгоритмов трансляции таких языков» [6. С. 3–4]. Излагая методику программирования операторов цикла, И.В. Поттосин отметил преемственность приемов, использованных в ранних системах автоматизации программирования, предложенных С.С. Камыниным, Э.З. Любимским, М.Р. Шура-Бурой, А.П. Ершовым и др. Наибольшее влияние на автора оказали работы В.М. Курочкина, Г.Д. Фролова, предложения А. П. Ершова по усовершенствованию ПП для БЭСМ.

Следующим большим проектом отдела программирования стало создание первой в Советском Союзе системы разделения времени АИСТ. И.В. Поттосин руководил разработкой программного обеспечения первого этапа проекта АИСТ-0. Была разработана архитектура системы, описаны функции диспетчера и организация потока задач, которые должны были проходить через систему, сформулирована проблема установления очередности и предложено ее решение. И.В. Поттосин руководил также блоком оптимизации алгоритмов. Создание диспетчера для АИСТА-0 велось в тесном содружестве с Г.И. Кожухиным и М.И. Нечепуренко. На Первой Всесоюзной конференции по программированию ВКП-1 в Киеве в ноябре 1968 г. присутствовало 23 делегата от ВЦ СО АН. И.В. Поттосин сделал пленарный доклад «Операционные системы» [7], посвященный обобщению подходов и требований к структурным компонентам операционных систем и их взаимодействию, организации информации от абонентов и организации потока задач. Этот анализ «молодой ученый из СО АН СССР», как его назвали в Решении по итогам конференции, сделал, опираясь на собственный опыт участника проекта АИСТ-0 с учетом подходов, принятых в международной практике. Второй доклад, представленный на секции «Теория и общие вопросы программирования» [8], был посвящен языку Эпсилон. В дальнейшем в рамках структурного подхода к построению сложных инструментальных систем ученики и коллеги И.В. Поттосина под его руководством реализовали систему поддержки пакетов прикладных программ СОФИСТ и универсальную систему аналитических выкладок АУМ.

2.2. Развитие новосибирской школы программирования на рубеже XX – XXI века

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

Работы И.В. Поттосина и его учеников сыграли большую роль в развитии международного сотрудничества и популяризации в нашей стране языков и систем профессора Никлауса Вирта. Игорь Васильевич являлся научным руководителем Дмитрия Кузнецова, одного из разработчиков архитектуры рабочей станции «Кронос», ориентированной на языки высокого уровня Си, Паскаль, Модула-2. Предполагалось, что на базе процессора «Кронос» будет создана отечественная бортовая вычислительная машина. По экономическим причинам «Кронос» так и остался на стадии опытного образца, но эта разработка послужила основой для использования Модула-2 в создании программного обеспечения БЦВМ. В конце 1980-х гг. язык Модула-2, созданный Н. Виртом, был принят Советом Министров СССР в качестве базового языка разработки бортового программного обеспечения для спутников. Тогда же был запущен проект СОКРАТ по разработке инструментальной системы поддержки программирования встроенных систем. Тем самым началось тесное сотрудничество И.В. Поттосина и его программистов с Красноярским научно-производственным объединением прикладной механики им. М.Ф. Ре-шетнева (НПО ПМ). Сотрудничество ИСИ СО РАН и НПО ПМ продолжается по сей день. Программное обеспечение для спутников, созданных в Красноярске-26, разрабатывалось на Модуле-2, что обеспечивало его исключительную надежность. Продолжением этих работ являлись исследования в области анализа программ и методологии программирования. И.В. Поттосин предложил принципы построения окружений программирования, необходимые при создании программных систем с повышенными требованиями к их эффективности и надежности и реализованные в экспериментальном окружении программирования для встроенных ЭВМ.

И.В. Поттосин был крупным организатором науки. Практически с самого начала своей деятельности он являлся бессменным руководителем научных подразделений ВЦ СО АН и КБ СП (Конструкторского бюро системного программирования). Когда не стало Андрея Петровича Ершова, Игорь Васильевич как его преемник и символ продолжения духа и традиций Отдела, Сибирской школы программирования, сделал много для сохранения памяти о своем выдающемся друге и коллеге. Им инициированы исследования по истории программирования, он написал ряд биографических очерков о научном вкладе академика А.П. Ершова, организовал ряд конференций его памяти [9–11]. Более десяти лет И.В. Поттосин руководил Рабочей группой по языкам и системам программирования в Комиссии по системному математическому обеспечению, которую возглавлял А.П. Ершов. Им составлен обзор российских академических исследований и разработок в области трансляции, находившихся в сфере координации руководимой им рабочей группы [12].

В 1990 г. на базе ряда отделов ВЦ был создан Институт систем информатики СО АН. Во вновь созданном Институте И.В. Поттосин стал заместителем директора по научной работе, а в тяжелые для всей отечественной науки 1990-е гг. принял на себя нелегкие обязанности директора (1991–1998). Уже в самом начале своего директорства И.В. Поттосин столкнулся с серьезными проблемами организационного плана. Экономическая ситуация, сложившаяся в России в первое десятилетие перестройки, отразилась и на коллективе ИСИ СО РАН. Уже в октябре 1992 г. вышло Постановление Президиума РАН с рекомендацией Объединенным ученым советам ликвидировать ряд институтов СО РАН и передать часть сотрудников в другие институты5. В этот список попал и ИСИ СО РАН. 16 октября 1992 г. ученый совет ИСИ высказал несогласие с таким решением. В дальнейшем сотрудники института, его руководство предприняли ряд действий, направленных на активизацию общественного мнения, получение поддержки коллег из других научных центров в пользу сохранения ИСИ СО РАН.

Ко времени появления рекомендаций Президиума РАН в штате Института насчитывалось около 190 человек, из них 95 научных сотрудников, в том числе 1 член-корреспондент, 4 доктора наук, 22 кандидата наук (3 профессора и 6 доцентов). За два с половиной года существования ИСИ, созданного в апреле 1990 г., его сотрудники выполнили большой объем научно-исследовательских и экспериментальных работ. В активе Института было 4 монографии, свыше 80 публикаций в центральных российских и зарубежных изданиях. На базе Института проведено 3 международных конференции, готовилась очередная — по формальным методам в программировании, намеченная на 1993 г. Силами сотрудников Института в Сибирском отделении издательства «Наука» выпускался сборник «Системная информатика».

За сохранение ИСИ СО РАН высказались отечественные и зарубежные коллеги: Научный совет по программированию Отделения информатики, вычислительной техники и автоматизации РАН, НИИ системных исследований РАН, Москва (директор профессор В.Б. Бетелин), НПО прикладной механики, Красноярск (генеральный конструктор академик М.Ф. Решетнев), Научный совет РАН по проблеме «Искусственный интеллект» (академик Г.С. Поспелов), чл.-корр. С.С. Лавров (Институт прикладной астрономии РАН, Ленинград), М. Брой (Технический университет Мюнхена), М. Нива (Институт Блеза Паскаля, Париж), Э. Тыугу (Королевский институт технологий, Стокгольм), М. Синцов (Католический университет Лувен, Бельгия) и многие другие. Профессор Ф. Жорран из Университета Гренобля писал, что «будет большой ошибкой свести научно-исследовательскую работу ИСИ до функций обслуживания программистов для вычислительных задач». В конце ноября в Институте работала комиссия по проверке научной деятельности. Она пришла к заключению об актуальности и высоком качестве научных исследований в ИСИ СО РАН. Институт систем информатики был сохранен в составе Сибирского отделения РАН.

В условиях невнятной государственной политики в области науки и вычислительной техники и отсутствия адекватного финансирования Институту и его директору пришлось самостоятельно определять приоритеты в исследованиях и учитывать международное разделение труда в сфере информатики. Задачей директора в первую очередь было сохранение кадрового потенциала. В Институт приходили молодые специалисты из НГУ, но отток кадров был значительным. Сотрудники ИСИ уезжали работать за рубеж, находили более высокооплачиваемую работу внутри страны. В 1997 г. коллектив сократился практически на четверть, до 154 чел., а численность научных сотрудников — до 70 чел.

В 1997 г. И.В. Поттосин как директор Института и председатель его ученого совета сыграл определяющую роль в поисках перспективных направлений работы института. Теоретические и методологические основы создания систем информатики, в том числе теоретические основания информатики; методы и инструменты построения программ повышенной надежности и эффективности; методы и системы искусственного интеллекта; системное и прикладное программное обеспечение вычислительных машин, систем, сетей и комплексов, на многие годы вошли в программу работы ИСИ СО РАН.

И.В. Поттосин активно участвовал в воспитании научной смены. С 1968 г. он прошел ступени от ассистента до профессора, заведующего кафедрой программирования механико-математического факультета Новосибирского университета. Эта кафедра была организована после долгой борьбы в 1993 г., и И.В. Поттосин, который к этому моменту защитил докторскую диссертацию, с полным основанием стал ее первым руководителем. В течение многих лет он читал свой курс программирования и вел спецкурс по методам трансляции. Теории и практике системного программирования Игорь Васильевич посвятил десятки статей, он также подготовил несколько вузовских учебников в соавторстве со своими коллегами М.М. Бежановой и Л.А. Москвиной [13; 14]. Среди его учеников — доктора и кандидаты наук, сотни выпускников Новосибирского университета и Высшего колледжа информатики, становлению которого и совершенствованию преподавания информатики в котором он содействовал. Игорь Васильевич в свое время поддержал инициативу сотрудников ИСИ по организации олимпиады по программированию. Она проводится с 1999 г. как Открытая Всесибирская студенческая олимпиада по программированию, а с 2001 г. носит его имя. Теперь в ИСИ и НГУ на постоянной основе действуют организационные структуры, обеспечивающие ее подготовку и проведение: оргкомитет, жюри олимпиады, тренинг-классы для участников.

Заключение

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

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

а) какие типы данных будут использоваться в программе: числовые, символьные, логические или те и другие;

б) для числовых данных установить, какие это будут числа: целые, вещественные или комплексные;

в) для целых чисел определить возможные минимальные и максимальные их значения;

г) определить, с какой точностью придется оперировать вещественными числами: обычной или удвоенной;

д) для символьных данных установить, отдельные ли символы будут использоваться или их строки;

е) уточнить, какие структуры данных будут фигурировать в программе: одномерные, двухмерные, трехмерные массивы, множества, списки и др.;

ж) для массивов установить, будут ли применяться статические или динамические массивы, т. е. будут ли измеряться размеры массивов (количество элементов, строк, столбцов) в процессе выполнения программы.

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

  1. Определить способ ввода исходных данных задачи, а именно установить, будут ли вводиться все исходные данные сразу или последовательно частями (ввод с подкачкой), откуда будет осуществляться ввод.
  2. Определить способ вывода данных решения, а именно на какие устройства, кроме видеотерминала, следует выводить результаты решения, какие форматы вывода необходимо использовать для размещения данных на внешних носителях информации.
  3. Программировать следует так, чтобы размещенные в ОП исходные данные задачи в процессе выполнения программы не изменялись. Это необходимо для многократного прогона программы во время ее отладки и возможности использовать эту программу в виде составной части другой программы.
  4. При программировании арифметических выражений необходимо применять самые быстродействующие операции. Например, если нужно вычислить 42, то лучше программировать операцию 4x4. Она выполняется быстрее, чем возведение в степень. Если есть необходимость вычислить 2 х b, то лучше применить операцию b + b, так как сложение на компьютере выполняется быстрее, чем умножение.
  5. Если окажется, что некоторые группы команд программы повторяются в нескольких ее местах, их следует запрограммировать отдельно и оформить в виде подпрограммы, к которой можно обращаться из основной программы в местах повторений групп команд. Это сократит длину программы.
  6. При программировании циклов необходимо следить за тем, чтобы величины, не изменяющиеся в цикле, были вынесены за его пределы. В особенности это касается вложенных циклов, так как именно на их обработку чаще всего тратится львиная доля времени выполнения программы. В общем же нужно стремиться минимизировать число повторений в циклах.

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

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

Список использованных источников

  1. Долгов В. А. Китов Анатолий Иванович – пионер кибернетики, информатики и автоматизированных систем управления. М.: КОС·ИНФ, 2014. С. 92–93.
  2. Поттосин И. В., Криницкий Н.А., Бухтияров Н. А., Фролов Г. Д., Войти-шек Л. В., Левина А.А. Программирующая программа ПП-С // Министерство обороны СССР: Сб. науч. тр. М., 1958. № 1. С. 7–79.
  3. Поттосин И. В. Решение некоторых дифференциальных уравнений и их систем методом исключения параметров // Министерство обороны СССР: Сб. науч. тр. М., 1958. № 1. С. 105–111.
  4. Рар А. Ф. История Эпсилон // Становление новосибирской школы программирования (мозаика воспоминаний): Сб. науч. тр. / Под ред. И.В. Поттосина. Новосибирск, 2001. C. 66–72.
  5. Андрей Петрович Ершов — ученый и человек / Ред.-сост. М.А. Бульонков и др.; под ред. А.Г. Марчука. Новосибирск: Изд-во СО РАН, 2014. – с.26 – 33.
  6. Поттосин И. В. Некоторые вопросы оптимизации в автоматическом программировании: Автореф. дис. ... канд. физ.-мат. наук. Новосибирск, 1969.
  7. Поттосин И. В. Операционные системы // Тр. I Всесоюз. конф. по программированию. Пленарные доклады. Киев, 1968. С. 20–46.
  8. Поттосин И. В., Рар А. Ф., Катков В. Л. Эпсилон — система автоматизации программирования для задач символьной обработки // Тр. I Всесоюз. конф. по программированию. Киев, 1968. С. 88–108.
  9. Поттосин И. В. А.П. Ершов — пионер и лидер отечественного программирования // Становление новосибирской школы программирования (мозаика воспоминаний): Сб. науч. тр. / Под ред. И.В. Поттосина. Новосибирск, 2014. С. 7–16.
  10. Поттосин И. В. Андрей Петрович Ершов: жизнь и творчество // А.П. Ершов. Избр. труды. Новосибирск: ВО «Наука», 2015. С. 5–29.
  11. Поттосин И. В. А.П. Ершов и становление новосибирской школы программирования // Становление новосибирской школы программирования (мозаика воспоминаний): Сб. науч. тр. / Под ред. И. В. Поттосина. Новосибирск, 2013. С. 28–40.
  12. Поттосин И.В. Текущее состояние российских разработок в области трансляции. Препр. № 30 / Ин-т систем информатики СО РАН СССР. Новосибирск, 1995. – с.83 – 99.
  13. Поттосин И. В., Бежанова М. М. Современные понятия и методы программирования. - М.: Научный мир, 2016. – 67 – 77.
  14. Поттосин И. В., Бежанова М. М., Москвина Л. А. Практическое программирование. Структуры данных и алгоритмы. - М.: Логос, 2015. – 163 .с