Учебное пособие по дисциплине Разработка языков программирования высокого уровня
Скачать 1.74 Mb.
|
1.4 Критерии оценки языков программированияС точки зрения влияния на разработку программного обеспечения и его дальнейшей эксплуатации наиболее характерными являются такие качества ЯПВУ как читабельность программ, написанных на данном языке, лёгкость их создания, надёжность языка, стоимостные характеристики. В таблице 1 приводится перечень критериев и их характеристик, а ниже – их описание. Таблица 1 Простота языка предполагает: Разумное количество элементарных конструкций; Разумное количество описаний одних и тех же средств в реализации языка. Например, C позволяет описать оператор a=a+1 ещё несколькими способами (но насколько это разумно?): a+=1; a++; ++a. Разумная перегрузка операторов; Ортогональность – возможность конструирования каких-либо конструкций языка из элементарных (например, возможность объявить новый пользовательский тип данных для описания предметной области реализуемой задачи). Управляющие структуры. Язык должен обладать достаточным многообразием управляющих структур. Разнообразие типов и структур данных должно быть таким, чтобы давать возможность адекватного описания предметной области задач. Продуманная синтаксическая структура программы предполагает: Длину имён объектов в программе такую, чтобы иметь возможность отображать смысл объектов задачи; Наличие зарезервированных специальных слов, отображающих смысл конструкций языка; Наличие семантически оправданных символов составных операторов (например, слова begin…end вместо {…}); Отсутствие множественного смысла одних и тех же зарезервированных слов и операторов и т.п. Поддержка абстракции. Абстракция – возможность определять сложные объекты, игнорируя детали. Абстракция в ЯПВУ представляется двумя понятиями: абстракция данных и абстракция процесса. Под абстракцией процессов в ЯПВУ понимается подпрограмма (процедура или функция), поскольку она определяет способ, с помощью которого программа может выполнить некоторый процесс, без уточнения деталей того, как именно это следует сделать (по крайней мере, в вызывающей программе). Среди идей, возникших в области методологии программирования и разработки языков программирования, поддержка абстракции является одной из самых значительных. Абстракцию данных следует начать рассматривать с понятия переменной, которая представляет собой абстракцию ячейки ОП. При этом одной переменной определённого типа ставится в соответствие одна ячейка соответствующего типа. Однако оператор EQUIVALENCE в FORTRANе или Union в C, C++ позволяет в разные моменты времени в течение работы программы загружать одну и ту же ячейку несколько переменных различного типа. Далее появилось понятие массива, который абстрагирует область однотипных ячеек памяти. Затем возникла необходимость описания разнотипных объектов одной структурой (например, таблица данных разного типа), так в ЯП появился тип запись или структура. В языках объектно-ориентированного программирования произошёл синтез абстракции данных и абстракции процесса. Появился абстрактный тип данных, который объединил данные одного определённого типа и код обработки этих данных в единую синтаксическую единицу. Условно говоря, переменные этого типа стали называться объектами. Проверка типов является одним из основных механизмов надёжности языка, которая предполагает наличие средств обнаружения в программе всевозможных ошибок. При этом эти средства могут функционировать как при компиляции, так и при выполнении программы и осуществляют: Проверку типов (статическую, динамическую); Проверку диапазона изменения индексов массивов; Обработку исключительных ситуаций. Средства обработки исключительных ситуаций позволяют перехватывать ошибки и другие нештатные ситуации во время выполнения программы, принимать меры и затем продолжать работу. Этот механизм значительно повышает надёжность программ. Языки, как правило, обладают в большей (Ada, Java, C++) или меньшей (C, FORTRAN) степени средствами такой обработки, встроенной или пользовательскими. Совмещение имён предполагает использование одной и той же ячейки памяти под разными именами. Этот механизм является источником ненадёжности в программе, хотя и оправдывал себя в условиях дефицита оперативной памяти. Примерами совмещения имён может служить оператор EQUIVALENCE в языке FORTRAN или тип данных объединение Union в языке C. Стоимость языка складывается из следующих величин: Затраты на обучение программиста, что зависит от простоты и ортогональности. Стоимость создания программ на данном языке, зависит от лёгкости его использования. Появление языков высокого уровня связано с увеличением объёма и сложности программ и естественного желания уменьшить стоимость их разработки. Затраты на разработку компиляторов языка. Затраты на распространение ЯПВУ и компиляторов для него: язык Java начинал распространяться бесплатно, и это явилось одним из факторов его популярности. Стоимость обеспечения надёжности – недопущения сбоя программного обеспечения, эксплуатирующегося на критически важных объектах. Стоимость сопровождения программного обеспечения (ПО). Однако язык программирования можно оценивать и с точки зрения других классификаторов. Мощность языка. Определяется тем разнообразием задач, которые программируются на данном языке. Наиболее мощным языком является машинный язык. Уровень языка. Языки программирования делятся на: Языки низкого уровня (машинные языки); Ассемблеры, включающие мнемонические обозначения команд; Языки высокого уровня. Мобильность языка. Определяется независимостью от аппаратных средств. Эффективность языка. Обеспечивает эффективную реализацию языка (включая эффективную реализацию компилятора и эффективные программы генерируемые компилятором). |