- •Лекции по теории языков программирования Общие понятия теории языков программирования
- •Области применения языков программирования
- •Критерии эффективности языков программирования
- •Критерий читабельности языков программирования
- •Критерий легкости создания программ
- •Надежность языков программирования
- •Критерий стоимости языков программирования
- •Этапы создания программы на языке программирования
- •Нисходящее проектирование программ
- •Структурное программирование и проектирование программ
- •Модульное программирование
- •Структурное кодирование
- •Объектно-ориентированное проектирование
- •Операторы языков программирования
- •Линейные операторы
- •Операторы перехода
- •Составные операторы
- •Условные операторы
- •Операторы выбора
- •Организация повторения операторов
- •Операторы цикла с заданным числом повторений
Критерии эффективности языков программирования
Язык программирования можно определить множеством показателей, характеризующих отдельные его свойства. Возникает задача введения меры для оценки степени приспособленности языков программирования к выполнению возложенных на него функций — меры эффективности.
Эффективность определяет степень соответствия ЯП своему назначению. Она измеряется либо количеством затрат, необходимых для получения определенного результата, либо результатом, полученным при определенных затратах. Произвести сравнительный анализ эффективности нескольких языков программирования, принять решение на использование конкретного языка позволяет критерий эффективности.
Критерий эффективности — это правило, служащее для сравнительной оценки качества различных языков программирования.
В качестве основных критериев эффективности обычно выступают:
читабельность (легкость чтения и понимания программ);
легкость создания программ (удобство языка для создания программ в выбранной области);
надежность (обеспечение минимума ошибок при работе программ);
стоимость (суммарная стоимость всего жизненного цикла языка);
переносимость программ (легкость переноса программ из одной операционной среды в другую);
универсальность (применимость к широкому кругу задач);
четкость (полнота и точность официального описания языка).
В свою очередь, каждый из критериев эффективности зависит от множества разнообразных характеристик. Рассмотрим важнейшие из этих критериев.
Критерий читабельности языков программирования
Одним из важнейших показателей качества языка программирования является легкость чтения и понимания программ, написанных на нем. По современным представлениям самый длинный период времени из жизненного цикла программ приходится на сопровождение, в ходе которого программы часто модифицируются. Поскольку читабельность программ определяет легкость сопровождения, ее считают существенной характеристикой качества программ и языков программирования.
Читабельность (Readability) языка программирования должна способствовать легкому выделению основных понятий каждой части программы без обращения к документации.
На легкость читабельности языков программирования влияют простота, ортогональность и структурированность потока управления памятью в программе.
Простота сильно влияет на читабельность языка программирования. Язык должен предоставить простой набор конструкций, которые могут быть использованы в качестве базисных элементов при создании программы.
Желательно обеспечить минимальное количество различных понятий с простыми правилами их комбинирования. Этому мешает наличие в языке нескольких способов описания одного и того же действия. Например, в языке С добавление единицы к целому числу можно записать четырьмя способами. Сильное воздействие на простоту оказывает синтаксис языка: он должен прозрачно отражать семантику конструкций, исключать двусмысленность толкования. Предельно лаконичный синтаксис удобен при написании программы, однако усложняет ее модификацию, поскольку в программе нелегко разобраться. Здесь нужен разумный компромисс — простота не должна быть чрезмерной, не должна приводить к загадкам расшифровки.
Ортогональность означает, что любые возможные комбинации различных языковых конструкций будут осмысленными, без непредвиденных ограничений или неожиданного поведения, возникающих в результате взаимодействия конструкций или контекста использования.
Например, предположим, что некоторый язык программирования содержит три элементарных типа данных (целый, вещественный с плавающей точкой и символьный), а также две конструкции данных (массив и указатель). Если обе конструкции могут применяться к этим типам и самим себе, то говорят об их ортогональности, обеспечивающей создание большого количества структур данных.
Когда конструкции языка ортогональны, язык легче выучить и использовать для чтения и создания программ, ведь в нем меньше исключений и специальных случаев, требующих запоминания.
Примером недостатка ортогональности на языке С является то, что локальные переменные могут быть определены только в начале блока (составного оператора). В C++ переменные определяются в любом месте блока (конечно, перед использованием), что повышает ортогональность.
Вместе с тем излишняя ортогональность может стать источником проблем. Например, из-за разрешения полной ортогональности в ходе компиляции программы не генерируются ошибки, даже при наличии комбинаций, которые логически не согласованы или крайне неэффективны при выполнении.
Следовательно, простота языка должна быть результатом комбинирования небольшого числа элементарных конструкций и ограниченного применения понятия ортогональности.
Структурированность потока управления в программе определяется порядком передач управления между операторами программы, который должен быть удобен для чтения и понимания человеком. Речь идет об ограниченном использовании оператора безусловного перехода goto и применении специальных структур управления.
