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. Ноль-единица-бесконечность: Единственно обоснованными числами являются ноль, один и бесконечность.

Date: 2008-05-27 15:12 (UTC)
From: [identity profile] kondybas.livejournal.com
В бытность мою внештатным преподавателем на кафедре ИТ, видел жесткий песец в исполнении талантливого второкурсника. Задолбаный нудотиной препода предынфарктного возраста, он тела циклов оформлял функциями, адреса которых передавал вместе с параметрами в цикл for(), тоже оформленный функцией. Эту прелесть мне приносил, чтобы поржать, лаборант, которому препод дал код "на разобраться", потому что тестовые данные он обрабатывал корректно, а как он это делал - препод уже не мог понять.
Edited Date: 2008-05-27 15:13 (UTC)

Date: 2008-05-28 03:27 (UTC)
From: [identity profile] laudanda.livejournal.com
понравилось: Элегантность: Сосредоточьте своё внимание на таких решениях, которые выглядят хорошими потому, что они являются хорошими.)