Как стать автором
Обновить

Комментарии 137

Для псевдокода выделение ключевых слов не имеет смысла — в нем нет никаких ключевых слов, потому что не существует языка, который способен их интерпретировать. Не понимаю, почему все так ратуют за выделение ключевых слов, в некоторых языках (привет, Форт) их вообще не существует.
Что же касается того, на каком языке писать сам псевдокод, то здесь момент такой. В настоящее время любой специалист по IT, не владеющий английским языком, является ущербным и подлежит самоустранению из профессии. Так что вопрос языка — это вопрос вкусовщины. Английский в среднем короче, в нем отсутствуют падежи, так что если вам хочется, чтобы программы читались как синтаксически верные предложения — пользуйтесь английским.

Но тогда на английском нужно писать абсолютно все. Либо, если вы используете русский — то все на русском.
Вы это армии 1С-ников расскажите, про самоустранение из профессии =)
Я не думаю, что это их сильно расстроит — большинство и так прекрасно представляет свою нишу.
Простите, но я не вижу существенной разницы между 1Сниками и какими-нибудь занятыми в сфере бизнес-процессов шарпистами или джавистами. Ну разве что у первых производительность труда раз так в надцать повыше благодаря отсутствию оопухолей мозга.
И задачи у них, как правило, интереснее и масштабнее, чем клепать стопицотый сайт-визитку или унылое приложение для телефона.
1С-ники — совершенно отдельный класс, девелоперами в нормальном понимании они, как правило, не являются. IMHO. Кстати, GOTO (или, как там по-русски, ИДИНА?) в 1C есть? Если нет — надо добавить, думаю оно обретёт там бешенную популярность.
ИДИНА для 1С не требуется, достаточно функций процедур и различных обработок. На русском пишут не из любви к извращениям, а потому что это оказывается удобно и вовсе не так ужасно, как представляют себе «тру-девелоперы»
Есть, по крайней мере в 7.7:

~НужнаяМетка
// куча непонятного кода, у которого невозможно отыскать логические начало и конец
Перейти ~НужнаяМетка

Популярностью кстати не пользуется — ибо нагадить в коде есть другие 100500 способов.
Для 8.2 тоже есть такая возможность. В типовых встречается только в некоторых регламентных отчетах шестилетней-восьмилетней давности
[sarcasm]Ага, а все PHP-шники бэдлокодеры[/sarcasm]. Разработчиков, которым надо руки оборвать, хватает во многих языках программирования. Но, признаюсь, в вашем высказывании есть доля истины. Сам являюсь разработчиком 1С уже более 7 лет, но последние два года в качестве хобби пишу Java-приложения для Android. И, узучая Java, был удивлен что среди разработчиков 1С не изучают такие вещи как оформление кода, алгоритмы, рефакторинг, повторное использование. Теперь мой код и подход к разработке совсем изменились. Но, в то же время, стало тесновато, так как жутко не хватает нормальных инструментов для разработки. Даже больше, инструментов для разработки совсем нет, а то что есть не намного лучше текстового редактора с подсветкой синтаксиса и браузера файлов. Совместно же работать над одним проектом вообще невозможно.
Уверен, если бы при изучении кроме языка 1С давали бы ещё знания о написании кода, повторном использовании кода, алгоритмы, то многие из 1С-ников дали бы вам фору. Но пока действительно, хорошего разработчика среди 1С-ников найти сложно.
Ага, а все PHP-шники...

Я разве сказал «все»? Я сказал «как правило», то есть большинство. Разумеется достаточно и исключений, но их поди найди (а им поди найти работодателя, который их поймёт и оценит по достоинству).

был удивлен что среди разработчиков 1С не изучают такие вещи как оформление кода, алгоритмы, рефакторинг, повторное использование.

