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

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

Содержание:

Введение

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

При создании сложных программ с большим объемом арифметических и логических операций, число которых может достигать нескольких тысяч, удержать в голове весь список операций и проследить их взаимодействие по всему тексту очень сложно. Поэтому для повышения наглядности и надежности отработки алгоритмов предложена система условных обозначений, позволяющая создавать схемы программ. Эта система отражена в стандартах языкового программирования, где прописаны алгоритм программы, данные, система и правила выполнения. Использование стандартных обозначений операций делает схему понятной не только ее разработчику. [2, с. 9-10]

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

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

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

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

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

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

Задачи:

  1. изучить законодательство Российской Федерации в области IT-технологий, в частности государственный стандарт;
  2. сформировать представление о теоретической и практической значимости научных трудов в области языкового программирования;
  3. соотнести международные стандарты языкового программирования, определить сходство и отличие;
  4. сопоставить взгляд современных отечественных и международных специалистов в вопросе изучения стандартов языкового программирования.

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

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

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

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

Весь накопленный опыт в области обеспечения качества был суммирован Международной организацией стандартизации (ИСО) серии 9000 на системы управления качеством, которые стали широко внедрятся по всему миру с конца 1980-х годов. Главной целевой установкой стандартов является построение систем качества, обеспечивающих изготовление продукта, соответствующего требованиям заказчиков. [3, с. 3]

В целом стандартизацию характеризуют как деятельность по установлению норм, правил и характеристик в целях обеспечения:

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

- технической и информационной совместимости, а также взаимозаменяемости продукции;

- качества продукции, работ и услуг в соответствии с уровнем развития науки, техники и технологии;

- единства измерений;

- безопасности хозяйственных объектов с учетом риска возникновения природных и техногенных катастроф и других чрезвычайных ситуаций;

- обороноспособности и мобилизационной готовности страны. [3, с. 65]

Стандарт (спецификация) языка программирования – это предмет документации, который определяет язык программирования, чтобы компиляции одной и той же программы различными компиляторами давала одинаковый результат, иными словами - пользователи и разработчики могли согласовать значение программы на данном языке.[2]

В учебном пособии Дубова Н.Д. и Е.М. Портнова, рассмотрено развитие стандартизации в России, выделяются следующие классификации стандартов и схожих методических материалов.

1. По предмету стандартизации различают:

- функциональные стандарты (на языки программирования, интерфейсы, протоколы);

- стандарты на создание и использование автоматизированных систем;

- стандарты на организацию жизненного цикла;

- стандарты программного обеспечения.

2. По утверждающей организации:

- официальные международные стандарты;

- официальные национальные или национальные ведомственные (например, ГОСТы, ANSI, IDEF0/1);

- стандарты международных консорциумов и комитетов по стандартизации (OSF, OMG);

- специфические стандарты, такие как SQL или язык диаграмм SADT;

-фирменные стандарты (Microsoft, IBM SNA).

3. По методическому источнику:

- методические материалы фирм-разработчиков программного обеспечения;

- методические материалы фирм-консультантов;

-методические материалы научных центров, консорциумов по стандартизации (Oracle Method, Price Waterhouse SMM). [3, c. 72-73]

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

- ISO – International Organization for Standardization (Международная организация стандартизации);

- IEC – International Electrotechnical Commission (Международная электротехническая комиссия);

- ITU – International Telecommunication Union (Международный союз по телекоммуникации).

Обозначенные выше организации признаны странами во всем мире и наделены полномочиями издавать международные стандарты, называемыми формальными стандартами. Эти организации тесно взаимосвязаны посредством организационных и процедурных механизмов, благодаря чему обеспечивается целостность системы международных стандартов. [3, с. 76]

Для осуществления межгосударственной стандартизации в странах СНГ организован Межгосударственный совет по стандартизации, метрологии и сертификации. В соответствии с принятым межправительственным Соглашением (от 13 марта 1992 г.), комитет осуществляет координацию и вырабатывает решения по развитию и проведению согласованной политики. [3, с. 83]

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

Термины, установленные настоящим стандартом, обязательны для применения во всех видах документации и литературы, входящих в сферу работ по стандартизации или использующих результаты этих работ. [2, с. 4]

Общие требования к содержанию стандарта, которые выделяют в своей работе Дубов Н.Д. и Е.М. Портнов: понятность, полнота и простота при изучении; внутренняя непротиворечивость; формулировки должны быть корректными. [3, с. 94]

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

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

Следует упомянуть о правовых нормах в области информатики и прежде всего об авторском праве, которое возникает автоматически при создании. Согласно Закона Российской Федерации: «О правовой охране программ для ЭВМ и баз данных» (1992 г.) автору принадлежит исключительное право на воспроизведение, модификацию и распространение программы. Базовым юридическим документом является Закон Российской Федерации «Об информации, информатизации и защите информации» (1995 г.), где изложены юридические основы гарантий прав граждан на информацию, обеспечение защиты собственности в сфере информационных технологий. На основе этого Закона приняты дополнительные нормативные законодательные акты: «Об авторском праве и смежных правах», «О правовой охране программ для ЭВМ и баз данных», «О правовой охране топологии интегральных схем», «Об электронно-цифровой подписи».[4]

1.1. Становление системы отечественных стандартов языкового программирования

По разным подсчетам на сегодня существует более 8 тысяч языков программирования. По российской версии журнала PC World, Мир ПК, публиковавшего новости рынка информационных технологий, аналитические статьи, сообщения о крупнейших выставках, сравнивая между собой конструкции языков программирования и выделяя общую составляющую, можно описать «универсальный» язык программирования. К сожалению существующая система стандартизации языков программирования не способствует выполнению этой задачи. Главная проблема состоит в том, что при описании стандарта семантическая составляющая не отделена от синтаксиса и лексики. При модернизации стандартов комитеты предпочитают скорее добавлять в язык новые возможности, чем исключать редко используемые, что приводит к неоправданному синтаксическому расширению языков. В последние годы в области создания языков программирования наблюдается некоторое затишье. Тем не менее стремительное развитие компьютерной индустрии не может не поставить перед создателями «средств производства» программ (компиляторов), позволяющих решать новые задачи. По мнению инженера-программиста, разработчика бухгалтерского программного обеспечения и электронной почты, А. Андреева. унификация языков программирования и создание общепринятой семантической базы – необходимое условие продолжение прогресса в этой области программного обеспечения и компьютерной индустрии в целом.[5]

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

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

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

Существует определенная проблематика существования стандартизации – всеобщая унификация, что в свою очередь станет тормозом развития. Стандарты дают дополнительные ограничения.[7]

Все новые разработки должны соответствовать международному стандарту качества ИСО, но, тем не менее, отечественные производители как сейчас, так и 20 лет назад были заинтересованы в собственном стандарте качества и такой был создан – это МЭК 61850, который характеризует системы и сети электроподстанций.[8]

МЭК – всемирная организация, разрабатывающая международные стандарты в области электротехники, электроники, телекоммуникаций и средств информационных технологий. [17, c. 8]

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

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

