vak: (Default)
[personal profile] vak
Вольный перевод из Bruce MacLennan. Principles of Programming Languages, 3rd edition. Oxford University Press, 1999. ISBN 0-19-511306-3
  1. Абстрагирование: Избегайте повторного введения схожих понятий. Выделяйте повторяющуюся часть.
  2. Автоматизация: Автоматизируйте механические, утомительные, чреватые ошибками операции.
  3. Эшелонированная оборона: Предусматривайте различные средства защиты так, чтобы ошибка пропущенная одним средством с высокой вероятностью обнаруживалась другим.
  4. Элегантность: Сосредоточьте своё внимание на таких решениях, которые выглядят хорошими потому, что они являются хорошими.
  5. Невозможность ошибок: Лучше делать невозможным совершение ошибки, чем обнаруживать её после совершения.
  6. Ограничение информации: Язык должен позволять разрабатывать такие модули, чтобы (1) пользователь модуля имел всю информацию необходимую для правильного использования модуля и ничего больше; (2) разработчик модуля имел всю информацию, необходимую для корректного создания модуля и ничего больше.
  7. Разметка: Избегайте любых однородных последовательностей элементов длиной больше нескольких штук. Не заставляйте пользователя знать абсолютную позицию элемента в списке. Наоборот, связывайте с каждым элементом осмысленную метку и позволяйте элементам появляться в произвольном порядке.
  8. Локализация затрат: Пользователь должен нести затраты только за то, что он использует, и только там где он это использует; избегайте распределённых и отложенных затрат.
  9. Объявленные интерфейсы: Все интерфейсы должны быть явно отражены в синтаксисе.
  10. Ортогональность: Независимые функции должны контролироваться независимыми возможностями языка.
  11. Переносимость: Избегайте средств и возможностей, специфических для определённого компьютера или небольшого класса компьютеров.
  12. Сохранение информации: язык должен допускать представление информации, которую возможно знает пользователь и которая возможно потребуется компьютеру.
  13. Регулярность: Регулярные правила, без исключений легче изучать, использовать, описывать, и реализовывать.
  14. Ответственность разработчика: Не спрашивайте пользователей, чего они хотят. Выясняйте, что им необходимо.
  15. Безопасность: В любой программе должно обнаруживаться любое нарушение определения языка, или ожидаемой структуры программы.
  16. Простота: Язык должен быть предельно прост. Количество понятий должно быть минимально. Правила комбинирования понятий должны быть просты.
  17. Структурированность: Статическая структура программы должна простым образом соответствовать динамической структуре вычислений по этой программе.
  18. Синтаксическая целостность: Сходные вещи должны выглядеть похоже, различные должны выглядеть различно.
  19. Ноль-единица-бесконечность: Единственно обоснованными числами являются ноль, один и бесконечность.
This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

If you are unable to use this captcha for any reason, please contact us by email at support@dreamwidth.org