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

Международные и отечественные стандарты языков программирования

Содержание:

Введение

В Толковом словаре по информатике В.И. Першикова и В.М. Савинкова [14] понятие стандартизация определяется как принятие соглашения по спецификации, производству и использованию аппаратных и программных средств вычислительной техники; установление и применение стандартов, норм, правил и т.п.

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

В подавляющем большинстве современные языки программирования являются высокоуровневыми, то есть для выполнения программ, написанных на таких языках, необходим интерпретатор – это либо компилятор, либо транслятор в байт-код, либо CLI (Common Language Infrastructure), либо браузерный движок (browser engine, в случае выполнения программных сценариев, написанных на скриптовых языках). Но во всех случаях критически важно, чтобы результат работы одного и того же кода, преобразованного различными интерпретаторами, всегда давал одинаковый результат. Добиться этого можно только единственным способом – принять единый свод правил (стандарт), и придерживаться его всем разработчикам и программного обеспечения, с одной стороны, и программ-интерпретаторов – с другой.

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

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

Предмет исследования – стандарты языков программирования

Цель курсовой работы – сравнение международных и отечественных стандартов языков программирования

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

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

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

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

Самые первые электронные программируемые вычислительные машины, такие как, например, Z3 Конрада Цузе или ЭНИАК Джона Мокли, программировались непосредственно в двоичном коде (хотя Конрад Цузе и разработал первый в мире высокоуровневый язык программирования Plankalkül [1], который, правда, был реализован много позднее, около 2000 года). На данном этапе развития языков программирования никакой стандартизации еще не требовалось, так как каждая машина была по-своему уникальна и у каждой был специфический набор машинных команд.[2] Более того, задание новой программы для новой задачи компьютера ЭНИАК, фактически вело к его перепрограммированию и превращало его в совершенно новую машину.

Программирование в машинных кодах, то есть на так называемых языках первого поколения, занимало много времени и требовало специальной подготовки программистов. И довольно быстро это привело к появлению языков программирования второго поколения, самый известный представитель которых, Assembler, успешно используется и по сей день. Но в целом ситуация изменилась незначительно, так как эти языки представляли собой лишь более удобочитаемую мнемоническую запись все тех же машинных команд.[15] Но, хотя для них уже использовались программы-трансляторы в машинный код (компиляторы), но компиляция все еще полностью зависела от архитектуры конкретной машины, и выработать сколько ни было строгие стандарты в то время не представлялось возможным. К тому же, сообщество программистов к тому времени было еще недостаточно широко, и само программирование еще не приобрело массовости. Таким образом, стандарты для первых языков программирования, использовавшихся для самых первых ЭВМ, были сугубо внутренними, корпоративными стандартами. Они основывались на внутренних спецификациях, создававшихся самими создателями машин.

Но достаточно скоро, в конце тех же 50-х годов, стали появляться и серийные ЭВМ. В основном они использовались Министерством обороны США (и некоторых других стран), ведущими институтами и крупными корпорациями для технических, инженерных и научных расчётов. В то же время возникали потребности и в реализации новых вычислительных задач. Но программирование в машинных кодах, пусть даже с использованием мнемонических языков, все равно оставалось довольно долгим и трудоемким процессом. С ростом парка вычислительных машин, а также, соответственно, и количества людей, работающих с ними, с появлением новых вычислительных задач возникла настоятельная необходимость разработки и использования высокоуровневых языков, более близких семантически к естественным человеческим языкам (так называемых языков третьего поколения). И уже в 50-х годах XX века появились первые широко используемые языки высокого уровня – FORTRAN, LISP, COBOL и многие другие. Такие языки позволяли (по крайней мере, в теории, хотя на практике возникало множество ограничений) выполнять программу, написанную на них, на любой ЭВМ, на которой есть транслятор соответствующего языка. В связи с этим возникла необходимость выработки неких общих правил, по которым программа, написанная на таком языке, интерпретируется транслятором, чтобы один и тот же код на различных трансляторах давал одинаковый результат.

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

Например, самый первый высокоуровневый язык FORTRAN был создан Джоном Бекусом (John Backus) в корпорации IBM в 1957 году и предназначался для инженерных вычислений. Язык оказался настолько удачным, что очень скоро он становится практически самым активно используемым для научных и инженерных расчётов. Однако, первый официально зафиксированный стандарт языка FORTRAN, разработанный Министерством Обороны США, появляется лишь в ноябре 1978 года, 21 год спустя.[5] И еще через три года, в марте 1980-го, был принят на основе этого стандарта первый международный стандарт языка FORTRAN ISO 1539:1980. [18]

