- Любовные романы
- Фантастика и фэнтези
- Ненаучная фантастика
- Ироническое фэнтези
- Научная Фантастика
- Фэнтези
- Ужасы и Мистика
- Боевая фантастика
- Альтернативная история
- Космическая фантастика
- Попаданцы
- Юмористическая фантастика
- Героическая фантастика
- Детективная фантастика
- Социально-психологическая
- Боевое фэнтези
- Русское фэнтези
- Киберпанк
- Романтическая фантастика
- Городская фантастика
- Технофэнтези
- Мистика
- Разная фантастика
- Иностранное фэнтези
- Историческое фэнтези
- LitRPG
- Эпическая фантастика
- Зарубежная фантастика
- Городское фентези
- Космоопера
- Разное фэнтези
- Книги магов
- Любовное фэнтези
- Постапокалипсис
- Бизнес
- Историческая фантастика
- Социально-философская фантастика
- Сказочная фантастика
- Стимпанк
- Романтическое фэнтези
- Ироническая фантастика
- Детективы и Триллеры
- Проза
- Юмор
- Феерия
- Новелла
- Русская классическая проза
- Современная проза
- Повести
- Контркультура
- Русская современная проза
- Историческая проза
- Проза
- Классическая проза
- Советская классическая проза
- О войне
- Зарубежная современная проза
- Рассказы
- Зарубежная классика
- Очерки
- Антисоветская литература
- Магический реализм
- Разное
- Сентиментальная проза
- Афоризмы
- Эссе
- Эпистолярная проза
- Семейный роман/Семейная сага
- Поэзия, Драматургия
- Приключения
- Детская литература
- Загадки
- Книга-игра
- Детская проза
- Детские приключения
- Сказка
- Прочая детская литература
- Детская фантастика
- Детские стихи
- Детская образовательная литература
- Детские остросюжетные
- Учебная литература
- Зарубежные детские книги
- Детский фольклор
- Буквари
- Книги для подростков
- Школьные учебники
- Внеклассное чтение
- Книги для дошкольников
- Детская познавательная и развивающая литература
- Детские детективы
- Домоводство, Дом и семья
- Юмор
- Документальные книги
- Бизнес
- Работа с клиентами
- Тайм-менеджмент
- Кадровый менеджмент
- Экономика
- Менеджмент и кадры
- Управление, подбор персонала
- О бизнесе популярно
- Интернет-бизнес
- Личные финансы
- Делопроизводство, офис
- Маркетинг, PR, реклама
- Поиск работы
- Бизнес
- Банковское дело
- Малый бизнес
- Ценные бумаги и инвестиции
- Краткое содержание
- Бухучет и аудит
- Ораторское искусство / риторика
- Корпоративная культура, бизнес
- Финансы
- Государственное и муниципальное управление
- Менеджмент
- Зарубежная деловая литература
- Продажи
- Переговоры
- Личная эффективность
- Торговля
- Научные и научно-популярные книги
- Биофизика
- География
- Экология
- Биохимия
- Рефераты
- Культурология
- Техническая литература
- История
- Психология
- Медицина
- Прочая научная литература
- Юриспруденция
- Биология
- Политика
- Литературоведение
- Религиоведение
- Научпоп
- Психология, личное
- Математика
- Психотерапия
- Социология
- Воспитание детей, педагогика
- Языкознание
- Беременность, ожидание детей
- Транспорт, военная техника
- Детская психология
- Науки: разное
- Педагогика
- Зарубежная психология
- Иностранные языки
- Филология
- Радиотехника
- Деловая литература
- Физика
- Альтернативная медицина
- Химия
- Государство и право
- Обществознание
- Образовательная литература
- Учебники
- Зоология
- Архитектура
- Науки о космосе
- Ботаника
- Астрология
- Ветеринария
- История Европы
- География
- Зарубежная публицистика
- О животных
- Шпаргалки
- Разная литература
- Зарубежная литература о культуре и искусстве
- Пословицы, поговорки
- Боевые искусства
- Прочее
- Периодические издания
- Фанфик
- Военное
- Цитаты из афоризмов
- Гиды, путеводители
- Литература 19 века
- Зарубежная образовательная литература
- Военная история
- Кино
- Современная литература
- Военная техника, оружие
- Культура и искусство
- Музыка, музыканты
- Газеты и журналы
- Современная зарубежная литература
- Визуальные искусства
- Отраслевые издания
- Шахматы
- Недвижимость
- Великолепные истории
- Музыка, танцы
- Авто и ПДД
- Изобразительное искусство, фотография
- Истории из жизни
- Готические новеллы
- Начинающие авторы
- Спецслужбы
- Подростковая литература
- Зарубежная прикладная литература
- Религия и духовность
- Старинная литература
- Справочная литература
- Компьютеры и Интернет
- Блог
UNIX — универсальная среда программирования - Брайан Керниган
Шрифт:
Интервал:
Закладка:
Программы pic(1) и ideal(1) предназначены для подготовки рисунков, так же как eqn для уравнений. Подготовить рисунки значительно сложнее, чем уравнения (по крайней мере для набора), а поскольку традиции здесь отсутствуют, оба языка отчасти облегчают знакомство с этой техникой и ее использование. В качестве иллюстрации приведем простой рисунок и его выражение на pic.
.PS
.ps -1
box invis "document"; arrow
box dashed "pie"; arrow
box dashed "tbl";
arrow box dashed "eqn"; arrow
box "troff"; arrow
box invis "typesetter"
[ box invis "macro" "package"
spline right then up -> ] with .ne at 2nd last box.s
.ps +1
.PE
+-----+ +-----+ +-----+ +-------+
| | | | | | | |
документ->| pic |->| tbl |->| eqn |->| troff |->наборн. устр-во
| | | | | | | |
+-----+ +-----+ +-----+ +-------+
^
|
пакет макрокоманд ------+
Все рисунки в книге сделаны с помощью pic. Программы pic и ideal не являются частью седьмой версии, но сейчас они в нее включены.
Программы refer, pic и ideal представляют собой препроцессоры troff. Кроме того, в вашей документации есть программы для просмотра и комментирования текста. Наилучшая из известных программ — spell(1), которая выдает сообщения о возможных ошибках написания в файлах; мы ее здесь применяли. Программы style(1) и diction(1) анализируют пунктуацию, грамматику и использование языка. Со временем все они были превращены в "Рабочее место писателя" набор программ, помогающих улучшить стиль изложения. Эти программы полезны для обнаружения клише и слов, не являющихся необходимыми, а также некорректных фраз.
Программа spell считается стандартной. В вашей системе могут быть и другие программы, вы легко обнаружите их с помощью man:
$ man style diction wwb
или путем просмотра /bin и /usr/bin.
Историческая и библиографическая справкаПрограмма troff (ее автор — Дж. Осанна), предназначенная для графических систем CAT-4, имеет свою историю, восходя к RUNOFF, созданной Д. E. Зальтцером для CTSS в MIT в начале 60-х годов. Обе программы имеют общие цели и основной синтаксис команд, хотя troff, конечно, более сложная и мощная программа, а наличие eqn и других препроцессоров значительно повышает ее эффективность. Существует несколько новых программ для наборных устройств с более "цивилизованным" форматом входного текста; наиболее известны из них ТЕХ Д. Кнута ("ТЕХ and Metafont: New Direction in Typesetting", Digital Press, 1979) и Scribe Б. Рейда ("Scribe: a high level approach to computer document formatting". 7th Symposium on the Principles of Programming Languages, 1980).
Статья Фурута, Дж. Скофилда и А. Шоу "Document Formatting Systems: Survey, Concepts and Issues" (Computing Surveys, 1982) дает хороший обзор таких систем.
Представляет интерес оригинальная работа по eqn Б. Кернигана и Л. Черри "A system for typesetting mathematics" (CACM, March 1975). Пакеты макрокоманд ms, tbl и refer принадлежат M. Леску; они документированы только в справочном руководстве по UNIX (том 2А).
Препроцессор pic описан в статье Б. Кернигана "PIC a language for typesetting graphics" (Software Practice and Experience, January, 1982), препроцессор ideal в статье К Ван Вика "A high level language for describing pictures" (ACM Translation on Graphics, April, 1982).
Команда spell из файла shell, написанного С. Джонсоном, превратилась в Си-программу Д. МакИлроя. Программа spell из седьмого издания для быстрого поиска использует механизм хеширования и правила для автоматического отделения суффиксов и префиксов, чтобы уменьшить занимаемое словарем место. (См.: McIlroy. М. D. "Development of a spelling list". IEEE Transaction on Communications, January, 1982).
Программы style и diction описаны в работе Л. Черри "Computer aids for writers" (SYGPLAN Symposium on Text Manipulation, Portland, Oregon, June, 1981).
Глава 10
Эпилог
Операционной системе UNIX уже более десяти лет, а число использующих ее вычислительных машин растет сейчас быстрее, чем когда-либо. Для системы, сконструированной без коммерческих целей или даже намерений, это уникальный успех.
Главная причина популярности системы, вероятно, в ее переносимости свойстве, благодаря которому все, кроме небольших частей компиляторов и ядра, выполняется на любом компьютере без изменений. Поэтому разработчикам, запускающим программное обеспечение UNIX на своих машинах, достаточно лишь небольших усилий на ее адаптацию, чтобы успешно пользоваться все расширяющимся рынком программ для UNIX.
Система UNIX стала популярной задолго до того, как она приобрела коммерческое значение, и даже до того, как начала применяться не только на PDP-11, но и на других машинах. Статья Ритчи и Томпсона в CACM в 1974 г. вызвала интерес в академических кругах, а в 1975 г. шестая версия получила распространение и в университетах. В середине 70-х годов о UNIX заговорили: хотя система не поддерживалась и не имела гарантий, нашлись энтузиасты, которые работали с ней сами и рекомендовали ее другим. Еще одна причина успеха системы заключалась в том, что поколение программистов, использовавших академические системы UNIX, ныне ожидают найти среду UNIX в сфере своей деятельности.
Чем объясняется такой интерес к системе? Дело в том, что она была сконструирована и построена двумя очень талантливыми людьми, единственная цель которых состояла в создании среды, удобной для разработки программ. Свободные от давления рынка ранние системы были достаточно малы, чтобы в них мог разобраться один человек. Дж. Лайонс излагал шестую версию ядра в рамках курса по операционным системам для выпускников университета Нового Южного Уэльса в Австралии. В своих заметках он писал, что вся документация умещается в "студенческом портфеле" (это зафиксировано в недавних версиях).
Та ранняя версия базировалась на изобретениях в сфере приложений вычислительной науки, включающих обработку потоков (программные каналы), регулярные выражения, теорию языков (yacc, lex и т.п.) и ряд специальных вопросов типа алгоритма diff. Объединенные в одной системе, они стали ядром с такими возможностями, которыми не всегда располагают даже большие операционные системы. В качестве примера можно привести систему ввода-вывода, состоящую из иерархической файловой системы, редкой по тем временам, устройств, которым поставлены в соответствие имена в файловой системе, так что они не требовали применения специальных утилит, и дюжины основных системных вызовов, подобных примитивам open с двумя аргументами. Программное обеспечение, написанное на языке высокого уровня, поставлялось вместе с системой, так что его можно было изучать и модифицировать. На компьютерном рынке UNIX известна как одна из стандартных операционных систем. Размер ее ядра за последнее десятилетие вырос в 10 раз, хотя, к сожалению, качественно оно улучшается существенно медленнее. Увеличилось число труднопонимаемых программ, которые не созданы в существующей среде. Создаваемые средства обрастают командами с флагами, которые затемняют первоначальный замысел программ. Так как исходные тексты программ зачастую не распространяются вместе с системой, образцы хорошего стиля программирования становятся менее доступными.
Тем не менее последние версии все еще насыщены идеями,, сделавшими ранние версии столь популярными. Принципы, на которых основана UNIX простота структуры, отсутствие непропорциональных средств, использование существующих программ (вместо того, чтобы создавать их заново), программируемость командного языка, древовидная структура файловой системы и т.д. продолжают доминировать и вытесняют идеи "монолитных" предшествующих систем. Система UNIX, конечно, не может стать навсегда непревзойденной; однако те системы, которые рассчитывают ее "обойти", должны будут заимствовать многие из ее фундаментальных идей.
В предисловии отмечалось, что существует подход, или философия, UNIX, т.е. особый стиль программирования. Теперь, прочитав всю книгу, вы, должно быть, сможете оценить элементы этого стиля, проиллюстрированного многочисленными примерами.
Во первых, пусть машина работает. Используйте программы типа grep, wc и awk, чтобы автоматизировать задачи, которые бы вам пришлось делать вручную в других системах.
Во вторых, пусть работает и человек. Используйте программы, которые уже существуют как "строительные блоки" в ваших программах, с shell и программируемыми фильтрами, чтобы соединить их воедино. Пишите небольшие программы, обеспечивающие взаимодействие с имеющимися, которые решают реальные задачи, как мы сделали это в diff. Среда UNIX богата средствами, пригодными для самых разнообразных комбинаций, выберите из них единственно верную.