Вот-вот…
Вы так говорите, как будто GOTO это что-то плохое
Согласен, что либо всё на английском, либо всё на русском: об мешанину языков глаз жутко ломается.
Да и я согласен. Но вот 70% голосуют за английский…
А еще на хабре технически грамотные, но сложные статьи получают гораздо меньше внимания(сиречь плюсов) чем новости и статья для «школьников». Как Вы думаете, стоит ли после этого слушать «большинство» хабра?
Думаю, что нет смысла так обобщать. =) В очередной раз есть куча противоположных мнений. Заранее ясно, что как бы я ни перевёл, найдутся люди, которым перевод очень не понравится. И всё-таки максимизировать хочется как раз кол-во людей, которым книжку будет читать удобно. Ну, и, наверное, здесь не весь хабр высказывается, а подписанные на блог «Алгоритмы», в основном?..
Во-первых, не ясно, насколько аудитория хабра пересекается с той, для которой создается эта книжка. Типичный хабражитель уже владеет языками программирования и привык видеть код на английском, а типичный школьник или студент-первокурсник — нет.

Во-вторых, люди мыслят штампами: «я учил программирование по книгам на английском языке, поэтому нужно писать на английском», «код на русском используется в 1С, 1С — это плохо, значит, код на русском — это плохо». Именно такими суждениями, мне кажется, руководствуются те, кто просто отвечает на опрос и перескакивает к следующему топику. Если вы почитаете комментарии, то окажется, что в них доля отписавшихся против перевода составляет уже не 90%. И при этом логично предположить, что те, кто писал комменты, потратили больше времени на обдумывание статьи, чем те, кто просто поставил галочку в опроснике.
Да, согласен, конечно.
Вероятно, дело в том, что большинство на Хабре (как и на рынке труда в целом) считают мастерством программиста — владение синтаксисом ЯП и стандартными библиотеками.
Они искренне считают, что задача учебника программирования — приучать студента к синтаксису ЯП.

Я это к тому, что выражающими предпочтения потенциальных читателей вашей книги — они не являются.
И с этим согласен.
Да и я согласен. Но вот 70% голосуют за английский…

Это выглядит как противоречие только по тому, что Вы подразумеваете, что неключевые слова всё-равно будут на русском. Я проголосовал за английский, имея ввиду, что предпочёл бы, чтобы на английском был весь код.
Но как школьники, например, будут читать английский псевдокод? Если вы готовы читать псевдокод на английском, то, наверное, и сам учебник осилите в оригинале.
Когда я был школьником я легко, осиливал псевдокод и нормальный код и вообще весь софт на английском, но читать и усваивать полноценный текст на английском мне тогда удавалось заметно медленнее русского и, как правило, со словарём. Лексикон и грамматические конструкции в псевдокоде, обычно, на порядки проще, чем в повествовании.
А по большому счёту не принципиально, по-моему показанный код в любом варианте (по части языков) читается вполне нормально.
Я, например, голосовал за перевод хотя хорошо владею английским. Дело в том что я математик по образованию и привык алгоритмам мат. методов вида:
1) Устанавливаем G(us)=0, и выбираем вершину us как текущую (uc=us);
2) для u(uc) и ul определяем:

G(u)=Len((u,uc))+G(uc)

и добавляем u к закрытому списку L;
3) включаем uc в закрытый список lc, удаляем uc из открытого списка Lc;
4) если L — пустое множество, работа алгоритма закончена, если нет – выбираем новую вершину uc такую, что G(uc)=minuLG(u) и переходим к пункту 2).

