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

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

Содержание:

ВВЕДЕНИЕ

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

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

Следовательно, цель работы – рассмотрение истории развития программирования в России. Для достижения данной цели следует выполнить следующие задачи:

  • охарактеризовать основные понятия программирования;
  • рассмотреть этапы программирования;
  • описать историю развития программирования в мире;
  • изучить историю развития программирования в России.

Объект работы – процесс программирования, в предмет – история развития программирования в России.

Теоретической и методологической основой для работы являются результаты изысканий известных авторов, исследующих проблему программирования и в частности – его развития в России. Это работы таких авторов как Васильев П. П., Зыков С. В., Ишкова Э. А. Павловская Т. А. и др.

Структура работы состоит из следующих элементов:

  • введение;
  • 1 глава: два параграфа;
  • 2 глава: два параграфа;
  • заключение;
  • список использованных источников.

Общий объем – 26 страниц.

1. Понятие программирования

1.1 Основные понятия программирования

Перед углублением в историю программирования рассмотрим его основные понятия.

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

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

В числе основных свойств программ можно выделить следующие:

  • выполнимость. Представляет собой возможность выполнения программы на определенном типе компьютеров;
  • мобильность. Мобильность подразумевает наличие возможности переноса программы на другой тип компьютеров;
  • корректность. Корректность программы представляет собой верность результатов, которые получаются при помощи данной программы;
  • эффективность. Является свойством программы, характеризующимся такими показателями как оперативность выполнения при низких ресурсных затратах компьютера [15].

К программам предъявляются следующие требования:

  • минимальные требования к компьютеру, на котором работает программа – низкое потребление ресурсов компьютера;
  • доступность и «читаемость» входных и выходных данных и простота программы;
  • минимальное время создания программы и простота ее изменения;
  • минимальное время работы программы, минимум занимаемой памяти и минимум использованных в программе операторов [15].

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

Сегодня выделяют следующие типы языков программирования:

  • машинные;
  • машинно-ориентированные;
  • алгоритмические;
  • логические;
  • функциональные;
  • учебные;
  • инструментальные;
  • диалоговые;
  • графические и т.д. [9]

Рассмотрим некоторые категории, общие для всех языков программирования.

Оператор представляет собой выражение, которое обозначает и описывает определенную операцию.

Система программирования – это набор средств ввода, редактирования, трансляции и выполнения программ на ЭВМ.

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

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

Также есть еще одна разновидность транслятора – это интерпретатор. Данное средство обеспечивает перевод каждой конструкции алгоритмического языка в машинные команды и одновременное выполнение этой конструкции в вычислительном средстве. Каждый язык/система программирования обладает своим транслятором, компилятором и интерпретатором [9].

Одно из основных понятий программирования – алгоритм. Алгоритм представляет собой описание последовательности операций. Данная последовательность направлена на решение определенной задачи, которая стоит перед программированием. Основным свойством алгоритма считается дискретность. Каждый алгоритм реализуется в виде последовательности операций.

Операция представляет собой действие, ограниченное по времени, которое выполняется над определенными объектами – операндами. Следовательно, операнды представляют собой объекты, которые принимают участие в выполнении операции. В то время как оператор является описанием операции. Любой алгоритм состоит из операторов [3].

1.2 Этапы программирования

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

Для выполнения задачи создания и эксплуатации программного обеспечения ее разбивают на определенные этапы:

1. Постановка задачи.

2. Составление алгоритма.

3. Составление и ввод программы.

4. Отладка и тестирование программы.

5. Сопровождение программного продукта [20].

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

Постановка задачи заканчивается созданием технического задания, а затем и внешней спецификации программы, которая включает в себя:

1. Описание исходных данных и результатов (виды, представление, точность, ограничения и т.п.).

2. Описание задачи, реализуемой программой.

3. Способ обращения к программе.

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

На втором этапе разрабатываются алгоритмы, задаваемые спецификациями, и формируется (проектируется) общая структура программ [3]. Здесь обычно применяется технология нисходящего проектирования с использованием метода пошаговой детализации. То есть сначала составляется укрупненный алгоритм в самом общем виде.

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

