stringtranslate.com

Корпус Hamilton C

Hamilton C shell — это клон Unix C shell и утилит [1] [2] для Microsoft Windows, созданный Николь Гамильтон [3] в Hamilton Laboratories как полностью оригинальная работа, не основанная на каком-либо предыдущем коде. Впервые он был выпущен на OS/2 12 декабря 1988 года [4] [5] [6] [7] [8] [9] и на Windows NT в июле 1992 года. [10] [11] [12] Версия OS/2 была прекращена в 2003 году, но версия Windows продолжает активно поддерживаться.

Дизайн

Оболочка Hamilton C отличается от оболочки Unix C в нескольких отношениях. К ним относятся архитектура компилятора , использование потоков и решение следовать соглашениям Windows, а не Unix. [8] [9]

Парсер

Оболочка Hamilton C и Cygwin bash на Windows 7 , демонстрирующие использование рекурсии для факторизации.

Оригинальная оболочка C использует специальный парсер. Это привело к жалобам на его ограничения. Он работает достаточно хорошо для тех вещей, которые пользователи вводят интерактивно, но не очень хорошо для более сложных команд, которые пользователь может потратить время на написание в скрипте. Например, невозможно передать вывод оператора foreach в grep . Существовало ограничение на то, насколько сложную команду он мог обработать. [13]

Напротив, Hamilton использует нисходящий рекурсивный синтаксический анализатор , который позволяет ему компилировать операторы во внутреннюю форму перед их запуском. [1] [8] В результате операторы могут быть вложены или конвейеризированы произвольно. [6] Язык также был расширен встроенными и определяемыми пользователем процедурами, локальными переменными, плавающей точкой и дополнительными выражениями, операторами редактирования и подстановки, включая конструкцию подстановочных знаков «неопределенный каталог», записанную как « ...», которая соответствует нулю или более уровням каталогов, как требуется для соответствия остальной части шаблона. [14]

Темы

Циклы дат оболочки Hamilton C и Cygwin bash .

Не имея fork или высокопроизводительного способа воссоздать эту функциональность, Hamilton вместо этого использует возможности потоков Windows . [6] [8] Когда создается новый поток, он запускается в том же пространстве процесса и разделяет все состояние процесса. Если один поток изменяет текущий каталог или содержимое памяти, это изменяется для всех потоков. Гораздо дешевле создать поток, чем процесс, но между ними нет изоляции. Чтобы воссоздать отсутствующую изоляцию отдельных процессов, потоки кооперируются для совместного использования ресурсов с помощью блокировок . [15]

Соглашения Windows

Hamilton отличается от других оболочек Unix тем, что он также напрямую поддерживает соглашения Windows для букв дисков , косых черт в именах файлов , экранированных символов и т. д. [9]

Ссылки

  1. ^ ab Early Hamilton C shell Quick Reference (PDF) . Hamilton Laboratories, Wayland, MA. 10 июля 1990 г. . Получено 28 июля 2016 г. .
  2. Faught, Danny (31 августа 1996 г.). «Игра в наперстки». Software QA Magazine . 3 (4). Архивировано из оригинала 1 марта 2012 г. Получено 8 апреля 2013 г.
  3. Автор обсудила свой переход от Дугласа Гамильтона на панельной дискуссии в Стэнфорде, начало в 29:37. Николь Гамильтон, Карл Ингрэм, Лиз Кеннеди Майерс, Том Миллс, Джон Ордуэй, Скотт Тэтчер, Кирсти Уайлд (модератор) (28 ноября 2007 г.). Панельная дискуссия класса 1972 года: Черт возьми, нет, мы не уйдем (тихо в ночь)!. Ассоциация выпускников Стэнфорда, iTunes U. Получено 28 июля 2016 г.
  4. ^ Махлис, Шарон. «Wayland writer for IBM» (PDF) . Middlesex News (18 декабря 1988 г.): 2E . Получено 28 июля 2016 г. .
  5. ^ Sussman, Ann. "Hamilton C Shell ускоряет разработку приложений OS/2" (PDF) . PC Week (26 декабря 1988 г. – 2 января 1989 г.): 37. Получено 28 июля 2016 г.
  6. ^ abc Hamilton, Douglas A. "Hamilton C shell Announcement" (PDF) . IBM Personal Systems Developer (лето 1989 г.): 119–121 . Получено 28 июля 2016 г. .
  7. ^ Ричман, Скотт (январь 1991 г.). «Исследование оболочки Гамильтона C» (PDF) . Журнал доктора Добба . Получено 28 июля 2016 г.
  8. ^ abcd Goutal, Kenneth G. "The Hamilton C shell" (PDF) . MIPS Magazine (сентябрь 1989 г.) . Получено 28 июля 2016 г. .
  9. ^ abc Ягер, Том. "OS/2, Unix Style" (PDF) . Журнал BYTE (февраль 1990 г.) . Получено 28 июля 2016 г. .
  10. Hamilton C shell для Windows Release Notes 4.0, получено 28 июля 2016 г.
  11. Hamilton, Doug (27 июля 1995 г.). "Looking for C-Shell on NT". Группа новостей : comp.os.ms-windows.nt.misc. Usenet:  [email protected] . Получено 8 октября 2010 г.
  12. ^ Deignan, Michael P. (31 марта 1998 г.). "Hamilton C Shell". Windows IT Pro . Получено 22 сентября 2019 г.
  13. ^ Том Кристиансен считает программирование Csh вредным
  14. ^ "Подстановка подстановочных знаков и сопоставление с образцом". Hamilton Laboratories . Получено 13 августа 2018 г.
  15. Гамильтон, Дуг (21 апреля 1995 г.). «Предложения по блокировке нескольких читателей/одного писателя?». Группа новостей : comp.os.ms-windows.nt.misc. Usenet:  [email protected] . Получено 28 июля 2016 г.

Внешние ссылки