П.С. извините, формулы немного поламались но суть не в них…
Поддерживаю. Математическая запись — хорошая и отработанная форма записи как доказательств, так и алгоритмов. Не нужно относиться к псевдокоду как к языку программирования. Это объяснения, предназначенные исключительно для людей.
И добавлю: никаких ключевых слов в псевдокоде нет! Это просто обороты речи, не более.
Кстати, «для всех» (for all) записывается одним символом ∀ (U+2200). Непонятно почему в оригинале используется «for all», если дальше используется математический знак принадлежности ∊ (U+220A).
Знак принадлежности мы в 7-8 классе школы проходили, когда про множества нам немного рассказывали на уроках математики. Квантор всеобщности — это уже универ, из области формальной логики штука (у нас было вроде на первом курсе матанализа). Мне кажется, теорию множеств значительно больше людей знает, чем формальную логику. + Если человек знает, что такое «принадлежать множеству», то он с большой вероятностью знает символ принадлежности — в случае с утверждением «для всех» и квантором всеобщности это не так.
Возможно, потому, что for all — это цикл с определённым порядком перебора, а квантор предполагает мгновенное независимое вычисление? Кроме того, квантор ∀- это просто логическая операция «и», примененная к элементам множества. А цикл — последовательность действий. Совершенно разная семантика.
В исходном коде, например, «for all», идущий после Output: — это квантор. А остальные два — нет.
Да, примерно так всё и есть.
Если это книжка для студентов, которые только входят в профессию, то они вполне могут еще не знать английский. Часто сначала изучается программирование, а потом уже — по необходимости — подтягивается английский.
Если студент плохо знает английский, то самое время исправлять это одновременно с получением образования по программистской специальности, а не потом.
Не у всех найдется время. Кто-то, например, учится на вечернем, а днем работает. К тому же это большая нагрузка — вникая в предмет, изучать побочную информацию. Но все же в идеале лучше, конечно, оригинал.
Это странно учить языки программирования и не знать что такое print, echo, и т.д. Айтишник без базовых знаний английского? Как это?
Ну я только и говорю, что нужны базовые. Просто так понял коммент выше, что нужно хорошее знание английского, а не просто базовый уровень (:
Самое страшное, что есть люди, умудряющиеся писать «fail» вместо «file» и т.п. На башорге недавно пролетало, и в жизни такие действительно бывают.
Конечно, самое время, однако незнание языка не должно тормозить изучения программирования.

Не забывайте, что студент может совершенно не знать английского, например, потому что изучал другой иностранный язык в школе. Слова же
directed, edge, vertex
(из описания) — не самый базовый уровень.
И вы полагаете, что обучение студента английскому — это задача книжки по алгоритмам?

А книжки по матану, наверное, следует тогда писать на русско-французском?
Если студент свободно читает по-английски, тогда зачем ему перевод книги? В подлиннике без затруднений прочтёт.
А если студент читает по-английски не свободно, тогда фрагменты псевдокода на чистом английском будут только затруднять понимание материала, а не облегчать.
Разумно, да.
Если студент свободно читает по-английски, тогда зачем ему перевод книги? В подлиннике без затруднений прочтёт.

В общем мало кто владеет языком на столько, что ему действительно нет разницы, большинству людей всё же комфортнее воспринимать повествование на родном языке. Тем не менее бывают и тяжёлые случаи неудачного перевода, когда и такому человеку легче читать оригинал. Например пытался я, когда ещё русский был для меня несколько роднее английского, читать книгу «Thinking in Java» и поймал себя на том, что регулярно натыкаюсь в русской версии на непонятные места, заглядываю в английский оригинал и всё понимаю — в результате плюнул на перевод и читал дальше по-английски.
Вам комфортнее воспринимать повествование на русском, но при этом псевдокод комфортнее воспринимать на английском?
А код на C# вам, наверное, воспринимать ещё комфортнее, чем псевдокод?
Вам комфортнее воспринимать повествование на русском, но при этом псевдокод комфортнее воспринимать на английском?

Да. Хотя касательно первой части сейчас уже одинаково, иногда даже наоборот.

А код на C# вам, наверное, воспринимать ещё комфортнее, чем псевдокод?

Смотря какой псевдокод. Тот, что здесь в статье приведён мне нравится. Если псевдокод в стиле первобытного бэйсика с метками — то само-собой C# лучше.
Не только для студентов. Хочется, чтобы и школьники могли читать.
Да. Смесь русского и английского как-то напрягает. Но если написать всё на русском, то мозг будет тормозить на интерпретации ключевых слов. Так что лучше всё на английском.
НЛО прилетело и опубликовало эту надпись здесь
Вы неправы. Для существительных второй падеж — косвенный. Притяжательный есть у местоимений.
НЛО прилетело и опубликовало эту надпись здесь
Поскольку речь о ПЕРЕВОДЕ книги, странно было бы писать всё на английском. Это получится перевод с английского на pigeon английский :)
Те, кто владеют английским, вполне могут оригинал почитать. А перевод хочется сделать доступным, в частности, для школьников.
А какая разница Вам как человеку, читающему код, существует ли интерпретатор того, что Вы читаете? По-моему, на читабельность это никак не влияет.
А вот выделение конструкций (функции, циклы, условия), которые Вы ожидаете встретить, поможет ориентироваться в коде.
Вам — с маленькой буквы, пожалуйста. Не глумитесь над русским языком, он и так страдает.