Третий этап как раз и является непосредственно программированием на языке, понятном ЭВМ. По своей сути третий этап является продолжением второго, так как программа тоже есть форма записи алгоритма с максимальной степенью детализации, – программная.

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

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

Отладка – процесс исправления ошибок в программе. Так, при отладке исправляются синтаксические ошибки, алгоритмические, ошибки, обнаруженные при тестировании и другие.

Пятый этап наступает, когда программный продукт сдан в эксплуатацию (или начались его продажи). Здесь так же возможно обнаружение не найденных на этапе тестирования ошибок, – их необходимо локализовать и исправить. Кроме этого, возможно изменение свойств программы для удобства эксплуатации: элементов интерфейса, некоторых функций и т.д. Казалось бы, пятый этап самый простой. Но ему отводится самая большая часть затрат времени и средств: до половины и более. Все эти этапы разработки и сопровождения программного продукта, включая завершение поддержки эксплуатации, составляют жизненный цикл программы [3].

Возможно и другое деление на этапы [1] с приблизительным делением по времени реализации, как указано на рис. 1:

1. Анализ требований.

2. Определение спецификаций.

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

4. Кодирование.

5. Автономное тестирование.

6. Комплексное тестирование.

clip_image001

Рис. 1 Распределение этапов программирования

Временные затраты на реализацию этапов цикла разработки программного обеспечения (за исключением этапа эксплуатации и сопровождения) [1] На последний же этап эксплуатации и сопровождения объемных программных продуктов отводится более половины времени: до 67% от общего времени жизненного цикла.

Классическим называется следующий набор технологических этапов (процессов) [11]:

1. Возникновение и исследование идеи

2. Управление

3. Анализ требований

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

5. Программирование

6. Тестирование и отладка

7. Ввод в действие

8. Эксплуатация и сопровождение

9. Завершение эксплуатации

Процессы жизненного цикла программного обеспечения определены международным стандартом ISO 12207 [ISO/IEC 12207:1995] и делятся на три группы (без привязки ко времени) [7]:

Основные процессы:

  • приобретение,
  • поставка,
  • разработка,
  • эксплуатация,
  • сопровождение. ·

Вспомогательные процессы:

  • документирование,
  • управление конфигурацией,
  • обеспечение качества,
  • верификация,
  • аттестация,
  • совместная оценка,
  • аудит,
  • разрешение проблем. ·

Организационные процессы:

  • управление,
  • создание инфраструктуры,
  • усовершенствование,
  • обучение.

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

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

2. История развития программирования

2.1 История развития программирования в мире

Язык программирования – это способ записи программ решения различных задач на ЭВМ в понятной для компьютера форме. Процессор компьютера непосредственно понимает язык машинных команд (ЯМК). Программы на ЯМК программисты писали лишь для самых первых ламповых машин – ЭВМ первого поколения. Программирование на ЯМК – дело непростое. Программист должен знать числовые коды всех машинных команд, должен сам распределять память под команды программы и данные [19].

В 1950–х гг. появляются первые средства автоматизации программирования – языки Автокоды. Позднее для языков этого уровня стало применяться название «Ассемблеры». Появление языков типа Автокод–Ассемблер облегчило участь программистов. Переменные величины стали изображаться символическими именами. Числовые коды операций заменились на мнемонические (словесные) обозначения, которые легче запомнить. Язык программирования стал понятнее для человека, но при этом удалился от языка машинных команд. Чтобы компьютер мог исполнять программы на Автокоде, потребовался специальный переводчик – транслятор. Транслятор – это системная программа, переводящая текст программы на Автокоде в текст эквивалентной программы на ЯМК.

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

Первыми популярными языками высокого уровня, появившимися в 1950–х гг., были Фортран, Кобол (в США) и Алгол (в Европе). Языки Фортран и Алгол были ориентированы на научно–технические расчеты математического характера. Кобол – язык для программирования экономических задач. В Коболе по сравнению с двумя другими названными языками слабее развиты математические средства, но зато хорошо развиты средства обработки текстов, организация вывода данных в форме требуемого документа. Для первых ЯПВУ предметная ориентация языков была характерной чертой [8].

Большое количество языков программирования появилось в 1960–1970–х гг. А за всю историю ЭВМ их было создано более тысячи. Но распространились, выдержали испытание временем немногие. В 1965 г. в Дартмутском университете был разработан язык Бейсик. По замыслу авторов это простой язык, легко изучаемый, предназначенный для программирования несложных расчетных задач. Наибольшее распространение Бейсик получил на микроЭВМ и персональных компьютерах. На некоторых моделях школьных компьютеров программировать можно только на Бейсике. Однако Бейсик – неструктурный язык, и потому он плохо подходит для обучения качественному программированию. Справедливости ради следует заметить, что последние версии Бейсика для ПК (например, QBasic) стали более структурными и по своим изобразительным возможностям приближаются к таким языкам, как Паскаль.

В эпоху ЭВМ третьего поколения получил большое распространение язык PL/I (Program Language One), разработанный фирмой IBM. Это был первый язык, претендовавший на универсальность, т. е. на возможность решать любые задачи: вычислительные, обработки текстов, накопления и поиска информации. Однако PL/I оказался слишком сложным языком. Для машин типа IBM 360/370 транслятор с него не мог считаться оптимальным, содержал ряд невыявленных ошибок. На ЭВМ класса мини и микро он вообще не получил распространения. Однако тенденция к универсализации языков оказалась перспективной. Старые языки были модернизированы в универсальные варианты – Алгол–68, Фортран–77 [13].

Значительным событием в истории языков программирования стало создание в 1971 г. языка Паскаль. Его автор – швейцарский профессор Н.Вирт – разрабатывал Паскаль как учебный язык структурного программирования.

Наибольший успех в распространении этого языка обеспечили персональные компьютеры. Фирма Borland International, Inc (США) разработала систему программирования Турбо Паскаль для ПК

Турбо Паскаль – это не только язык и транслятор с него, но еще и операционная оболочка, обеспечивающая пользователю удобство работы. Турбо Паскаль вышел за рамки учебного предназначения и стал языком профессионального программирования с универсальными возможностями. Транслятор с Турбо Паскаля по оптимальности создаваемых им программ близок наиболее удачному в этом отношении транслятору – транслятору с Фортрана. В силу названных достоинств Паскаль стал основой многих современных языков программирования, например, таких как Ада, Модула–2 и др. [13]

Язык программирования Си (английское название – С) создавался как инструментальный язык для разработки операционных систем, трансляторов, баз данных и других системных и прикладных программ. Так же как и Паскаль, Си – это язык структурного программирования, но, в отличие от Паскаля, в нем заложены возможности непосредственного обращения к некоторым машинным командам, к определенным участкам памяти компьютера. Дальнейшее развитие Си привело к созданию языка объектно–ориентированного программирования Си++ [15].

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

ЛИСП появился в 1965 г. Язык ЛИСП основан на понятии рекурсивно определенных функций. А поскольку доказано, что любой алгоритм может быть описан с помощью некоторого набора рекурсивных функций, то ЛИСП, по сути, является универсальным языком. С его помощью на ЭВМ можно моделировать достаточно сложные процессы, в частности интеллектуальную деятельность людей.

Язык Пролог разработан во Франции в 1972 г. также для решения проблемы «искусственного интеллекта». Пролог позволяет в формальном виде описывать различные утверждения, логику рассуждений и заставляет ЭВМ давать ответы на заданные вопросы [18].

Реализовать тот или иной язык программирования на ЭВМ – это значит создать транслятор с этого языка для данной ЭВМ. Существуют два принципиально различных метода трансляции. Они называются соответственно компиляция и интерпретация. Для объяснения их различия можно предложить следующую аналогию: лектор должен выступить перед аудиторией на незнакомом ей языке. Перевод можно организовать двумя способами:

  • полный предварительный перевод – лектор заранее передает текст выступления переводчику, тот записывает перевод, размножает его и раздает слушателям (после чего лектор может и не выступать);
  • синхронный перевод – лектор читает доклад, переводчик одновременно с ним слово в слово переводит выступление.

Компиляция является аналогом полного предварительного перевода; интерпретация – аналогом синхронного перевода. Транслятор, работающий по принципу компиляции, называется компилятором; транслятор, работающий методом интерпретации, – интерпретатором.

