Р.У. Себеста - Основные копцепции языков программирования (2001) (1160794), страница 7
Текст из файла (страница 7)
позволяющим создавать приложения в системе Х ИГ(пс)озк. Разработанный Ларри толлом [Еапу И ай) язык Рег) сначала прелставлял собой комбинацию языков ах и аик (Иа)! ае! а1.. 1996). После этого он получил значительное развитие и сейчас является мошным. хотя н несколько примитивным. языком программирования. Этот язык часто продол кают называть языком полготовки сценариев, но мы предпочитаем считать его странным. но вполне завершенным языком программирования. С появлением И'ог!й И'к)е И'еЬ популярность языка Рег1 резко возросла. в основном благоларя тому. что он является практически илеазьныч языком лля програчмирования интерфейса СО!(Соттоп ба!ежа) !пгегГасе — общий шлюзовой интерфейс).
Вообше говоря. языки полготовки сценариев внесли не очень большой вклад в развитие более традиционных языков программирования. Олнако язык Рег1 имеет несколько интересных свойств, которые будут описаны лазее в книге. 1.2.6. Специализированные языки программирования За последние 40 лет появилось множество специализированных языков программирования. В нх число вхолит язык йРО. используемый лля генерации деловых отчетов. язык АРТ, созданный лля управления программируемыми устройствами.
и язык ОР55. разработанный лля молелирования систем. Специализированные языки программирования не будут рассматриваться в книге. в основном из-за их узкой направленности. а также из-за того, что их тру лно сравнивать с другими языками программирования. 1.3. Критерии оценки языков программирования Как указывалось ранее. цель книги — тшательно изучить концепции.
лежашие в основе различных конструкшгй и возможностей языков программирования. 5(ы также оценим эти концепции, обратив особое внимание на то. как они влияют иа разработку и эксплуатацию программного обеспечения. Для этого нам необходимы лритерии оценки. Очевидно. перечень таких критериев неизбежно булет спорным. поскольку практически невозможно найти хотя бы двух специалистов по вычислительной технике. имеющих обшую точку зрения на относительную ценность того нлн иного свойства языка. Несмотря на это. большинство ученых согласится с важностью лритериев. предлагаемых ниже.
Некоторые из харалтеристик. воздействующих на наиболее важные из этих лритериев. указаны в таблице! .1, а собственно критерии рассматриваются в слелуюших разделах. 1.3. Критерии оценки языков прогроммировоиия Таблица 1.1. Критерии оценки языков программирования и влияющие на них характеристики Критерии Чи<н«оц<ьносп<ь ?елко<чнь оэдгп«о<Нидежность 1,<; .<к<и~ !ля <ники 1!р шота Ортогоназь«ость уиранлян<шис стр> кт> ры 1 и~ и< и стр> кт> ры ланнь<х Сии<аьсич«сках стр> ктура !! о тлержка абстракции Выразительность 11р <верка типов Ооработка ис<сзючительиь<х сиюаций 0< рзииченное совмещение ичсн 1.3.1. Читабельность Озним из важнейших критериев оценки языка программирования является легкость ч<ения и понимания програчм.
написанных на нем. До 1970-х годов разработка программного обеспечения в основном свозилась к соззанию кола. Оливка в !970-х годах оыла со<лана коицепш<я жииыииого ш<кла программного ооеспечения (Воос1<, 1987). Значение сооственно лош<ровлния ломанл сниз<шось. а основной частью жизненного ш<кла програчмного оосспечения стали считать его экспл>аташ<ю, особенно с точки зрения стоичости.
Поскольк> легкость эксплуатации в основном опрелеляется читабельно.тью программ. то читабельность стала важной характеристикой качества програл<м и языков програмчирования. Читаоельность необколичо рассчатривать только в контексте опрелеленной приклалной области. Если. к пример>. программа. описывающая вычисления, была написана на языке. зля этого не презиазиаченного. то она может оказаться неестественной и запу<аниой. так что читать ее о>лег крайне тр> лно.
В слез>юших позраззелах описываются характеристики. способств>юшие улучшешио читаоельности языка про< раммирования 1.3. 1.1. Простота На читабельность языка програмчирования с<шьное влияние оказывает его простота. Прежзе всего. язык, созержаший оольшое количество элечентарных конструкций. изучить сложнее.
чеч язык. в котороч и: меньше. Программисты. вынужденные использовать оольшой язык, стречягся из>чить лишь некоторое его позь<ножество и пренебречь ос гальнычи свойствами Такой способ из> чеиия иногла оправлывают тем. что количество лонстр>кций в языке слишком велико. ознако этот арг>мент неверен. Проблемы при чтении програччы возника<оп всякий раз. котла автор и читатель программы изучали разные позмножества языка. Второй характерис<икой языка программирования.
снижающей читабельность про< рач«. является множественность свойств. т.е. наличие нескольких способов совершения какого-:шоо зейс<вия. Например, пользовате.<ь ир<ираммируюший на языке С, может чр юави<ь езиниц> к целом> числ> четырьчя рахишнычи способами; ЗО <"лава!. Вводные замечания сооп1 = сочпт ч 1 сооп ч= 1 сочг:сьь чьсочп". Значения лвух последних выражений несколько отличаются друг от лр> га и: ~ » ачсний остальных выражений. олнако применение всех четырех приведет к одинаьчиич результатам.
Все эти варианты рассматриваются в главе 6. Третьей потенииальной проблемой является перегрузка операторов. т.с. ичли ис > символа, обозначаюшего оператор. нескольких значений. Это скопе~во иолепю днако может ухудшить читабельность программы. особенно если подьзовшс:ш ичсьп ирало создавать собственные перегруженные операторы и делают это без раб чных ~а; н,и ии Например, вполне лоп стима использовать оператор " " как .шя ис.ючислсниыз псраиий. так и лля операций с плаваюшей точкой. 1'акая перегрузка фактически > проигас~ язык, уменьшая число операторов.
Прелположим. однако. чго ирограчмист определил оператор "-'" с двумя операндами. прсдставляюшичи собой одномерные массив.,ь ичся я виду суммирование всех элементов обоих массивов. Поскольку обычно сложение векторов имеет соаери~енно иной смысл. это собьет с толку как автора. так и чи штсзсй программы.
Еше большую путаницу может вызвать программа. в которой пользователь определит оператор ";" с двумя векторными операндами. имея в виду вычисление раиюсти между первыми элементами этих векторов. Тема перегрузки операторов освсишсзся далее в главе б. Упрошение языка программирования может, конечно. зайти слишком да:юло 1)а- пример, изучая слелуюший раздел, вы можете заметить. что форма и счысл большинства операторов языка ассемблера являются эталонами простоты. Однако зта чрсзчсриая простота снижает читабельность программ. написанных иа языке ассечолсра. 11ню огсутствия более сложных управляюипгх операторов эти программы имеют меисс яси>к~ структуру. Кроме того.
вследствие простоты операторов их количество в програчче. написанной на языке ассемблера. намного превышает количество операторов в зквияалентной программе, написанной на языке высокого уровня Те жс сачые аргументы можно привести и при рассчотрении менее экстремального случая: язылов нысоко~о >ровня с неадекватными управляюшими операторами и стр> ктурачи данных. 1.3.1.2. Ортогоноленосте Ортогональность языка программирования означает. что управлянииие оиепазо!чя и структуры данных языка можно выразить с помошью относительно нсоольиичо лоличсства элементарных конструкиий (рйгпигке сопмгосга). подьз>ясь ограничснныч числоч способов.
Более того. любая возможная комбинаиия этих элечегпарных консгр>кпий разрешена и имеет смысл. Рассмотрич. например. типы данных. !!рсдположич. ч~о язык солержит четыре элементарных типа данных: иелый (!п!ецег). число с плаваюшей точкой (йоаг), число с двойной точностью (доиЫе) и символьный (сйагасгег). а так;кс зни ~ила операторов: массив (аггау) и указатель (ро(пгег) (оо ! гхег). Если операторы обоих ~ ппои могут применяться к самим себе и к четырем элсчентарныч типам данньж. тг можно определить большое количество струят>р ланных. Однако, если указатели нс чгч зт > казывать иа массивы. многие нз этих возможностей реализовать не удастся.
Смысл термина "ортогональность языка программирования" не зависит от контекста. в котором это свойство проявляется в программе. (Название "ортогоначьнос~ь" произошло от математического понятия ортогоназьных независимых вектороя.) Орпи<- 1.3. Критерии оценки языков программирования 31 на юность следует из симметрии отношений межлу элементарными элементами. Указа- ~«ш иог>т хранить алрес любой переменной или структуры данных.
Отсутствие ортогона п,ности ведет к появлению исключений из правил языков программирования. ]]сподьзование ортогональности как стрултурной концепции мы можем проиллюстри]ч ндть, сравнив олин из аспектов языков ассемблера мейнфреймов корпорации 1ВМ и с«рин суперминикомпьютеров компании ЧАХ. Рассмотрим простую ситуацию: сложени« ~в> х 32-битных целых чисел. хранящихся либо в памяти, либо в регистрах, и замена о.шпй из этих величин суммой. В мейнфреймах корпорации 1ВМ для этой цели использ> ю ~ ся две команды, имеющие следующую форму: Рей1, жежсгу се11 Вед1, Вео2 Здесь Вес и Рео2 прелставляют собой регистры, а петогу се11 — ячейку памяти. '>ти команды имеют следующую семантику; Эеа«1 <-содержимое(йед1) + содержимое(жежсгу се11) :-.