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

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

Содержание:

Введение

  Для того чтобы компиляция одной и той же программы различными компиляторами всегда давала одинаковый результат, разрабатываются стандарты языков программирования. Существует ряд организаций, занимающихся вопросами стандартизации. Например,Американский национальный институт стандартов 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 компилируются с помощью автоматических процедур. Язык использует многие свойства Фортрана, Алгола, Кобола. Однако он допускает не только динамическое, но и управляемое и статистическое распределения памяти.

Диалоговые языки.

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

В настоящее время его применение снижается. Согласно данным за 2011-13 г.г.:

2011 год – Паскаль – 104, Си++ - 120, Бейсик – 1, Java – 0.

2012 год – Паскаль – 96, Си++ - 133, Бейсик – 1, Java – 6.

2013 год – Паскаль – 59, Си++ - 165,5, Бейсик – 0, Java - 5.

Очевидно, что происходит сокращение использования таких языков как Паскаль, Бейсик, и увеличивается использование Си++, Java.

Паскаль - высокоуровневый язык программирования общего назначения. Один из наиболее известных языков программирования, широко применяется в промышленном программировании, обучении программированию в высшей школе, является базой для большого числа других языков. Был создан Никлаусом Виртом в 1968/9 годах после его участия в работе комитета разработки стандарта языка Алгол-68. Паскаль был создан как язык для обучения процедурному программированию. Название языку дано в честь выдающегося французского математика, физика, изобретателя первой в мире арифметической машины Блеза Паскаля.

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

Считается конкурентом Visual Studio и пока активно используется.

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

Наиболее известной реализацией Паскаля, обеспечившей широкое распространение и развитие языка, является Turbo Pascal фирмы Borland, выросшей затем в объектный Паскаль для DOS (начиная с версии 5.5) и Windows и далее в Delphi, в которой использовались значительные расширения языка.

На основе языка Паскаль в конце 70-х годов был создан язык Ада, названный в честь одарённого математика Ады Лавлейс (Огасты Ады Байрон – дочери поэта Байрона). Именно она в 1843 году смогла объяснить миру возможности Аналитической машины Чарльза Бэббиджа. Язык Ада был разработан по заказу Министерства обороны США и первоначально предназначался для решения задач управления космическими полётами. Этот язык применяется в задачах управления бортовыми системами космических кораблей, системами обеспечения жизнедеятельности космонавтов в полёте, сложными техническими процессами.

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

Си [C] - Многоцелевой язык программирования высокого уровня, разработанный Денисом Ритчи в начале 1970-х гг. на базе языка BCPL. Используется на миниЭВМ и ПЭВМ. Является базовым языком операционной системы Unix, однако применяется и вне этой системы, для написания быстродействующих и эффективных программных продуктов, включая и операционные системы. Для IBM PC имеется ряд популярных версий языка Си, в том числе - Turbo C (фирмы Borland), Microsoft C и Quick C (фирмы Microsoft ), а также Zortech C (фирмы Symantec). Многие из указанных версий обеспечивают также работу с Си и Си++.

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

· Си++ [C++] - Язык программирования высокого уровня, созданный Бьярном Страустрапом на базе языка Си. Является его расширенной версией, реализующей принципы объектно-ориентированного программирования. Используется для создания сложных программ. Для IBM PC наиболее популярной является система Turbo C++ фирмы Borland (США).

· C# (C Sharp) – “ Си Шарп ”: объектно-ориентированный яык программирования, о разработке которого в 2000 г. объявила фирма Microsoft . По своему характеру он напоминает языки C++ и Java и предназначен для разработчиков программ, использующих языки C и С++ для того, чтобы они могли более эффективно создавать Интернет-приложения. Отмечается, что C # будет тесно интегрирован с языком XML

2. Стандарты языков программирования РФ и международные стандарты

2.1. Стандарты РФ

На стандарте программирования РФ основан, например Дракон - ГОСТ 19.701-90 Указанный стандарт относится к принципам составления блок схем и принятым в них обозначениям. и ISO 5807-85 фактически повторяет ГОСТ 19.701-90 и послужил для него основой.

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