При компиляции в память ЭВМ загружается программа–компилятор. Она воспринимает текст программы на ЯПВУ как исходную информацию. После завершения компиляции получается программа на языке машинных команд. Затем в памяти остается только программа на ЯМК, которая выполняется, и получаются требуемые результаты.

Интерпретатор в течение всего времени работы программы находится во внутренней памяти. В ОЗУ помещается и программа на ЯПВУ. Интерпретатор в последовательности выполнения алгоритма «читает» очередной оператор программы, переводит его в команды и тут же выполняет эти команды. Затем переходит к переводу и выполнению следующего оператора. При этом результаты предыдущих переводов в памяти не сохраняются. При повторном выполнении одной и той же команды она снова будет транслироваться. При компиляции исполнение программы разбивается на два этапа: трансляцию и выполнение. При интерпретации, поскольку трансляция и выполнение совмещены, программа на ЭВМ проходит в один этап. Однако откомпилированная программа выполняется быстрее, чем интерпретируемая. Поэтому использование компиляторов удобнее для больших программ, требующих быстрого счета. Программы на Паскале, Си, Фортране всегда компилируются. Бейсик чаще всего реализован через интерпретатор [18].

К сегодняшнему дню история мирового программирования привела нас к очень высокому, ранее невиданному уровню развития современных технологий. Благодаря своевременному развитию и усложнению различных языков программирования сегодня является возможным дальнейшее развитие в данном направлении – как для всего мира, так и для России в частности. Так, далее будет рассмотрена подробно история развития программирования в России.

2.2 История программирования в России

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

К сожалению, где–то с начала 70–х годов в программировании, как и в ряде других отраслей, начали наблюдаться первые признаки застоя. Одной из основных причин стала официальная политика ориентации компьютерных платформ на клоны IBM/360 и PDP/11. Считалось, что путем копирования западной аппаратной базы удастся сэкономить деньги, которые впоследствии можно было бы использовать для «гигантского скачка» в программировании. Эта «стратегия» потерпела провал, а Эдгар Дейкстра в своей лекции, прочитанной в России, назвал это решение советского правительства «величайшей победой Запада в холодной войне» (подробнее о ранней истории программирования в России можно прочитать в [1]).

Кризис продолжался до начала 90–х годов. В процессе перехода на рыночную экономику большинство существовавших структур рухнуло [6], что привело, в частности, к радикальной смене преобладающей аппаратной платформы. В течение нескольких лет мэйнфреймы были потеснены мощным потоком персональных компьютеров; так, согласно оценке IDC, в 1997 году в России было продано 1,4 млн. компьютеров. Переход на новую платформу создал потребность в целом ряде новых услуг, например, в разработке программ и системной интеграции, которые стали предоставлять молодые частные компании. Большинство современных лидеров в компьютерном бизнесе России – представители этой «новой волны»; сегодня такие компании вполне могут считать себя ветеранами рынка, несмотря на возраст от 8 до 12 лет.

Компьютерный рынок быстро увеличивался вплоть до кризиса 1998 года. Отечественная компьютерная индустрия была одной из наиболее пострадавших из–за своей зависимости от западного рынка; лишь совсем недавно Россия снова вышла на уровень 1997 года по количеству продаваемых компьютеров. Тем не менее, сегодня перспективы компьютерного рынка в России выглядят очень хорошими; страна демонстрирует очень быстрый рост темпов продаж компьютеров, при том, что рынок еще ненасыщен: на 100 человек в России приходится всего лишь около 5 компьютеров (в США – 62) [17].

Самым большим конкурентным преимуществом российской индустрии программирования является наличие большого количества хорошо обученных технических специалистов. Типичный российский программист обладает как минимум высшим образованием в программировании, технических или точных науках, что совсем нехарактерно для западных стран. Например, примерно 86% американских программистов обладают лишь степенью бакалавра, закончили специальные двухгодичные курсы или вообще ограничились средним образованием [3].

