Добавлен: 28.06.2023
Просмотров: 65
Скачиваний: 2
В 1975 году, бросив Гарвардский университет, где он готовился стать правоведом, как его отец, Гейтс совместно со своим школьным товарищем Полом Алленом основал компанию Microsoft. Первой задачей новой фирмы стала адаптация языка Бейсик для использования в одном из первых коммерческих микрокомпьютеров - "Альтаире" Эдварда Робертса.
В 1980 году Microsoft разработала операционную систему MS-DOS (Microsoft Disk Operation System) для первого IBM PC, ставшую к середине 1980-х годов основной операционной системой на американском рынке микрокомпьютеров. Затем Гейтс приступил к разработке прикладных программ - электронных таблиц Excel и текстового редактора Word, и к концу 1980-х Microsoft стала лидером и в этой области.
В 1986 году, выпустив акции компании в свободную продажу, Гейтс в возрасте 31 года стал миллиардером. В 1990 году компания представила оболочку Windows 3.0, в которой вербальные команды были заменены на пиктограммы, выбираемые с помощью "мыши", что значительно облегчило пользование компьютером. В начале 1990-х годов "Окна" продавались в количестве 1 миллиона копий в месяц. К концу 1990-х годов около 90% всех персональных компьютеров в мире были оснащены программным обеспечением Microsoft.
Глава 2 Основатели отечественного программирования
Михаил Романович Шура-Бура по праву считается патриархом отечественного программирования. В его научной биографии и в результатах отдела Института прикладной математики им. М. В. Келдыша, возглавляемого М. Р. Шура-Бура, отразились наиболее важные черты становления и развития системного и прикладного программирования в нашей стране.
Почти 50 лет в одной организации - редкий пример постоянства научных интересов и жизненных взглядов человека. В первые годы главной задачей и организационным успехом М. Р. Шуры-Буры, как руководителя отдела программирования в ИПМ, было формирование отдела, костяк которого составили выпускники кафедры вычислительной математики мехмата МГУ И. Б. Задыхайло, Э. З. Любимский, В. С. Штаркман и др.
Первым результатом работы отдела в 1953-1955 гг. было появление программ для расчета энергии взрывов при моделировании ядерного оружия на ЭВМ "Стрела". Постановки задач и методы расчетов для этих программ готовили отделы математиков (А. Н. Тихонов, А. А. Самарский, И. М. Гельфанд). Программирование задач такой сложности в машинных кодах на ЭВМ, имевшей оперативную память емкостью всего 1000 ячеек, неработающий накопитель на магнитной ленте и частые сбои в арифметике и управлении, требовало от программистов виртуозного умения и оригинальных находок в организации отладки программ и счета. Сам М. Р. Шура-Бура так образно назвал эту работу: "Как мы победили "Стрелу"!".[6]
С середине 50-х годов отдел программирования был привлечен М. В. Келдышем к расчетам траекторий искусственных спутников Земли (ИСЗ), выполнявшихся в ИПМ отделом Д. Е. Охоцимского. Программы, разработанные сотрудниками отдела, возглавляемого Михаилом Романовичем, для ЭВМ "Стрела", а затем М-20, должны были обеспечивать круглосуточный режим обработки измерений траекторий ИСЗ. Они использовались начиная с 1957 г. при запуске первых и последующих ИСЗ, полете Ю. А. Гагарина в 1961 г. и затем в течение последующих 10 лет. Значение этой работы трудно переоценить, потому что результаты траекторных расчетов, производимых в разных организациях, иногда не совпадали, что для управления космическими полетами было недопустимо.
Затем отдел М. Р. Шуры-Буры занимался созданием системного и прикладного программного обеспечения для космического челнока "Буран". До настоящего времени М. Р. Шура-Бура руководит разработкой прикладных систем наземной диагностики сложных технических комплексов по заказу оборонных организаций.
Весьма значительным было влияние ИПМ и лично М. Р. Шуры-Буры на выбор архитектуры отечественных универсальных компьютеров. В 1955 г. на начальной стадии проекта ЭВМ первого поколения М-20 в разработке участвовали три человека: С. А. Лебедев (общие характеристики и структура машины), М. Р. Шура-Бура (система команд), П. П. Головистиков (схемотехника). Основные архитектурные решения М-20 предложил М. Р. Шура-Бура, среди них:
-представление чисел с плавающей точкой;
- трехадресный формат команды в машинном слове длиной 45 двоичных разрядов;
- система команд с автоматической модификацией адреса и индексная арифметика;
- перекрытие во времени выполнения арифметических операций с выборкой команд из памяти;
- совмещение операций процессора с операциями ввода-вывода данных.
Эти архитектурные решения М-20 были сохранены в ЭВМ М-220, М222, построенных на основе полупроводниковой элементной базы. Эти машины стали "рабочими лошадками" для выполнения научных и инженерных расчетов во многих исследовательских, проектных и оборонных организациях страны. М. Р. Шура-Бура принимал самое активное участие в создании программного обеспечения этого семейства, начиная с системы интерпретации ИС-2 и библиотеки стандартных программ для М-20, а затем операционных систем ОС 4.220 и ОС ДМ-222, компиляторов языка АЛГОЛ-60 (компилятора ТА-2) и ФОРТРАН.
Деятельность Ассоциации пользователей М-20, собиравшей и распространявшей прикладные программы для М-20, М-220, М-222, также проходила под непосредственным влиянием М. Р. Шуры-Буры. В середине 60-х годов, когда ИТМ и ВТ под руководством С. А. Лебедева разрабатывал архитектурные решения универсальной ЭВМ второго поколения БЭСМ-6, М. Р. Шура-Бура активно участвовал в обсуждении этих решений на совещаниях в Москве, Ужгороде, Беловежской Пуще. В дальнейшем ИПМ в лице отдела М. Р. Шуры-Буры принимал активное участие в создании программного обеспечения для БЭСМ-6. Здесь наиболее крупной разработкой была ОС ИПМ, выполненная под руководством И. Б. Задыхайло.
В конце 60-х годов в стране было необходимо решить вопрос с выбором архитектуры семейства (ряд программно совместимых компьютеров третьего поколения) ЕС ЭВМ.
Принципиальное значение для этого решения имела точка зрения Академии наук СССР, которую в значительной степени формировал ИПМ, как крупный пользователь высокопроизводительных ЭВМ для научных расчетов, и лично М. Р. Шура-Бура. Эта точка зрения состояла в том, чтобы обеспечить программную совместимость ЕС ЭВМ с наиболее распространенным на Западе семейством - IBM/360.
В 1963 г. под руководством М. Р. Шуры-Буры был создан один из трех трансляторов с языка АЛГОЛ-60 для ЭВМ М-20 - транслятор ТА-2 с полной версией языка АЛГОЛ-60. За ним последовали системы программирования для БЭСМ-6 и других ЭВМ.
Концепция создания интегрированных систем программирования на базе общего промежуточного языка АЛМО (АЛгоритмический Машинно-Ориентированный) и прекомпиляторов с нескольких входных языков была предложена и развита Э. З. Любимским и С. С. Камыниным, сотрудниками отдела М. Р. Шуры-Буры.
В 80-х годах инструментом системного программирования для разработки компиляторов в ИПМ стал язык РЕФАЛ. Язык РЕФАЛ и его реализация были разработаны В. Ф. Турчиным, тогда сотрудником отдела М. Р. Шуры-Буры. Технология РЕФАЛ была применена при создании компиляторов ФОРТРАН для ЭВМ ПС-3000, ЕС 1191, масштабируемого компилятора бортового модуля программного обеспечения космического корабля "Буран", программного обеспечения изделий специализированной техники "Булат 2", "Булат 3" (похожих на STARAN). Технология РЕФАЛ имела успех вплоть до 1993 г., пока в стране разрабатывалась отечественная вычислительная техника и была потребность в создании собственных компиляторов.
Работы, связанные с языком РЕФАЛ, продолжаются в ИПМ и в настоящее время. Другим направлением деятельности отдела М. Р. Шуры-Буры в области языков и систем программирования было создание и реализация непроцедурного языка программирования "Норма". Эти работы были выполнены под руководством И. Б. Задыхайло. Они были направлены на решение проблемы высокоуровневого синтеза при проектировании прикладных программ
И. Ляпунов Разработал теорию операторных методов для абстрактного программирования и основал советскую кибернетику и программирование.
Операторный метод вырастал на глазах студентов молодой кафедры вычислительной математики, незадолго до того организованной на механико-математическом факультете МГУ. Это происходило в курсе восьми лекций под названием "Принципы программирования", прочитанном Алексеем Андреевичем в 1952/53 учебном году. Курс был новаторским во всём.[7]
В основе операторного метода лежал принципиально но вый подход к описанию алгоритма. Отмечалось, что традиционные языки теории алгоритмов, такие, как машины Тьюринга, продукции Поста, нормальные алгоритмы Маркова, рекурсивные функции и т.п., хороши для исследования природы вычислимости, но непригодны для описания алгоритма в форме, удобной для решения практических задач. В операторном методе нашла реализацию идея "крупноблочного" описания алгоритма, открывающая путь к новым формализациям понятия ал горитм. Задачу строгого описания новой формализации, которое бы сопровождалось доказательством её адекватности традиционным языкам теории алгоритмов, Алексей Андреевич по ставил перед своим аспирантом А.П. Ершовым, и она была решена в его кандидатской диссертации. В новом подходе к описанию алгоритма выразился вклад Алексея Андреевича в теорию алгоритмов.
Язык логических схем вырос из бытующего в то время блок-схемного описания программы. Такое описание предписывало перед программированием алгоритма деление его на части-блоки с установлением связи между ними. Однако понятие самого блока было расплывчатым, а поэтому не могли быть чётко описаны ни правила выделения блоков, ни правила их сочленения. Язык логических схем был нацелен на устранение этих недостатков. В нём выделение частей алгоритма осуществляется по признаку функциональной нагрузки, несомой в алгоритме той или иной его частью. Так появились понятие оператора, осуществляющего акт переработки информации, и понятие логического условия, которое воплощает акт проверки информации, чтобы определить порядок выполнения опера торов. Логическая схема, описывающая алгоритм, представляет собой строку из операторов и логических условий, снабжённых стрелками перехода. Выполнение логической схемы осуществляется применением к ней универсальной процедуры и демонстрирует фактическое использование всех средств композиции операторов.
Язык логических схем стал первым языком, позволившим говорить об общих приёмах программирования. При изложении их сразу выявилась задача перехода от описания алгоритма на этом языке к построению программы. В рамках операторного метода были предусмотрены следующие этапы перехода: от схемы счёта - к схеме программы, от схемы программы - к самой программе. С позиции современных языков программирования этот процесс можно трактовать следующим образом. Первоначально программируемый алгоритм описывается схемой счёта, которая синтезируется из фрагментов, фактически являющихся операторами циклов. Схема программы строится по схеме счёта путём замены операторов цикла эквивалентными им композициями простых операторов, таким образом появляются операторы и логические условия, "управляющие" счётом. Трансляция схемы программы в программу следует необходимости линеаризовать массивы, используемые в алгоритме.
По твёрдому убеждению Алексея Андреевича, трансляция схемы счёта в машинную программу - это акт, который может и должна выполнять сама ЭВМ. Так появилась задача построения программирующей программы, призванной реализовать этот акт. Над отдельными её блоками трудились первые дипломники Алексея Андреевича, слушатели его легендарного курса "Принципы программирования". Как развивалась эта деятельность - тема отдельного доклада на данном симпозиуме.
Задача трансляции с языка высокого уровня на машинный язык была стержневой в операторном методе - вокруг неё складывалась проблематика программирования. В неё во шли такие задачи, как оптимизация схемы счета и функциональная корректность перехода от неё к схеме программы, а от последней - к самой программе. Они потребовали введения отношений эквивалентности как между схемами одного, -так и между схемами разных типов, разработки эквивалентных преобразований схем, построения применяющих их алгоритмов и так далее: одни задачи порождали другие.
Глава 3 Перспективы развития российского программирования
Большинство отраслей экономики России несут в себе отпечаток советского времени, однако компьютерная индустрия сильно отличается в этом смысле — после развала СССР большинство исследовательских институтов стало разваливаться, оставив программистов без работы и вчерашние исследователи были вынуждены уйти в бизнес. В целом, можно разделить российские программные компании на две категории: работающие на внутреннем рынке и работающие на иностранных заказчиков.
Компании, работающие на внутреннем рынке, в основном позиционируются как системные интеграторы, обслуживающие крупные предприятия в платежеспособных отраслях. Есть еще целый ряд компаний, ориентирующихся на мелкий бизнес и индивидуальных покупателей, хотя компьютерное пиратство изрядно подрывает этот рынок. Наконец, многие ориентируются на международный рынок, поскольку заметная ценовая разница по сравнению с западными странами и изобилие талантливых программистов дают России уникальную возможность в области глобального (офшорного) программирования. Эту нишу заполнили сотни компаний, ориентированных на предоставление услуг по аутсорсингу.
Большинство крупных западных компаний представлены в России по крайней мере офисом по продажам, а некоторые решились на еще более ответственный шаг и открыли здесь собственные программные подразделения. Практически все эти компании сообщают об отличных результатах: