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

История развития программирования в России (История формирования программирования)

Содержание:

Введение

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

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

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

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

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

  1. Рассмотреть историю формирования программирования.
  2. Изучить историю языков программирования: развитие и создание
  3. Рассмотреть развитие программирования в период СССР
  4. Изучить развитие программирования в современной России.

Объект исследования: программирование как наука и учебная дисциплина.

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

Методы исследования: при написании курсовой работы применялись методы сравнения, анализа и синтеза.

Структура курсовой работы состоит из введения, двух глав, заключения и списка литературы.

1. История развития программирования как науки и языков программирования

1.1 История формирования программирования.

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

Поэтапное развитие программирования:

50-е годы

Компьютеры применялись уже в годы Второй мировой войны для решения военных стратегических задач США. После окончания войны компьютеры применяли уже для оборонных целей. Первыми программистами стали ученые математики и физики, которые очень скрупулезно расписывали алгоритмы работы машины. Но задачи, решаемые талантливыми учеными, были довольно простые. В то время не имелось операционных систем со множеством встроенных функций. Программисты-ученые решали понятные и доступные им задачи. Это было основой зарождения отрасли программирования.[2]

60-е годы

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

70-е годы

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

80-е годы

В это десятилетие программисты создали 2 новшества в создании программного обеспечения. Возникла возможность автоматизировать разработку программ с помощью CASE (computer aided software engineering). Благодаря этому программисты смогли получить более современные инструменты для решения задач программирования, в частности, языки четвертого поколения 4GL, позволяющие повысить производительность разработчиков программ, и уменьшить количество программных ошибок. Но такие новшества не нашли поддержки у программистов, потому что если работать над качеством продукта, то нужны ли сами программисты как высокооплачиваемые специалисты.[6]

Кроме того, были востребованы формальные методы для работы программистов. Это когда используются методики, которые основываются на математическом аппарате для спецификации, разработки и проверки уникальности программного и аппаратного обеспечения. Формальные методики очень ресурсоемкие.

90-е годы

Это эпоха улучшения. В 90-е возникла модель управления разработкой программного обеспечения с целью выработки более совершенного продукта. Т.е. считалось что для разработки неплохого программного продукта необходимо правильное управление процессом. Написание программного обеспечения — это техническая задача. Квалифицированные разработчики могут сформировать отличное программное обеспечение, не обращая внимания на неважное руководство или его совершенное отсутствие. Новейшие операционные платформы обошли прежние операционные системы по функциональности. Запас сведений, которые когда-то были нужными и полезными, стали бесполезными. Возникли новейшие языки программирования, в один миг добившиеся признания. Программированию доводилось учиться по-новому. Усовершенствование процессов написания программ стало возможно за счет их упрощения, повышения функциональности и применения более качественных технических задач[12].

00-е годы 21-го века

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

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

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

1.2 История языков программирования: развитие и создание

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

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

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

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

Приблизительно в 50-е годы начались активные разработки более совершенных вариантов языков программирования, нежели простые сигналы из нулей и единиц. Американские ученые разработали довольно успешный язык Ada, который использовался для управления военной техникой. Также очень большую роль в ИТ-индустрию внес язык под названием Fortran. Он возник в глубинах компании IBM – главного компьютерного гиганта того времени, и активно использовался для решения научных и технических задач.[9]

Европейские ученые не на шутку взволновались успехами американцев и решили создавать свой язык программирования, дабы не дать США доминировать в области программирования. Благодаря их решению история развития языков программирования дополнилась еще одним представителем – языком Algol, который решал примерно те же задачи, что и его американский конкурент.

Один из участников работы над упомянутым выше Алголом по имени Никлаус Вирт решил создать более универсальный и продвинутый язык. В итоге он представил миру такой легендарный язык программирования, как Паскаль. Именно он внес существенный вклад в развитие данной области знаний и послужит прочной основой для появления других, более совершенных языков. Паскаль стал одним из первых языков, использующих структурное программирование, довольно простой и легко запоминающийся синтаксис. В будущем многие компании и индивидуальные программисты создавали на базе Паскаля свои варианты языков. К примеру, известная Apple создала расширение Паскаля под названием Object Pascal, а компания Borland – очень популярную и удачную интегрированную среду разработки Turbo Pascal.[2]