Платное образование становится все более популярным; по данным Госкомстата, в 2001 году более трети студентов в России платили за свое образование. Однако программы обучения всех университетов, как государственных, так и частных, контролируются государством с помощью набора стандартов, гарантирующих единый уровень обучения. Такой подход порождает ряд специфических для России моментов. Например, в стандарте на программистские специальности традиционно очень велик процент обязательных курсов по математике и прочим фундаментальным наукам. В результате, первые два с половиной года самой распространенной программистской специальности 351500 (бывшая 220400) почти полностью посвящены математическим предметам; это означает, что студенты не получают достаточной практики в программировании до третьего или даже четвертого курса. У такого подхода к делу есть и преимущества: отечественные программисты получают базовые знания, которые могут быть применены в самых разных исследовательских задачах. Это, кстати, регулярно подтверждается победами российской молодежи на различных международных соревнованиях. Например, команда Санкт–Петербургского государственного университета два года подряд становилась победителем международной олимпиады по программированию, проводимой под эгидой ACM (2000 и 2001 годы), а также входила в десятку победителей в течение пяти лет. Следующее поколение также подает большие надежды: в 2000 году российские школьники победили на международной олимпиаде по информатике в Китае [17].

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

Некоторый процент российских программистов эмигрирует из России, и все же проблема «утечки мозгов» уже не так критична, как в начале 90–х годов, когда программисты тысячами эмигрировали, опасаясь неясного положения и туманных перспектив развития России [4].

Есть и другие пути привлечения новых программистов в индустрию, например, путем переобучения технических специалистов из смежных областей. Российский рынок обучения быстро развивается и предоставляет богатый выбор возможностей – от долгосрочных программ, ориентированных на получение второго высшего образования в области компьютерных наук до сертифицированных курсов обучения от зарубежных вендоров. Таким образом, можно с полной уверенностью заключить, что с точки зрения человеческих ресурсов российский рынок программирования имеет сегодня благоприятные условия для дальнейшего роста.

В стране исторически сложилось три основных центра программирования: Москва, Петербург и Новосибирск. Среди прочих городов с развитой индустрией программирования следует отметить Нижний Новгород, Екатеринбург, Пермь и Саров. В Москве сосредоточены основные денежные потоки, а также менеджмент страны и практически всех крупных российских компаний, поэтому многие здешние компьютерные компании ориентированы на внутренний рынок (хотя есть и исключения, например, Luxoft, VDI и Auriga). Петербург расположен в непосредственной близости от североевропейских стран, что превратило его в один из многообещающих центров глобального программирования. Здесь расположены десятки аутсорсинговых компаний, насчитывающих от 50 до 250 человек [19].

Новосибирск был с самого начала спланирован как город, ориентированный на науку – предполагалось, что ему удастся стать достойным противовесом научным центрам в европейской части России. К сожалению, российская наука испытывает сейчас не лучшие времена, поэтому происходит постепенная переориентация исследователей на разработку бизнес–приложений. Однако географическая удаленность и проблемы с телекоммуникациями в Сибири являются серьезными барьерами на этом пути [19].

Практически все программные компании в России начинались с небольшой группы квалифицированных программистов. Чаще всего, на этом этапе вопросы качества вообще специально не рассматривались – компании в основном полагались на профессионализм отдельных сотрудников. Однако по мере роста возникали все новые и новые проблемы, связанные с качеством программных продуктов и процессов. Поэтому сегодня большинство российских компаний (особенно работающих с западными заказчиками) понимают важность обеспечения качества. За последние несколько лет рынок услуг, связанных с качеством, значительно вырос. Еще три–четыре года назад ни в одной российской компании не было внутренней программы улучшения качества, а сегодня десятки компаний уже получили сертификат соответствия стандарту ISO 9001, многие планируют сертификацию на следующие несколько лет [19].

Работы по обеспечению качества в России чаще всего основываются на ISO 9001, который еще в советские времена был положен в основу национального стандарта ГОСТ ИСО Р 9001. На сегодняшний день ISO 9001 по–прежнему остается наиболее доступным из всех программных стандартов: существует множество сертифицирующих органов (как национальных, так и международных) и множество курсов по ISO 9001. Прочие стандарты менее популярны и прежде всего по причине их недостаточной распространенности и высокой стоимости сертификации. Многие российские компании планируют сертификацию по стандарту СММ, однако еще ни одна из них еще не достигла этого; среди подразделений западных компаний необходимо отметить лабораторию Motorola в Петербурге, достигшую пятого уровня СММ [5].

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

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

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