Сходным образом обстояли дела и с другими языками программирования. Язык C был разработан Деннисом Ритчи (Dennis Ritchie), сотрудником Bell Labs в 1973 году, а первый его стандарт был принят ANSI (ANSI X3.159-1989) лишь в 1983. Язык Pascal, созданный в 1970-м получил свой первый стандарт лишь в 1983 (IEC/ISO 7185).

Сейчас ситуация несколько изменилась, и в последние годы стандарты стали диктовать направление развития языков программирования. Проиллюстрировать это можно хотя бы на примере языка ECMAScript. Сейчас ECMAScript является базовым стандартом, на котором основаны самые распространенные в веб-разработке языки - JavaScript, JScript и ActionScript.

Фактически же история начиналась с того, что Брандан Эйх в 1995 году разработал для браузера Netscape Navigator язык управления контентом веб-страниц JavaScript. Нововведение сразу стало пользоваться популярностью, поскольку позволило добавить интерактивность в веб-страницы, представлявшие до этого статическую HTML-разметку. И год спустя, в 1996 году, уже корпорация Microsoft представила свою реализацию сценарного языка JScript для своего браузера Internet Explorer (версия 3). Языки были чрезвычайно похожи, использовали схожий синтаксис, одинаковую парадигму программирования, одинаковые типы данных (при нестрогой типизации), так что и до сих пор многие считают их одним и тем же языком. Отличия были, в основном, в объектах и методах взаимодействия сценария с браузером и в том, что язык JScript мог также использоваться в качестве сценарного языка в операционной системе Windows. Вслед за успешным внедрением поддержки сценарного языка в браузеры компаниями Netscape и Microsoft поддержка сценариев была добавлена и в браузер Opera (версия 3, язык JavaScript).

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

Упорядочиванием сложившейся ситуации занялась европейская организация по стандартизации Ecma, специализировавшаяся в области информационных и коммуникационных систем. Разработка первой редакции спецификации началась в ноябре 1996 года. Принятие спецификации состоялось в июне 1997 года. Будучи отправленной в ISO/IEC JTC 1 для принятия по процедуре Fast-Tracking, она послужила основой международного стандарта ISO/IEC 16262:1998 [4]. В июне 1998 года общим собранием ECMA была принята вторая редакция ECMA-262, соответствующая ISO/IEC 16262. Третья редакция спецификации отличалась от предыдущей введением поддержки регулярных выражений, улучшением поддержки строк, введением новых управляющих конструкций, механизма исключений, форматирования при численном вводе и некоторыми другими изменениями. Принятый стандарт, будучи рекомендованным, а не обязательным, являясь результатом выделения общей части из двух исходных языков - JavaScript от Netscape и JScript от Microsoft, послужил в дальнейшем той основой, на которой создавались следующие браузерные движки, в том числе и других компаний (Google Chrome, Safari и многие другие).

Сейчас развитие сценарных языков уже следует за стандартом. В июне 2015 года Ecma приняла стандарт ECMAScript 6 (ECMAScript 2015, ES6), определяющий множество революционно-новых возможностей языка. Появились программы-транспилеры, преобразующие новый синтаксис к классическому, понимаемому всеми браузерами (например, модуль Babel, использующийся при сборке проектов в webpack [17]), что позволило разработчикам сразу начать использовать новые возможности, не дожидаясь добавления их поддержки разработчиками браузеров.

На сегодняшний день уже практически всеми браузерами последних версий поддерживаются многие или почти все возможности ES6. [6]

Все чаще написание программ на большинстве языков происходит в какой-либо среде разработки (Integrated Development Environment, IDE). Такая среда разработки, опираясь в свою очередь на установленный стандарт языка, ускоряя и облегчая рутинные операции по написанию кода, позволяет сократить количество ошибок, контролирует качество кода (так называемые программы-линтеры). Без строго заданных стандартов это также было бы невозможно.

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

2. Предмет стандартизации в области разработки программного обеспечения

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

Как и во многих других областях, в информационных технологиях стандартизации требовала прежде всего понятийная база. Так самый первый стандарт, ISO 2382:1974 определяющий общую терминологию, используемую в информационных технологиях, был принят еще в 1974 году. [8] Он, являясь своего рода словарем, состоял из нескольких частей, каждая из которых раскрывала понятия одной из областей: базовые понятия ИТ, семантики языков программирования, обработки данных, систем обработки информации и т.д. Целью этого стандарта являлось установить единую терминологию для всех производителей компьютерного оборудования и разработчиков программного обеспечения.