В коде поможет ориентироваться понимание проистекающих процессов, а не выделение ключевых слов. Мне ваша позиция кажется крайне сомнительной.
Вас слишком мало, чтобы обращаться на вы :-)
Википедия:
В письменной речи местоимение «Вы», адресованное конкретному собеседнику, пишется с заглавной буквы


Понимание у Вас в голове, а код на бумаге. Именно выделение ключевых слов поможет зрительно быстро находить блоки, соответствующие пониманию.
Пожалуйста, запомните (а лучше запишите), что Википедия — не авторитетный источник, в ней тоже бывают ошибки.

«Вы» с большой буквы пишется только в одном случае — в личной переписке с высокоуважаемым вами собеседником. Ни в публичной переписке, ни при обращении с незнакомцем или малознакомым человеком, ни при обращении к неограниченному кругу лиц, «вы» с большой буквы не пишется никогда.

Выделение ключевых слов нисколько не поможет в понимании сути приведенного кода, просто потому, что эти ключевые слова — лишь самая незначительная его деталь.

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

Внизу был предложен компромиссный вариант — делать выделение курсивом.
Позвольте с Вами не согласиться. А ещё я бы Вам рекомендовал посетить уроки русского языка в начальной (или средней) школе, там этот вопрос разъясняют достаточно подробно. Думается, и Вам расскажут, если Вы попросите.
Не позволяю, простите.

Не могу видеть этого надругательства над языком, вынужден вырвать себе глаза. Это на вашей совести.
Это не надругательство. Надругательство — игнорировать вполне нормальные нормы языка. Кстати, Вы вот не видели, как в некоторых других славянских языках принято «ты» писать с большой буквы, если человек давно и хорошо знаком. Просто из уважения к нему.
Мы говорим на русском, меня мало волнуют нормы, которые существуют в других языках.

«Вы» с большой буквы воспринимаю как личное оскорбление, простите.
Я просто привёл пример. Тем не менее, как бы Вам это глаза не резало, написание «Вы» с большой буквы при обращении к одному собеседнику — норма русского языка.
Перестаньте, пожалуйста, цитировать википедию и обратитесь к нормальным источникам.

Спасибо.
Я не цитировал Википедию, Вы меня с кем-то путаете.
Тогда к вам адресована вторая часть воззвания.
Нормальный источник (Грамота.ру) процитирована ниже. Там явно указано на необходимость употребления «Вы» при обращении к одному лицу. Для Вас это всё ещё недостаточно авторитетно?
Позволяю вам сгинуть в пучине собственной безграмотности, раз вы не способны прочитать более одного абзаца.
Таки научитесь читать. Если написано «в ситуации А надо использовать α, а в ситуации Б — β. В a, b, c используется α, в d, e, f — β», то это никак нельзя понимать, что если есть h, j, k, которые являются А, то надо писать β. Это обычная логика, вообще-то.
Не передергивайте!
Я не передёргиваю, там написано чётко и ясно.
А разве вы написали вашему оппененту персональное личное письмо? Покажите пальцем — не вижу. Где обращение по имени-отчеству? Вводные слова? Проявление уважения? Нет? Вижу только неграмотную надпись на заборе.

Так что если бы я вам послал письмо в бумажном конвертике или, как минимум, по электронной почте, что-то такое:

Милостивый государь, Andrew Sh!
Позвольте выразить Вам своё почтение и засвидетельствовать неуважение по поводу некорректного использования Вами моего родного языка.