ЗАКЛЮЧЕНИЕ

В ходе выполнения работы достигнута поставленная цель – рассмотрена история развития программирования в России. Для достижения цели исследования были выполнены следующие задачи:

  • охарактеризованы основные понятия программирования;
  • рассмотрены этапы программирования;
  • описана история развития программирования в мире;
  • изучена история развития программирования в России.

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

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

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

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

  1. Ашарина, И. В. Основы программирования на языках C и C++ / И. В. Ашарина. – М.: Горячая линия – Телеком, 2017. – 208 c.
  2. Бибило, П. Н. Задачи по проектированию логических схем с использованием языка VHDL. Учебное пособие / П. Н. Бибило. – М.: ЛКИ, 2015. – 328 c.
  3. Биллиг, В. А. Основы объектного программирования на C# (C# 3.0, Visual Studio 2008) / В. А. Биллиг. – М.: Интернет–университет информационных технологий, Бином. Лаборатория знаний, 2016. – 584 c.
  4. Буховец, А. Г. Алгоритмы вычислительной статистики в системе R. Учебное пособие / А. Г. Буховец, П.В. Москалев. – М.: Лань, 2015. – 160 c.
  5. Васильев, П. П. Турбо Паскаль в примерах и задачах / П. П. Васильев. – М.: Финансы и статистика, 2016. – 496 c.
  6. Гавриков, М. М. Теоретические основы разработки и реализации языков программирования / М. М. Гавриков, А. Н. Иванченко, Д. В. Гринченков. – М.: КноРус, 2014. – 184 c.
  7. Гергель, В. П. Современные языки и технологии параллельного программирования / В. П. Гергель. – М.: Издательство МГУ, 2017. – 408 c.
  8. Герман, О. Программирование на Java и C# для студента / О. Герман, Ю. Герман. – М.: БХВ–Петербург, 2014. – 512 c.
  9. Зыков, С. В. Введение в теорию программирования. Курс лекций. Учебное пособие / С. В. Зыков. – М.: Интернет–университет информационных технологий, 2016. – 400 c.
  10. Истомин, Е. П. Информатика и программирование / Е. П. Истомин, A. M. Власовец. – М.: Андреевский Издательский дом, 2016. – 294 c.
  11. Ишкова, Э. А. C#. Начала программирования / Э. А. Ишкова. – М.: Бином–Пресс, 2016. – 334 c.
  12. Медведик, В. И. Практика программирования на Паскаль. Задачи и решения. Учебное пособие / В. И. Медведик. – М.: ДМК Пресс, 2015. – 590 c.
  13. Опалева, Э. А. Языки программирования и методы трансляции / Э. А. Опалева, В. П. Самойленко. – М.: БХВ–Петербург, 2015. – 480 c.
  14. Павловская, Т. А. C/C++. Процедурное и объектно–ориентированное программирование. Учебник / Т. А. Павловская. – М.: Питер, 2015. – 496 c.
  15. Павловская, Т. А. C/C++. Программирование на языке высокого уровня / Т. А. Павловская. – М.: Питер, 2017. – 464 c.
  16. Рапаков, Г. Г. Turbo Pascal для студентов и школьников / Г. Г. Рапаков, С. Ю. Ржеуцкая. – М.: БХВ–Петербург, 2016. – 352 c.
  17. Санников, Е. В. Курс практического программирования в Delphi. Объектно–ориентированное программирование / Е. В. Санников. – М.: Солон–Пресс, 2017. – 188 c.
  18. Семакин, И. Г. Основы программирования и баз данных. Учебник / И. Г. Семакин. – М.: Academia, 2014. – 224 c.
  19. Хабибуллин, И. Программирование на языке высокого уровня. C/C++ / И. Хабибуллин. – М.: БХВ–Петербург, 2016. – 512 c.
  20. Черпаков, И. В. Основы программирования. Учебник и практикум / И. В. Черпаков. – М.: Юрайт, 2016. – 220 c.