Обсуждение:Грамотное программирование

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

Верный перевод термина literate, скорее литературный. Вот одно из упоминаний в книге Coders at work.

Bloch: My attempts to make my programs readable. As Knuth would say, a
program is essentially a work of literature. For whatever reason, I realized
even back then that a program has to be readable.


You look at Knuth’s original Literate Programming, and he was really trying to
say, "What’s the best order for writing a book," assuming that someone’s
going to read the whole book and he wants it to be in a logical order.

Встречаются и другие упоминания со смыслом литературный.
Ben Calumet 14:06, 1 марта 2011 (UTC)[ответить]

Вот что Кнут сам написал по поводу названия "literate programming":
"I must confess that there may also be a bit of malice in my choice of a title. During the 1970s I was coerced like everybody else into adopting the ideas of structured programming, because I couldn’t bear to be found guilty of writing unstructured programs. Now I have a chance to get even. By coining the phrase “literate programming,” I am imposing a moral commitment on everyone who hears the term; surely nobody wants to admit writing an illiterate program. [..] I hope, however, to demonstrate in this paper that the title is not merely wordplay." -- http://www.literateprogramming.com/knuthweb.pdf
Так что, "грамотное программирование" -- вполне грамотный перевод, хоть и не передает всего смысла термина.
Dchestnykh
Так он сам и подчёркивает, что это "не просто игра слов". То есть в существенной степени это именно игра слов. А игру слов перевести дословно недостаточно. Когда я слышу фразу "грамотное программирование" (ориентируюсь на значения слова "грамотный" отсюда), я сразу отметаю значение "умеющий читать и писать (literate)", т.к. такая игра слов в русском воспринимается (личное мнение!) как-то странно. Тогда возникает смысл "выполненный умело" — но это не literate. Потому перевод "грамотное программирование" и не раскрывает всего смысла термина. В то же время термин "литературное" подчёркивает, что текст пишется в первую очередь людьми для людей. Вот цитата с англоязычного раздела: "Such exposition of ideas creates the flow of thought that is like a literary work" — это литература, а не грамотность. Ну и ещё один довод в пользу "литературного": лучше выбрать нейтральный термин (привыкнем), чем яркий, но неподходящий (будет путаница). Даже если здесь нет конценсуса, фразу "иногда этот термин ошибочно называют литературным программированием", наверное, как минимум убрать. Хорошо бы, чтобы автор правки 23 января 2011‎ высказал свои доводы. -- 80.237.26.14 07:35, 28 февраля 2012 (UTC)[ответить]



Не очень хороший перевод. utility -> утилита, «макро» -> макрос, и т. д.

77.79.177.209 16:22, 16 июня 2009 (UTC)[ответить]

А что со ссылками на другие языки?

[править код]

С английского на русский есть, обратно нет. (Я не очень разбираюсь в викификации). В пользу литературного программирования: мы же говорим литературный язык, а не грамотный. И эпитет "грамотное" вполне можно применить относительно программирования даже не подозревая о существовании такого подхода. Но пусть уже будет грамотное раз на то пошло, гугл "грамотного" знает больше чем "литературного".--LynXzp 22:04, 12 декабря 2013 (UTC)[ответить]

Существующие инструменты для литературного программирования

[править код]

Следует отметить, что не все инструменты позволяют работать с русскими символами. В русскоязычной статье, рассчитанной на русскопишущих, это должно быть существенно. Система CWEB для языка C/C++ позволяет вставлять кириллицу в текст программы, в строковые константы, в её описание. Правда, не знаю, насколько верно она при этом сортирует индексы.

Система программирования WEB для языка Паскаль, представленная программами tangle и weave, использовать кириллицу НЕ позволяет. Она фильтрует символы с кодами выше 126 на входе файлов, затем активно использует эти коды для передачи управляющей информации между процедурами. Например. Программа представляется внутри tangle в виде списка лексем, хранящегося в массиве tok_mem. Однобуквенные идентификаторы переменных представлены в массиве tok_mem своими кодами (до 127) и занимают один байт. Многобуквенные представлены в tok_mem порядковыми номерами и занимают два байта, причём в первом байте код больше 127. Схожим образом хранятся тексты замещения. Таких узких мест в обеих этих программах куча: вначале ввода, ещё до преобразования в списки лексем, команды @p, @* и др. преобразуются в управляющие коды с номерами от 128 и выше, затем, по ним формируются списки лексем. Когда готовится вывод, списки лексем преобразуются в цепочки символов, опять возникает необходимость передавать управляюшую информацию с помощью кодов, соответствующих русским буквам. Схожая ситуация и в weave. Всё это делает задачу русификации весьма нетривиальным занятием.

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

Мне кажется, стоило бы указать, в какой степени применимы приведённые в разделе "Существующие инструменты" программы для нашей страны. Кроме того, стоило бы указать, если возможно, на какие-нибудь русскоязычные руководства по этим средствам. Кроме того, стоило бы по-подробнее расписать работу с инструментами и то, что они делают. Если о CWEB и NOWEB ещё можно что-то найти, то tie или тем более TWILL вообще ни чего не пишут.

Я немного занимался русификацией web. Если это заинтересует, можете посмотреть http://ibzh.ts6.ru/tex/literate.htm

Ibzhu 16:36, 25 октября 2014 (UTC)[ответить]