То это было бы правильно. «А так — нэт»
Я отвечаю лично ему, а не группе лиц. Точнее, в данный момент — Вам. Потому «Вы» с большой буквы.
Ну и да, говоря о якобы моей неграмотности, Вы могли бы уж сами хотя бы грамотно писать, чего я не наблюдаю. Это характеризует, не так ли?
Товарисч bobermaniac прав, а вы — не переходите на личности. Давайте пойдем к Грамоте.ру и почитаем тут. Таким образом (не читая «заметки на полях»), мы можем сделать далеко идущие выводы, что указывая «Вы» не в личной переписке или ином «Вы-дозволенном» жанре, собеседник как бы провоцирует и фамильярничает.
Цитата:
Местоимения Вы и Ваш пишутся с прописной (большой) буквы при обращении к одному лицу; при обращении к нескольким лицам следует писать вы и ваш со строчной буквы.

Одно лицо? Одно. Вы с большой буквы, иного не дано. Ну и на личности я не переходил.
Ну зачем вы выдергиваете из контекста? Там же ясно сказано в выводах, когда именно рекомендуется использовать «Вы». Цитирую:
<...>при обращении к одному лицу в текстах следующих жанров:

а) личное письмо (адресат – конкретное лицо; при этом само по себе употребление местоимения Вы вместо ты является выражением вежливости по отношению к адресату);

б) официальные документы, адресованные конкретному лицу;

в) анкеты (адресат – неконкретное лицо).

Как вы считаете, какой жанр у нас тут, на Хабре? Личная переписка или официальный документ?

А переходом на личности я посчитал фразу с предложением пойти в школу, поучиться. Это же оскорбление чистой воды.
Это примеры, а не выводы, они никак не противоречат тому, что я процитировал. Здесь не сказано, что «Вы» используется только в этих ситуациях; напротив, приведены примеры таких ситуаций.
Извините, слова «таким образом» совершенно четко выделяют, что нижеследующая часть статьи является заключительной, в ней подводятся итоги, и делаются выводы. Черном по светло-синему написано, что айнц-цвай-драй, см. выше. Повторяться не буду.
Именно. Написано, что в этих ситуациях пишется «Вы». Не написано, что в других — не пишется.
Молодой человек, ну сколько можно, 10 раз обсуждали. www.nartov.ru/you-you.htm ознакомьтесь, особенно с последним абзацем, надеюсь что институт РАН вам авторитетнее, чем школьные учителя.
Ну вот ознакомьтесь. Там речь идёт, если вчитаться, о ситуации «неопределённое количество лиц», в которой без сомнения используется «вы». При обращении же к одному лицу «Вы» — норма, что там и указано.

Непонятно только, почему элементарные правила русского языка вызывают в интернетах такой лютый баттхёрт вплоть до восприятия слова «Вы» как оскорбления.
Это не оскорбление, это предложение обратиться к специалистам. В школе этому учат, так почему бы там и не поинтересоваться?
Я бы вам порекомендовал ваши предложения по обращению к специалистам самореализовать.
Товарищ linuxoid, что-то я в упор не вижу, чтобы в приведенных Вами статьях подтверждались Ваши слова. Эти статья как минимум можно трактовать в том ключе, что «Вы» в интернет переписке можно заменять на «вы». Там не написано, что использование «Вы» в подобном ключе некорректно. Нет там этого.
Если там рекомендовано 3 или 4 пункта, это не значит, что других пунктов нет. Это значит, что там рекомендовали 3 пункта. Вот и всё.

Ну и напоследок, как Вы считаете, что означаете следующая фраза, точнее к какому количеству людей она обращена? «вы всё делаете не правильно», а эта «Вы всё делаете неправильно»? Не кажется ли Вам, что вторая фраза менее двусмысленна?
Ну и не стоит, конечно, воспринимать слова наших академиков РАН всерьез, после подобных заявлений: сообщения электронной почты не являются личными письмами в традиционном смысле слова
Сообщения электронной почты являются личной перепиской. Более того, ни в Российской империи, ни в СССР не было никакой другой адресной переписки кроме личной. Именно поэтому я считаю вполне правомочным экстраполировать понятие личной переписки на любую адресную переписку, коей являются: мессенджеры, форумы(читай хабр) и прочие места где люди обращаются друг к другу непосредственно.
Ну и да, употребление «Вы» никак не может быть «фамильярничанием» (уверены, что есть такое слово?). «Ты» — да, именно этим и является. «Вы» с маленькой — или неуважение, или безграмотность.
Да, действительно, слово «фамильярничание» не подзодит (и да, его действительно нет в русском языке). Лучше всего подходит словосочетание «вести себя манерно» (вот в этом толковании).
Ну да.
На мой взгляд:

Ключевые слова следует выделять, т.к. они служат своего рода якорями при чтении текста. Т.е. можно быстро понять, что следующий блок — это тело цикла, и найти следующую инструкцию (в случае монотонного текста это существенно сложнее).

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

Блоки, считаю, должны выделяться только отступом. end'ы избыточны, да и отступы для выложенных блоков — хороший единственно верный способ их оформления.
Код должен быть на одном языке. Если на английском, то и условия и управляющие конструкции должны быть агнлийскими. Если же условие в управляющей конструкции на русском, то и определения управляющих конструкций должны быть на русском. Иначе при чтении это абзац.
> Ключевые слова должны быть на английском, т.к. их немного, и они приближают псевдокод к настоящему коду.

Псевдокоду незачем быть приближенным к настоящему коду. Его же не машина читает, а человек.
Пусть лучше будет приближен к осмысленному человеческому тексту.
Так а «for всех вершин» не режет? =)
Режет, режет. Если какое-нибудь
while набор не пуст
ещё куда ни шло, то такой for гораздо хуже.
Только «for всех вершин» плохо выглядит. Нужно «for все вершины» и «for все рёбра».
Господи, за что?!

Пожалуйста, не издевайтесь над кодом и над психикой читателей. Не думаю, что среди пользователей учебника найдутся люди, для которых одного разъяснения, что if = если, then = то, etc, будет недостаточно :)

п.с. попадись мне в ранней стадии обучения то, что изображено на предпоследнем рисунке, я начал бы убивать людей и грызть тапочки… (1С не в счет)
Думал псевдокод, а оказался python :)

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

Вот, например:
для всех вершин
Выгладяит так, как будто для — самое важное.

Если и выделять, то курсивом, а не жирным:
для всех вершин
Не так бросается в глаза.

А вот перевод я бы сделал. Но тогда и название используемых функций и переменных надо переводить, наверное. Или переводить только комментарии, а все остальное — на английском. Иначе получается мешанина русского и английского текста, что не хорошо.

Заканчивать ли блок отдельным словом — сложный вопрос. Если аккуратно работать с отступами и умещать весь код на одной странице, то можно использовать одни отсутпы.

Вообще оригнинал выглядит горяздо лучше, два языка, куча стрелочек и неаккуртаные отступы создают кучу шума.

Кстати, выделять курсивом — это мысль, да. Длинного кода нет, он всегда будет на страницу помещаться.
«for all» — это всё-таки одно ключевое слово, как мне кажется. То же самое, что foreach в различных ЯП.
«for всех» — это кошмар >_<
for all
— не согласен; это — имено «для всех», и читать его надо «для всех элементов u».
Ну тогда сделать ForEach вершины, ForEach рёбра. Или for each.
Вообще-то, вы пишете не свой учебник, а перевод. Поэтому самым правильным было бы сохранять стилистику и текст примеров автора. Максимум — переводить комментарии / пояснения. Не надо бы за автора переписывать.
Ключевые слова не выделять или не выделять жирным — слишком отвлекают от сути, особенно неискушенных в чтении чужого кода новичков.

Ключевые слова на английском — гораздо понятнее при прочтении, если перед этим видел хоть какой-нибудь исходный код. Если не видел, то что русский, что английский, а значит сразу приучаем к правильному языку.

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

Вывод: сам алгоритм на английском, выделение ключевых слов языка не жирным (курсивом, скажем).
Да, комментарии в самом коде тоже лучше на английском, с отдельным русским переводом при разборе алгоритма по кусочком, и вот по чему: очень часто начинающие запоминают зрительно всю конструкцию исходного кода и стараются писать так же. То есть, если есть грамотные отступы и английские комментарии, — будут стараться писать так же. А иначе могут сразу начать писать «грязно», а потом тратить силы на переучивание.

PS: если что, junior, любимый и основной — python.
Либо переводите всё, либо переводите только комментарии. конструкция вида «for всех вершин» выглядит уё^Wочень страшно.

