8.8 Заключение
8.8 Заключение
Ознакомившись с материалом этой главы, мы можем сделать важные выводы. Во-первых, средства для развития языков очень нужны, так как позволяют сконцентрировать внимание на интересной работе проектировании языка (с ним легко экспериментировать). Грамматика является организующей структурой при реализации: программы привязываются к грамматике и вызываются в подходящий момент в процессе разбора.
Во-вторых, и это уже философский аспект, ценна сама постановка задачи речь идет о разработке языка, а не просто о написании программы. Построение программы как языкового процессора обеспечивает регулярность синтаксиса (т.е. взаимодействие с пользователем), делает более структурированной реализацию. Кроме того, мы получаем гарантию, что новые средства будут хорошо согласовываться с уже реализованными. Под "языками", конечно, следует понимать не только традиционные языки программирования, но и уже упоминавшиеся выше в примерах языки eqn и pick, а также yacc, lex, и make.
Рассмотрены здесь и вопросы использования программных средств. В частности, показана роль программы make, которая предотвращает целый класс ошибок (например, вы забыли перетранслировать какую-то подпрограмму). Она позволяет избавиться от лишней работы и предоставляет удобный способ сгруппировать в одном файле большое число связанных и, возможно, зависимых операций.
С помощью файлов макроопределений вы можете координировать описания данных, доступных более чем в одном файле. Проводя централизацию информации, они исключают ошибки, вызванные несогласованностью применяемых версий, особенно если действуют совместно с программой make. Весьма важно разбить данные и подпрограммы на файлы таким образом, чтобы они не были видимы, если в этом нет необходимости.
Хотелось бы отметить, что из-за ограниченного объема книги мы мало внимания уделили тем средствам UNIX, которые применяются при разработке семейства программ hoc. Каждая версия программы находится в отдельном каталоге, для идентичных файлов используются связи; постоянно вызываются команды ls и du, чтобы следить за тем, какие файлы где находятся. На многие вопросы ответы дают сами программы. Например, на вопрос: "Где описана данная переменная?" отвечает программа grep. "Как мы внесли изменения в данную версию?" отвечает idiff. "Насколько велик файл?" отвечает wc. Пора делать копию файла обратитесь к команде cp. Нужно скопировать только те файлы, которые изменились со времени последнего копирования? Вам поможет в этом деле программа make.
Такой общий подход типичен для повседневной разработки программ в системе UNIX: множество небольших программных средств, каждое в отдельности или их различные сочетания, позволяет автоматизировать работу, которую иначе пришлось бы выполнять вручную.
Историческая и библиографическая справка
Программа yacc создана С. Джонсоном. Класс языков, для которых yacc может создавать программу разбора, называется LALR-(1): разбор здесь ведется слева направо и входной поток просматривается не более чем на одну лексему вперед. Понятие раздельных описаний для задания приоритетов и разрешения неоднозначностей в грамматике появилось вместе с yacc. Этот вопрос рассматривается в статье А. В. Ахо, С. К. Джонсона и Д. Д. Ульмана "Deterministic parsing of ambiguous grammars" (CACM, August, 1975). Там же приведены новые алгоритмы и структуры данных для создания и хранения таблиц разбора.
Основы теории, на базе которой построены yacc и другие программы анализаторы, излагаются в книге А. В. Ахо и Д. Д. Ульмана "Principles of Compiler Design" (Addison Wesley, 1977). Сама программа yacc описана в справочном руководстве по UNIX (том 2B). В этом разделе также представлен калькулятор, сравнимый с hoc2: для вас такое сравнение может оказаться полезным.
Программа lex первоначально было написана М. Леском. Теория lex освещена в книге Ахо и Ульмана, а сам язык lex описан в справочном руководстве по UNIX.
Программы yacc и в меньшей степени lex использовались для реализации многих языковых процессоров, включая переносимый компилятор Си, процессоры на Паскале, Фортране 77, Ратфоре, awk, be, egn и pick.
Программа make создана С. Фельдманом и описана в статье "MAKE a program for maintaining computer programs" (Software-Practice & Experience, April, 1979).
В книге Д. Бентли "Writing Efficient Programs" (Prentice-Hall, 1982) обсуждается техника ускорения выполнения программ. Акцент в ней делается на создание подходящего алгоритма, а также на улучшение кода, если в этом есть необходимость.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКДанный текст является ознакомительным фрагментом.
Читайте также
15.5. Заключение
15.5. Заключение В этой главе мы показали, как с помощью библиотеки REXML можно разбирать XML-документы, представленные в виде дерева DOM или потока. Познакомились мы и с интерфейсом REXML к языку XPath.Был продемонстрирован разбор информации из новостных каналов, представленных в
16.8. Заключение
16.8. Заключение В этой главе мы рассмотрели некоторые подходы к тестированию (преимущественно, к автономному тестированию компонентов). Мы познакомились с библиотекой Test::Unit и комплектом инструментов ZenTest.Мы бросили беглый взгляд на отладчик Ruby, а также показали, как с
17.4. Заключение
17.4. Заключение В этой главе мы изучили основы документирования проектов с помощью инструмента RDoc, а также познакомились с программой setup.rb и системой RubyGems — двумя наиболее популярными способами создания дистрибутивных пакетов.Наконец, мы бегло рассмотрели сайт RubyForge и
18.3. Заключение
18.3. Заключение Эта глава представляет собой введение в сетевое программирование на низком уровне. В частности, приведены простые примеры серверов и клиентов. Мы видели, как написать клиент для существующего сервера, созданного не нами.Мы рассмотрели также протоколы
19.8. Заключение
19.8. Заключение В этой главе мы рассмотрели низкоуровневые детали программирования CGI-приложений для Web. Мы видели, как в этом помогают такие инструменты, как модуль mod-ruby. Существует еще немало инструментов, помимо упомянутых в этой книге, например ruby-web, Amrita, Tofu и Cerise. Как
20.5. Заключение
20.5. Заключение Эта глава содержит введение в распределенный Ruby. Мы познакомились с тем, как сервис запускается и взаимодействует с клиентами, а также рассмотрели вопросы безопасности.Мы выяснили, что система Rinda может выступать в роли простого распределенного хранилища
21.7. Заключение
21.7. Заключение В этой главе мы рассмотрели ряд инструментов, облегчающих жизнь программисту на Ruby. К числу общеупотребительных относятся интерактивная оболочка для Ruby irb, инсталлятор RubyGems и утилита чтения документации ri. Мы также дали обзор модулей для поддержки Ruby,
22.8. Заключение
22.8. Заключение Вы дошли до конца этого объемистого тома. В противовес моим ожиданиям, читатели говорили, что прочли первое издание от корки до корки, а некоторые даже выучили Ruby по этой книге (хотя я уделил очень мало времени изложению основ).Мне не важно, читали вы книгу
Заключение
Заключение Хочется верить, что эта книга поможет читателям избежать попадания в мошеннические сети, хитроумно расставленные по всему Интернету. Теперь вы знаете, где и чего следует опасаться, как проверить заманчивое предложение о сотрудничестве, и почему ни в коем
Заключение
Заключение С помощью данной книги и интерактивной обучающей системы вы научились работать с наиболее распространенными программами популярного пакета приложений Microsoft Office 2007.Теперь вы знаете, как создавать и редактировать текстовые документы в Word 2007; формировать и
Заключение
Заключение В книге, конечно, освещены не все возможности и нюансы работы с программой Excel. Любое практическое руководство предназначено для того, чтобы дать представление об основных (базовых) приемах работы. Опыт и мастерство работы с большинством программ
ЗАКЛЮЧЕНИЕ
ЗАКЛЮЧЕНИЕ Мы прошли долгий путь от начала этого руководства. Теперь вы уже познакомились с большинством основных свойств языка Си. (Главное из того что, мы опустили,- операции с разрядами и расширения UNIX 7 - рассматриваются кратко в приложении Б). Вы узнали и
Заключение
Заключение Вот и подошло к концу ваше знакомство с Photoshop. Почему знакомство? Потому что только с опытом вы сможете приобрести профессиональные навыки работы в программе.Этот видеосамоучитель – первая ступенька в освоении графического пакета Adobe Photoshop CS4. Когда вы
Заключение
Заключение Формат книги не позволил рассказать еще многое из того, что хотелось бы рассказать. Например, о том, что eVB не имеет компонента для создания контекстных меню, но при помощи вызовов функций CE API его все же можно создать в вашем приложении. Ничего не было рассказано
2.4 Заключение
2.4 Заключение Если рассматривать создание и развитие информационной системы (ИС) как исторический процесс, то оценка СУБД как базиса для создания или развития ИС может проводиться по трем направлениям: Каковы перспективы ее использования в будущем?Допускает ли СУБД
Заключение
Заключение Хочется отметить, что рассмотренный нами пример реализации делегатов может служить иллюстрацией как сильных, так и слабых сторон языка C++. Слабая сторона C++ - это его сложность. Особенно хорошо она заметна при реализации библиотек на базе шаблонов. Их код