Вопрос

От Эпиграммы в программировании автор : Алан Дж .Перлис:

22.Хорошая система не может иметь слабый командный язык.

Что это значит?Каковы хорошие примеры этого принципа?

Где я могу узнать больше о том, как реализовать командный язык, соответствующий этим критериям?

Это было полезно?

Решение

Вы должны немного знать контекст, в котором это было сформулировано.Статья, на которую дана ссылка, была опубликована только в 1982 году, и любая из этих эпиграмм могла быть на десятилетия старше.Однако даже 1982 год был до моего времени, и мои соответствующие впечатления о том времени таковы:

  • Компьютерные системы были более узкоспециализированными для решения конкретной задачи.
  • В системах были специальные операторы (которые не были программистами), обученные работе с конкретными системами.
  • Знание одной системы нелегко перенести в другую систему.(Сегодня вы обучаете операторов конкретным Программы, но редко на конкретных комбинациях аппаратное обеспечение + ОС.Другими словами, системы стали более похожими и приняли стандарты и конвенции.)

"Командный язык" сегодня означает просто написание сценариев в оболочке.Помните, что в командной строке вы вводите "команды".

Если оставить эти основы в стороне, то это говорит мне о Unix Way ™.

Сравните с тем, как программам Windows может быть намного сложнее с автоматизацией, и многим программам (и даже ОС) требуется графический интерфейс для изменения некоторых настроек.(Отношение к этому несколько меняется с появлением Microsoft PowerShell, но в нем по-прежнему отсутствует десятилетия опыта следования этому принципу, который есть у других операционных систем.)

Кроме того, когда базовый режим работы для любого пользователя является командный язык вашей системы (как это было для Unix в 1982 году), тогда ваш командный язык силен в другом отношении:все пользователи знают, как им пользоваться, и им не нужно изучать отдельные инструменты.В этой ситуации система не может сделать ничего такого, чего не мог бы выполнить командный язык, потому что командный язык эффективно является система.

Я не знаю ни одного ресурса, в котором излагались бы все эти идеи и который вы могли бы использовать в качестве дорожной карты для внедрения вашего собственного командного языка.Концепция более неземная, чем высеченная на камне, как и другие эпиграммы в целом.Я рекомендую вам прочитать о Unix в целом, оболочках (напримерСтандарт POSIX для sh и других, таких как bash), другие языки сценариев оболочки (все, что содержит строку shebang, например Perl и Python) и так далее.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top