Я новичок в концепции грамотного программирования. Я читал документ Дональда Кнута (PDF) по этому вопросу, и в самом начале во Введении он говорит:
Вместо того, чтобы вообразить, что наша главная задача - проинструктировать компьютер, что сделаем, давайте сосредоточимся скорее на том, чтобы объяснить людям, что мы хотим компьютер для работы.
Он или она (практик грамотного программирования) стремится к программе это понятно, потому что его концепции были введены в порядок, который лучше всего подходит для понимания человеком, используя смесь формальных и неформальные методы, которые укрепляют друг друга.
Затем, прочитав далее:
Что касается программы, то это ее структурные отношения. Комплексная часть программного обеспечения состоит из простых частей и простые отношения между этими частями; программисты задача состоит в том, чтобы указать те части и те отношения, в любом порядке лучше всего подходит для понимания человеком - не в каком-то жестко определенном порядке, как сверху вниз или снизу вверх.
(...)
Программирование сверху вниз дает вам сильное представление о где вы собираетесь, но это заставляет вас держать много планов в вашем глава; ожидание нарастает, потому что ничто на самом деле не прибито до тех пор, пока конец. Преимущество программирования состоит в том, что вы постоянно используете все больше и больше мощных карандашей, поскольку все больше и больше подпрограмм были построен; но это заставляет вас отложить общую программу до последней минуты, так что вы можете бесцельно раскалываться.
Таким образом, веб-язык позволяет человеку выражать программ в порядке "потока сознания" . TANGLE способен взламывать все в порядок что компилятор PASCAL требует †. Эта особенность WEB, возможно, является ее самым большим достоянием;
Вышеприведенная выдержка заинтересует меня, поэтому я исследовал немного больше. Нетрудно видеть в результатах любой поисковой системы связь между Haskell и грамотным программированием, но я не вижу этого "лучшего для человеческого понимания". Скорее я вижу очень хорошо подготовленную документацию, сохраняя при этом порядок, требуемый компьютером для работы.
- Можете ли вы использовать термин "грамотное программирование" для удаления этой проблемы?
- Есть ли какое-либо другое определение грамотного программирования, которое не требует функции "потока сознания"?
- Является ли Haskell действительно грамотным программированием (используя определение Knuths)?
Наконец, я должен сказать как личное мнение, что даже то, что делает Haskell (и, вероятно, многие другие языки), не является грамотным программированием Кнута, мне все еще нравится идея, когда речь заходит об исчерпывающих описаниях методов и алгоритмов. Когда комментарии значительно превышают этот код, он служит большой цели.
† WEB и TANGLE являются частью системы, которую первоначально использовал Д. Кнут в своей первой реализации концепции грамотного программирования.