В 70-х годах велись активные разработки языка С, который в будущем послужил надежной платформой для создания целого ряда своих более совершенных вариантов: Си Шарп, С++ и других. С был уже полноценным высокоуровневым языком программирования, на котором возможно реализовывать практически любые задачи по созданию самого разнообразного ПО. Известный и популярный в наше время язык Objective-C, который разработан компанией Apple и активно используется для написания программного обеспечения на их гаджеты и другие продукты, создан именно на основе того самого языка С из далеких 70-х.[9]

История создания языков программирования была бы не полной, если не упоминать еще и о таких важнейших языках, как Java, PHP, HTML. Java возник в середине 90-х годов и сразу получил широкое применение и популярность. с его помощью одинаково легко пишутся как программы на ПК, так и различные скрипты, веб-приложения и многое другое. HTML язык был разработан британским программистом Т. Бернерсом-Ли в начале 90-х. именно он стал основой всей сети интернет и имеющихся сейчас в не миллионов сайтов. Что касается PHP, то этот популярный нынче язык также возник в 1995 году, имел открытый исходный код и способен реализовать практически любую задумку в сфере создания динамических вебсайтов.

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

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

2.1 Программирование в СССР

Технология программирования в СССР и России как отдельная дисциплина начала складываться уже к середине 60-х годов. Первоначально вопросы технологического подхода к созданию программ и программных продуктов рассматривались исключительно в аспекте «автоматизации программирования» и создания «программирующих программ», прежде всего компиляторов с основных языков программирования того времени – автокод, Фортран, Алгол-60, Лисп. Параллельно с этим развивался структурный подход, связанный с изучением схем программ и формальным доказательством их свойств.

Важными практическими результатами в этом направлении стали работы А.Л. Фуксмана [1], В.В. Липаева [2] и И.В. Вельбицкого [3] и созданных ими школ, специально рассматривавших процесс создания программных продуктов. Однако их подходы базировались на модели крупных вычислительных центров, впоследствии выросших в центры коллективного пользования с системой разделения времени на одной или нескольких больших ЭВМ.

Всеобщая миниатюризация вычислительной техники, появление персональных компьютеров, сетевых технологий, распространение Интернета создали новые вызовы, ответом на которые стали модели самого процесса разработки программ. Первые изменения стали заметными уже в классической монографии Дж. Вайнберга «Психология программирования» [4], ставшей в 1971 г. заметным явлением, дополняющим знаменитый труд Д. Кнута «Искусство программирования» [5], первый том которого вышел в 1968 г.

В 1984 г. в США был создан Институт технологии программирования (SEI – Software Engineering Institute) как научно-исследовательский центр с государственным финансированием из бюджета США при университете Карнеги-Меллон (г. Питтсбург, США), ориентированный на нужды Минобороны США.

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

Основным достижением первой законченной модели CMM (1986) с последующим ее уточнением CMM for Software V1.1, (1993) можно считать определение 18 ключевых областей процесса – взаимосвязанных групп деятельностей, которые должны исполняться при создании программного продукта.

Многие из этих деятельностей выполнялись и ранее на интуитивном уровне; модель CMM их точно определила и, что особенно важно, дала единую «мета-модель» для всех этих областей.

Каждая ключевая область процесса характеризуется своими 3–4 целями, которые должны достигаться в процессе выполнения ее деятельностей, рекомендуемым перечнем самих этих деятельностей (4–8), обязательствами и возможностями по их исполнению, измерением, анализом и постоянным контролем хода и результата их исполнения (Рис. 1, а).

 Метамодель CMM

а) Метамодель CMM

Ключевые области процесса в CMM

б) Ключевые области процесса в CMM

Рис. 1. Модель зрелости способностей CMM

Последовавшее крупномасштабное внедрение этой модели в промышленном программировании при создании программных продуктов подтвердили ее высокую практическую значимость и реальное повышение качества конечного продукта при снижении затрат на его разработку и сопровождение, а главное – высокую предсказуемость самого процесса производства программного продукта. Настольной книгой разработчиков стала монография тогдашнего директора SEI У.С. Хэмфри «Управление процессом разработки программного обеспечения» [6].

2.2 Программирование в России