- в виде спецификации информационных технологий (описание функциональных возможностей и поведения систем информационных технологий, задокументированных в строгой форме;

- в виде систем информационных технологий, т.е. реализаций спецификаций информационных технологий. [3, с. 98]

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

Создание, хранение, применение эталонов, контроль за их состоянием подчиняются единым правилам, установленным ГОСТ «ГСИ». [3, с. 50]

Государственный стандарт Российской Федерации (ГОСТ Р) – стандарт, принятый государственным комитетом Российской Федерации по стандартизации, метрологии и сертификации. Стандарт определяет требования к описанию продукта, к пользовательской документации, программам и данным, входящих в комплект программ, и испытаниям пакетов программ.[9]

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

ГОСТ Р ИСО/МЭК 9294-93. Информационная технология. Руководство по управлению документированием программного обеспечения.

ГОСТ Р ИСО/МЭК 9126-93. Информационная технология. Оценка программной продукции. Характеристики качества и руководства по их применению. Стандарт определяет шесть комплексных характеристик, которые описываю качество программной системы (программного обеспечения, программной продукции): функциональные возможности; надежность, практичность, эффективность, мобильность.

ГОСТ Р ИСО 9127-94. Системы обработки информации. Документация пользователя и информация на упаковке для потребительских программных пакетов.

ГОСТ Р ИСО/МЭК 8631-94. Информационная технология. Программные конструктивы и условные обозначения для их представления.

ГОСТ Р ИСО/МЭК 12119:1994. Информационная технология. Пакеты программных средств. Требования к качеству и испытания. [3, с.93]

ВНИИ Гостандарт. Возникла потребность во введении в отечественные стандарты норм и требований, установленных на международном уровне.

ГОСТ 34.601-90 Информационная технология. Комплект стандартов на информационные системы. Автоматизированные системы. Стадия создания. [3, с. 97]

Именно в этом стандарте установлена рекламентация. Стадии развития автоматизированных систем:

  1. Формирование к требованиям создания автоматизированных систем
  2. Разработка концепции к созданию АС (разработка концептуальной модели информационной системы
  3. Техническое создание
  4. Эскиз для проекта
  5. Технический проект
  6. Рабочая документация (физическая модель и программное обеспечение информационной системы, разработка программного кода)
  7. Ввод в действие (тестирование и отладка, корректировка программного обеспечения)
  8. Сопровождение автоматизированной системы (эксплуатация информационной системы)[10]

Проблема сертификации услуг в России приобрела особую актуальность в связи с введением в действие Закона Российской Федерации «О защите прав потребителей» [3, с. 4]

Помимо государственных стандартов действуют отраслевые стандарты (ОСТ), стандарты предприятий (СТП).[11]

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

Примечательно мнение Ющенко Е.Л. тридцатилетней давности, что языковой стандарт должен регламентировать только правильные программы, а также диагностику допущенных ошибок. [10, с. 14]

Язык программирования – объект динамический, по мере накопления опыта применения электронно-вычислительных машин в той или иной нише развиваются языковые версии или происходит замена языка на другой. Отсюда тезис – каждый языковой стандарт нуждается в периодической ревизии. [10, с. 14]

В конце XX века в народное хозяйство СССР были внедрены стандарты языков Fortran и Базисный Fortran. Количество стандартов языков программирования сравнимо с числом языковых ниш, на рубеже – веков неуклонно росло. Стандарты могут определять единый язык, например, Basic, Pascal, Ada, Simula.

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

Во многочисленных докладах профессора МГУ Сухомлинского В.А., говорится, что область информационных технологий является основой индустрии обработки информации – важнейшего сектора общественного производства, оказывающего воздействие на темпы и характер современного общества. Уровень развития информационной индустрии и соответствующих технологий определяется уровнем развития научно-методических основ и в частности нормативной базы в области информационных технологий. Поэтому создание таких научно-методических основ является актуальным и стратегически важной задачей общества. Большую роль играет система международных организаций, ответственных за прогресс стандартизации информационных технологий. Масштабность, систематичность, интенсивность, научная обоснованность разработок в области стандартизации информационных технологий позволили к настоящему времени развить систему стандартов до такого уровня, при котором она становится главным носителем научно-методических основ в области информационных технологий. [3, с. 97]

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

Межгосударственный стандарт. Единая система программной документации. Схемы алгоритмов, программ, данных, систем. Обозначения условные и правила выполнения. ГОСТ19.701-98 (ISO 5807-85). Настоящий стандарт разработан методом прямого применения международного стандарта ISO 5807-85 «Обработка информации. Символы и условные обозначения блок-схем данных, программ и систем, схем программных сетей и системных ресурсов» взамен ГОСТ 19.002-80, ГОСТ 19.003-80. Распространяется на условные обозначения в схемах алгоритмов, программ, данных и систем, предназначенных для использования документации по обработке данных (схемы данных, программ, работы и ресурсов систем). Общие требования стандарта являются обязательными: используется для отображения различных видов задач обработки данных и средств их решения. Стандарт не распространяется на форму записей и обозначений, помещаемых внутри символов или рядом с ними и служащих для уточнения выполняемых ими функций. Схемы алгоритмов, программ, данных и систем - состоят из имеющих заданное значение символов, краткого пояснительного текста и соединительных линий. Схемы могут использоваться на различных уровнях детализации, причем число уровней зависит от размеров и сложности задачи обработки данных. Детализация обеспечивает взаимосвязь между уровнями. В области программирования общепризнанной ведущей организацией по разработке стандартов является институт ANSI (Американский национальный институт стандартов), лидер по установке стандартов языкового программирования, кодовых таблиц, клавиш и символов, выводимых на экран. [6, c.103]

Первоначально стандарты языков программирования являлись формально чисто американскими и утверждались Американским Национальным Институтом Стандартов (ANSI), Институтом по электротехнике и электронике (IEEE). Позднее стандарты стали фиксироваться Международной Организацией Стандартов (ISO) и ее подразделением по электротехнике (IEC). Поэтому современные стандарты могут иметь различные обозначения – ANSI/ IEEE, ANSI/ ISO/ IEC и т.д. [11, с. 24]

Международный стандарт ISO/OSI разработан международной организацией по стандартизации, предназначен для использования в области сетевого информационного обмена, представляет эталонную семиуровневую модель, известную как модель OSI (Open System Intercongtction – связь открытых систем). Первоначально усилия были направлены на разработку структуры (модели) протоколов связи цифровых устройств. Идея открытого семиуровневого соединения состоит в реализации модели, в рамках которой будут использованы различные протоколы. [8, с. 140]

Американский национальный институт стандартов - объединение американских промышленных и деловых групп, разрабатывающее торговые и коммуникационные стандарты, Сформирован в 1918 году. В ANSI представлены американские корпорации, правительственные службы, международные организации и частные лица. В области вычислительной техники Институт разрабатывает стандарты на языки программирования и интерфейсы, в частности на С, SQL, Fortran, интерфейс SCSI и др. Из принятых институтом стандартов известны: ANSI ХЗ.4 – 7-битная кодировка ASCII; ASA ХЗ.9-1966 – язык Фортран-66; ANSI С – стандарт языка С; ANSI ХЗ.64 – используется ANSI-графикой. ANSI является членом ISO.[13]

Немецкий институт по стандартизации DIN (Deutsches Institut fuer Normung e. V.), созданный в 1917 году, является национальной немецкой организацией по разработке стандартов. Членами DIN являются различные предприятия, союзы, государственные организации, торговые фирмы и научные институты, которые накопили значительный опыт в разработках нормативных документов. Основной деятельностью сотрудников института является организация работы всех отделов и комитетов, занимающихся разработкой нормативных документов и координирование процесса разработки стандартов и другой технической документации. Институт по стандартизации DIN представляет национальные интересы Германии и на международном уровне. [14]

Согласно сведениям Дэнни Калева, заимствованным в Национальной библиотеке имени Н. Э. Баумана, стандарт языка С опубликован Американским национальным институтом стандартов ANSI и Международной организацией по стандартизации ISO. Разработчикам программного обеспечения, написанного на C, рекомендуется соответствовать стандартам, поскольку это помогает создавать легко портируемые программы. Первый стандарт языка C был опубликован ANSI. Через некоторое время он был принят международной организацией по стандартизации ISO, продолжившей выпускать следующие версии стандарта, которые стали приниматься как стандарт и институтом ANSI. Несмотря на это стандарт до сих пор чаще называют ANSI C, а не ISO C.

В 1983 году Американский национальный институт стандартов сформировал комитет X3J11 чтобы установить спецификации стандарта C89. Стандарт был завершен в 1989 году и ратифицирован как ANSI X3.159-1989 «Язык программирования C.» Эта версия языка часто упоминается как «ANSI C», или «C89» (чтобы отличить её от C99).

В 1990 году, стандарт ANSI C90 был принят Международной организацией по стандартизации (ISO) как ISO/IEC 9899:1990, с изменениями форматирования. Эту версию иногда называют C90. Однако, термины C89 и C90 относятся в сущности к одному языку. Этот стандарт был отозван как ANSI/INCITS, так и ISO/IEC.

В 1995 году ISO опубликовала расширение, названное Поправкой 1, для стандарта ANSI-C. Его полное имя было ISO/IEC 9899/AMD1: 1995 или коротко - C95. Помимо исправления ошибок были внесены изменения в языковые возможности, такие как: добавление диграфов, спецификация стандартных макросов, улучшена многобайтная и широкосимвольная поддержка символов в стандартной библиотеке.

В марте 2000 года ANSI принял стандарт ISO/IEC 9899:1999. Этот стандарт обычно называют C99. Включает некоторые примечательные дополнения к предыдущему стандарту: несколько новых заголовков библиотек, включая stdint.h, <tgmath.h>fenv.h, <complex,h> ,улучшена совместимость с несколькими функциями С++, удалены несколько опасных языковых функций C89, таких как неявные объявления функций и неявный int. ISO для C99 опубликовали три технических исправления: ISO/IEC 9899:1999/Cor.1:2001(E), ISO/IEC 9899:1999/Cor.2:2004(E), ISO/IEC 9899:1999/Cor.3:2007(E).

Текущий стандарт языка С11, принятый в 2011 году как ISO/IEC 9899:2011. Функции включают в себя улучшенную поддержку Unicode, с использованием нового ключевого слова Generic, межплатформенный API и поддержку атомных типов на основном языке. ANSI C теперь поддерживается почти всеми широко используемыми компиляторами. Большая часть кода C, написанного в настоящее время, основана на ANSI C. Любая программа, написанная только на стандартном C и без каких-либо зависимых от аппаратного обеспечения предположений, практически гарантированно правильно компилируется на любой платформе с соответствующей реализацией C. Без таких предосторожностей большинство программ могут компилироваться только на определенной платформе или с конкретным компилятором.[15]

Международное сотрудничество в области стандартизации осуществляется по линии соответствующих международных, региональных и национальных официальных организаций. Принятые ими стандарты имеют соответственно статус международных или национальных. Среди международных официальных организаций главной является Международная организация по стандартизации (ISO), одним из важнейших направлений является разработка стандартов ISO на жизненный цикл программного обеспечения, оценка безопасности информационных технологий. Наиболее тесно ISO сотрудничает с IEC, МЭК. Среди национальных организаций наибольший вклад вносит ANSI, переименованный в настоящее время в NIST – неправительственная некоммерческая организация занимающаяся утверждение стандартов, но не разработкой.[16]

Просто и одновременно точно Джулиан Бакнелл определил, что стандартных алгоритмов разработаны и обкатаны учеными в области компьютерных наук с целью использования их «рабочими лошадками. Профессиональное использование базовых алгоритмов – это то, что дает заявлять о знании того или иного языка программирования. [28, c. 12]

Стандарты кодирования должны отражать лучший опыт проб и ошибок всего сообщества программистов. В них должны содержаться проверенные идиомы, основанные на опыте и твердом понимании языка. В частности, стандарт кодирования должен основываться на исчерпывающем анализе литературы по разработке программного обеспечения, и объединять воедино правила, рекомендации и наилучшие практические решения, которые в противном случае они оказываются разбросанными по многочисленным источникам. [25, с. 12]

Вывод:

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

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

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

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

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

Глава 2. Отечественный и международный подход к изучению конструкции языков программирования

Последнее десятилетие XX века стало периодом интенсивной деятельности по стандартизации различных аспектов информационных технологий. Эта деятельность осуществляется силами не только официальных органов стандартизации, но и многочисленными индустриальными консорциумами. Благодаря созданию стандартов обеспечивается переносимость приложений и информационных ресурсов между различными программно-аппаратными платформами. [12, c. 56]

Создано немалое количество международных, национальных и индустриальных стандартов разного назначения, много из которых стали уже стандартами де-факто. Деятельность по созданию и развитию стандартов активно продолжается.[17]

Категория стандартов де-факто широко применяются на практике. Создаются различными организациями, как NIST и ISO, так и индустриальными консорциумами, и отдельными компаниями. ANSI/ISO/IEC SQL-92 – пример стандарта де-факто (версия реляционного языка SQL), принятый Международным индустриальным консорциумом (W3Consortium) стандарт XML. [15, с. 20]

Герберт Шилд (Herbert Schildt), признанный авторитет в области программирования на языках С, С++, член комитетов ANSI/ISO, принимавших стандарт для языков С, С++ полагал, что концепция языка программирования неотрывно связана с его реализацией. Стандарт языкового программирования обеспечивает одинаковый результат компиляции одной и той же программы различными компиляторами. Как правило, при создании языка выпускается частный стандарт, определяемый разработчиками языка. При расширении сферы применения языка, появляются различные версии компиляторов, которые следуют не точно частному стандарту. В большинстве случаев идет расширение зафиксированных первоначально возможностей языка. ANSI, ISO, IEEE разрабатывают согласительный стандарт приводя наиболее популярные реализации языка в соответствие друг с другом. Очень важным фактором стандартизации языка программирования является своевременное появление стандарта, до широкого распространения языка. [26, с. 56]

По мнению Шилда Г. Языки программирования С, С++ - фундамент, на котором строится современное программирование. В 1989 году Американским национальным институтом стандартов принят стандарт для языка С. Эта версия известна как С89. Этот же стандарт принят Международной организацией по стандартизации. В 1995 году стандарт был усовершенствован. В 1998 году ANSI/ISO принят стандарт для языка С++ на основе C89, включая усовершенствования от 1995 года. В 1999 году был принят новый стандарт для языка – С99, включающая ряд усовершенствованных и новых средств, частично заимствованных у языка С++. Добавление новых возможностей на практике оказались несовместимы с языком С++.[18]

Взаимосвязь между версиями С89, С90 и С++ продемонстрирована в таблице 2.

В докладе Татаринцева А.А. на Всероссийской конференции в 2013 году, посвященной теме преподавания информационных технологий в Российской Федерации говорится о стандартизированном процедурном языке программирования Си, разработанного в начале 1970-х годов сотрудниками Bell Labs Томсоном К. и Ритчи Д., как развитие языка Би. Си был создан для использования в операционной системе Unix и был перенесен на многие операционные системы, став одним из самых популярных языков программирования. Для языка Си характерны лаконичность, стандартный набор конструкций управления потоком выполнения, структур данных и обширный набор операций.[19]

Язык Fortran первоначально был стандартизирован в 1966 году (Fortran66). Позже был пересмотрен в 1977 году (Fortran77, Fortran90).

Язык Java, получив широкое распространение, постепенно был расширен и модифицирован (Java2). Таким образом, очевидно, что у языка программирования могут появиться новые стандарты, отражающие современные нововведения.[20]

Чмирева Е.В., кандидат экономических наук, преподаватель Белгородского государственного университета считает, что практически все современные языки программирования являются типизированными, за исключением JavaScript и его диалектов.[21]

Строгая типизация обеспечивает безопасность. Программа, прошедшая проверку типов просто не может выпасть в операционную систему с сообщением, подобным «access violation», особенно это касается таких языков как С, С++ и Object Pascal, где применение показателей является типичным способом использования языка. В функциональных языках большая часть ошибок может быть исправлена на стадии компиляции, поэтому стадия отладки и общее время разработки программ сокращаются. Строгая типизация позволяет компилятору генерировать более эффективный код и тем самым ускорять выполнение программ. [13, c. 9]

Для задания команд процессору было необходимо создать специальный язык. Вначале команды кодировали с помощью чисел, например, цифра 1 могла означать сложение, 2 – умножение, 3 – деление и так далее. Кроме этого процессору нужно было передать и данные, над которыми следовало совершить те или иные операции. В результате самая простая программа представляла сложный шифр. Программистам приходилось помнить коды и форматы всех операций либо постоянно пользоваться специальными таблицами, поэтому они стремились создать более эффективный инструмент написания программ. [14, c. 157]

Первым шагом стала разработка символьного обозначения, в виде сокращения обычных слов, обозначающих операции (мнемоническая система). Требовалось создать способ автоматического перевода мнемонической записи в машинный код. Первый мнемонический язык программирования – Ассемблер – создала американка Г. М. Хоппер в1952 г. Ассемблер стал первым языком понятным и электронной машине и человеку, но был доступен узкому кругу специалистов из-за сложности изучения.[22]

Языки программирования используют символические обозначения (имена, идентификаторы) для данных (чисел, строк, структур) и элементов программ (блоков, функций, процедур). {22, с. 22]

Язык PL/1 (NPL) широкого применения был разработан в 1960-70-х годах как объединение лучших черт универсального языка Fortran, позволяющего записывать математические формулы в понятном для человека виде, и специализированного языка Cobol, ориентированного на решение экономических задач. [6, с. 56]

В 1964 году создан язык Basic, облегчающий написание простых программ, распространен для работы на микрокомпьютерах.[16, с. 160]

Basic считается базовым средством программирования для персональных компьютеров IBM PС, созданные фирмой Microsoft. На персональных версиях имеется несколько версий языка: традиционный Basic (без ОС); структурный Basic (MS DOS); графический Basic (Windows). Традиционно Basic – это язык диалогового программирования. После появления компьютеров IBM PС полностью пропала потребность в устаревших моделях ЭВМ и традиционном Basic. Для первых моделей IBM PС была создана новая версия Quick Basic PC как базовое средство программирования в операционной системе MS DOS, это диалоговый язык структурного программирования родственный языку Паскаль. [23]

В настоящее время на его основе фирма Microsoft создала Visual Basic, язык широкого назначения, как базовое средство программирования для новейших компьютеров оперативной системы Windows. [24, с. 28]

В конце ХХ века стандарты языков Fortran и Basic были внедрены в народное хозяйство СССР. Выражалось в написании и использовании учебников по стандарту языка, реализации адаптации и переноса мобильных программных продуктов, разработкой и эксплуатацией трансляторов и систем [8, с. 128]

В 1970 –х годах швейцарский математик Н. Вирт создал язык программирования Pascal, с целью обучения студентов прикладной математике с помощью персонального компьютера. Язык Pascal заинтересовал производителей [1, с. 18]

Профессор Вирт стремился избавиться от недостатков алгоритмического языка Algol, ставшего фактически стандартом для описания компьютерных алгоритмов, но оставил в Pascal строгость описания, богатство управляющих структур, при этом сделав его более легким для восприятия. [14, c. 158]

На его основе Pascal Вирт разработал два новых языка – Modula (1970) и Oberon (1985), представляющие собой дальнейшее развитие Pascal. Но эти языки не получили популярности.[24]

Язык APL оказал влияние на функциональное программирование и стал первым языком, поддерживавшим обработку массивов. [5, c. 67]

Apl – язык, предназначенный для решения математических задач, отличается простотой и лаконичностью записи, развитыми средствами работы с векторами и матрицами, удобными средствами диалога. [8, с. 145]

Язык Simula, появившийся примерно в это же время, впервые включал поддержку объектно-ориентированного программирования. В середине 1970-х группа специалистов представила язык Smalltalk, который был уже всецело объектно-ориентированным, включал среду разработки с редактором текста. [6, с. 56]

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

С++ – компилируемый статистически типизированный язык программирования общего назначения, поддерживает такие парадигмы программирования, как процедурное программирование, объектно-ориентированное программирование, обеспечивает модульность, раздельную компиляцию, обработку исключений, абстракцию данных, объявление типов объектов, виртуальные функции. Стандартная библиотека включает общеупотребительные контейнеры и алгоритмы. В отличие от языка Си наибольшее внимание уделено поддержке объектно-ориентированного и обобщенного программирования. [18, c. 48]

Синтаксис С++ унаследован от языка С, при разработке С++ одним из принципов было сохранение совместимости с Си. Тем не менее язык С++ в строгом смысле не является надмножеством Си; множество программ, которые могут одинаково успешно транслироваться, как компиляторами Си, так и компиляторами С++.[25]

В 1972 году был создан Пролог - наиболее известный язык логического программирования, основан на аппарате математической логики. Программа содержит объявления фактов и вопросов об объектах и их отношениях, объявления правил отношений.[26]

В 1973 году в языке ML была реализована расширенная система полиморфной типизации, положившая начало типизированным языкам функционального программирования. [27]

Среди большого числа языков самую заметную роль в развитии программирования сыграли три пары: Algol-60 и Fortran, Pascal и C, Java и С++. Противостояние, заложенное в этих парах, способствовало прогрессивному развитию языков программирования. [16, с. 20]

Отличительную особенность языков составляют национальные и межнациональные стандарты. Проявляется принцип гармонизации стандартов – все стандарты, относящиеся к одному объекту, должны соответствовать друг другу. [10, с. 6]

Программа, написанная на языке программирования, проходит этап трансляции, когда происходит преобразование исходного кода программы в объектный код, который далее пригоден к обработке редактором связи, специальной программы, обеспечивающая построение загрузочного модуля, пригодного к выполнению. Трансляция может выполняться с использованием средств компилятором и интерпретаторов. Компиляторы транслируют всю программу, но без ее выполнения. Интерпретаторы выполняют пооперационную обработку и выполнение программы. Необходимым средством для разработки программы являются программы-отладчики, предназначенные для трассировки и анализа выполнения других программ. [16, с. 16]

В некоторых языках, например, Ada, созданного в 1980 году, Джином Ишбиа (Америка), строгая типизация вынуждает программиста явно описывать тип всех значений и функций. Чтобы избежать этого, в строго типизированные функциональные языки встроен специальный механизм, позволяющий компилятору определить типы констант, выражений и функций из контекста.[28]

Основной недостаток традиционной практики составления программ для ЭВМ заключается в том, что никто не может гарантировать отсутствия ошибок в программе. Особенностью традиционной практики является поиск ошибок в программах при их отладке на ЭВМ. [21, с. 135]

Утверждение Дениса Ритчи о том, что у «стандартов слабые зубы», достаточно справедливо, но, когда язык начинает широко распространяться, стандарт все же приобретает и влияние, и значимость. Отчасти это происходит просто потому, что его можно публично критиковать, отчасти — из-за того, что он придает проекту определенную весомость.[29]

Российское программирование имеет богатую историю, ведущую свой отчет от 50-х годов, когда программирование в основном предназначалось для решения военных и промышленных задач, например, для точного расчета места приземления космического корабля Юрия Гагарина. Ранние успехи советского программирования во многом связаны с тем, что советская экономика всегда была сильно индустриализованной и технически ориентированной. Растущая потребность в программистах была разрешена путем переориентации части математиков и физиков на информатику. В те времена количество программистов было очень небольшим, так как область применения программирования была достаточно ограниченной. Тем не менее, к концу 60-х годов советская школа программирования находилась на мировом уровне и в промышленной разработке программ, и в научных исследованиях. С начала 70-х годов в программировании, как и в ряде других отраслей, начали наблюдаться первые признаки застоя. [30]

Впервые в нашей стране появились публикации относительно стандартизации языков программирования в 1989 году. Александров А.Л., Бабенко Л.П., Кауфман В.Ш. и Ющенко Е.Л. в своей книге рассмотрели действующие стандарты, их роль в промышленном изготовлении программ и перспективы. В книге проанализирован накопленный опыт в данной области как в нашей стране, так и за рубежом, раскрываются последовательные этапы проектирования, разработки, описания и применения стандартов языков программирования. Изложение основано на положениях и понятиях, принятых государственной системой стандартизации и международными организациями по стандартизации. [10, с. 3]

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

Доцент кафедры информационных систем и технологий высшей школы информационных технологий и автоматизированных систем САФУ Абрамова Л.В. считает, что в настоящее время в качестве индустриальной среды используется конкретная среда программирования (Delphi, Access и др.) и знание базового языка программирования не требуется. Круг используемых языков программирования стабилизировался. Анализ синтаксиса и семантики языков программирования показывает, что их родственные конструкции различаются «внешним видом» (набором ключевых слов, порядком набора компонентов). Таким образом конструкции современных языков имеют общее содержание (семантику), различный порядок следования компонент (синтаксис) и разные ключевые слова (лексику). [31]

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

В конце XX века была распространена организация стандарта языкового программирования по принципу «ядро + модули», например, языки: Cobol, Basic, Fortran-8х. Каждый такой стандарт состоит из ядра и совокупности модулей, которые состоят из совокупности языковых конструкций. В ядре и модуле могут быть выделены вложенные уровни. Подобная организация стандарта позволяет обеспечить выбор такого стандартного подмножества, которое наиболее полно будет удовлетворять потребностям конкретных пользователей и возможностям реализации стандарта языка.[32]

Остановимся на основных проблемах стандартизации языков программирования, выделяя четыре: отбор, описание, контроль, согласование. Любая деятельность по стандартизации преследует цель выпуска стандартизованной продукции. Поэтому основная проблема стандартизации - это отбор языков, подлежащих стандартизации, определением их стандартов, контролем за соблюдением требований и взаимосвязью стандарта языка программирования со стандартами, регламентирующими окружение языка. [10, с. 8]

Проблема связана с исследованием промышленного производства программ, фиксацией используемых языков и отбором языков – кандидатов в стандартизацию. Вторая проблема стандартизации языков программирования связана как с отсутствием общепризнанных методов точного описания языков программирования, так и с особой природой стандартов как документов, предназначенных для чрезвычайно разнородной аудитории – от специалистов по реализации языков программирования до работников службы стандартизации. В связи с этим общепринятым средством описания стандартов языков программирования остается естественный язык (русский, английский и т.д.) Третья проблема стандартизации связана не только с относительно небольшим опытом, но и с сущностью задачи. Прежде всего она касается определения объектов стандартизации, подлежащих контролю, возможности проведения контроля в принципе и его эффективности, перечня контролируемых ограничений и реакций на отклонение от стандарта. При контроле программ указанные трудности по существу связаны со стремлением понимать стандарт не как совокупность проверяемых содержательных требований, а как «идеологический» документ, предназначенный для управления мышлением разработчиков программ. Четвертую проблему связывают с неразвитостью стандартов среды функционирования программ. [10, с. 8-9]

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

2.2 Влияние информатизации общества на стандарты языкового программирования

Стандартизацию языков программирования в настоящее время осуществляют комитеты OSO/ANSI, однако их деятельность направлена на неоправданное синтаксическое расширение языков. Для исключения существующих недостатков предложены способы задания семантического и синтаксического стандартов языков программирования. Семантическое описание любой конструкции языка (оператор, тип данных, процедура и т.д.) должно содержать не менее трех обязательных частей: список компонент, описание каждой компоненты, описание конструкции в целом. [16, с. 20]

На одиннадцатой открытой Всероссийской конференции по теме преподавания информационных технологий в Российской Федерации говорилось о сотрудничестве между специалистами IT-технологий университетов России и Intel в области развития инициативы в сфере разработки и применения современных инструментов программирования. В рамках программы на 2013 год были разработаны сертификационные программы подготовки профессиональных программистов – специалистов в области параллельного программирования с использованием инструментов Intel, которые отражены на портале Национального открытого университета «Интуит». [18, с. 2]

Российский рынок информационных технологий образовался примерно в начале 90-х годов прошлого века. Понадобилось всего десять лет, чтобы на нем сформировались успешные компании по производству и внедрению информационных технологий. Для IT-бизнеса очевидным стала необходимость тесного сотрудничества с государством для дальнейших перспектив развития. Как следствие в 2001 году создана некоммерческая организация, защищающая интересы отрасли, Ассоциация предприятий компьютерных и информационных технологий (АП КИТ).[34]

Согласно данным официального сайта АП КИТ в 2001 году состоялось учредительное собрание Ассоциации предприятий компьютерных и информационных технологий (далее АПКИТ). В собрании приняли участие компании: 1С, 3COM, ABBYY, Aquarius, ARRAVA, Cable & Wireless, Cisco Systems, Cognitive Technologies, Compaq, Compulink, DPI, EDventure Holdings Inc., ELST, Hewlett-Packard, IBM, IBS, Intel, iТeco, Kraftway Computers, Microsoft, Oracle, R-Style, Verysell, XEROX, АСК, АКСИТ, Белый Ветер, Диалог Наука, ИВК, Интерфейс, Корус АКС, Кречет, Лаборатория Касперского, Ланит, Марвел, МОНТ Дистрибуция, НПП НАМИП, Пирит и др.[35]

В настоящее время наиболее известными отечественными разработками в области автоматических библиотек Леонидова Г.Ф. выделяет ППП, «ИРБИС», «МАРК-SQL», «OPAC-Global», «Библиотека-3», «Библиобус», «Руслан», Академия+», «Буки». Среди зарубежных можно выделить: «liberMedia» «Absotheque UNICODE» (Франция), «VIRTUA» (США), «Aleph» (Израиль). [15, с. 16]

Согласно открытых источников web - сайта Glassdoor, где сотрудники, как бывшие, так и настоящие имеют возможность анонимно провести обзор компаний рынка IT – индустрии, по-прежнему следует считать эпицентром развития мировых информационных технологий американские компании, среди них: Citrix Systems, Intel, Yahoo, Cisco System, Microsoft, eBay, Apple, Facebook, Twitter, Google и другие.[36]

Ведущие IT-компаний России: CROC, IBS, Technoserv A/C, Compulink, Fun box, СКБ «Контур», ЕРАМ, JustWork, Яндекс и другие.[37]

Вывод:

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

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

Среди более восьми тысяч языков самую заметную роль в развитии программирования сыграли три пары: Algol-60 и Fortran, Pascal и C, Java и С++. Противостояние, заложенное в этих парах, способствовало прогрессивному развитию языков программирования Языки программирования используют символические обозначения (имена, идентификаторы) для данных

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

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

Глава 3. Сходства и отличия стандартов языкового программирования в России и за рубежом

Сравнивая между собой конструкции современных языков программирования и выделив их общую составляющую, можно описать «универсальный» язык программирования, имеющий центральные компоненты, имеющиеся во всех основных языках программирования. Такие компоненты являются основой любого современного языка, которые прошли проверку временем и практикой. [25, с. 20-34]

Существующая ныне система стандартизации языков программирования не способствует выполнению этой задачи. Главная проблема состоит в том, что при описании стандарта семантическая составляющая не отделена от синтаксиса и лексики. При модернизации стандартов комитеты ISO/ANSI предпочитают скорее добавлять в язык новые возможности, чем исключать редко используемые, что приводит к неоправданному расширению языков. По мнению Андреева А. необходимо отделить семантику каждой языковой конструкции от синтаксиса и лексики, а также разработать единые правила описания семантики языка программирования.[38]

Языки программирования изменяются гораздо более динамично, чем естественные языки, однако постоянно нуждаются в стандартизации. При отсутствии единого стандарта языка программирования разработчики трансляторов будут вправе вносить любые изменения в язык, какие сочтут нужными. Разработчики прикладных программ заинтересованы в том, чтобы различные трансляторы одного и того же языка программирования поддерживали одинаковые правила языка, избегая необходимости переписывать программу заново каждый раз при замене транслятора. При этом на практике различия в реализациях языков направлены в сторону расширения стандартных конструкций языка, а не их замены. Обычно документация по конкретному транслятору содержит раздел «Отличия от стандарта», который позволяет разработчикам прикладных программ освоить особенности конкретной реализации языка.[39]

Признаки эффективного использования стандартного языка программирования - повышение качества кода:

1.-набор используемых символов оказывает решающее воздействие на остальные строительные элементы синтаксиса. До недавнего времени наиболее распространенным считался набор «американский стандартный код для обмена информацией», 7-разрядный, обеспечивает представление 128 символов, включая латинские буквы, цифры, знаки основных математических операций и знаки пунктуации. Позже появилась европейская модификация ASCII, называемая Latin 1 (стандарт ISO 8859-1). В ней используются 8 разрядов, дополнительные комбинации (коды 128-255) отводятся для представления специфических групп алфавитов западноевропейских языков, символов псевдографики, некоторых букв греческого алфавита, ряда математически и финансовых символов. В зависимости от использования кодов 128-255 различают несколько вариантов стандарта ISO 8859 (табл. 4); [9, с. 148-149]

В 1993 году консорциумом компании Apple Computer, Microsoft, Hewlett-Packard. DEC и IBM был разработан 16-ти битовый стандарт ISO 10646, определяющий универсальный набор символов. Новый код позволяет задать 65536 символов.[40]

2. отображением множества кодов на множество символов. Например, русские кодировки КОИ-8 (Код обмена информацией восьмибитовый) и "Windows CP-1251", традиционно используемые в операционных системах Unix и MS Windows, имеют один и тот же диапазон кодов, и один и тот же набор символов, но отображения их различны (одни и те же символы имеют разные коды в кодировках КОИ-8 и Windows). [7, с. 35-36]

Одно из высказываний разработчика языка С, Герба Саттера: «Лучшее в стандарте то, что предоставляет большой выбор». [41]

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

1. кодировка КОИ-8 (это наиболее старый стандарт, принятый еще в конце 70-х годов XX века). КОИ-8 в основном используется в системе Unix и до недавнего времени была стандартом де-факто для русскоязычной электронной почты. Последнее время, однако, все чаще в электронной почте используют кодировку Windows;

2. так называемая альтернативная кодировка CP-866, которая используется в системе MS DOS. Она не удовлетворяет некоторым требованиям международных стандартов - например, ряд русских букв совпадает с кодами символов, используемых для управления передачей по линии. Альтернативная кодировка постепенно уходит в прошлое вместе с системой DOS;

3. кодировка Windows CP-1251, которая появилась значительно позже кодировки КОИ-8, но создатели русской версии Windows не захотели воспользоваться КОИ-8 (по-видимому, из-за того, что коды русских букв в КОИ-8 не упорядочены в соответствии с алфавитом; в CP-1251 коды русских букв упорядочены, за исключением буквы е). В связи с распространением операционной системы Windows, кодировка Windows получает все большее распространение;

4. кодировка, используемая в компьютерах Apple Macintosh.

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

С повсеместным переходом на кодировку Unicode все проблемы такого рода должны исчезнуть. Кодировка Unicode, стандарт которой принят в 1991 году, включает символы алфавитов всех европейских стран и кириллицу. К сожалению, большинство существующих компьютерных программ приспособлено к представлению одного символа в виде одного байта. Поэтому в настоящее время часто используется промежуточное решение: компьютерные программы работают с внутренним представлением символов в кодировке Unicode (такое решение принято в языках Java и C#). При записи в файл символы Unicode приводятся к однобайтовой кодировке в соответствии с текущей языковой установкой. [7, с. 45]

Доцент Ростовского социально-экономического института А.А. Хлебников выделяет в языке Си тип char, представляя значение символа, реализуемое одним байтом. При этом тип wchar_t используется для C++, реализуются два байта. [23, с. 15]

Использование символов за пределами ASCII (например, символов KOI8-R или символов Юникода) зависит от реализации: иногда они разрешаются только в комментариях и символьных/строковых константах, а иногда и в идентификаторах. В СССР существовали языки, где все ключевые слова писались русскими буквами, но популярность подобные языки не завоевали (исключение составляет Встроенный язык программирования 1С: Предприятие). [1, c. 84]

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

Расширение набора используемых символов сдерживается тем, что многие проекты по разработке программного обеспечения являются международными. Очень сложно было бы работать с кодом, где имена одних переменных записаны русскими буквами, других — арабскими, а третьих — китайскими иероглифами. Вместе с тем, для работы с текстовыми данными языки программирования нового поколения (Delphi 2006, C#, Java) поддерживают Unicode.[42]

По мнению Дугласа Крокфорд, ведущего специалиста по JavaScript в Yahoo, создателя и популяризатора формата JSON (JavaScript Object Notation), любой язык программирования несет свои сильные и слабые стороны. Комитеты по стандартизации могут убрать из языка неудачные фрагменты, способные привести к сбою программ, в которых эти «несовершенные программы» необходимы для использования. На практике добавляются новые функции к многочисленным уже существующим и не слишком удачным, причем эти новые функции не всегда гармонично сочетаются, что порождает новые проблемы. Язык программирования JavaScript считает языком контрастов, в котором много ошибок и сложностей. Java мог бы стать альтернативой строго типизированного классического языка, но разработчики потерпели неудачу, при этом JavaScript процветает.[43]

Многие современные языки программирования имеют стандарты. Это языки С/С++, С#, Ada, Fortran, Cobol, Pascal. Наиболее доступны стандарты языков С/С++, поскольку по этому вопросу имеется обширная литература и разработчики транслятора не позволяют себе существенных отклонений от стандарта. С языком Pascal сложилась иная ситуация. Многочисленные учебники содержат описание популярной, но не единственной реализации языка Borland Pascal (Turbo Pascal). Кроме того, существует обширная литература Delphi, в которой описывается диалект Object Pascal. [11, с. 24]

Рапаков Г.Г. и Ржеуцкая С.Ю. считают, что среди многообразия языков программирования, одним из лучших является Pascal. Первый стандарт Pascal разработан в 1983 году, практически полностью совпадает с описанием Вирта, утвержден позже (EN 27185:1992). Второй стандарт - это расширенный вариант языка, ANSI/ISO/IEC 10206:1991. Последний стандарт Object Pascal (часто употребляем как Delphi) формально не утвержден, но оформлен в виде отчета в 1993 году ANSI/ХЗ-TR-13-1994.[44]

По версии методической преподавательской работы Центра Компьютерного обучения Московского государственного института электронной техники (технического университета): в настоящее время язык Object Pascal является одним из более распространенных языков программирования, поскольку идеально подходит для обучения основам программирования и вместе с тем имеет возможности для написания профессиональных программ. [1, с. 3-4]

Следует согласиться с мнением Герба Саттера и Андрея Александреску о целесообразности применения стандартов языкового программирования, которые обеспечивают повышение качества кода, а однотипное решение одинаковых задач повышает скоростные показатели и ясность. При работе в команде IT –специалистов использование стандарта позволяет уменьшить разногласия среди них и направить внимание разработчиков на действительно важные детали. [45]

Вывод:

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

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

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

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

Заключение

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

Изучением данной темы во второй половине XX века занимались отечественные ученые (Ершов А. П., Ляпунов А. А., Канторович Л. В., Донсков М., Шварцбурд С.И., Антипов И.Н., Монахов В.М. и другие) и зарубежные (Ишбиа Дж., Тефт Т., Вирт Н., Гослинг Д., Страуструп Б., Томсон К., Стил Г., Кнут Д. и так далее).

1980 год можно условно назвать временем консолидации. В этот период правительство Соединенных штатов стандартизировало язык Ada, производный от Pascal и предназначенный для бортовых систем управления военными объектами, который впоследствии получил признание в том числе и среди отечественных программистов. Язык С ++ объединил в себе черты объектно-ориентированного и системного программирования, и получил признание во всем мире, в настоящее время стандарты языка С являются наиболее используемыми и доступными для понимания и изучения, по сравнению с другими. При этом стандартизированы многие современные языка программирования С/С++, С#, Ada, Fortran, Cobol, Pascal. В ряде стран, в том числе и в Японии осуществлялись значительные инвестиции в изучение «языков пятого поколения», которые включали бы в себя конструкции логического программирования.

Начало XXI века характеризуется развитием бурного интереса к возможностям информационных технологий, и внимание к IT-индустрии по-прежнему возрастает. Источниками к изучению данной темы послужили работы доцентов и профессоров отечественных университетов и кандидатов наук, среди них необходимо выделить: Хлебникова А.А., Абрамову Л.М., Чмиреву Е.В., Трофимову И.А., Громова Ю.Ю. и т.д. Наиболее доступно и динамично о проблемах и перспективах стандартизации языкового программирования донес Терехов А., автор статьи «Российская индустрия программирования». Использованы труды зарубежных авторов: Саттер Г., Александреску А., Хайт Э., Ритчи Д., Бакнелл Дж. и других.

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

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

Библиография

  1. Немцова Т.И., Гоглова С.Ю., Абрамова И.М. Программирование на языке высокого уровня. Программирование на языке Object Pascal: учебное пособие/ Л.Г. Гагарина, М.: ИД «ФОРУМ»-ИНФРА-М, 2009. - 496 с.
  2. Николаев В.Т., Купцов С.В., Тикменов В.Н. Практика программирования в инженерных расчетах: учебное пособие, М.: ФИЗМАТЛИТ, 2018. - 440 с.
  3. Дубова Н.Д., Портнов Е.М. Основы метрологии, стандартизации и сертификации: учебное пособие, М.: ИД «ФОРУМ» - ИНФРА-М, 2009. - 256 с.
  4. Трофимова И.А., Яровая О.В. ЕГЭ. Информатика. Универсальный справочник, М.: ООО «Издательство «Эксмо», 2017. - 240 с.
  5. Исаев Г.Н. Информационные технологии, М: Омега-Л, 2011, - 464 с.
  6. Камаев В.А., Костерин В.В. Технологии программирования, — 2-е изд., М.: ФГУП «Издательство Высш. шк., 2006. – 454 с.
  7. В.А. Голиков Теория программирования: учебное пособие. Часть вторая/ В.А. Голиков, М.: Московский финансово-промышленный университет «Университет», 2006. - 64 с.
  8. Громов Ю.Ю., Дидрих И.В., Иванова О.Г., Ивановский М.А., Однолько В.Г. Информационные технологии: учебное пособие, Тамбов: ФГБОУ ВПО «ТГТУ», 2015. - 260 с. – ISBN 978-5-8265-14-28-3.
  9. Орлов С.А. Теория и практика языков программирования: Учебник для вузов. Стандарт 3-его поколения. - СПб.: Питер, 2014. - 688 с. ISBN 978-5-496-00032-1
  10. Александров А.Л., Бабенко Л.П., Кауфман В.Ш., Ющенко Е.Л. Стандартизация языков программирования/под ред. Ющенко Е.Л. Киев: Тэхника, 1989. – 160 с.
  11. Рапаков Г.Г., Ржеуцкая С.Ю. Программирование на языке Pascal. – СПб.: БХВ-Петербург, 2004. – 480 с. ISBN 5-94157-401-0
  12. Когаловский М.Р. Перспективные технологии информационных систем. М.: ДМК Пресс; М.: Компания АйТи, 2003. – 288 с. ISBN 5-94074-200-9
  13. Чмирева Е.В. Функциональное программирование и интеллектуальные системы: учеб. Пособие/Е.В. Чмирева, О.С. Резниченко, Е.А. Лавриненко. – Белгород: ИД «Белгород» НИУ «БелГУ», 2017. – 70 с. ISBN 978-5-9571-2432-0
  14. Сороко Г.Я., Михненков О.В., Куприянов Н.С., Шемтова О.Г. методологические основы анализа информационных процессов в организационных системах: Учебное пособие/ГУУ. М. 2004. – 206 с.
  15. Леонидова Г.Ф. Программно-техническое обеспечение автоматизированных библиотечно-информационных систем: учебное пособие. Часть 2-я. Кемерово: Кемеровский государственный ун-т культуры и искусств. 2012. – 264 с. ISBN 978-5-8154-0221-8
  16. Абрамова Л.В. Инструментальные средства информационных систем: учебное пособие/Л.В. Абрамова; Сев. (Арктич.) федер. ун-т им. М.В. Ломоносова. Архангельск: ИПЦ САФУ, 2013. – 118 с. ISBN 978-5-261-00851-4
  17. Дарьенков А.Б., Титов Д.Ю. Системы программного управления техническими системами: учебное пособие/ А.Б. Дарьенков, Д.Ю. Титов; Н. Новгород, Нижегород. гос. техн. Ун-т им. Р.Е. Алексеева, 2018. – 225 с. ISBN 978-5-9273-2027-1
  18. Преподавание информационных технологий в Российской Федерации: материалы одиннадцатой открытой всероссийской конференции. Воронеж: Воронежский государственный университет, 2013. – 332 с. ISBN 978-5-502-01036-8
  19. Серебряков В.А. Теория и реализация языков программирования: учебное пособие/ В.А. Серебряков, М.П. Галочкин, Д.Р. Гончар, М.Г. Футурян. М.: МЗ-Пресс, 2003. – 345 с. ISBN 5-94073-053-1
  20. Витаманюк А. Компьютер своими руками: справочное пособие. М., СПб., Н. Новгород: Питер, 2005. – 283 с.
  21. Каймин В.А. «Информатика»: учебник, М.: ИНФРА-М, 2002. – 272 с.
  22. Голицина О.Л., Максимов Н.В., Партыка Т.Л., Попов И.И. «Информационные технологии: учебник, ФОРУМ: ИНФРА-М, М, 2009, - 608 с.
  23. Хлебников А.А. Информационные технологии: учебник, М.: Кнорус, 2016. – 466 с.
  24. Матвеев М.Д., Юдин М.В., Прогди Р.Г. Windows 8/ Полное руководство. М: Наука и техника, 2013. – 658 с.
  25. Саттер Г., Александреску А. Стандарты программирования на С++. 101 правило и рекомендация: книга, ИД Вильямс, ISBN 978-5-8459-1933-5, 2005. - 224 с.
  26. Шилд Г. Справочник программиста С/С++, 3-е издание, М: ООО «ИД Вильямс», 2018. – 432 с. ISBN 978-5-8459-2141-3 (рус.)
  27. Крокфорд Д. JavaScript: сильные стороны. СПб.: Питер, 2012. – 176 с. ISBN 978-5-459-01263-7
  28. Джулиан М. Бакнелл «Фундаментальные алгоритмы и структуры данных в Delphi» Торгово-издательский дом DiaSoft, Москва -С.Петербург - Киев, 2003. – 560 с.

Периодические издания:

  1. Семенов А.Б. Современные тенденции развития техники СКС//Первая миля, М., 2016; № 8 (61). - 95 с.
  2. Андреев А. Эволюция современных языков программирования//Мир ПК, М., 2001; № 03. - 100 с.
  3. Ритчи Д. Будущее по Деннису Ритчи //Мир ПК, М., 2001 г. № 3. - 100 с.

Электронные ресурсы:

  1. Иванов К.К. Проектирование информационных систем//Молодой ученый, Казань, 2017; № 19. – 434 с., URL: http: //the programmer.ru/ (дата обращения: 07.07.2019)
  2. Захаров В.Б., Мальковский М.Г., Мостяев А.И. Проблема выбора языков программирования при разработке кроссплатформенных приложений/ International Journal of Open Informational Technologies, № 7, 2017. URL: https://cyberleninka.ru ISSN: 2307-8162 vol 5, (дата обращения 12.07.2019)
  3. Калев Д Стандарты языка С: материал из Национальной библиотеки имени Н.Э. Баумана, 2001, URL: https://www.osp.ru/pcworld/2001/03/161321/ (дата обращения 08.07.2019)
  4. Ассоциация предприятий компьютерных и информационных технологий. URL: https://apkit.ru/about/info/mission/ (дата обращения 06.07.2019)
  5. Хоман Р., Бартон Р., Бесс Т. URL: http://www.glassdoor.com (дата обращения 12.07.2019)
  6. Терехов А. Российская индустрия программирования. № 3. 2002. URL: http://www.osp.ru/os/2002/03/181263 (дата обращения 13.07.2019)
  7. URL: http://www.instandard.ru/ansi/ (дата обращения 10.07.2019)

Приложение

1. Схема ветвящегося алгоритма (рис. 1) [1, с.9-10]

Начало

Ввод А, В

Нет

А< B

Q=B

Да

Q=А

Вывод Q

Конец

Схема линейного алгоритма

S=A+B

Вывод S

Конец

2. Идеализированная схема комплексной стандартизации языков программирования (1989 г.) (рис.2) [10, с. 15]

Метастандарты

П

П

Т

Т

Т

Т

П

П

Исходные стандарты

Стандарты контроля

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

Таблица 1

Термин

Определение

Основные понятия

1. Программа

Program

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

2. Программное обеспечение

Научная и практическая деятельность по созданию программ

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

Programming

Совокупность программ системы обработки информации и программных документов, необходимых для эксплуатации этих программ

Виды программ

4. Системная

программа

System program

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

5. Управляющая программа

Control program

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

6. Супервизор

Supervisor

Часть управляющей программы, координирующая распределение ресурсов системы обработки информации

7. Прикладная

программа

Application program

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

8. Программа обслуживания

Utility program

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

9. Абсолютная программа

Non-relocatable program

Программа на машинном языке, выполнение которой зависит от ее местоположения в оперативной памяти

10. Переместимая программа

Relocatable program

Программа на машинном языке, выполнение которой не зависит от ее местоположения в оперативной памяти

11. Реентерабельная программа

Reenterable program

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

12. Мобильная программа

Portable program

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

13. Драйвер

Driver

Программа, предназначенная для управления работой периферийных устройств, обычно в мини- и микроЭВМ

14. Подпрограмма

Subprogram

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

15. Программный

модуль

Program module

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

16. Исходный модуль

Source module

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

17. Объектный модуль Object module

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

18. Загрузочный модуль Load module

Программный модуль, представленный в форме, пригодной для загрузки в основную память для выполнения

19. Макроопределение

Macrodefinition

Программа, под управлением которой макрогенератор порождает макрорасширения макрокоманд

20. Рекурсивная подпрограмма

Recursive subroutine

Подпрограмма, которая может обращаться к себе самой

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

21. Система программирования

Programming system

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

22. Кросс-система программирования

Cross-programming system

Система программирования, программные компоненты которой порождают программы на машинном языке, отличном от того, в среде которого они работают

23. Язык программирования

Programming language

По ГОСТ 28397-89

24. Алгоритмический язык

Algorithmic language

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

25. Проблемно-ориентированный язык

Problem-oriented language

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

Примечание. Проблемно-ориентированный язык обычно имеет набор специфических изобразительных средств

26. Исходный язык

Source language

Язык программирования, используемый для первичного представления программы

27. Машинный язык

Machine language

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

Примечание. Для выполнения программы на машинном языке не требуется применение трансляторов, компиляторов и интерпретаторов

28. Автокод

Autocode

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

29. Язык ассемблера

Assembly language

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

Примечание. Язык ассемблера обычно включает в себя макрокоманды

30. Язык высокого уровня

High-level language

Язык программирования, понятия и структура которого удобны для восприятия человеком

31. Макроязык

Macrolanguage

Язык программирования, предназначенный для представления макроопределений.

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

32. Макрокоманда

Macroinstruction

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

33. Макрорасширение

Macroexpansion

Последовательность предложений, порождаемая макрогенератором при обработке макрокоманды на основании макроопределения

34. Декларативный язык

Declarative language

Язык программирования для выражения определений.

Примечание. В качестве такого языка часто выступает язык описания данных

35. Объектно-ориентированный язык Object-oriented language

Язык программирования, который соответствует концепциям объектно-ориентированного программирования

36. Процедурный язык

Procedural language

Язык программирования, в котором действия над данными выражаются в терминах последовательностей команд

37. Функциональный язык

Functional language

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

38. Транслятор

Translator

Программа или техническое средство, выполняющие трансляцию программы.

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

39. Конвертор языка

Converter

Транслятор с некоторого языка на другой язык такого же уровня

40. Компилятор

Compiler

Программа или техническое средство, выполняющие компиляцию

41. Ассемблер

Assembler

Программа или техническое средство, выполняющие ассемблирование

42. Макрогенератор

Macrogenerator

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

43. Интерпретатор

Interpreter

Программа или техническое средство, выполняющие интерпретацию.

Примечание. Большинство интерпретаторов осуществляют интерпретацию программы путем последовательной интерпретации ее предложений

44. Редактор связей

Linkage editor

Linker

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

45. Библиотека программ. Библиотека

Program library

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

Примечание. Библиотека программ часто называется в соответствии с природой содержащихся в ней элементов

Виды программирования

46. Структурное

программирование

Structured programming

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

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

47. Объектно-ориентированное программирование

Object-oriented programming

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

Примечание. Объекты состоят из данных и операций над данными

48. Логическое программирование

Logical programming

Метод построения программ как совокупности логических правил с предварительно определенными алгоритмами для обработки входных данных программы в соответствии с ее правилами

Технология программирования и отладки программ

49. Спецификация программы

Specification

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

50. Трансляция программы

Трансляция

Translation

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

51. Компиляция

Compilation

Трансляция программы с языка высокого уровня в форму, близкую к программе, на машинном языке

52. Ассемблирование

Assembly

Компиляция программ с языка ассемблера

53. Поиск ошибок

(в программе)

Error detection

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

54. Верификация программы.Верификация

Program verification

Доказательство того, что поведение программы соответствует спецификации на эту программу

55. Дамп

Dump

Данные, представляющие собой полное или частичное содержимое оперативной памяти, выводимое на периферийное устройство

56. Аварийный дамп

Postmortem dump

Дамп, полученный в результате ненормального завершения программы

57. Тупиковая ситуация

Deadlock

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

Адресация в программах

58. Функция адресации

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

59. Адрес в пространстве памяти. Адрес

Storage address

Address

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

60. Пространство памяти

Storage space

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

61. Указатель области памяти. Указатель

Pointer

Адрес области памяти, размещенный в пространстве памяти, в котором расположена эта область

62. Адрес команды

Instruction address

Адрес области памяти, которая занята командой

63. Исполнительный

адрес

Effective address

Адрес операнда команды, содержащийся в ней или вычисляемый на основании содержимого ее полей.

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

64. Базовый адрес

Base address

Аддитивная часть исполнительного адреса, постоянная для определенной совокупности адресуемых данных.

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

65. Индекс адреса

Индекс

Index

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

66. Базовая адресация

Base-displacement

addressing

Based addressing

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

67. Индексирование

адреса

Indexing

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

Примечание. Индексирование может сочетаться с базовой адресацией

68. Базовый регистр

Base register

Регистр, содержащий базовый адрес

69. Индексный регистр

Index register

Регистр, содержащий индекс адреса

Элементы и структуры организации программ и данных

70. Цикл (в программе)

Loop

Последовательность команд в программе, которая должна исполняться неоднократно в результате перехода от начала последовательности к концу

71. Флажок (в программе) Flag

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

72. Переключатель

(в программе)

Switch

Управляемый флажком выбор одного перехода из группы возможных переходов в программе

73. Семафор

Semaphore

Переменная, используемая для обеспечения взаимного исключения

74. Общая переменная

Shared variable

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

75. Порция данных

Data aggregate

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

Примечание. Контексты существенно зависят от решаемых задач и этапов их решения и могут изменяться от задачи к задаче и от одного этапа к другому

76. Литерная цепочка

Цепочка

String

Порция данных, состоящая из последовательности литер

77. Идентификатор

Identifier

Литерная цепочка, выступающая в определенном контексте в роли символа.

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

78. Составной идентификатор

Qualified identifier

Идентификатор объекта, включающий идентификаторы классов, которые вложены друг в друга и содержат этот объект

79. Область памяти

Storage area

Память, выделенная для размещения одной или нескольких порций данных

80. Подобласть памяти

Storage subarea

Область памяти, рассматриваемая как составная часть другой области памяти

81. Буфер

Buffer

Рабочая область памяти при пересылке данных.

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

82. Поле данных

Data field

Неразрывная область памяти, имеющая определенное назначение и обычно снабженная именем или идентификатором

83. Экстент памяти

Extent

Неразрывная область в пространстве внешней памяти данных, используемая при его распределении.

Примечание. В ОС ЕС ЭВМ под набор данных на устройствах прямого доступа пространство памяти отводится экстентами

Процессы обработки данных

84. Процесс обработки данных

Процесс

Computational process

Process

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

Примечания:

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

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

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

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

85. Параллельные процессы

Parallel processes

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

86. Конкурирующие процессы

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

87. Системный процесс

System task System process

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

88. Процесс системного ввода

System reader (task)

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

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

89. Процесс системного вывода

System writer (task)

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

90. Приоритет процесса

Приоритет

Priority

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

91. Мультипрограммная смесь

Multi program mix

Совокупность процессов, выполнением которых управляет одна и та же управляющая программа

92. Мультипроцессирование

Multiprocessing

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

93. Ресурс системы обработки информации

Resource

Средство системы обработки информации, которое может быть выделено процессу обработки данных на определенный интервал времени.

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

94. Разделяемый ресурс

Shared resource

Ресурс системы обработки информации, используемый несколькими процессами одновременно

95. Задание системе обработки информации

Задание

Job

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

96. Пакетное задание

Batched job

Задание системе обработки информации, выполняемое в режиме пакетной обработки

97. Пакет заданий

Job batch

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

98. Пункт задания

Job step

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

99. Язык управления

заданиями

Job control language

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

Примечание. Система обработки информации обычно имеет свой язык управления заданиями

100. Удаленный ввод

заданий

Remote job entry

Ввод заданий вычислительной системе средствами телеобработки данных

101. Диалоговый удаленный ввод заданий

Conversational remote job entry

Удаленный ввод заданий, при котором ввод осуществляется в диалоговом режиме

102. Сеанс работы

Session

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

103. Сообщение

системы

System message

Сообщение любой из системных программ, входящих в операционную систему

104. Команда оператора

Operator command

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

А.П. Гагарин, канд. техн. наук (руководитель темы); А.В. Багров; Н.А. Сергеева УТВЕРЖДЕН И ВВЕДЕН В ДЕЙСТВИЕ Постановлением Государственного комитета СССР по управлению качеством продукции и стандартам от 27.08.90 № 2467 Стандарт соответствует ИСО 2382-7-77, ИСО 2382-10-79 взамен ГОСТ 19781-83 и ГОСТ 19.004-80

5. Таблица №2 Взаимосвязь стандартов языка программирования С (С89, С90) и С++

С89

Оригинальный стандарт ANSI/ISO языка С, который программисты считают настоящим языком С.

С99

Последний стандарт языка С. Включает в полном объеме вариант С89, но с добавлением новых средств. Причем некоторые новые средства не поддерживаются текущим стандартом языка С++.

С++

Объектно-ориентированная версия языка С. Действующий в данный момент стандарт ANSI/ISO для языка С++ построен на основе версии С89. Следовательно С89 является подмножеством языка С++.

6. Таблица № 3 Пример описания конструкций с разделением их семантической и синтаксической составляющих.

Компоненты, содержащиеся в Цикле с предусловием

УсловиеПродолженияЦикла

Представляет собой выражение логического типа

ТелоЦикла

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

УсловиеПродолженияЦикла

Вычисляется перед началом цикла

ЦиклСПредусловием

В семантическом описании ничего не говорится о том, как выглядит оператор

Таблица № 4 Варианты стандарта ISO 8859

Стандарт

Характеристика

ISO 8859-1

ISO 8859-2

ISO 8859-3

ISO 8859-4

ISO 8859-5

ISO 8859-6

ISO 8859-7

ISO 8859-8

ISO 8859-9

ISO 8859-10

ISO 8859-11

ISO 8859-12

ISO 8859-14

ISO 8859-15

ISO 8859-16

Западноевропейские языки

Языки стран центральной и восточной Европы

Языки стран южной Европы

Языки стран северной Европы

Языки славянских стран с символами кирилицы

Арабский язык

Современный греческий язык

Языки иврит и идиш

Турецкий язык

Языки стран северной Европы (лапландский, исландский)

Тайский язык

Языки балтийских стран

Кельтский язык

Комбинированная таблица для европейских языков

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

  1. Семенов А.Б. Современные тенденции развития техники СКС//Первая миля. - 2016 г. - № 8 (61), - С. 10

  2. И.А. Трофимова, О.В. Яровая ЕГЭ. Информатика: универсальный справочник, - М., 2017, - С. 8-30

  3. Н.Д. Дубова, Е.М. Портнов Основы метрологии, стандартизации и сертификации: учебное пособие, - М., 2009, - С. 94, 98

  4. И.А. Трофимова, О.В. Яровая ЕГЭ. Информатика: универсальный справочник, - М., 2017 г., - С. 90

  5. Андреев А. Эволюция современных языков программирования//Мир ПК, - М., - 2001, - № 3, С. 28, 30

  6. Исаев Г.Н. Информационные технологии, - М: Омега-Л, - 2011, - С. 36

  7. Камаев В.А., Костерин В.В. Технологии программирования, — 2-е изд., - М.: ФГУП «Издательство Высш. шк., -2006. - С. 74

  8. Громов Ю.Ю., Дидрих И.В., Иванова О.Г., Ивановский М.А., Однолько В.Г. Информационные технологии: учебное пособие, - Тамбов: ФГБОУ ВПО «ТГТУ»,- 2015. С. 10.

  9. Н.Д. Дубова, Е.М. Портнов Основы метрологии, стандартизации и сертификации: учебное пособие, - М., - 2009, - С. 103

  10. Иванов К.К. Проектирование информационных систем//Молодой учёный. - Казань, – 2017. - С. 22-24

  11. Орлов С.А. Теория и практика языков программирования: Учебник для вузов. Стандарт 3-его поколения. - СПб.: Питер, - 2014, - С.34

  12. Александров А.Л., Бабенко Л.П., Кауфман В.Ш., Ющенко Е.Л. Стандартизация языков программирования/под ред. Ющенко Е.Л. - Киев: Тэхника, - 1989. - С. 7, 15, 128

  13. Саттер Г., Александреску А. Стандарты программирования на С++. 101 правило и рекомендация: книга, ИД Вильямс, - 2005, - С. 32 - ISBN 978-5-8459-1933-5

  14. URL: http://www.instandard.ru/ansi/. (дата обращения 10.07.2019)

  15. Калев Д Стандарты языка С: материал из Национальной библиотеки имени Н.Э. Баумана, - 2001, URL: https://www.osp.ru/pcworld/2001/03/161321/ (дата обращения 08.07.2019)

  16. Леонидова Г.Ф. Программно-техническое обеспечение автоматизированных библиотечно-информационных систем: учебное пособие. Часть 2-я. - Кемерово: Кемеровский государственный ун-т культуры и искусств. - 2012. - С. 19

  17. Когаловский М.Р. Перспективные технологии информационных систем. М.: ДМК Пресс; - М.: Компания АйТи, - 2003.- С. 57

  18. Шилд Г. Справочник программиста С/С++, 3-е изд., - М: ООО «ИД Вильямс», - 2018., - С. 43

  19. Преподавание информационных технологий в Российской Федерации: материалы одиннадцатой открытой всероссийской конференции. - Воронеж: Воронежский государственный университет, - 2013., - С. 48

  20. Шилд Г. Справочник программиста С/С++, 3-е издание, - М: ООО «И.Д. Вильямс», - 2018., - С. 25-76

  21. Чмирева Е.В. Функциональное программирование и интеллектуальные системы: учебное пособие. - Белгород: ИД «Белгород» НИУ «БелГУ», - 2017., - С. 8-9

  22. Сороко Г.Я., Михненков О.В., Куприянов Н.С., Шемтова О.Г. методологические основы анализа информационных процессов в организационных системах: учебное пособие/ГУУ. - М. - 2004, - С. 157-158

  23. Каймин В.А. «Информатика»: учебник, - М.: ИНФРА-М, - 2002. - С. 120 - 121

  24. Рапаков Г.Г., Ржеуцкая С.Ю. Программирование на языке Pascal. – Спб.: БХВ-Петербург, - 2004, - С. 17

  25. Преподавание информационных технологий в Российской Федерации: материалы одиннадцатой открытой всероссийской конференции. - Воронеж: Воронежский государственный университет, - 2013., - С. 49

  26. Громов Ю.Ю., Дидрих И.В., Иванова О.Г., Ивановский М.А., Однолько В.Г. Информационные технологии: учебное пособие, - Тамбов: ФГБОУ ВПО «ТГТУ», - 2015.- С. 150

  27. Исаев Г.Н. Информационные технологии, -М: Омега-Л, -2011. - С. 45-87

  28. Чмирева Е.В. Функциональное программирование и интеллектуальные системы: учебное пособие. - Белгород: ИД «Белгород» НИУ «БелГУ», - 2017., - С. 9

  29. Ритчи Д. Будущее по Деннису Ритчи//Мир ПК/- 2001.- № 3, - С. 67

  30. Терехов А.А. Российская индустрия программирования. - 2002. - № 3. - URL: http://www.osp.ru/os/2002/03

  31. Абрамова Л.В. Инструментальные средства информационных систем: учебное пособие/Л.В. Абрамова; Сев. (Арктич.) Федер. ун-т им. М.В. Ломоносова. - Архангельск: ИПЦ САФУ, - 2013. - С. 19-20

  32. Александров А.Л., Бабенко Л.П., Кауфман В.Ш., Ющенко Е.Л. Стандартизация языков программирования/под ред. Ющенко Е.Л. - Киев: Тэхника, - 1989, - С. 8

  33. Захаров В.Б., Мальковский М.Г., Мостяев А.И. Проблема выбора языков программирования при разработке кроссплатформенных приложений/ International Journal of Open Informational Technologies, - 2017. - № 7. С. 29-36 - ISSN: 2307-8162 vol 5, URL: https://cyberleninka.ru

  34. Преподавание информационных технологий в Российской Федерации: материалы одиннадцатой открытой всероссийской конференции. - Воронеж: Воронежский государственный университет, - 2013. - С. 2-4

  35. URL: https://apkit.ru/about/info/mission/

  36. URL: http://www.glassdoor.com

  37. Стеканова В. Топ 12 IT-компаний в России по условиям работы, URL: http://www.rb.ru

  38. Андреев А. Эволюция современных языков программирования//Мир ПК, - М., - 2001; - № 3, - С. 35-40

  39. Рапаков Г.Г., Ржеуцкая С.Ю. Программирование на языке Pascal. – Спб.: БХВ-Петербург, - 2004. - С. 24

  40. Орлов С.А. Теория и практика языков программирования: учебник для вузов. Стандарт 3-его поколения. - СПб.: Питер, - 2014. - С. 149

  41. Саттер Г., Александреску А. Стандарты программирования на С++. 101 правило и рекомендация: книга. ИД Вильямс, - 2005. - С. 24

  42. Немцова Т.И., Гоглова С.Ю., Абрамова И.М. Программирование на языке высокого уровня. Программирование на языке Object Pascal: учебное пособие/ Л.Г. Гагарина, - М.: ИД «ФОРУМ»-ИНФРА-М, - 2009, - С.67, 69

  43. Крокфорд Д. JavaScript: сильные стороны. - СПб.: Питер, - 2012, - С. 20

  44. Рапаков Г.Г., Ржеуцкая С.Ю. Программирование на языке Pascal. – Спб.: БХВ-Петербург, 2004. с. 21, 25

  45. Саттер Г., Александреску А. Стандарты программирования на С++. 101 правило и рекомендация: книга. ИД Вильямс, - 2005, - С. 30-31