Оболочка Hamilton C - Hamilton C shell

Оболочка Hamilton C
Оболочка Hamilton C x64 в Windows 7.png
64-битная оболочка Hamilton C на рабочем столе Windows 7.
Автор (ы) оригинала Николь Гамильтон
Первый выпуск 12 декабря 1988 г . ; 32 года назад ( 1988-12-12 )
Стабильный выпуск
5.2.g / 5 марта 2017 г . ; 4 года назад ( 2017-03-05 )
Написано в C
Операционная система Windows (исторически OS / 2 )
Тип Оболочка Unix в Windows
Лицензия Коммерческое проприетарное программное обеспечение
Веб-сайт hamiltonlabs .com / Cshell .htm

Гамильтон C оболочки является клоном из Unix C оболочки и утилит для Microsoft Windows , созданный Николь Гамильтон в Гамильтон лаборатории как совершенно оригинальное произведение, а не на основе какого - либо предварительного кода. Впервые он был выпущен для OS / 2 12 декабря 1988 г. и для Windows NT в июле 1992 г. Версия OS / 2 была прекращена в 2003 г., но версия для Windows продолжает активно поддерживаться.

Дизайн

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

Парсер

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

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

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

Потоки

Оболочка Hamilton C и петли даты Cygwin bash .

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

Соглашения Windows

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

Рекомендации

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