Последним ныне действующим значительно расширенным стандартом, определяющим терминологию ИТ, является ISO 2382:2015. [7]

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

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

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

Также Росстандартом принят стандарт Единой системы программной документации, выпущенный ИСО [3]. Кроме того, сейчас к разработке программного обеспечения, как и к производству любого другого продукта, все активнее применяются и стандарты менеджмента контроля качества серии ISO 9000. [31]

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

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

Организации, занимающиеся выработкой стандартов, можно разделить, прежде всего, на:

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

3.1. Международные организации стандартизации в области ИТ

Выработкой стандартов в области информационных технологий, в том числе стандартов на разработку программного обеспечения и стандартов языков программирования в данный момент занимается Международная организация по стандартизации ИСО (ISO, International Organization for Standardization) в сотрудничестве с Международной электротехнической комиссией МЭК (IEC, International Electrotechnical Commission) и Институтом инженеров по электротехнике и электронике IEEE (Institute of Electrical and Electronic Engineers).

3.1.1. Международная организация по стандартизации ИСО

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

История ИСО началась в 1946 г., когда делегаты из 25 стран встретились в Институте гражданских инженеров в Лондоне и приняли решение о создании новой международной организации «для содействия международной координации и унификации промышленных стандартов». 23 февраля 1947 г. новая организация - ИСО официально начала свою деятельность. С тех пор, ИСО было опубликовано 22994 более стандартов, охватывающих почти все аспекты технологии и производства.

Сегодня членами ИСО являются представители из 164 стран. Структура насчитывает около 781 технических органов, которые занимаются разработкой стандартов. 160 человек работает в Центральном секретариате ИСО (Женева, Швейцария).[13]

Советский Союз был в составе 25 стран, учредителей ИСО. После распада СССР, его место в ИСО заняла Российская Федерация, как его правопреемник.

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

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

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

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

Члены-подписчики получают актуальную информацию о работах, проводимых в ИСО, но не могут принимать участие в работе. Члены-подписчики не имеют право продажи и принятия международных стандартов на национальном уровне. [16]

Структура и руководящие органы ИСО

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

Генеральная ассамблея и Совет занимаются определением стратегических целей ИСО. Ежедневная деятельность, направленная на реализацию поставленных целей, находится в ведении Центрального секретариата (Женева, Швейцария). Центральный секретариат находится под руководством Генерального секретаря.

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

Совет ИСО берет на себя решение большинства вопросов, связанных с управлением. Заседания Совета проводятся дважды в год. В состав Совета входят 20 представителей из стран комитетов – членов ИСО председателей таких комитетов как CASCO, COPOLCO и DEVCO. При Совете существует ряд органов, обеспечивающих руководство и управление по конкретным вопросам.

  • Президентский комитет консультирует Совет ИСО и контролирует исполнение принятых им и Генеральной ассамблеей решений;
  • CASCO – Комитет по оценке соответствия;
  • COPOLCO – Комитет ИСО по потребительской политике;
  • DEVCO – Комитет ИСО по вопросам развивающихся стран.
  • Council Standing Committees – Постоянные комитеты по финансовым вопросам и стратегической политике
  • Ad hoc Advisory Committees – Специальные консультативные группы

Членство в Совете открыто для всех комитетов-членов ИСО и в нем происходит ротация для того, чтобы представительство стран – членов сообщества было полным.

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

3.1.2. Международная электротехническая комиссия МЭК

Международная электротехническая комиссия МЭК (International Electrotechnical Commission, IEC) является ведущей мировой организацией, занимающейся подготовкой и публикацией международных стандартов в области электрических, электронных и смежных технологий.

МЭК является одной из трех глобальных родственных организаций (МЭК, ИСО, МСЭ), разрабатывающих международные стандарты для всего мира.

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

Когда это требуется, МЭК сотрудничает с ИСО (Международная организация по стандартизации) или МСЭ (Международный союз электросвязи) для обеспечения того, чтобы международные стандарты плавно сочетались и дополняли друг друга. Объединенные комитеты обеспечивают, чтобы международные стандарты объединяли все соответствующие знания экспертов, работающих в смежных областях. [19]

3.1.3. Объединённый технический комитет №1 ИСО/МЭК

Объединённый технический комитет №1 ИСО/МЭК (ISO/IEC Joint Technical Committee 1, ISO/IEC JTC 1) – подразделение Международной организации по стандартизации ИСО и Международной электротехнической комиссии МЭК, которое занимается всеми вопросами, связанными со стандартами в области информационных технологий. [12]

