Файл: Международные и отечественные стандарты языков программирования. Сходство и отличия стандартов.(Семантика языков программирования).pdf
Добавлен: 31.03.2023
Просмотров: 207
Скачиваний: 2
СОДЕРЖАНИЕ
Глава 1 Стандартизация языков программирования
1.1 Семантика языков программирования
1.2 Парадигма программирования
Глава 2 Анализ международных и отечественных стандартов языков программирования
2.1 Отечественные стандарты языков программирования
2.2 Международные стандарты языков программирования
• наличие (или отсутствие) беззнаковых типов;
• представление (размер значения, диапазоны значений);
• надежность (какие ошибки могут возникать при выполнении операций с целыми значениями);
• набор операций.
Универсальность. Язык Паскаль предоставляет единственный целочисленный тип данных — integer. Этого вполне достаточно для учебного языка программирования, но неприемлемо в индустриальном программировании. Языки С++, Java и C# представляют универсальную номенклатуру целых типов, которая соответствует большинству современных архитектур. В эти языках определены однобайтовые целые числа (char в С++, byte в Java и C#), короткие целые (short), основные целые (int), длинные целые (long).
Беззнаковые типы. Практически все компьютерные архитектуры в дополнение к знаковым целым числам поддерживают и беззнаковые типы, то есть целочисленные типы, содержащие только неотрицательные значения. Это обусловлено необходимостью выполнения операций над адресами в машинных программах.
Адреса представляются беззнаковым целым типом (вспомним, что адрес — это номер ячейки памяти, начинающийся с нуля). Операции над адресами называются адресной арифметикой [14, c. 51].
Вторая причина использования беззнаковых чисел состоит в том, что при одинаковом размере максимальное значение беззнакового типа больше, чем максимум знакового (ведь не нужно хранить информацию о знаке). В случае, если диапазон целых значений невелик, использование беззнакового типа иногда необходимо.
Язык Java не содержит беззнаковых типов, что упрощает реализацию JVM
и позволяет избежать ряда проблем, связанных с надежностью программ. Языки С++ и С# для каждого размера целого типа содержат знаковый и
беззнаковый варианты. Прежде всего, это диктуется требованием универсальности.
Представление. Языки Паскаль и С++ не фиксируют представление целого типа. Размер и диапазон значений определяются реализацией. Это связано с тем, что эти языки были реализованы для большого количества машинных архитектур, существенно различавшихся по представлению чисел.
Фиксация представления дала бы необоснованное преимущество конкретной архитектуре, поскольку реализации на других архитектурах были бы более сложными и менее эффективными. Язык С++ даже не фиксирует представление однобайтового типа char. В зависимости от реализации он может быть как знаковым (signed char), так и беззнаковым (unsigned char). Про размеры типов в С++ известно, что [17]:
sizeof(char)=1
sizeof(char)<=sizeof(short)<=sizeof(int)<=sizeof(long)
Здесь sizeof — это статическая операция С++, которая применима как к именам типов, так и к объектам данных, и возвращает размер типа (объекта данных) в байтах.
С другой стороны, языки Java и C# полностью регламентируют размер и диапазон значений всех типов данных. Это связано с тем, что архитектуры, для которой разрабатывались языки, вполне определены (для Java — это JVM, для C# - платформа .NET на архитектуре IA-32).
Символьные типы данных служат для представления символов (литер) алфавитов естественных языков, символов, управляющих работой устройств ввода/вывода(например, символ перехода на новую строку, табуляции и тому подобные), специальных символов (валютный знак).
Каждый символ имеет свое название (например, «возврат каретки», «маленькая кириллическая буква я», «знак копирайта»). Символьные типы основаны на понятии множества символов (character set).Множество символов определяет, во-первых, набор символов, во-вторых, кодировку этого набора - отображение набора на диапазон целых чисел. Значения символьного типа — это и есть значения из этого диапазона.
Таким образом, символы могут представляться целым типом данных, что и было принято в ряде языков программирования.
Логический тип данных обозначается в языках С++ и C# Java ключевым словом bool (boolean в Java). Он состоит их двух значений: true (истина)и false (ложь).Набор операций состоит из логического «и» - «&&», логического «или» -«||» и отрицания «не» - «!» с обычным математическим смыслом.
Глава 2 Анализ международных и отечественных стандартов языков программирования
2.1 Отечественные стандарты языков программирования
Основу отечественной нормативной базы в области документирования программных средств (ПС) составляет комплекс стандартов Единой системы программной документации (ЕСПД). Основная и большая часть комплекса ЕСПД была разработана в 70-е и 80-е годы. Сейчас этот комплекс представляет собой систему межгосударственных стандартов стран СНГ (ГОСТ), действующих на территории Российской Федерации на основе межгосударственного соглашения по стандартизации.
Из всех 28 стандартов ЕСПД остановимся только на тех, которые могут чаще использоваться на практике. Выделим также еще один, существенно более «свежий», чем остальные, отличающийся совместимостью с современными международными стандартами.
Первым укажем стандарт, который можно использовать при формировании заданий на программирование [14].
ГОСТ 19.201-78 ЕСПД. Техническое задание. Требование к содержанию и оформлению. Напомним, что техническое задание (ТЗ) содержит совокупность требований к ПС и может использоваться как критерий проверки и приемки разработанной программы. Поэтому достаточно полно составленное (с учетом возможности внесения дополнительных разделов) и принятое заказчиком и разработчиком, ТЗ является одним из основополагающих документов проекта ПС.
Следующий стандарт ориентирован на документирование результирующего продукта разработки: ГОСТ 19.402-78 ЕСПД. Описание программы.
Есть также группа стандартов, определяющая требования к фиксации всего набора программ и ПД, которые оформляются для передачи ПС. Они (см. врезку) порождают лаконичные документы учетного характера и могут быть полезны для упорядочения всего хозяйства программ и ПД (ведь очень часто требуется просто навести элементарный порядок). Есть и стандарты, определяющие правила ведения документов в «хозяйстве» ПС.
Надо также выделить ГОСТ 19.301-79 ЕСПД. Программа и методика испытаний, который (в адаптированном виде) может использоваться для разработки документов планирования и проведения испытательных работ по оценке готовности и качества ПС.
Наконец, выделим последний по году принятия стандарт. Это ГОСТ 19.701-90 ЕСПД. Схемы алгоритмов, программ, данных и систем. Обозначения условные графические и правила выполнения. Он устанавливает правила выполнения схем, используемых для отображения различных видов задач обработки данных и средств их решения и полностью соответствует стандарту ИСО 5807:1985.
ГОСТ 19781-90 Обеспечение систем обработки информации программное. Термины и определения. Разработан взамен ГОСТ 19781-83 и ГОСТ 19.004-80 и устанавливает термины и определения понятий в области программного обеспечения (ПО) систем обработки данных (СОД), применяемые во всех видах документации и литературы, входящих в сферу работ по стандартизации или использующих результаты этих работ.
ГОСТ 28388-89 Системы обработки информации. Документы на магнитных носителях данных. Порядок выполнения и обращения. Распространяется не только на программные, но и на конструкторские, технологические и другие проектные документы, выполняемые на магнитных носителях.
Пока нет лучшего, можно извлекать пользу и из тех стандартов ЕСПД, которые приняты еще около 20 лет назад. Но всем ясно, что ориентироваться надо на современные стандарты [20].
Практики используют еще один путь: сами переводят и используют в своих проектах современные стандарты на организацию ЖЦ ПС и их документирование. Но этот путь страдает как минимум тем недостатком, что разные переводы и адаптации стандартов, сделанные разными разработчиками и заказчиками, будут отличаться массой деталей.
2.2 Международные стандарты языков программирования
Одной из важнейших проблем обеспечения качества программных средств является формализация характеристик качества и методология их оценки. Для определения адекватности качества функционирования, наличия технических возможностей программных средств к взаимодействию, совершенствованию и развитию необходимо использовать стандарты в области оценки характеристик их качества (рисунок 1) [11].
Рисунок 1. Основные международные стандарты в области качества программных средств
В России для оценки качества работы системы мониторинга ИТ инфраструктуры можно применять стандарты оценки качества программных средств ISO 9126.
1-я часть стандарта ISO 9126-1 описывает характеристики качества программного обеспечения используемых в остальных частях стандарта. Исходя из принципиальных возможностей их измерения, все характеристики качества могут быть объединены в 3 группы, к которым применимы разные категории метрик:
· категорийные, или описательные (номинальные) метрики наиболее адекватны для оценки функциональных возможностей программных средств;
· количественные метрики применимы для измерения надежности и эффективности сложных комплексов программ;
· качественные метрики в наибольшей степени соответствуют практичности, сопровождаемости и мобильности программных средств.
2-я и 3-я части стандарта посвящены формализации соответственно внешних и внутренних метрик характеристик качества сложных программных средств. 4-я часть стандарта ISO 9126-4 предназначена для покупателей, поставщиков, разработчиков, сопровождающих пользователей и менеджеров качества программных средств. В ней обосновываются и комментируются выделенные показатели сферы (контекста) использования программных средств и группы выбранных метрик для пользователей [16, c. 53].
Концепция языка программирования неотрывно связана с его реализацией. Для того чтобы компиляция одной и той же программы различными компиляторами всегда давала одинаковый результат, разрабатываются стандарты языков программирования. Существует ряд организаций, целенаправленно занимающихся вопросами стандартизации. Это Американский национальный институт стандартов 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).
Язык Java, ставший в последнее время весьма распространенным, постепенно был значительно расширен и модифицирован: новая спецификация получила название Java 2 [5].
В процессе развития языка некоторые его конструкции и функции устаревают. Однако с целью обратной совместимости новые версии должны поддерживать и все устаревающие возможности. Это ведет к "разбуханию" компиляторов. В последнее время в реализациях введено понятие не рекомендуемой и устаревшей возможности. В первом случае следующий стандарт еще будет поддерживать не рекомендуемую возможность, но может перевести ее в категорию устаревшей. Во втором случае стандарт может исключить поддержку возможности, объявленной ранее как устаревшая. Введение не рекомендуемых и устаревших возможностей предоставляет разработчикам временной интервал, в течение которого они могут модифицировать код в соответствии с новыми требованиями стандарта.