2 страница14 января 2020, 15:09

История развития ПО


Краткая история развития

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

Идея универсального счётчика - компьютера - впервые пришла в голову англичанину Чарльзу Бэббиджу в 20-х гг. ХIХ в. В 30-е гг. ХIХ в. Бэббидж создал механическую машину для вычисления многочленов (до 6-й степени), а затем универсальную аналитическую машину, в которой были предусмотрены "склад" (память), "мельница" (процессор), программное управление (с помощью перфокарт француза Жаккара). Обе машины создавались на механических элементах, что было крайне сложно даже по современным меркам, не говоря уже об уровне механических технологий того времени. Из-за сложности реализации Бэббидж так и не смог закончить свою аналитическую машину. Идеи Бэббиджа опередили своё время. Ими увлеклась Ада Аугуста Лавлейс и написала первую в мире компьютерную программу (для вычисления чисел Бернулли на машине Бэббиджа).

В течение ХIХ в. идеи Бэббиджа нашли последователей в Англии и Швеции. Но лишь примерно через 100 лет были созданы первые компьютеры на электрических элементах - электромеханических реле (30 - 40 гг. ХХ в.). Пионерами здесь были немцы и американцы.

В появилась первая действующая разработка Конрада Цузе – немецкого инженера, названная им . Это был двоичный механический вычислитель с электрическим приводом и ограниченной возможностью при помощи . сделала невозможным общение Цузе с другими энтузиастами создания вычислительной техники в и . В Цузе был призван на военную службу, однако сумел убедить армейских начальников в необходимости дать ему возможность продолжить свои разработки. В он получил поддержку Aerodynamische Versuchsanstalt Исследовательского института аэродинамики, который использовал его работу для создания управляемых . Благодаря ей Цузе построил доработанную версию вычислителя — на основе . В отличие от Z1, новая машина считывала перфорированной 35-миллиметровой киноплёнки. Она, как и Z1, тоже была демонстрационной моделью и не использовалась для практических целей.

Удовлетворённый функциональностью Z2, в Цузе создал уже более совершенную модель — , которую сегодня многие считают первым реально действовавшим программируемым компьютером. Впрочем, программируемость этого двоичного вычислителя, собранного, как и предыдущая модель, на основе телефонных реле, также была ограниченной. Несмотря на то, что порядок вычислений теперь можно было определять заранее, и отсутствовали. Тем не менее, Z3 первым среди вычислительных машин Цузе получил практическое применение и использовался для расчётов параметров самолёта и расчётов для . Все три машины, были уничтожены в ходе бомбардировок в .

Осенью 1945 г. в США появился первый компьютер на электронных элементах - электронных вакуумных лампах (Дж. Моучли, П. Эккерт). Военное ведомство США решило использовать ENIAC в расчётах по разработке термоядерного оружия. он успешно проработал в Лаборатории баллистических исследований Армии США ещё много лет и был окончательно выключен 2 октября 1955 г. Первыми программистами ЭНИАКа стали шесть девушек.

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

Для повышения эффективности компьютера были привлечены учёные, в частности, группа под руководством известного математика Дж.фон Неймана. Эта группа в 1945 г. опубликовала доклад, в котором были изложены передовые на то время принципы построения и работы компьютера.

Эти принципы обусловили развитие ВТ практически в течение всего ХХ в. Соответственно, компьютеры, построенные по этим принципам, стали называть «неймановскими машинами». Основные принципы работы неймановской машины: программное управление; хранимая программа; произвольный доступ к оперативной памяти.

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

Первая "неймановская машина" была создана в 1949 г. (М. Уилкс, Великобритания). Устав кодировать каждую команду с помощью двоичных цифр ("единиц" и "нулей"), он занялся поисками более удобного способа общения с машиной. Первым результатом этих усилий явились новые коды, составленные из букв и коротких слов, взятых из английского языка. Он ввел мнемонику, где каждая команда изображалась одной заглавной буквой: S обозначала "вычитание", Т — "передать информацию в память", Z — "остановка машины" и т. д.

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

Работа над первой отечественной ЭВМ началась в 1947 г. под руководством С.А. Лебедева, а создана она была в начале 50-х гг. под названием МЭСМ (малая электронная счётная машина). В начале 60-х гг. появилась БЭСМ-1 (руководитель разработки всё тот же С.А. Лебедев), затем последовательно - БЭСМ-2, М-20, БЭСМ-3, БЭСМ-4, М-220, М-222, БЭСМ-6 и др. Созданные в СССР ЭВМ были не хуже западных компьютеров, а по многим параметрам даже превосходили их. Но затем по ряду обстоятельств (в основном, экономического характера) был взят курс на свёртывание производства отечественных ЭВМ, копирование западных компьютеров в виде единой серии ЭВМ (ЕС ЭВМ). До сих пор практика копирования и закупки зарубежных образцов ВТ и ПО продолжается нам же самим в ущерб. "Догнать и перегнать Запад", как того требовала власть - при такой стратегии развития ВТ и ПО оказалось не под силу в ХХ в., будет невозможно и впредь, если не развивать собственное производство на основе отечественных разработок.

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

Первое поколение – зарождение ПО.

Второе поколение – развитие ПО: использование алгоритмических языков и библиотек стандартных программ.

Третье поколение – широкое использование ПО, появление развитых операционных систем.

Четвертое поколение – ПО, дающее возможность коллективного использования ЭВМ.

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

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

В компьютерах 2-го поколения микрокоманды стали объединять в блоки - ассемблировать (собирать). Появился ассемблер (сборщик). Двоичный код, мнемокод, ассемблер - это машинно-зависимые языки. Их достоинство - ориентируясь на систему команд и адресации конкретной машины, эти языки максимально используют возможности данной машины. Но чтобы использовать машинно-зависимую программу на другой машине, надо быть уверенным, что система команд и адресации на второй машине абсолютно такая же, как и на первой машине. Если это не так, программа не сработает - её надо адаптировать под другую машину (эмулировать). Как следствие, появились алгоритмические машинно-независимые языки. Программы, написанные на этих языках, работали на любой машине, где можно было использовать транслятор(переводчик) с алгоритмического языка в двоичный код машины. Достоинство алгоритмического языка - в его универсальности; программисту не нужно знать досконально систему команд и адресации конкретных компьютеров - достаточно знать язык. Платой за такую универсальность(машинно-независимость) программ стало неполное использование возможностей конкретного компьютера. Сознавая это, разработчики ПО, наряду с алгоритмическими языками и их трансляторами, оставили ассемблеры в составе ПО, исходя из потребностей тех программистов, которые писали наиболее эффективные программы для конкретных машин (кстати, для ассемблера тоже нужен транслятор). Первым алгоритмическим языком считается Фортран - Fortran (Formula translator) - 1954 г. Не менее Фортрана были популярны Algol (Algorithmiclanguage) - 1960 г., BASIC, PL/1 (1964), Pascal (1970), С (1972), C++ (1985).

Алгоритмические языки называют также языками высокого уровня, так как они близки к человеческой речи (в отличие от машинно-зависимых языков низкого уровня). Международный язык программирования - английский как исторически обусловленная дань уважения к англо-американским "пионерам" программирования.

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

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

С распространением ПК и прочих мобильных компьютеров стало заманчивой идеей объединить их в миниатюрные цифровые системы связи, тем более что сетевые технологии уже были известны с 60-х гг. ХХ в. (вначале они назывались многотерминальными и многомашинными комплексами; сеть ARPA, от которой произошел Интернет, начала эксплуатироваться в 1969 г.)

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

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

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

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

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

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

2 страница14 января 2020, 15:09