Р.У. Себеста - Основные копцепции языков программирования (2001) (1160794), страница 33
Текст из файла (страница 33)
Понятно, что одной из причин быстрого роста популярности языка Зака является его 2.17. Программирование в ЪЧог)д зггйа ЮеЬ: язык Зама простота. за что структура языка 1ауа и полюбилась программистам. Наконец, некоторое время существовала группа программистов на языке С+~-, возражавшая против того, что они считали проблемами языка С++. Язык ]ауа предложил нм альтернативу: мощность языка С+а и уменьшение количества проблем. Ниже следует пример программы на языке !ауа.
// Поимер программы на языка Оача // Ввод: белое число 11яГ1еп, меньше 100, за которым следует набор целых чисег. в количестве 11яг1еп г/ Выводи Количество введенных величин, которые больше их среднего арифметического ашрогс ]ача.1с. о1аяя 1 гЯогг ( рцЫас всасфо ноас( ва1п(ЯГгапд агдя[]) СЬгонв 10Ехсер<1оп ( аса1прц=Яггеав 'и = пен Раса1прцгЯггеав(Яуягев.зп); апс я 1еп, соцпгег, я от, 0 ачегаое, геяц1с = 0; з.пк [] гс11ят = 1пс [99]; 1'я=1сп = пгедег.рагяе1пг(1п.геас(Ыпе())г 'г (( яг1еп > 0) йь (11я 1еп < 100)) ( / Считывание входных вели .ин в массив и вычисление суммы */ Гог (сосцзгег - 0 ; соцпгег < '1яг1еп; соцпгег++) ( 1пт11яг[ссцпгег] тп=едег.ча1цеОЙ(1п.геаб 1пе()).1птда1це(,'; яцв += 1пг11яг[соцпгег]; /* Вычисление среднего арифметического "/ аиегаде = яцв / 11яг1еп; / Вычисление количества входных величин, которые больше их среднего "/ Вог (соцпсег = 0; соцпгег < 11яс1епг соцпгегч+) аГ (1пг11яг[соцпгег] > ачегаде) геяц1г~~г /- Вывод результатов */ Буядет..оц .рсзпГ1п( "тпКоличество чисел, которые больше их среднего:" + геяц1г)) //** конец блока выбора 11 ((11яг1еп > О) е1яе Буясев.
оцс. рГ1пГ1п ( "Ошибка — введена неверная длина списка~п"); ] //*' конец метода вафп ) //™ конец класса 1пгЯогг 1'ге Глава 2. Обзор основных языков программирования Важнейшим источником исторической информации о развитии языков программирования является книга "Нипогу оГ Ргойгаапипя Еапйцайез" под редакцией Ричарда Векселблата (Фехе!Ыай 1981). В ней содержится описание срел и предпосылок к развитию 13 важных, по мнению самих разработчиков.
языков программирования. Подобная же работа возникла в результате второй "исторической" конференции, вышедшей на этот раз в виде специального выпуска АСМ 51ОРЕАХ )4о11сез (АСМ. 1993а). В этой работе рассматриваются история и эволюция еше 13 языков программирования. Доклад "Еаг1у Оете1орпзепг оГ Ргойгапитнпа 1.апацайез" (Кпцгп апг) Рагбо.
1977). являющийся частью энциклопедии "Епсус)оресйа оГ Сошрцгег Бс)епсе апд Тесппо!о8у", представляет собой великолепную 85-страничную рабозу. в которой подробно описано развитие многих языков. в том числе и языка ЕОКТКА)ч. В работе содержатся примеры программ. иллюстрир> юшие свойства мнопщ описываемых языков. Еще одной книгой. прелставляющей большой исторический интерес. является "Ргойгапип)пй 1апацайез: Н)згогу ап6 Гцпг!ашепса1з".
написанная Джин Саммет (Яагпшег, 1969). В этой книге на 785 страницах подробно описываются 80 языков программирования 1950-60-х голов. Саммет также выпустила несколько скорректированных версий этой книги, например (Батглег, ! 976). В каком году был разработан язык Р1апка)к01? В каком году была опубликована эта Разработка". Какие лве обцше структуры ланных были включены в язык Р!апка1йц1? Как в начале 1950-х годов реализовывались псевдокоды? Система Бреедсоб(п8 была создана для преодоления двух существенных недостатков аппаратного обеспечения компьютеров начала 1950-х.
Каких? Почему в начале 1950-х годов медлительность интерпретации программ считалась приемлемой'? Какие два важных свойства аппаратного обеспечения появились в компьютерах 1ВМ 704? 3. 4. 7. В каком году начазась разработка языка РОКТКАХ? 8. Какой была основная область применения компьютеров во время создания языка РОКТКАХ? 9. Что было источником всех управляющих логических операторов языка РОКТКА)Ч !? 119 Вопросы Мы изучилй развитие некоторых важнейших языков программирования и среды. в которых они создавались. Эта глава. мы надеемся.
станет фундаментом для глубокого обсуждения важных свойств современных языков программирования. 1О. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. ЗЗ. Какое самое значительное свойство было добавлено к языку ГОКТКА)ч ! с целью получения языка ГОКТКА)ч П'! Какой управляюший логический оператор был введен в язык ГОКТКАН !Ч для получения языка ГОКТКА)Ч 77? В какой версии языка ГОКТКАХ впервые появились динамические переменные? В какой версии языка ГОКТКАХ впервые появилась обработка символьных строк? Почему в конце 1950-х годов лингвистов интересовала область искусственного интеллекта? Когда и кем был разработан язык 1,!5Р? По каким параметрам языки 5сЬете и СОММОХ 1.!5Р являются полной противоположностью друг другу? Какой диалект языка 1.!5Р использовался в некоторых университетах для вводных курсов программирования? Какие две профессиональные организации сообша разработали язык А1.001.
60? В какой версии языка А1.001. появилась блочная структура? Какой упушенный элемент языка А1.001. 60 разрушил его шансы на широкое использование? Какой язык был разработан для описания синтаксической структуры языка А!.00!. 60? На основе какого языка созлан язык СОВ01 ". В каком году началась разработка языка СОВОГО? Какая структура данных. появившаяся в языке СОВ01., была позаимствована из языка Р!ап1сайсй!? Какая организация внесла наибольший вклад в ранний успех языка СОВ01. (с точки зрения объема его использования)? На какую пользовательскую ~руину была рассчитана первая версия языка ВА5!С? Почему язык ВА51С является важным языком начала !980-х годов? Какие два языка призван был заменить язык Р1.Л? Для какой новой серии компьютеров разрабатывался язык Р1/1? Какие свойства языка 5!МУ!.А 67 сейчас являются важными частями некоторых объектно-ориентированных языков программирования".
Почему честь нововвеления структуризации ланных приналлежгп языку А1.001. 68, но часто приписывается языку Рааса!? Какой структурный критерий в значительной степени использовался в языке А1.001. 68? В каком языке впервые появился оператор савв? Какие операторы языка С копируют подобные операторы языка А1.001. 68? Какие две характеристики языка С делают его менее надежным, чем язык Рааса!? 120 Глава 2. Обзор основных языков программирования 45.
46. 10. 11. Упражнвния 121 36. 37. 38. 39. 40. 41. 42. 44. Что представляют собой непроцедурные языки". Какие два типа утверждений хранятся в базе ланных языка Рго!о8? Для какой основной области разрабатывался язык Ада? Как в языке Аг!а называются параллельные программные блоки? Какая конструкция языка Аг!а обеспечивает поддержку абстралтных типов данных? Из чего состоит мир языка Бта!!!а!й? Какие три концепции составляют основу объелтно-ориентированного программи- рования? Почему в язык С+-' включены ненадежные свойства языка С? Что общего имеют языки Ада и СОВО!.? Каково первое применение языка !ача? Назовите две причины большей надежности языка Зата по сравнению с языком С+~-. Какие, по вашему мнению, свойства языка Р!алка!кй! оказали бы наибольшее влияние на язык РОКТКАХ О, если бы разработчики языка РОКТКАХ были знако- мы с языком Р!апкаЫ!? Определите возможности созданной Бэкусом системы 701 Бреедсод!пй и сравните их с соответствующими возможностями современного микрокалькулятора.
Напишите краткую историю систем А-О, А-1 и А-2, разработанных Грейс Хоппер и ее коллегами. В качестве исследовательского проекта сравните средства языка РОКТКАХ О с со- ответствующими средствами системы Ленинга н Цирлера. Какая из трех целей, поставленных перед комитетом разработчиков языка А!.ОО!., по вашему мнению, была самой трудно достижимой в то время? Выскажите аргументированное предположение о наиболее частой синтаксической ошибке в программах, написанных на языке 1.1БР? Язык 1.1БР начинал как чистый функциональный язык, но постепенно приобретал все больше и больше императивных функций.
Почему? Подробно опишите три важнейшие, по вашему мнению, причины отсутствия ши- рокого распространения языка А1.О01. 60. Почему, по вашему мнению, в языке СОВОК было разрешено использование длинных идентификаторов, тогда как в языках РОКТКАХ и А1.601.
— нет? Какую вы слышали главную причину редкого использования языка ВА81С специа- листами по компьютерным наукам'? Укажите. какими основными побуждениями руководствовалась корпорация 1ВМ при разработке языка РБП? 12. Были ли основные стимулы корпорации 1ВМ при разработке языка Р1Л верными в свете истории развития компьютеров и языков программирования после 1964 года". 13. Опишите своими словами концепцию ортогональности в разработке языков программирования.
14. Назовите основную. по вашему мнению. причину более широкого использования языка Р1Л, чем языка А1.ОО1. 68. 1ч. Какие аргументы можно назвать "за" и "против' языков, не солержаших типы типы данных'! 16. Су шествуют ди языки логического программирования помимо языка Рго1о8? 17. Как вы относитесь к утверждению, что слишком сложные языки очень опасны лля использования.
и все языки должны быть маленькими и простыми? 18. Считаете ли вы разработку языка комитетом хорошей идеей? Аргументируйте ваше мнение. 19. Языки постоянно эволюционируют. Какие, по вашему мнению, ограничения свойственны изменениям в языках программирования? Сравните ваши ответы с эволю- инеИ языка РОКТКА1Ч. 20. Укажите в таблице все основные усовершенствования в области языков программирования, в том числе даты их появления. языки, в которых они впервые проявились, и фамилии разработчиков.
122 Глава 2. Обзор основных языков программирования чг 3.1. Введение 3.2. Общая задача описания синтаксиса 3.3. Формальные методы описания синтаксиса 3.4. Рекурсивный нисходящий синтаксический анализ 3.6. Атрибутивные грамматики 3.6. Описание смысла программ: динамическая семантика ' Грейс Хаппер (Вгасе М. Норрег) Грейс Хоппер, офицер ВМФ США и бывшая сотрудница компании 0НПГАС, в первой половине 1вбс-х годов разработала ряд "компилирующих" систем, использованных для программирования коммерческих приложений.
К 1вба году зти системы воплотилнсь в первом языке программирования высокого уровня для коммерческих приложений— языке Р1ОУУ-МАТ1С, на основе ' которого, большей частью, был создан язык СОВОГ.. Грейс Хоппер также участвовала в разработке языка СОВОК в качестве консультанта исполнительного комитета конференции СООАВУ~. 123 Описание синтаксиса и семантики лапкой главе рассматриваются следуюшие темы. Во-первых, лаются определе- В ния терминов сншпиксис и семантика. Затем полробно обсуждается наиболее распространенный метод описания синтаксиса: контекстно-своболные грамматики (формы Бэкуса-Наура (Васйцз-Хацг гогш)).
Далее следует описание синтаксических графов и краткое введение в рекурсивный нисхоляший синтаксический анализ, который являя~ел обычной техникой синтаксического разбора, основанного непосредственно на конгсксзно-свооодных грамматнках. Далее описываются атрибутивные грамматики. коюрыс люгут использоваться лля описания как синтаксиса, так и статической семантики я и ~л 1в программирования.
В завершение вводятся три формальных метода описания семян|око — операционная, аксноматическая и ленотационная семантики. Из-за сложнос ти. свойственной метолам описания селгантнкн, их обсуждение будет кратким, хотя по каждом) нз трех названных методов можно написать целую книгу (что и было сделано нскозорымн авторами). ЗЛ. Введение Задача разработки краткого, но доступного описания языка программирования сложна, но ес решение необходимо лля успешного применения языка.