ГОСТ Р ИСО/МЭК 12119-2000. (Информационная технология. Пакеты программ. Требования к качеству и тестирование). Стандарт устанавливает требования к пакетам программ, инструкции по испытанию пакета программ на соответствие его установленным требованиям и предназначен для пакетов программ, являющихся объектом продажи и поставки.

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

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

ГОСТ Р ИСО/МЭК 12207:2000. Информационная технология. Процессы жизненного цикла программного обеспечения.

Базовые российские стандарты в области информационных технологий

ГОСТ Р ИСО/МЭК 12207:2000. Информационная технология. Процессы жизненного цикла программного обеспечения.

ГОСТ Р ИСО/МЭК ТО 15271-2002. Информационная технология. Руководство по применению ГОСТ Р ИСО/МЭК 12207 (Процессы жизненного цикла программных средств).

ГОСТ Р ИСО/МЭК 9126:1993. Информационная технология. Оценка программной продукции. Характеристики качества и руководство по их применению.

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

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

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

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

ГОСТ Р ИСО/МЭК 15408-1-2002. Информационная технология. Методы и средства обеспечения безопасности. Критерии оценки безопасности информационных технологий. Часть 1. Введение и общая модель.

ГОСТ Р ИСО/МЭК 15408-3-2002. Информационная технология. Методы и средства обеспечения безопасности. Критерии оценки безопасности информационных технологий. Часть 3. Требования доверия к безопасности.

ГОСТ Р ИСО/МЭК 14764-2002. Информационная технология. Сопровождение программных средств.

ГОСТ Р ИСО/МЭК 15026-2002. Информационная технология. Уровни целостности систем и программных средств.

ГОСТ Р ИСО/МЭК ТО 12182-2002. Информационная технология. Классификация программных средств.

ГОСТ 28195:1989. Оценка качества программных средств. Общие положения

Основной и очевидной особенностью является синхронизация всех указанных стандартов ГОСТ с ISO/IES.

Например, стандарт ГОСТ Р ИСО/МЭК ТО 15271-2002. Информационная технология. Руководство по применению ГОСТ Р ИСО/МЭК 12207 (Процессы жизненного цикла программных средств) содержит обязательные элементы, например, область применения, типичные для стандартов РФ и СССР. В то же время, истолкование значений служебных частей речи ( глаголов shall, should) явно позаимствовано из принципов составления стандартов ISO и ANSI. Детально составлен план Выходных результатов основных процессов ЖЦ (Таблица .1). В конце каждого из сценариев указаны его преимущества и недостатки.

При рассмотрении стандартов СССР , например ГОСТ 22558-89 Язык программирования Кобол очевидно, что его объём (811 стр.) превышает большинство современных стандартов как РФ так и международных, что очевидно связано с особенностями машинно-ориентированного программирования. Стандарт содержит условия об устаревших элементах языка. Стандарт ГОСТ 23057-78 можно отнести к наиболее лаконичным и по подходу напоминающим спецификацию, показанную на рис. 3. Таким образом, часть внутренних стандартов РФ, относящихся к отдельным языкам программирования фактически является спецификациями в понимании современных международных спецификациях и выполняет аналогичную функцию.

2.2. Основные международные стандарты и их сопоставление с ГОСТ РФ.

В качестве основных международных стандартов здесь рассмотрены в основном стандарты ANSI. Они также синхронизированы с ISO/IEC так как США является членом этих организаций. Часть этих стандартов, относящихся к современным языкам, является достаточно объёмными, например Programming languages — C++ webstore.ansi.org/preview-pages/ISO/preview_ISO+IEC+14882-2017.pdf содержит более 1600 страниц с подробным описанием операторов, символов, выражений, классов, шаблонов контейнеров, алгоритмов и библиотек. Два приложения стандарта посвящены вопросам совместимости.

Среди более общих стандартов ISO/IEC TR 24772:2010 - INFORMATION TECHNOLOGY -PROGRAMMING LANGUAGES - GUIDANCE TO AVOIDING VULNERABILITIES IN PROGRAMMING LANGUAGES THROUGH LANGUAGE SELECTION AND USE посвященный избеганию уязвимостей /Vulnerabilities/ при выборе и применении языка программирования в качестве аналога в РФ: НАЦИОНАЛЬНЫЙ СТАНДАРТ РОССИЙСКОЙ ФЕДЕРАЦИИ Информационная технология