Ключевые слова возможно стоит выделать чтобы этим отделить операцию от условия.
Я считаю, надо переводить. Это не язык программирования, это описание алгоритма на человеческом языке, пусть и слегка формализованном и оформленном табуляциями.
А я бы оставил все как есть. Псевдокод важен для понимания излагаемого материала и если авторы сделали его таким, значит, они посчитали, что он выполняет свою задачу. Но это касается, в основном, форматирования и нотаций. Т.е. я был бы не против (если качество не пострадает) перевода обычных слов на русский. В книге Мориса Баха «Архитектура операционной системы Unix» псевдокод перевели и я считаю удачно получилось:

алгоритм bwrite      /* запись блока */
входная информация:  буфер
выходная информация: отсутствует
{
    приступить к записи на диск;
    если (ввод-вывод синхронный)
    {
          приостановиться (до завершения ввода-вывода);
          освободить буфер (алгоритм brelse);
    }
    в противном случае если (буфер помечен для отложенной записи)
          пометить буфер для последующего размещения в "голове" списка свободных буферов;
}
Да, так всё понятно, действительно. Приму на заметку.
На мой взгляд:
  • Ключевые слова выделять стоит, это действительно помогает как-то лучше ориентироваться в описанном алгоритме (его псевдо-коде).
  • Нужно не только оставить ключевые слова на английском, но и вообще переводить на русский разве что комментарии и описания входа-входа алгоритма. Как уже писали, конструкции вида «for всех» выглядят не айс :) Не даром в Кормене так и сделано (на русский переведены только комментарии и описания входа-входа).
  • Про окончания блоков — с одной стороны, с ними нагляднее видна структура кода, с другой — они занимают место, загромождают код, и без них код тоже выглядит нормально. Так что здесь на усмотрение :)
В классическом талмуде Кормена-Ривеста про алгоритмы, точнее в его переводе, псевдокод полностью на английском, и это смотрится нормально. У Кнута — вообще псевдоасм. Так что есть смысл продолжить традицию.
Главное не мешайте теплое с мягким, в смысле два языка в кучу.
Держу в руках первый, никаких «для» не вижу.
Похоже, вы пиратский перевод купили =)
Там это используется в тех случаях, когда код смешивается с текстом: for (для) всех вершин. Смотрите главу алгоритмы на графах. К примеру, BFS.
Естественно, надо использовать перевод под редакцией Шеня :-)

Тем не менее, я (слабо) за русский вариант, иначе зачем вообще переводить книжку. Но главное — всё выделять, для читаемости.
Спор на пустом месте, как будто псевдокод — последний в жизни язык программирования. Совершенно неважно на каком языке псевдокод, если он простой и понятный — это его главная цель.

Лично мне логичным выглядит не только выделение, но и подчеркивание ключевых слов. Есть замечательный учебный алгоритмический язык из учебника Кушниренко с русскими ключевыми словами.

Если хочется ближе к оригиналу — русский как минимум упростит понимание материала. Цель учебника — подать материал просто и понятно, поэтому логичнее использовать русский. Споры на тему «без английского никак» оставьте читателю — если ему надо будет английский, он не за ваш учебник возьмется. Как вариант — сделайте маленький словарик в приложении и дело с концом.
Учебник замечательный, читал в оригинале (на сайте Стэнфордского университета нашел электронный экземпляр в свободном доступе).

Насчет псевдокода — лучше его оставить в полностью неизменном виде, русский текст его только портит. Переводить следует только пояснения (ну и возможно добавить свои, от переводчика)
Если вас не затруднит, смените зачёркнутый ноль на image. Это, всё-таки, разные символы. Ну и проследите за корректностью остальных матсимволов.

