Файл: Международные и отечественные стандарты языков программирования. Сходство и отличия стандартов (Основные международные стандарты и их сопоставление с ГОСТ РФ).pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 12.03.2024

Просмотров: 13

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Содержание:

Введение

  Для того чтобы компиляция одной и той же программы различными компиляторами всегда давала одинаковый результат, разрабатываются стандарты языков программирования. Существует ряд организаций, занимающихся вопросами стандартизации. Например,Американский национальный институт стандартов ANSI (American National Standards Institute), Институт инженеров по электротехнике и электронике IEEE (Institute of Electrical and Electronic Engineers), Организация международных стандартов ISO (International Organization for Standardization).

Как правило, при создании языка выпускается частный стандарт, определяемый разработчиками языка. Если язык получает широкое распространение, то со временем появляются различные версии компиляторов, которые не точно следуют частному стандарту. В большинстве случаев идет расширение зафиксированных первоначально возможностей языка. Для приведения наиболее популярных реализаций языка в соответствие друг с другом разрабатывается согласительный стандарт. Очень важным фактором стандартизации языка программирования является своевременность появления стандарта – до широкого распространения языка и создания множества несовместимых реализаций. В процессе развития языка могут появляться новые стандарты, отражающие современные нововведения. Так, язык FORTRAN первоначально был стандартизирован в 1966 году. В результате был издан стандарт FORTRAN 66. Далее этот стандарт несколько раз пересматривался (в 1977 году был выпущен FORTRAN 77, затем FORTRAN 90).

В настоящее время намечается тенденция к созданию более лаконичного языка (языков), позволяющего «писать программы кратко и ясно» [18] но имеющего возможности Java. Так недавно был разработан, например язык Kotlin для мобильных приложений.

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


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

В работе будут рассмотрены: Основные современные языки программирования и тенденции их развития.

стандарты РФ в области информационных технологий, действующие в РФ, США и Европе и их разработчики.

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

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

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

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

Не все основные языки программирования имеют спецификации, а языки могут существовать и быть популярными десятилетиями без спецификации. У языка может быть одна или несколько реализаций, поведение которых действует как стандарт де-факто, без документирования этого поведения в спецификации. Perl (через Perl 5 ) является ярким примером языка без спецификации, в то время как PHP был указан только в 2014 году, после 20 лет использования. Язык может быть реализован и затем определен, или определен и затем реализован, или они могут развиваться вместе, что является обычной практикой сегодня. Это связано с тем, что реализации и спецификации обеспечивают взаимную проверку: написание спецификации требует точного определения поведения реализации, а реализация проверяет возможность, практичность и непротиворечивость спецификации. Написание спецификации перед реализацией в значительной степени избегалось с момента появления Алгола 68 (1968 г.) из-за неожиданных трудностей в реализации, когда реализация откладывается. Однако языки все еще время от времени реализуются и набирают популярность без формальной спецификации: реализация важна для использования, а спецификация желательна, но не обязательна (неформально, «разговор о коде»). АЛГОЛ 68 был первым (и, возможно, одним из последних) основным языком, для которого было дано полное формальное определение до его реализации.


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

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

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

Современные языки программирования рассчитаны на использование ASCII, то есть доступность всех графических символов ASCII является необходимым и достаточным условием для записи любых конструкций языка. Управляющие символы ASCII используются ограниченно: допускаются только возврат каретки CR, перевод строки LF и горизонтальная табуляция HT (иногда также вертикальная табуляция VT и переход к следующей странице FF). Ранние языки, возникшие в эпоху 6-битных символов, использовали более ограниченный набор. Например, алфавит Фортрана включает 49 символов (включая пробел): A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 = + - * / () . , $ ' : .

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


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

В СССР лишь в 1978 году появляется первый стандарт – им стал Фортран. Разумеется, речь шла о базисном языке, а не его свежем диалекте. ГОСТ на Алгол-68 вышел спустя 10 лет, и, если вы его откроете, то узнаете причину задержки – синтаксис языка был полностью переведён на русский язык. Именно поэтому сложилось впечатление, что Фортран в СССР был больше востребован. На самом деле так было только в образовании. В науке и обороне Алгол был востребован ничуть не меньше.

1970-х в программировании наконец возникла главная движущая сила – мнение простых пользователей. Они уже не просто пользовались деятельностью «больших» учёных, любой желающий мог создать свой язык, написать компилятор или интерпретатор. Кто-то благодаря этому обрёл вечную славу, а кто-то построил миллиардную империю. Для того, чтобы сделать следующий качественный скачок, необходимо было вновь изменить подход к программированию, увеличив возможности и усложнив структуру. Совсем скоро в моду войдёт объектно-ориентированное программирование. 

1.1 Классификация языков программирования

 За время развития ЭВМ разработаны несколько категорий языков программирования.

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

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


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

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

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

К ним относятся, например: Фортран, Алгол – языки, созданные для решения математических задач; Simula, Слэнг - для моделирования; Лисп, Снобол – для работы со списочными структурами.

Универсальные языки были созданы для широкого круга задач: коммерческих, научных, моделирования и т.д. Первый универсальный язык был разработан фирмой IBM, ставший в последовательности языков Пл/1. Второй по мощности универсальный язык называется Алгол-68. Он позволяет работать с символами, разрядами, числами с фиксированной и плавающей запятой. Пл/1 имеет развитую систему операторов для управления форматами, для работы с полями переменной длины, с данными организованными в сложные структуры, и для эффективного использования каналов связи. Язык учитывает включенные во многие машины возможности прерывания и имеет соответствующие операторы. Предусмотрена возможность параллельного выполнение участков программ. Программы в Пл/1 компилируются с помощью автоматических процедур. Язык использует многие свойства Фортрана, Алгола, Кобола. Однако он допускает не только динамическое, но и управляемое и статистическое распределения памяти.