МЕТОДЫ И СРЕДСТВА ОБЕСПЕЧЕНИЯ БЕЗОПАСНОСТИ

Детализация анализа уязвимостей программного обеспечения в соответствии с ГОСТ Р ИСО/МЭК 15408 и ГОСТ Р ИСО/МЭК 18045 , разработанный ООО "Центр безопасности информации"  [http://docs.cntd.ru/document/1200159380]

и ISO/IEC TR 10176:2003 Information Technology - Guidelines For The Preparation Of Programming Language Standards содержащий помимо прочего – рекомендации по выбору процессора, достаточности определений, использовании словарей. Отметим, что общие стандарты значительно короче их аналогов составленных для отдельных языков.

ISO/IEC TR 24733:2011

Information Technology - Programming Languages, Their Environments And System Software Interfaces - Extensions For The Programming Language C++ To Support Decimal Vulnerabilities nm &Floating-Point Arithmetic

составлены для определённого языка.

Со стандартом РФ может быть сопоставлен следующий документ:

ISO/TR 9547:1988 Programming Language Processors - Test Methods - Guidelines For Their Development And Acceptability,

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

Проект стандарта C++, составленный Аккредитованным комитетом по стандартам США, входящим в American National Standards Institute, включает описание большинства команд и подробные определения. Описание организации памяти в стандарте C++ показано на рис. 3. Всего стандарт содержит 27 глав и неограниченное количество пунктов подпунктов. Синтаксис описан в приложении А, допустимое количество команд, условий и параметров в в приложении B, совместимость, перспективы применения и универсальные символы в 3-х последующих приложениях.

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

Рис. 4. Сведения о разработчике и версии спецификации Java

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

2.3. Некоторые особенности развития языков программирования

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

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

Рис. Схема возможного объединения языков программирования

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

Dart

Простое приложение, выводящее надпись Hello, world!:

main() {

print('Hello World!');

}

Функция для расчета n-го числа Фибоначчи:

int fib(int n) {

return (n <= 2) ? 1 : (fib(n - 1) + fib(n - 2));

}

main() {

print('fib(20) = ${fib(20)}');

}

Java Script

<body>

<p>Перед скриптом...</p>

<script>

alert( 'Привет, мир!' );

</script>

<p>...После скрипта.</p>

числа Фибоначчи:

function fib(n) {

let a = 1;

let b = 1;

for (let i = 3; i <= n; i++) {

let c = a + b;

a = b;

b = c;

}

return b;

}

alert( fib(3) ); // 2

alert( fib(7) ); // 13

alert( fib(77) ); // 5527939700884757

«Область пересечения», цикл с параметром

Цикл с параметром присутствует в любом языке программирования. Исторически это наиболее «старый» из операторов цикла — он существовал уже в ранних версиях Фортрана. Несмотря на огромное количество вариантов, он до сих пор сохранил свои основные черты. В нем имеется переменная-параметр (как правило, целого типа; в Паскале, Модуле 2 и современных версиях Си допустимо использовать переменную скалярного типа), которая пробегает значения от начального до конечного с шагом 1 или более.

В языках, созданных под влиянием Паскаля (Модула 2, Ада), параметр цикла может изменяться только с шагом 1. В Си-подобных языках семантика цикла с параметром допускает не только любой шаг переменной, но и вообще любой оператор, произвольно изменяющий значение параметра. Кроме того, условие окончания цикла в Си может быть любым логическим выражением (а не только достижением переменной порогового значения). Иными словами, цикл с параметром в Си может вообще не содержать параметра (в этом случае он становится аналогом цикла while). Ниже приведены примеры одного и того же цикла:

Паскаль: for i:=0 to max do inc(j);

Си, Си++, Java: for(i=0; i<=max; i++) j++;

Модула 2: for i:=0 to max do inc(j) end;

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

Заключение 

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

  • Разработка стандартов программирования, как в СССР, так и за рубежом активно началась через 10-15 лет после создания первых языков программирования, т. е. в конце 60х годов.
  • Часть языков разрабатывалась без составления каких-либо стандартов, которые были разработаны примерно через 10 лет после создания таких программ.
  • В настоящее время в системе российских и международных стандартов прослеживается тенденция к унификации, при этом в стандартах РФ отмечается следование структуре разделов, которая была разработана Госстандартом и применялась несколько десятилетий. При этом международные спецификации часто рассматриваются в РФ как ГОСТ/стандарты.
  • Как одно из направлений развития стандартизации ПО можно отметить унификацию/поиск общих особенностей языков программирования с их последующей стандартизацией.

Список использованной литературы

1. C ++,TurboPasckal,QBasik:Эволюция языков программирования http://langprog.far.ru/historylangprog.html. -27.05.10.

2. Информатика/Курносов А.П., Кулев С.А., Улезько А.В. и др.; Под ред. А.П. Курносова.-М.: КолосС, 2005.-272 с

3. Макарова Н.В. Информатика /под ред. Проф. Н.В. Макаровой. — М.: Финансы и статистика, 1997. — 768 с.: ил.

4. Малышев Р.А. Локальные вычислительные сети: Учебное пособие/ РГАТА. – Рыбинск, 2005. – 83 с.

5. Островский В.А. Информатика: учеб. для вузов. М.: Высшая школа, 2000. —511 с.: ил.

6. Семакин И.А., Информатика: Базовый курс /Семакин И.А., Залогова Л., Русаков С., Шестакова Л. – Москва: БИНОМ.,2005. – 105с.

7. Симонович С.В.Информатика. Базовый курс/Симонович С.В. и др. — СПб.: издательство "Питер", 2000. — 640 с.: ил.

ГОСТы и справочники:

  • ГОСТ Р ИСО/МЭК 12207:2000. Информационная технология. Процессы жизненного цикла программного обеспечения.
  • Базовые российские стандарты в области информационных технологий
  • ГОСТ Р ИСО/МЭК 12207:2000. Информационная технология. Процессы жизненного цикла программного обеспечения.
  • ГОСТ Р ИСО/МЭК ТО 15271-2002. Информационная технология. Руководство по применению ГОСТ Р ИСО/МЭК 12207 (Процессы жизненного цикла программных средств).
  • ГОСТ Р ИСО/МЭК 9126:1993. Информационная технология. Оценка программной продукции. Характеристики качества и руководство по их применению.
  • ГОСТ Р ИСО/МЭК 12119-2000. Информационная технология. Пакеты программ. Требование к качеству и тестирование.
  • ГОСТ Р ИСО/МЭК ТО 9294:1993. Информационная технология. Руководство по управлению документированием программного обеспечения.
  • ГОСТ Р ИСО 9127:1994. Системы обработки информации. Документация пользователя и информация на упаковке для потребительских программных пакетов.
  • ГОСТ Р ИСО/МЭК 15910-2002. Информационная технология. Процесс создания документации пользователя программного средства.
  • ГОСТ Р ИСО/МЭК 15408-1-2002. Информационная технология. Методы и средства обеспечения безопасности. Критерии оценки безопасности информационных технологий. Часть 1. Введение и общая модель.
  • ГОСТ Р ИСО/МЭК 15408-3-2002. Информационная технология. Методы и средства обеспечения безопасности. Критерии оценки безопасности информационных технологий. Часть 3. Требования доверия к безопасности.
  • ГОСТ Р ИСО/МЭК 14764-2002. Информационная технология. Сопровождение программных средств.
  • ГОСТ Р ИСО/МЭК 15026-2002. Информационная технология. Уровни целостности систем и программных средств.
  • ГОСТ Р ИСО/МЭК ТО 12182-2002. Информационная технология. Классификация программных средств.
  • ГОСТ 28195:1989. Оценка качества программных средств. Общие положения
  • ISO/IEC TR 24733:2011

Information Technology - Programming Languages, Their Environments And System Software Interfaces - Extensions For The Programming Language C++ To Support Decimal Vulnerabilities nm &Floating-Point Arithmetic

  • ISO/IEC TR 10176:2003 Information Technology - Guidelines For The Preparation Of Programming Language Standards.
  • Газета Ведомости 2017/05/19/ URL: [https://www.vedomosti.ru/technology/articles/2017/05/19/690559-rossiyanami-yazik-programmirovaniya]