В России первые применения модели CMM состоялись в Санкт-Петербурге, затем в Москве, Нижнем Новгороде, Великом Новгороде и других городах. Автор участвовал в постановке процесса в компании ИДУ, созданной в 1993 г. на базе СПИИРАН для выполнения программных разработок по заказам компаний IBM и затем Motorola. Благодаря помощи специалистов Моторолы, процесс по модели CMM был поставлен в течение 1 года и уже в 1995 г. был официально сертифицирован на 3-й уровень зрелости, а накопленный опыт был впоследствии отражен в [7] – первой отечественной монографии по данному вопросу.

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

Выделившаяся из компании ИДУ группа разработчиков впоследствии составила ядро Санкт-Петербургской лаборатории компании Моторола, которая в 1999 г. была оценена на 4-й уровень зрелости, а в 2000 – на высший 5-й уровень.

Спутанный клубок разных моделей зрелости

Рис. 2. Спутанный клубок разных моделей зрелости

Успех модели CMM стимулировал создание других конкурирующих моделей (Рис. 2), так что к концу 90-х годов разработчикам стало уже трудно их сравнивать и делать осознанный выбор в пользу той или иной модели. Кроме того, обнаружилось, что для делового успеха организации-разработчика в модели производства программного продукта необходимо учитывать, наряду с чисто технологическими, еще бизнес-факторы и ряд других. Ответом на эти вызовы стала модель CMMI (2000) с последующими ее уточнениями (CMMI for Development V1.3, 2010), в которой обобщен накопленный опыт и заложены средства для учета этих дополнительных факторов.

Модель CMMI (Рис. 3) определяет теперь уже 22 процессные области, каждая из которых характеризуется своими специфическими целями и специфическими практиками, рекомендуемыми для их достижения. Кроме того, для всех процессных областей определены 3 общие цели и 14 общих практик. Поддержание модели, ее дальнейшее совершенствование и распространение ведет организация CMMI Institute на базе Института технологии программирования и университета Карнеги-Меллон.

Метамодель CMMI

а) Метамодель CMMI

Процессные области в CMMI

б) Процессные области в CMMI

Рис. 3. Модель зрелости способностей CMMI

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

Уровень 3 CMM

а) Уровень 3 CMM

Уровень 5 CMM

б) Уровень 5 CMM

Уровень 5 CMMI

в) Уровень 5 CMMI

Рис. 4. Памятные значки о достижении высоких уровней зрелости CMM/CMMI

В промышленном производстве ПО актуальным является вопрос о государственной сертификации создаваемого программного продукта, что обуславливается необходимостью отвечать международным стандартам. Например, для бортового ПО в авиации – это стандарты DO-178C и ED-12C и соответствующий им отечественный стандарт КТ178В «Требования к программному обеспечению бортовой аппаратуры и систем при сертификации авиационной техники». Процесс создания сертифицируемого ПО, определяемый этими стандартами, имеет много общего с моделью CMM/CMMI (Рис. 5).

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

В полном соответствии с моделью CMMI, стандарт DO-178C определяет набор целей для всех деятельностей по созданию ПО, перечисляет обязательные типы рабочих продуктов (документов), создаваемых на каждом этапе в процессе разработки, и дает рекомендации по достижению заданных целей. В зависимости от уровня создаваемого ПО (от A – наиболее требовательного к аспектам безопасности, до D – наименее требовательного), меняется состав целей и способ проверки их достижения (Рис. 6).

Связь процессов жизненного цикла системы и ее программного обеспечения

Рис. 5. Связь процессов жизненного цикла системы и ее программного обеспечения

Рис. 6. Цели и деятельности жизненного цикла по разработке сертифицируемого ПО

Процесс жизненного цикла

Целей

Деятельностей

Документов

A

B

C

D

Планирование

7

7

7

2

27

9

Разработка в целом

7

7

7

4

35

6

Требования

7

7

6

3

1

1

Проектирование

13

13

9

1

2

1

Кодировка и сборка

9

9

8

1

3

2

Тестирование сборки

5

5

5

3

7

3

Верификация

9

7

6

1

9

1

Управление конфигурацией

6

6

6

6

9

4

Обеспечение качества

3

3

2

2

9

1

Контакт с органом сертификации

3

3

3

3

3

2

Итого:

69

67

59

26

105

30

Из них независимо повторяемых

30

18

5

2

Таким образом, успешность сертификации во многом зависит от устойчивости и определенности установленного процесса разработки, сравнимого с уровнями 3 и 4 модели CMMI, что делает вопросы дисциплины программирования и правильной постановки процесса разработки ПО особенно важными. Для успешной сертификации необходимы современные средства автоматизации процесса разработки – единый каркас для разработки ПО, настроенный на данную предметную область и разработчика [8].

Заключение

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

Компьютерный рынок быстро увеличивался вплоть до кризиса 1998 года. Отечественная компьютерная индустрия была одной из наиболее пострадавших из-за своей зависимости от западного рынка; лишь совсем недавно Россия снова вышла на уровень 1997 года по количеству продаваемых компьютеров.

Развитие российской индустрии программирования затруднено целым рядом проблем. Самая большая трудность — это компьютерное пиратство. 88% используемых в России программ являются нелицензионными (в среднем по миру — 36%). Только Вьетнам, Китай и ряд стран бывшего СССР имеют еще худшие показатели по этой проблеме. Некоторые компании пытаются избежать столкновения с этой проблемой путем ориентации создаваемых продуктов на западный рынок. Этот подход (известный также как «скандинавская» или «израильская» модель) представляется очень многообещающей, так как из-за разницы в уровне цен на исходном и целевом рынке финансовый результат может многократно превышать затраты. Единственная проблема заключается в том, что требуются значительные начальные финансовые вложения, отсутствующие у большинства российских компаний. Финансовый рынок в России также недостаточно развит для того, чтобы поддерживать подобные проекты. Поэтому, несмотря на целый ряд примеров успешной реализации подобной модели (например, антивирусная система AVP или графические средства, разработанные компанией ParaGraph и приобретенные впоследствии Silicon Graphics), все еще неясно, станет ли эта модель массовой в России.

Еще одна проблема, затрагивающая все отрасли России, — неразвитая инфраструктура. Почта, транспорт, муниципальные услуги либо ненадежны, либо просто плохи в большинстве регионов, может быть, за исключением отдельных крупных городов. Естественно, это затрудняет работу всех предприятий, зависящих от инфраструктуры. Например, расцвет электронной коммерции во всем мире практически не затронул России: очень мало людей владеют и пользуются кредитными картами, лишь 6,3% всего населения имеют доступ к Сети, и, наконец, почта крайне ненадежна. Только с телефонизацией дела обстоят относительно хорошо — в России насчитывается 21,3 телефонных аппарата на 100 жителей, что, конечно, значительно хуже, чем 59,5 для промышленно развитых стран, но все-таки лучше, чем среднемировое значение 15,1.

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

Список литературы

  1. Агамирзян И. «Правда об информатике», Файл, №1, 2014
  2. Баранов С.Н., Домарацкий А.Н., Ласточкин Н.К., Морозов В.П. Процесс разработки программных изделий. М: Наука, 2016. – 176 с. ISBN 5-02-015564-0.
  3. Баранов С.Н., Юсупов Р.М. Единый каркас для управления разработкой и сертификацией программного обеспечения // Региональная информатика (РИ-2012), 24-26 октября 2012 г.: Труды конференции, СПб, 2013. – С.51–54.
  4. Вельбицкий И.В. Технология программирования. / К.: Техніка, 2014. – 280 с.
  5. Кузьминский М. «Распараллеливание по-нижегородски». «Открытые системы», 2016, № 1
  6. Липаев В.В. Управление разработкой программных средств: Методы, стандарты, технология. / М.: Финансы и статистика, 2013. – 250 с.
  7. Мойтра Д. «Программная индустрия Индии». «Открытые системы», 2011, № 11
  8. Поспелов Д.А. «Становление информатики в России», в сб. «Очерки истории информатики в России», под ред. Д.А. Поспелова и Я.И. Фета. Новосибирск, Научно-издательский центр ОИГГМ СО РАН, 2016
  9. Фуксман А.Л. Технологические аспекты создания программных систем. / М.: Статистика, 2016. – 184 с.
  10. Российская индустрия программирования. http://www.osp.ru/ os/2002/03/181263/.
  11. Cochran R. «Ireland: a Software Success Story». IEEE Software, 2015, Vol. 18, No. 2
  12. Humphrey Watts S. Managing the Software Process. Addison-Wesley (1989). ISBN 0-201-18095-2.
  13. Knuth Donald E. The Art of Computer Programming, 1: Fundamental Algorithms (3rd ed.), Addison-Wesley Professional (1997). ISBN 0-201-89683-4.
  14. Weinberg, Gerald M. The Psychology of Computer Programming. Silver Anniversary Edition (1998). ISBN 0-932633-42-0.