Нотация
Способ записи
Из всех творений человека | самым удивительным является язык. | Джайлс Литтон Страчи | Слова и поэзия | Правильный выбор языка может решающим образом влиять на простоту написания программы.Форматирование данных
Между тем, что мы хотим сказать компьютеру ("реши мою проблему"), и тем, что нам приходится ему говорить для достижения нужного результата, всегда существует некоторый разрыв. Очевидно, что чем этот разрыв меньше, тем лучше.Регулярные выражения
Спецификаторы формата для pack и unpack – достаточно простой способ записи, описывающий компоновку пакетов. Следующая тема iniero обсуждения – несколько более сложный, но гораздо более выразительный способ записи – регулярные выражения (regular pressions), определяющие шаблоны текста (patterns of text).Программируемые инструменты
Множество инструментов группируется вокруг языков специального назначения. Программа grep – всего лишь одна из целого семейства инструментов, которые используют регулярные выражения или другие языки для разрешения программистских проблем.Интерпретаторы, компиляторы и виртуальные машины
Какой путь проходит программа от исходного кода до исполнения? Если язык достаточно прост, как в printf или в наших простейших регулярных выражениях, то исполняться может сам исходный код. Это несложно; таким образом можно запускать программу сразу же по написании.Программы, которые пишут программы
Возможно, самым примечательным в функции generate является то, что она представляет собой программу, которая пишет другую программу – ее вывод есть поток исполнимых команд для другой (виртуальной) машины.Использование макросов для генерации кода
Опустившись на пару уровней, можно говорить о макросах, которые шут код во время компиляции. На протяжении всей книги мы предостерегали вас от использования макросов и условной компиляции, поскольку этот стиль программирования вызывает множество проблем, все же они все равно существуют, и иногда текстуальная подстановка – это именно то, что нужно для решения данной проблемы.Компиляция "на лету"
В предыдущем разделе мы говорили о программах, которые пишут программы. В каждом примере программы генерировались в виде исходного кода и, стало быть, для запуска должны были быть скомпилированы или нтерпретированы.Дополнительная литература
В книге Брайана Кернигана и Роба Пайка "The Unix Programming nvironment" (Brian Kernighan, Rob Pike. The Unix Programming nvironment. Prentice Hall, 1984) широко обсуждается инструментальный подход к программированию, который так хорошо поддерживается Unix.