В частности, не ясно зачем вы перекрасили "=" на "image"
Да я и не зачёркивал ноль, а написал там \emptyset =)
Значит софт не настроен или глючит.
В общем, вы не первый, кому хочется, чтобы пустое множество обозначалось более круглым нулём:
tex.stackexchange.com/questions/22798/nice-looking-empty-set
Прямо там же, однако, и альтернативные мнения высказываются:
I use \emptyset and don't like \varnothing, which is more a symbol for plumbers than mathematicians. :)
Я думаю что не важно как будет это выглядеть — умный разберется, а дураку не поможет
Делайте как считаете нужным, главное — единый стиль по всей книге и технически корректный перевод
НЛО прилетело и опубликовало эту надпись здесь
Посмотрите, как сделано в Кормене. Там ключевые слова английские, но для for делается дублирование на русском (для), чтобы было удобнее читать.
Спасибо, Кэп! =)
Ну как видно из опроса не всем очевидно посмотреть, как сделано там.
Да не, я лишь к тому, что я сто раз смотрел, как там, конечно. Тот перевод редактировал Шень, мой перевод (к моей большой радости) он же и редактирует. И он же мне и предложил узнать, что общественность думает по поводу псевдокода.
Если уж переводите, то переводите все на русский. Ключевые слова выделять, конец блока не отмечать. Это все таки учебник. У человека может не быть опыта программирования ни в одном языке. Следовательно понять смысл алгоритма ему будет проще если используются русские ключевые слова. Тем более текст состоящий из слов одного языка воспринимается быстрее и легче, чем из разных. ИМХО
Выскажусь немного не по теме: без моноширинных шрифтов, да еще и в бумажном варианте, сложно отличать на глаз уровни отступа (в том же Кормане у меня с этим были проблемы). Предлагаю как-то их обозначать. Например так:
(mad skillz)
image
Подумаю, да. Хотя мне вот легко увидеть. Ну, и половина проголосовавших говорит, что выравнивания достаточно. =)
Я как раз собирался предложить то же самое, но без отметок конца блока:
(mad skillz)

Код получается таким же компактным, как и с одними выравниваниями, но границы блоков видны яснее.
Особенно если листинг придётся переносить на другую страницу.
Следуйте первому (Шеневскому) переводу Кормена.
Мы как раз с Сашей и думаем сейчас, как лучше. =) Он говорит, что перевёл бы все ключевые слова на русский, но общественность при этом обычно не слишком довольна. А так, вторая картинка — это почти так же, как в переводе Кормена. Осталось только "(для)" после «for» написать.
«for всех вершин» выглядит катастрофично. От таких вещей дети рождаются студенты появляются, говорящие на каком-то pigeon рашн.
Моё имхо:
1. Моноширинный шрифт подчёркивает, что это псевдокод.
2. Либо переводите только комментарии, либо всё (включая английские имена объектов — существительными, — а методов — глаголами в императиве).
3. Лучше не выделять «ключевые слова», т.к. это не код, а псевдокод. Он предназначен, не что бы в нём ориентировались, а что бы его прочитали несколько раз как параграф обычного текста.
4. Вместо ноля используйте символ пустого множества, либо (что имхо лучше, словами «не пусто»). Непонятно также, зачем вы заменили = на < — ? Использование = для императивного присваивания — общераспространено.
5. Если будете всё переводить на русский язык, то ключевые слова должны быть согласованы (в частности, лучше «для каждого», а не «для всех»).
6. Опять же, если всё переводите на русский, имеет смысл закупить/одолжить несколько классических изданий (см комменты выше) и скопировать наиболее популярный/нравящийся лично вам стиль целиком (а не генерировать франкенштайл). Имеет смысл написать алгоритм попроще, вроде Евклида для НОД и протестировать разные варианты на фокус-группе в виде студентов начальных курсов или школьников.
for всех вершин, for всех рёбер… мои глаза! Сделайте меня развидеть это! Это же псевдокод: пишите уже по-русски все, зачем это извращение?
Варианты с «for всех вершин » плохая идея. Либо всё писать на русском, либо переводить только комментарии
Больше всего сломала глаза замена `while H is not empty` на значок <не равно>

Это даже читается не так.

Вместо- «пока H не пусто», спотыкаешься и произносишь про себя «пока H не равно… ой, не пустое множество..» и только на третий раз «пока H не пусто»
Оригинальные шрифты тоже сильно лучше.
Да, действительно. Буду исправлять.
Я программировал 30 лет назад на Эль-76.

Сейчас смешно, а тогда привык к русскоязычным операторам.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории