Файл: История развития программирования в России (Понятие и сущность программирования).pdf
Добавлен: 31.03.2023
Просмотров: 374
Скачиваний: 2
СОДЕРЖАНИЕ
1.1 Понятие и сущность программирования
1.2 Появление технологии программирования и основные этапы развитие в мире
Глава 2. Исторические особенности развития и становления программирования в России
2.1 Периодизация формирования культуры программирования в России
2.3 Специфика исторического развития отечественного рынка программирования
Глава 3. Современный этап развития отечественного рынка программирования
3.1 Состояние рынка программирования России в контексте мирового рынка программирования
3.2 Проблемы и перспективы дальнейшего развития программирования
- произвольно вложенная блочная структура: осмысленные куски кода могут быть сгруппированы в блоки операторов без необходимости их превращения в отдельные, явно называемые процедуры;
- лексический обзор: у блока могут быть свои переменные, к которым код, находящийся за пределами куска, не может получить доступ, не говоря уже о манипулировании.
Еще одно новшество, связанное с этим, заключалось в том, как описывался язык: - для описания синтаксиса языка была использована математически точная нотация - форма Бэкуса-Наура (BNF). Почти все последующие языки программирования использовали вариант BNF для описания бесконтекстной части своего синтаксиса.
Особенно большое влияние Algol 60 оказал на разработку более поздних языков, некоторые из которых вскоре стали более популярными. Большие системы Burroughs были спроектированы для программирования в расширенном подмножестве Algol.
Ключевые идеи Алголя были продолжены в ALGOL 68:
- синтаксис и семантика стали ещё более ортогональными, с анонимными рутинами, системой рекурсивного набора текста с функциями более высокого порядка и т.д.;
- не только свободная от контекста часть, но и полный синтаксис и семантика языка были определены формально, в терминах грамматики Ван Вийнгаардена, формализма, разработанного специально для этой цели [11].
Множество малоиспользуемых языковых особенностей Algol 68 (например, параллельные и параллельные блоки) и сложная система синтаксических ярлыков и автоматического принуждения типов сделали его непопулярным у имплементаторов и усложнили его восприятие. Никлаус Вирт фактически вышел из проектного комитета, чтобы создать более простой язык Pascal:
- 1951 – Язык региональной ассамблеи;
- 1952 – Autocode;
- 1954 – FORTRAN;
- 1955 – FLOW-MATIC (предшественник COBOL);
- 1957 – COMTRAN (предшественник COBOL);
- 1958 – LISP;
- 1958 - ALGOL 58;
- 1959 – FACT (предшественник COBOL);
- 1959 – COBOL;
- 1962 – APL;
- 1962 – Simula;
- 1964 – BASIC;
- 1964 - PL/I [8, c. 18].
Период с конца 1960-х до конца 1970-х годов принес большой расцвет языков программирования. В этот период было изобретено большинство основных используемых в настоящее время языковых парадигм:
- Simula, изобретенный в конце 1960-х годов Нигаардом и Далом в качестве суперсети Algol-60, был первым языком, предназначенным для поддержки объектно-ориентированного программирования;
- C, ранний язык системного программирования, был разработан Деннисом Ричи и Кеном Томпсоном в Bell Labs между 1969 и 1973 годами;
- Smalltalk (середина 1970-х) предоставил полное базовое проектирование объектно-ориентированного языка;
- Prolog, разработанный в 1972 году Кольмерауэром, Русселем и Ковальским, был первым языком логического программирования;
- ML построил систему полиморфных типов (изобретенную Робином Милнером в 1973 году) поверх Lisp, пионера статически типизированных функциональных языков программирования [11].
Каждый из этих языков породил целое семейство потомков, и большинство современных языков считают, по крайней мере, один из них своим происхождением.
В 1960-е и 1970-е годы также начались значительные дебаты о достоинствах «структурированного программирования», которое, по сути, означало программирование без использования GOTO.
Эти дебаты были тесно связаны с дизайном языка: некоторые языки не включали GOTO, что вынуждало программиста заниматься структурированным программированием. Хотя в то время дебаты были горячими, почти все программисты теперь согласны с тем, что даже в языках, которые предоставляют GOTO, его использование, за исключением редких случаев, является плохим стилем программирования. В результате более поздние поколения дизайнеров языков сочли дебаты по структурированному программированию утомительными и даже обескураживающими. К некоторым важным языкам, которые были разработаны в этот период, относятся:
- 1970 – Pascal;
- 1970 – Forth;
- 1972 – C;
- 1972 – Smalltalk;
- 1972 – Prolog;
- 1973 – ML;
- 1978 - SQL (изначально только язык запросов, позже расширенный конструкциями программирования) [8, c. 19].
В 1990-е годы не было фундаментальной новизны, но было много рекомбинаций, а также созревание старых идей. Большой философией вождения была производительность программиста. Появилось много языков "быстрой разработки приложений" (RAD), которые обычно поставлялись с IDE, сборщиком мусора, и были потомками старых языков. Все эти языки были объектно-ориентированными. К ним относились Object Pascal, Visual Basic и C#. Java был более консервативным языком, который также включал в себя сборщик мусора и пользовался большим вниманием. Более радикальными и инновационными, чем языки RAD, были новые языки сценариев. Они не исходили непосредственно от других языков и отличались новыми синтаксисами и более либеральным включением функций. Многие считают эти языки сценариев более продуктивными, чем даже RAD-языки, но часто из-за выбора, который делает небольшие программы более простыми, а большие – более сложными в написании и обслуживании. Тем не менее, языки сценариев стали наиболее известными, используемыми в связи с Вебом. К некоторым важным языкам, которые были разработаны в этот период, относятся:
- 1990 – Haskell;
- 1991 – Python;
- 1991 – Java;
- 1993 – Ruby;
- 1993 – Lua;
- 1994 - ANSI Common Lisp;
- 1995 – JavaScript;
- 1995 – PHP;
- 2000 - C#;
- 2008 – JavaFX Script [8, c. 20].
Эволюция языка программирования продолжается как в промышленности, так и в научных исследованиях.
Некоторые из современных тенденций включают в себя:
1. Механизмы добавления в язык проверки безопасности и надежности: расширенная статическая проверка, управление потоком информации, статическая безопасность потока.
2. Альтернативные механизмы модульности: смеси, делегаты, аспекты.
3. Разработка ориентированного на компоненты программного обеспечения.
4. Метапрограммирование, отражение или доступ к абстрактному синтаксическому дереву – повышенное внимание к распределению и мобильности.
5. Интеграция с базами данных, включая XML и реляционными базами данных.
6. Поддержка Юникода, позволяющая не ограничивать исходный код (текст программы) теми символами, которые содержатся в наборе символов ASCII; позволяющая, например, использовать нелатинские скрипты или расширенную пунктуацию.
7. XML для графического интерфейса (XUL, XAML).
Таким образом, программирование – сравнительно молодая и быстро развивающаяся отрасль науки и техники. Опыт ведения реальных разработок и совершенствования имеющихся программных и технических средств постоянно переосмысливается, в результате чего появляются новые методы, методологии и технологии, которые, в свою очередь, служат основой более современных средств разработки программного обеспечения. Исследовать процессы создания новых технологий и определять их основные тенденции целесообразно, сопоставляя эти технологии с уровнем развития программирования и особенностями имеющихся в распоряжении программистов программных и аппаратных средств.
Глава 2. Исторические особенности развития и становления программирования в России
2.1 Периодизация формирования культуры программирования в России
На территории России программирование как явление, дисциплина и способ автоматизации различны процессов, появилось совсем недавно, имея при этом и так не слишком богатую историю развития и становления. Началом формирования рынка программирования России являются 50-е года ХХ века. Первоначально на отечественный рынок программирование, как технология, зашло как часть военно-промышленного комплекса и в основном предназначалось для решения военных и промышленных задач, например, для точного расчета места приземления космического корабля Юрия Гагарина. Ранние успехи советского программирования во многом связаны с тем, что советская экономика всегда была сильно индустриализованной и технически ориентированной. Растущая потребность в программистах была разрешена путем переориентации части математиков и физиков на информатику.
В те времена количество программистов (да и самих компьютеров) было очень небольшим, так как область применения программирования была достаточно ограниченной. Так, за все 20 лет производства БЭСМ-6, одного из самых успешных компьютеров тех времен (было выпущено всего около 300 штук). Тем не менее, к концу 60-х советская школа программирования находилась на мировом уровне и в промышленной разработке программ, и в научных исследованиях.
К сожалению, где-то с начала 70-х годов в программировании, как и в ряде других отраслей, начали наблюдаться первые признаки застоя. Одной из основных причин стала официальная политика ориентации компьютерных платформ на клоны IBM/360 и PDP/11.
Считалось, что путем копирования западной аппаратной базы удастся сэкономить деньги, которые впоследствии можно было бы использовать для «гигантского скачка» в программировании. Эта «стратегия» потерпела провал, а Эдгар Дейкстра в своей лекции, прочитанной в России, назвал это решение советского правительства «величайшей победой Запада в холодной войне» (подробнее о ранней истории программирования в России можно прочитать в).
Кризис продолжался до начала 90-х годов. В процессе перехода на рыночную экономику большинство существовавших структур рухнуло, что привело, в частности, к радикальной смене преобладающей аппаратной платформы. В течение нескольких лет мэйнфреймы были потеснены мощным потоком персональных компьютеров; так, согласно оценке IDC, в 1997 году в России было продано 1,4 млн. компьютеров.
Переход на новую платформу создал потребность в целом ряде новых услуг, например, в разработке программ и системной интеграции, которые стали предоставлять молодые частные компании. Большинство современных лидеров в компьютерном бизнесе России — представители этой «новой волны»; сегодня такие компании вполне могут считать себя ветеранами рынка, несмотря на возраст от 8 до 12 лет.
Компьютерный рынок быстро увеличивался вплоть до кризиса 1998 года. Отечественная компьютерная индустрия была одной из наиболее пострадавших из-за своей зависимости от западного рынка; лишь совсем недавно Россия снова вышла на уровень 1997 года по количеству продаваемых компьютеров. Тем не менее, сегодня перспективы компьютерного рынка в России выглядят очень хорошими; страна демонстрирует очень быстрый рост темпов продаж компьютеров, при том, что рынок еще ненасыщен: на 100 человек в России приходится всего лишь около 5 компьютеров (в США — 62) [10].
Самым большим конкурентным преимуществом российской индустрии программирования является наличие большого количества хорошо обученных технических специалистов.
Типичный российский программист обладает как минимум высшим образованием в программировании, технических или точных науках, что совсем нехарактерно для западных стран. Например, примерно 86% американских программистов обладают лишь степенью бакалавра, закончили специальные двухгодичные курсы или вообще ограничились средним образованием.
Платное образование становится все более популярным; по данным Госкомстата, в 2001 году более трети студентов в России платили за свое образование. Однако программы обучения всех университетов, как государственных, так и частных, контролируются государством с помощью набора стандартов, гарантирующих единый уровень обучения. Такой подход порождает ряд специфических для России моментов.
Например, в стандарте на программистские специальности традиционно очень велик процент обязательных курсов по математике и прочим фундаментальным наукам. В результате, первые два с половиной года самой распространенной программистской специальности 351500 (бывшая 220400) почти полностью посвящены математическим предметам; это означает, что студенты не получают достаточной практики в программировании до третьего или даже четвертого курса.
У такого подхода к делу есть и преимущества: отечественные программисты получают базовые знания, которые могут быть применены в самых разных исследовательских задачах.
Это, кстати, регулярно подтверждается победами российской молодежи на различных международных соревнованиях. Например, команда Санкт-Петербургского государственного университета два года подряд становилась победителем международной олимпиады по программированию, проводимой под эгидой ACM (2000 и 2001 годы), а также входила в десятку победителей в течение пяти лет. Следующее поколение также подает большие надежды: в 2000 году российские школьники победили на международной олимпиаде по информатике в Китае.