Объединённый технический комитет №1 был создан в 1987 году путём слияния Технического Комитета 97 (Информационные технологии) Международной организации по стандартизации (ISO/TC 97 Information Technology) и Технического Комитета 83 Международной электротехнической комиссии (IEC/TC 83) и с Подкомитетом 47B МЭК (IEC//SC 47B), присоединившимся позже. Целью объединения являлось собрание в один комитет по информационным технологиям деятельности двух родственных организаций.

Официальная цель ОТК 1 состоит в разработке, поддержке, продвижении и содействии развитию стандартов в области информационных технологий, необходимых глобальному рынку для согласования требований производителей и потребителей, включающих:

  • разработку и развитие ИТ-систем и средств их разработки;
  • производительность и качество ИТ-продуктов и систем;
  • безопасность ИТ-систем и информации;
  • портативность прикладного программного обеспечения;
  • взаимодействие ИТ-продуктов и систем;
  • унификацию инструментов и средств разработки;
  • гармонизацию ИТ-словаря;
  • юзабилити и эргономичность дизайна пользовательских интерфейсов.

Разработкой стандартов языков программирования в рамках деятельности ISO/IEC JTC 1 занимается подкомитет 22 (ISO/IEC JTC 1.SC 22). [20] На сегодняшний день этим подкомитетом опубликовано 109 стандартов языков программирования и 31 стандарт находится в стадии разработки.

3.1.4. Ecma International

В силу своей большей раздробленности (по сравнению с Соединенными Штатами) Европа в начале эпохи компьютеризации столкнулась с ситуацией, когда многие европейские национальные органы стандартизации разрабатывали собственные стандарты, вплоть до стандартов на бумажную ленту и коды, которые мало согласовывались между собой. 27 апреля 1960 года в Брюсселе состоялась встреча ведущих европейских производителей компьютеров, на которой было решено, что следует создать ассоциацию производителей, которая будет называться Европейская ассоциация производителей компьютеров или, если коротко, ECMA (European Computer Manufacturers Association), и был назначен комитет для подготовки создания ассоциации и разработки Устава и правил.

К декабрю 1960 года форма, которую примет Ассоциация, была достаточно четко определена, и было решено, что штаб-квартира должна находиться в Женеве, рядом со штаб-квартирой Международной организации по стандартизации ИСО и Международной электротехнической комиссии. 17 мая 1961 года Ассоциация официально начала свою работу, и все те компании, которые присутствовали на первоначальном собрании, стали ее членами. Учредительное собрание состоялось 17 июня 1961 года. [10]

Непосредственно перед официальной регистрацией ECMA ее пригласили принять участие в конференции «за круглым столом» в Женеве, организованной ISO и IEC, для обсуждения вопросов стандартизации в общей области информационных технологий. Результатом этой встречи стало формирование технического комитета TC97, и ECMA было предложено стать «связанным» (liaison) членом этого комитета. В 1987 году, когда TC97 стал частью JTC 1 ИСО / МЭК, ECMA стала «связанным» членом JTC 1.[11]

Чтобы отразить глобальную деятельность европейской организации ECMA, название было изменено в 1994 году на: Ecma International - Европейская ассоциация по стандартизации информационных и коммуникационных систем, и больше не рассматривалось, как акроним. [10]

Ecma в сотрудничестве с ИСО и МЭК принимает активное участие в разработке стандартов в том числе и языков программирования. Самым известным и востребованным стандартом из разработанных Ecma является ECMAScript, созданный в 1997 году на основе только что появившихся языков JavaScript (Netscape, 1995) и JScript (Microsoft, 1996). Сейчас в 2019 году была выпущена уже 10-я редакция данного стандарта. [26]

3.1.5. Консорциум World Wide Web (W3C)

Консорциум World Wide Web (W3C) – это международное сообщество, в котором организации-члены, штатные сотрудники и общественность работают вместе над разработкой веб-стандартов. Под руководством изобретателя и директора сети Тима Бернерса-Ли и генерального директора Джеффри Джаффе миссия W3C состоит в том, чтобы полностью раскрыть потенциал Интернета. [24]

Консорциум был основан в 1994 году Тимом Бернерсом-Ли, изобретателем Интернета, как сети обмена гипертекстовыми документами, а также протокола HTTP и многих других базовых концепций современного Интернета. [25]

Наряду с деятельностью по выработке стандартов языков, протоколов, используемых в глобальной сети, консорциум проводит огромную работу по развитию сетевых технологий и концепций, используемых во Всемирной паутине. Своей главной целью Консорциум сейчас определяет создание семантической сети One Web.

Общую администрацию консорциума Всемирной паутины осуществляют 3 организации:

  • Массачусетский технологический институт (Massachusetts Institute of Technology, MIT) в США;
  • Европейский консорциум по исследованиям в области информатики и математики (European Research Consortium for Informatics and Mathematics, ERCIM) во Франции;
  • Университет Кейо (Keio University) в Японии.

Членом консорциума может стать юридическое или частное лицо, занимающееся веб-технологиями и заинтересованное в развитии Интернета. Основным источником финансирования консорциума являются членские взносы. Членами консорциума уже являются более 350 организаций.

Международную координацию осуществляют так называемые «офисы W3C» (W3C Offices), которые сейчас действуют в 14 странах мира. Также, время от времени, консорциум Всемирной паутины устраивает международные конференции.

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

16 февраля 2012 года W3C совместно с НИУ ВШЭ открыли представительство консорциума в России. [30]

Также W3C в разработке стандартов Интернета сотрудничает с IETF (Internet Engineering Task Force – Инженерный совет Интернета, открытое международное сообщество проектировщиков, учёных, сетевых операторов и провайдеров). Здесь процесс принятия новых стандартов и внесения изменений в существующие начинается, как правило с так называемого «запроса на отзывы» или «рабочего предложения» (RFC, Request for Comments), размещаемого в сети.

Несмотря на название, запросы на отзывы RFC сейчас рассматриваются как стандарты Интернета, а рабочие версии стандартов обычно называют драфтами (draft – черновой проект). Согласно RFC 2026 [34], выпущенного IETF, жизненный цикл стандарта выглядит следующим образом:

  1. Выносится на всеобщее рассмотрение интернет-проект (Internet Draft). Проекты не имеют официального статуса и удаляются из базы через шесть месяцев после последнего изменения.
  2. Если проект стандарта оказывается достаточно удачным и непротиворечивым, он получает статус предложенного стандарта (Proposed Standard), и свой номер RFC. Наличие программной реализации стандарта желательно, но не обязательно.
  3. Следующая стадия – проект стандарта (Draft Standard) – означает, что предложенный стандарт принят сообществом, в частности, существуют две независимые по коду совместимые реализации разных команд разработчиков. В проекты стандартов ещё могут вноситься мелкие правки, но они считаются достаточно стабильными и рекомендуются для реализации.
  4. Высший уровень – стандарт Интернета (Internet Standard). Это спецификации с большим успешным опытом применения и зрелой формулировкой. Параллельно с нумерацией RFC они имеют свою собственную нумерацию STD. Список стандартов имеется в документе STD 1 (сейчас это RFC 5000, но нумерация может измениться). Из более чем трёх тысяч RFC этого уровня достигли только несколько десятков.
  5. Многие старые RFC замещены более новыми версиями под новыми номерами или вышли из употребления. Такие документы получают статус исторических (Historic)

Практически все стандарты Глобальной сети существуют в виде опубликованных заявок RFC. 

3.2. Национальные организации стандартизации в области ИТ

3.2.1. Американский национальный институт стандартов ANSI

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

ANSI уже более 100 лет является администратором и координатором системы добровольной стандартизации частного сектора США. Основанный в 1918 году пятью инженерными обществами и тремя государственными учреждениями, Институт остается частной некоммерческой членской организацией, поддерживаемой различными группами организаций частного и государственного секторов. [21]

В силу того, что первые ЭВМ и первые высокоуровневые языки для них были разработаны в США, и там же они наиболее широко использовались, то закономерно, что и первые стандарты языков программирования также были приняты именно ANSI. Например, спецификация языка C разрабатывалась комитетом X3J11 начиная с 1983 года. В 1989 году был принят стандарт ANSI X3.159-1989 «Язык программирования C» [22], после чего, в 1990-м году ИСО на основе этого стандарта принимает первый международный стандарт языка C – ISO/IEC 9899:1990. [23]

Сейчас ANSI активно участвует в деятельности всех международных организаций по подготовке стандартов и осуществляет контролирующую и сертификационную деятельность на территории США.

3.2.2. Росстандарт

Федеральное агентство по техническому регулированию и метрологии (Росстандарт) входит в систему федеральных органов исполнительной власти Российской Федерации и находится в ведении Министерства промышленности и торговли Российской Федерации. [27]

Основные задачи:

  • реализация функций национального органа по стандартизации;
  • обеспечение единства измерений;
  • осуществление государственного контроля (надзора) за соблюдением требований технических регламентов и обязательных требований стандартов;
  • создание и ведение федерального информационного фонда технических регламентов и стандартов и единой информационной системы по техническому регулированию;
  • осуществление организационно-методического руководства по ведению Федеральной системы каталогизации продукции для федеральных государственных нужд;
  • организация проведения работ по учету случаев причинения вреда вследствие нарушения требований технических регламентов;
  • организационно-методическое обеспечение проведения конкурса на соискание Премии Правительства Российской Федерации в области качества и других конкурсов в области качества;
  • оказание государственных услуг в сфере, стандартизации, технического регулирования и метрологии. [28]

Основными направлениями работ в области международного сотрудничества являются:

  • участие и защита интересов России в деятельности международных (региональных) организаций по стандартизации, метрологии и сертификации;
  • обеспечение ведущей роли России в деятельности по межгосударственной стандартизации, метрологии и сертификации в рамках СНГ;
  • обеспечение присоединения России к Всемирной торговой организации (ВТО);
  • гармонизация национальных стандартов Российской Федерации, правил и процедур подтверждения соответствия продукции и услуг установленным требованиям с международно признанными стандартами, правилами и процедурами;
  • защита национальных интересов и обеспечение национальной безопасности;
  • повышение конкурентоспособности отечественной продукции, расширение экспорта продукции и услуг и объемов импортозамещения;
  • выполнение международных обязательств и повышение авторитета России на международной арене.

В соответствии с Постановлением Правительства Российской Федерации от 17 июня 2004 г. N 294 Федеральное агентство по техническому регулированию и метрологии (Росстандарт) не имеет представительств за рубежом. [29]

3.2.3. Межгосударственный совет по стандартизации, метрологии и сертификации

Межгосударственный совет по стандартизации, метрологии и сертификации был создан в соответствии с межправительственным «Соглашением о проведении согласованной политики в области стандартизации, метрологии и сертификации» от 13 марта 1992 года.

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

В соответствии с резолюцией Совета Международной организации по стандартизации ИСО 40/1995 от 14 сентября 1995 года Совет является региональной организацией по стандартизации и в нормативной документации и во взаимоотношениях с международными, региональными и зарубежными организациями использует наименование, аббревиатуру и эмблему, принятые Советом, в соответствии с требованиями ИСО к региональным организациям по стандартизации. [29]

Таким образом, взаимодействие Росстандарта, как организации, занимающейся вопросами стандартизации на территории Российской Федерации, с Международной организацией по стандартизации ИСО осуществляется через Межгосударственный совет по стандартизации.

4. Международные и отечественные стандарты языков программирования

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

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

В России на данный момент не принимается собственных стандартов для самих языков программирования. Хотя до сих пор еще продолжают действовать стандарты языков ALGAMS (ГОСТ 21551-76), COBOL (ГОСТ 22558-89), FORTRAN (ГОСТ 23056-78 и ГОСТ 23057-78), BASIC (ГОСТ 27787-88), Ada (ГОСТ 27831-88) и ALGOL 68 (ГОСТ 27974-88), принятые еще в Советском Союзе. [32]

Тем не менее, отдельные стандарты в России, как и во многих других странах, локализуются. Работа эта проводится национальными организациями по стандартизации. В России сейчас приняты национальные стандарты, например, в области терминологии ИТ – ГОСТ 33707-2016 (ISO/IEC 2382:2015) «Информационные технологии (ИТ). Словарь», являющийся переводом соответствующего стандарта ИСО. [9] Этот словарь включает в себя также и понятийную базу языков программирования и их основных парадигм.

Из реально широко используемых сейчас российских языков программирования можно назвать только встроенный язык «1С:Предприятия». Но его спецификация относится скорее к корпоративным стандартам. Интерпретация или компиляция его в исполняемый код (в последних версиях) выполняется самой средой «1С:Предприятия», и он не рассчитан на использование сторонних компиляторов.[33] Кроме того, его синтаксис построен на основе русского языка. Сделано это было с целью облегчить его освоение русскоговорящим специалистам, плохо или сосем не владеющим английским языком, так как сам программный продукт «1С:Предприятие» ориентирован прежде всего на использование в России и использует российские стандарты делопроизводства.

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

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

Заключение

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

Первые стандарты языков принимались зачастую национальными или ведомственными организациями, занимающимися стандартизацией в других областях. Так, например, первый стандарт языка FORTRAN был принят Министерством обороны США.

Стандартизация языков программирования, начавшаяся, как привнесение организованности среди стихийно возникающих и развивающихся языков программирования и диалектов, сейчас приобрела форму устоявшегося процесса. Сейчас стандартизацией языков программирования высокого уровня занимаются несколько международных некоммерческих организаций – Международная организация по стандартизации ИСО, Международная электротехническая комиссия МЭК и Ecma International в сотрудничестве с IEEE. Основная работа ведется Объединённым техническим комитетом №1 ИСО/МЭК (ISO/IEC JTC 1). Множество подгрупп в сотрудничестве с экспертами и представителями разработчиков постоянно работают над совершенствованием стандартов, добавляя новые необходимые возможности, избавляясь от устаревших. Сейчас разработаны и выпущены стандарты для всех распространенных языков программирования высокого уровня.

Отдельно стоит отметить ситуацию со стандартизацией языков программирования, используемых в Интернете. Отсутствие стандарта на первые скриптовые языки – JavaScript и JScript, возникшие почти одновременно – привело к так называемой «первой войне браузеров», когда производители неконтролируемо добавляли новые свойства в свою версию языка, стараясь отвоевать как можно больший сегмент на рынке браузеров. Это привело к неоправданно возросшей сложности веб-разработки, когда программистам приходилось писать лишний код, добавлять дополнительные проверки, чтобы обеспечить работоспособность своих скриптов в любом браузере.

С введением стандарта ECMAScript на основе этих языков ситуация постепенно стала приходить в норму. Сейчас последние версии браузеров все больше придерживаются стандартов, хотя незначительная разница в реализации все-таки еще остается. Например, с выпуском стандарта ECMAScript 6 (ES6, ECMAScript-2015), добавившего множество революционных возможностей в язык, все производители браузеров в своих новых версиях стали постепенно добавлять эти возможности. И сейчас реализации языка в них практически идентичны за небольшими исключениями.

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

Россия в этом также не является исключением. Сейчас в каталоге государственных стандартов все ещё можно отыскать действующие стандарты на ранние языки программирования (FORTRAN, COBOL, Ada), выпущенные еще в Советском Союзе. Но в том, что касается стандартов современных языков, Россия, как и весь остальной мир, пользуется стандартами выпускаемыми международными организациями.

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

  1. Raúl Rojas, Cüneyt Göktekin, Gerald Friedland, Mike Krüger. Plankalkül: The First High-Level Programming Language and its Implementation // WaybackMachine. Internet Archive. URL: https://web.archive.org/web/20021128054813/http://www.zib.de/zuse/Inhalt/Programme/Plankalkuel/Plankalkuel-Report/Plankalkuel-Report.htm (Дата обращения: 14.12.2019)
  2. Raúl Rojas, Ulf Hashagen The First Computers: History and Architectures. - Cambridge: MIT Press, 2002.
  3. ГОСТ 19.701-90 (ИСО 5807-85) Единая система программной документации (ЕСПД) // Консорциум “Кодекс”. Система “Техэксперт”. URL: http://docs.cntd.ru/document/9041994 (Дата обращения: 17.12.2019)
  4. ISO/IEC 16262:1998 [ISO/IEC 16262:1998] Information technology - ECMAScript language specification // International Organization for Standardization. URL: https://www.iso.org/standard/29696.html (Дата обращения: 19.12.2019)
  5. MILITARY STANDARD 1753. FORTRAN, DoD Supplement To American National Standard X3.9-1978 // WaybackMachine. Internet Archive. URL: https://web.archive.org/web/20071109170658/http://www.fortran.com/fortran/mil_std_1753.html (Дата обращения: 19.12.2019)
  6. ECMAScript 6 compatibility table // kangax projects. URL: https://kangax.github.io/compat-table/es6/ (Дата обращения: 19.12.2019)
  7. ISO/IEC 2382:2015 [ISO/IEC 2382:2015] Information technology – Vocabulary // International Organization for Standardization. URL: https://www.iso.org/standard/63598.html (Дата обращения: 22.12.2019)
  8. ISO 2382-1:1974 [ISO 2382-1:1974] Data processing – Vocabulary – Section 01 : Fundamental terms // International Organization for Standardization. URL: https://www.iso.org/standard/7227.html (Дата обращения: 04.01.2020)
  9. ГОСТ 33707-2016 (ISO/IEC 2382:2015) Информационные технологии (ИТ). Словарь // Консорциум “Кодекс”. Система “Техэксперт”. URL: http://docs.cntd.ru/document/1200139532 (Дата обращения: 04.01.2020)
  10. History of Ecma // Ecma International. URL: https://www.ecma-international.org/memento/history.htm (Дата обращения: 05.01.2020)
  11. Ecma organization. Technical Committees and Task Groups // Ecma International. URL: https://www.ecma-international.org/memento/TCs&TGs.htm (Дата обращения: 05.01.2020)
  12. ISO/IEC JTC 1 Information technology // International Organization for Standardization. URL: https://www.iso.org/committee/45020.html (Дата обращения: 28.01.2020)
  13. Все об ИСО // International Organization for Standardization. URL: https://www.iso.org/ru/about-us.html (Дата обращения: 28.01.2020)
  14. Першиков, В.И., Савинков, В.М. Толковый словарь по информатике. – М.: Финансы и статистика, 1991. - 536 с.
  15. Калашников О.А. Ассемблер? Это просто! Учимся программировать. – СПб.: БХВ-Петербург, 2011. - 336с.
  16. Все об ИСО. Члены // International Organization for Standardization. URL: https://www.iso.org/ru/members.html (Дата обращения: 28.01.2020)
  17. Babel. The community maintained compiler for next generation JavaScript, today. URL: https://github.com/babel (Дата обращения: 01.02.2020)
  18. ISO 1539:1980 [ISO 1539:1980] Programming languages – FORTRAN // International Organization for Standardization. URL: https://www.iso.org/standard/6127.html (Дата обращения: 01.02.2020)
  19. About the IEC // IEC – International Electrotechnical Commission. URL: https://www.iec.ch/about/ (Дата обращения: 01.02.2020)
  20. СТАНДАРТЫ ПО ISO/IEC JTC 1/SC 22 Programming languages, their environments and system software interfaces // ISO. URL: 
    https://www.iso.org/ru/committee/45202/x/catalogue (Дата обращения: 01.02.2020)
  21. Introduction to ANSI // ANSI. URL: https://www.ansi.org/about_ansi/introduction/introduction (Дата обращения: 03.02.2020)
  22. American National Standard for Programming Languages – C. ANSI/ISO 9899/1990 // PDF Archive. URL: https://www.pdf-archive.com/2014/10/02/ansi-iso-9899-1990-1/ansi-iso-9899-1990-1.pdf (Дата обращения: 03.02.2020)
  23. ISO/IEC 9899:1990 [ISO/IEC 9899:1990] Programming languages – C // International Organization for Standardization. URL: https://www.iso.org/standard/17782.html (Дата обращения: 03.02.2020)
  24. About W3C // World Wide Web Consortium. URL: https://www.w3.org/Consortium/ (Дата обращения: 03.02.2020)
  25. Longer Bio for Tim Berners-Lee // World Wide Web Consortium. URL: https://www.w3.org/People/Berners-Lee/Longer.html (Дата обращения: 03.02.2020)
  26. ECMA-262, 10th edition, June 2019 ECMAScript® 2019 Language Specification // Ecma International. URL: https://www.ecma-international.org/ecma-262/10.0/index.html (Дата обращения: 03.02.2020)
  27. О Росстандарте // Федеральное агентство по техническому регулированию и метрологии. URL: https://www.gost.ru/portal/gost//home/about (Дата обращения: 04.02.2020)
  28. Основные задачи агентства и показатели эффективности // Федеральное агентство по техническому регулированию и метрологии. URL: https://www.gost.ru/portal/gost//home/activity/performanceindicators (Дата обращения: 04.02.2020)
  29. Международное сотрудничество // Федеральное агентство по техническому регулированию и метрологии. URL: https://www.gost.ru/portal/gost//home/activity/international (Дата обращения: 04.02.2020)
  30. W3C Opens Office in Russia // W3C For Immediate Releas. URL: https://www.w3.org/2012/02/russia-office.html.en (Дата обращения: 04.02.2020)
  31. ISO 9001 СИСТЕМЫ МЕНЕДЖМЕНТА КАЧЕСТВА // International Organization for Standardization. URL: https://www.iso.org/ru/iso-9001-quality-management.html (Дата обращения: 04.02.2020)
  32. Каталог ГОСТ, ГОСТ Р – национальные стандарты РФ // ФГУП «Стандартинформ». Российский научно-технический центр информации по стандартизации, метрологии и оценке соответствия». URL: http://www.gostinfo.ru/catalog/gostlist (Дата обращения: 04.02.2020)
  33. Архитектура платформы 1С:Предприятие. Встроенный язык. // 1С:Предприятие 8. URL: https://v8.1c.ru/platforma/vstroennyy-yazyk/ (Дата обращения: 07.02.2020)
  34. RFC 2026. The Internet Standards Process -- Revision 3 // IETF Tools. URL: https://tools.ietf.org/html/rfc2026 (Дата обращения: 10.02.2020)