Редактирование и вычитка книги

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

Модераторы: Oleg_D, Модераторы

Re: "Песни о Паскале" - для школьников и начинающих

Сообщение Oleg_D » 10.08.2012 13:25:48

Цитирую из http://ru.wikipedia.org/wiki/EBCDIC
"Существовало по меньшей мере шесть версий EBCDIC, несовместимых между собой."
Угодить всем кодировкам вряд-ли возможно, приходится исходить из реальности и учитывать конкретное назначение программы, сферу её применения.
Oleg_D
постоялец
 
Сообщения: 391
Зарегистрирован: 09.05.2011 11:28:36

Re: "Песни о Паскале" - для школьников и начинающих

Сообщение Vapaamies » 15.08.2012 03:26:33

Oleg_D писал(а):В языках C/C++ таких дыр полным-полно, потому их и «не взяли в космонавты», как поётся в известной песенке.

Неправда ваша. Если верить "Хабрахабру", очень даже берут. Не нужно забывать, что есть страна, для которой C/C++ -- национальный ЯП. Вопрос хорошо раскрыт Русланом Богатыревым. Поначалу его объяснение через "национальный вопрос" посчитал упрощенчеством, но позже не раз убеждался, что так и есть.

Продолжаем:
  • Снова неверное употребление кавычек чуть менее, чем везде (см. также "философию" ниже):
    • Локальная константа C1 «спряталась»
    • локальные объекты (константы, переменные и прочие) «видны» лишь внутри тех подпрограмм
    • «экстремал» – идет только на красный, и так, чтобы грозила опасность
    • «безбашенный» – идет, несмотря ни на что
    • К этому заголовку «прилепим» тело функции, состоящее из одного условного оператора.
    • «прогоните» её в отладчике.
    • сколько «крови она испортила» прежде, чем заработать? -- тут не нужна и запятая.
    • Напишем функцию Swap («обмен») булевого типа
    • соответствующие им «горячие» комбинации клавиш.
    • «Жучки», вылезайте!
    • цветная полоска «перепрыгнет» на строку, следующую за вызовом процедуры
    • локальные переменные «живут», пока выполняется процедура
    • станет «дублером» фактического параметра
    • при передаче «по значению» результаты не вернутся в вызывающую программу.
  • Сомнительные кавычки -- глаз режут, но по поводу исключения сомневаюсь (в примере со Swap выше есть скобки, создающие достаточную "границу метауровня"; похожий пример уже встречался до этого):
    • здесь имя Max вполне подходит, оно означает MAXIMUM – «наибольший».
    • дадим ей имя Count – «подсчет».
    • поскольку её глобальная «тезка» внутри процедуры не видна.
    • назовем её Swap – «обмен».
  • С учетом сказанного, нашу неработающую программу можно исправить так -- "маркетинговая" запятая.
  • На перекрестке пешеход решает, переходить ли ему улицу, или остановиться. -- и снова она же.
  • Отладчик, – это набор инструментов для исследования «потрохов» программы. -- разве тут не просто тире?
  • Программные ошибки прозвали «багами» – «жуками». -- по-моему, слово "баг" чаще переводят как "жучок", а не "жук". Да и кавычек многовато, первые не нужны: Программные ошибки прозвали багами — «жучками».
  • а также для просмотра печатаемых программой результатов. -- я понимаю, что "печатаемых" -- авторский стиль, но тут он вызывает явный диссонанс. Сразу вспоминается матричный принтер. :)
  • Когда результат неважен -- "неважен" -- хрено́в, "не важен" -- похрен. Хреновый тут результат или он нам просто похрен?
  • Программисты нередко поручают одной функции несколько дел, вот пример. -- пример идет в следующем предложении, а это обрывается точкой.
  • Тогда функцию подсчета символов в этом компиляторе можно упростить так. -- из "тогда" и "в этом компиляторе" что-то лишее.
  • Сколько можно в цацки играть? – в следующей главе приступим к шифрованию файлов! -- а нужно ли тут тире? Это ведь не прямая речь, а два самостоятельных предложения.
  • Последнее значение переменной будет являться результатом функции. -- "будет являться" -- коряво, "станет" -- получше.
  • При этом в настройках компилятора должен быть позволен расширенный синтаксис -- цель использования просторечия "позволен" угадывается, но может читаться как дозволение настройкам, а не компилятору.
  • Оказывается, что при таком объявлении формальный параметр arg служит локальной переменной. -- Кто кому служит, простите? Без подсказки не угадывается. Нужно изменить на "является локальной переменной" или даже "трактуется как локальная переменная".
  • так называемые «точки останова» -- снова пренебрежение полноценным термином. Советую его раскрыть, ибо даже тут в теме у новичков сомнения возникали. Кавычки тоже не нужны.
  • «Выполняет программу, пока не будет достигнута строка, где установлен текстовый маркер. Маркер надо предварительно установить на нужной строке!», и далее: «Перед запуском программы установите маркер внутри процедуры» -- если это не диверсия, то борьба с космополитизмом как минимум. По-английски явственно написано: Go to cursor, и на современный русский этот термин переводится однозначно. А в текстах, где упоминается еще курсор мыши, дается уточнение -- текстовый курсор. Ведь слово "маркер" вполне может читаться как "выделение цветом", -- и ученик тщетно будет пытаться передвинуть подсветку отладчика -- точку останова.
  • Порядок объявления параметров в заголовке неважен -- хреновый порядок, ага. Еще раз, мнемоническое правило:
    • Слитный "неважен" -- "хреновый", -- на предлог даже намека нет.
    • Раздельный "не важен" -- "похрен", -- с предлогом, который стал приставкой; пробел теоретически возможен.
  • Все, что сказано о передаче параметров, равно относится и к тем, и к другим. -- "равно" совсем не в тему. Если не заменять на "эквипенисуально", лучше просто исключить. :)

А теперь без шуток. Как уже говорил, автор в целом следует стилю "учитель старой закалки": отсюда и "печатать" -- о выводе на экран, и "маркер" -- не употребляемый в учебниках и документации последние лет 20.

Однако попытался представить, как будет читаться текст, если будут убраны все кавычки, вызвавшие замечания. Без кавычек просторечия будут читаться гладко, вместе с окружающим текстом. А поскольку просторечий в книге достаточно, и употребляются они порой весьма фривольно, -- старый учитель местами начнет смахивать на бывшего панка или хиппи, выражающегося уж слишком образно. Вероятно, кавычки были призваны играть роль "реплик в сторону", но из-за неверной грамматики вызывают лишь резь в глазах.

Возможно, "бывший хиппи" -- слишком сильно, а на деле текст станет лишь чуть эмоциональней и живее. Не знаю.
Аватара пользователя
Vapaamies
постоялец
 
Сообщения: 292
Зарегистрирован: 24.07.2012 22:37:59
Откуда: Санкт-Петербург

Re: "Песни о Паскале" - для школьников и начинающих

Сообщение Oleg_D » 15.08.2012 09:56:45

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

Предлагаю так:
При этом через настройки компилятора должен быть позволен расширенный синтаксис.
С прочими замечаниями тоже согласен если не на 100, то на 95%, спасибо! Ступим ещё шажок на пути к недостижимому идеалу :D

Что касается 2,5 миллионов строчек кода на C (из статьи по вашей ссылке), то надо ещё выяснить, откуда они взялись. Так, например, этот компилятор Modula-2 / Oberon-2
http://www.excelsior-usa.com/xds.html
генерирует на Си промежуточный код с целью последующего объединения кусков, написанных на разных языках.
Oleg_D
постоялец
 
Сообщения: 391
Зарегистрирован: 09.05.2011 11:28:36

Re: "Песни о Паскале" - для школьников и начинающих

Сообщение Vapaamies » 27.08.2012 02:02:51

Модераторы этого форума неприятно удивили. Попросил разрезать тему и выделить сообщения, относящиеся к вычитке книги, от вопросов новичков. Сегодня вечером пришло уведомление, что обращение закрыто. Но новой темы не появилось. Настроение безнадежно испорчено, хотя сегодня прочитал еще одну главу и думал снова отписаться.

Остальные мысли по теме -- матерные.
Аватара пользователя
Vapaamies
постоялец
 
Сообщения: 292
Зарегистрирован: 24.07.2012 22:37:59
Откуда: Санкт-Петербург

Re: "Песни о Паскале" - для школьников и начинающих

Сообщение Oleg_D » 27.08.2012 08:42:02

Разделить ветку на два топика - мысль хорошая; возможно, модераторы сделают это немного позже (пора отпусков, однако!). Вот и на яндексе, похоже, сейчас проблемы какие-то: хотел выложить промежуточную редакцию - не вышло. Пока бросил в файлообменник:
http://depositfiles.com/files/0u8he3f4k

Сделал много мелких исправлений (запятые, кавычки и т.п.).
Наиболее существенные правки:

Код: Выделить всё
Стр.   Глава   Исправлено

32   4   «Напишите» -> «напишете»
108   16   «2:» -> «3:»
187   28   «Ctrl+0»  ->  «Alt+0»
257   36   «)» -> «]»
323   43   «Взглянете» -> «Взгляните»
384   49   «Desk[5, 3]» -> «Desk[3, 5]»
500   60   «сумму 9» -> «сумму 10»

В файле ответов:
Задача 15-Д   исправлено условие  (N3<>N1) and (N3<>N2)


Добавлено спустя 5 часов 22 минуты 9 секунд:
Ну вот и модераторы сработали, спасибо!
Отделили мух от котлет :)
Oleg_D
постоялец
 
Сообщения: 391
Зарегистрирован: 09.05.2011 11:28:36

Re: "Песни о Паскале" - для школьников и начинающих

Сообщение Vapaamies » 29.08.2012 04:03:12

Oleg_D писал(а):Ну вот и модераторы сработали, спасибо!

Ну, слава богу! В России ничего без мата не делается. Заругаешься -- и дело будет. Так и живем. Хотя спасибо, конечно.

Но хорошо -- еще не совсем хорошо. Темы названы так, что новички наверняка будут тыкаться в эту, а не в ту, которая теперь для них.

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

Сегодня уже поздно, и разбирать свои заметки по пунктам не буду, а напишу лишь об одной вещи, но важной.

Как уже говорил, начал читать главу про криптографию, и с сожалением нашел серьезную, на мой взгляд, ошибку: под видом функции Chr в книге используется приведение типа Char. Понятно, что для новичка разница невелика, да и на уровне компилятора обе конструкции транслируются одинаково, но Chr -- виртовская функция, а приведение типов -- фишка Turbo Pascal-я. На практике программисты стараются не смешивать парадигмы: Chr обычно используется в паре с Ord, а приведение к типу Char -- с приведением к типу Byte.

Если потом ученик будет читать книгу более дотошного автора, он может прийти в замешательство. Ну, если и сам будет достаточно внимателен, чтобы не пропустить какую-то там "незначащую" буковку.
Аватара пользователя
Vapaamies
постоялец
 
Сообщения: 292
Зарегистрирован: 24.07.2012 22:37:59
Откуда: Санкт-Петербург

Re: "Песни о Паскале" - для школьников и начинающих

Сообщение Oleg_D » 29.08.2012 09:33:09

Vapaamies писал(а):Темы названы так, что новички наверняка будут тыкаться в эту, а не в ту, которая теперь для них.

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

Давайте договоримся в дальнейшем «утюжить» версию 12-B, которая появилась-таки на сайте. Там исправлено много мелких погрешностей.
По этому поводу в новой редакции упомянута функция CHR, но, вероятно, этого мало. Предлагаю так изложить (стр. 157):
Для преобразования числа в символ можно воспользоваться функцией CHR, которая изначально присутствовала в языке. Нынешние компиляторы предоставляют её аналог по имени CHAR, которым я и буду пользоваться в дальнейшем.
И далее чуть ниже на этой странице:
Для обратного преобразования – символа в число – существует другая «ненастоящая» функция по имени ORD, что переводится как «порядковый номер» (теперешние компиляторы предлагают и её аналог по имени Byte).
Честно говоря, на момент написания книги я уже стал забывать о существовании CHR, - настолько привык к современному преобразованию типов! Думаю, что для практика это неплохая привычка, хотя с точки зрения «чистой науки» вы совершенно правы.
Oleg_D
постоялец
 
Сообщения: 391
Зарегистрирован: 09.05.2011 11:28:36

Re: "Песни о Паскале" - для школьников и начинающих

Сообщение ev » 29.08.2012 11:33:36

Vapaamies писал(а):В России ничего без мата не делается.

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

Vapaamies писал(а):Заругаешься -- и дело будет.

ругаться не стоит, лучше стоит попробовать себя в роли модератора и получить массу благодарностей от довольный пользователей ;)

Vapaamies писал(а):Но хорошо -- еще не совсем хорошо. Темы названы так, что новички наверняка будут тыкаться в эту, а не в ту, которая теперь для них.

ты не умничай, пальцем покажи (c) старый анекдот
если есть конкретные пожелания - их лучше высказать в специальной ветке форума или в приватной беседе с модератором... или (как сказано выше) стать модератором и сделать как лучше ;)
только не стоит засорять ветку оффтопиком ;)
ev
долгожитель
 
Сообщения: 1772
Зарегистрирован: 27.04.2005 23:19:06
Откуда: Москва

Редактирование и вычитка книги

Сообщение Vapaamies » 01.09.2012 20:30:49

Oleg_D писал(а):Так, например, этот компилятор Modula-2 / Oberon-2
http://www.excelsior-usa.com/xds.html
генерирует на Си промежуточный код

Американцы? На Обероне?! Не верю! Собственно, пример XDS это прекрасно демонстрирует. Не хотят янки на расовом Обероне писать.

Oleg_D писал(а):Давайте договоримся в дальнейшем «утюжить» версию 12-B, которая появилась-таки на сайте. Там исправлено много мелких погрешностей.

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

Да, с удовольствием заметил, что текст похорошел в плане отсутствия шероховатостей. Читать стало приятней, и "режим корректора" теперь не включается сразу же. Над кавычками теперь каждый раз задумываюсь, по крайней мере.

Образ учителя в панка не превратился, что тоже хорошо. :)

Oleg_D писал(а):Честно говоря, на момент написания книги я уже стал забывать о существовании CHR

Ну вот, хоть в чем-то оказался полезен. Глядишь, с исправлением запятых и кавычек только и останется, что придираться по существу.
Аватара пользователя
Vapaamies
постоялец
 
Сообщения: 292
Зарегистрирован: 24.07.2012 22:37:59
Откуда: Санкт-Петербург

Re: Редактирование и вычитка книги

Сообщение Oleg_D » 01.09.2012 23:20:47

Vapaamies писал(а):Ну вот, хоть в чем-то оказался полезен.

Ещё как! В одной детской песенке поётся: "хоть лекарство очень горько, но в лекарстве польза есть". :)
Я благодарен за столь полезные "придирки" и жду продолжения, а там, чувствую, ещё есть к чему придраться.
Oleg_D
постоялец
 
Сообщения: 391
Зарегистрирован: 09.05.2011 11:28:36

Re: Редактирование и вычитка книги

Сообщение Vapaamies » 12.09.2012 16:14:35

Пока суть да дело, советую исправить поиском-заменой среднее тире U+2013 (–) на длинное — U+2014 (—), а заодно исправить соответствующую автозамену в Word-е. Американцы такие американцы — всех на американский манер форматируют. А в русской типографике используется длинное тире, как уже говорил.
Аватара пользователя
Vapaamies
постоялец
 
Сообщения: 292
Зарегистрирован: 24.07.2012 22:37:59
Откуда: Санкт-Петербург

Re: Редактирование и вычитка книги

Сообщение Oleg_D » 12.09.2012 16:43:57

Vapaamies писал(а):Пока суть да дело, советую исправить поиском-заменой среднее тире на длинное

Хорошо, попробую.
Oleg_D
постоялец
 
Сообщения: 391
Зарегистрирован: 09.05.2011 11:28:36

Re: Редактирование и вычитка книги

Сообщение Vapaamies » 12.09.2012 19:40:51

Наконец-то рекламная пауза завершена, и мы продолжаем. :)

Как уже говорил, неверных кавычек поубавилось, но они все равно есть:
  • Цезарь рисковал «подарить» свои тайны
  • потом «замахнемся» на файл
  • Результат размышлений цифрового «мозга» высвечивался лампочками на инженерной панели ЭВМ, и в эту двоичную «цветомузыку» был посвящён лишь узкий круг мудрецов
  • Так был создан «алфавит» для компьютеров
  • «обрубим ей хвост» -- по-моему, надо исправить на "обрубим ей «хвост»", потому как обрубаем мы на самом деле, а "хвост" у строки -- фигуральный.

Правописание и стиль:
  • добиться «понимания» между техническими устройствами -- «взаимопонимания».
  • разница между кодами одноименных больших и маленьких букв составляет 32 -- по-прежнему ратую за "прописные и строчные". С "печатью на экран" согласен, -- авторский стиль, а "маленькие и большие буквы" -- ничем не оправданное просторечие. Не пишут так в книгах. Ведь это не просто слова, а термины.
  • в третьей группе собраны русские буквы, символы псевдографики (их применяют для рисования таблиц) и другие редко используемые знаки -- русские буквы -- редко используемые знаки? Читается именно так.
  • программы шифрования и дешифрования строки -- "шифрования и расшифровки".
  • Во избежание ошибок, шифруйте строки небольшой длины -- наша родная "маркетинговая" запятая.
  • Хотя здесь проще держать ключ в глобальной переменной, но крупные программы этот приём запутывает -- "но" явно не к месту.
  • Их названия вам мало о чем скажут, обратите внимание лишь на символы -- читается как "вы это не знаете, а я знаю, но не скажу". Лучше вставить "пока" -- "Их названия вам пока мало о чем скажут".

По поводу именования функций и общеупотребительной англоязычной терминологии.

В книге используется пара Crypt/DeCrypt, что неверно ни по сути, ни с точки зрения английской грамматики:
  • Как правило, функции шифрования именуются Encrypt/Decrypt -- "зашифровать"/"расшифровать".
  • В английском языке термины encrypt и decrypt -- обычные слова, употребляемые вне программирования и прописанные в словаре. Поэтому они пишутся без CamelCase. Мы же не пишем в русском "ЗаШифровать" и "РасШифровать". Кулхацкерство какое-то.

Другое замечание -- по поводу идентификатора CKey. Раз уж речь идет про шифр Цезаря, лучше привести его имя полностью -- CaesarKey. Программирование -- не просто программирование, иногда оно расширяет кругозор. Это как раз из тех случаев. Нужно приобщать будущих программистов к английской культуре, подводя их к мысли, что равно или поздно придется читать англоязычные источники.

Под конец еще раз замечу, что лучше пользоваться связкой Chr/Ord, а приведение типа Char/Byte оставить на будущее. Меня по-прежнему передергивает, когда читаю:
Код: Выделить всё
function Char(arg : integer) : char;

Меня всего лишь передергивает, а кого-то может и запутать... Все же неспроста Вирт ввел отдельные функции для преобразования типов.

Слава богу, "Криптографию" наконец-то одолели. :)
Аватара пользователя
Vapaamies
постоялец
 
Сообщения: 292
Зарегистрирован: 24.07.2012 22:37:59
Откуда: Санкт-Петербург

Re: Редактирование и вычитка книги

Сообщение bormant » 12.09.2012 21:41:26

Vapaamies писал(а):
  • разница между кодами одноименных больших и маленьких букв составляет 32 -- по-прежнему ратую за "прописные и строчные"
Разница между кодами одноимённых прописных и строчных английских букв составляет 32.
Возможно это ясно из контекста, нет сейчас книги перед глазами. Для русских однобайтовых кодировок это неверное утверждение, например, для cp866 оно соблюдено для [А-П] без Ё, и не соблюдается для [Р-ЯЁ].
Аватара пользователя
bormant
постоялец
 
Сообщения: 407
Зарегистрирован: 21.03.2012 11:26:01

Re: Редактирование и вычитка книги

Сообщение Oleg_D » 13.09.2012 14:36:22

Vapaamies писал(а):Как уже говорил, неверных кавычек поубавилось, но они все равно есть:

Зачем я столько кавычек влепил? В общем-то, слова, применяемые в переносном смысле, часто заключают в кавычки. Но таких слов у меня много, это некий стиль, и в этом контексте, вероятно, многие из них действительно лучше «раскавычить». Или есть другие мнения?
Vapaamies писал(а):"маленькие и большие буквы" -- ничем не оправданное просторечие.

И куда тогда деваться Человеку с большой буквы? :D Исправлю, конечно.
Vapaamies писал(а):Под конец еще раз замечу, что лучше пользоваться связкой Chr/Ord, а приведение типа Char/Byte оставить на будущее.

Chr/Ord – если не ошибаюсь, это единственные псевдофункции, введённые Виртом. А ещё тогда не было строк, модулей, ограничивался порядок секций и т.д. и т.д. Об ООП вообще молчу. Всё же мы привыкли к Борландовскому Паскалю, теперь это фактически стандарт, и я опираюсь в основном на него. К этой теме можно вернуться в 32-й главе, где она развёрнута более широко. Пока вроде бы никто не пугался и не жаловался на непонимание в этом вопросе.
Остальное принимаю без возражений, спасибо!
bormant писал(а):Возможно это ясно из контекста, нет сейчас книги перед глазами. Для русских однобайтовых кодировок это неверное утверждение, например, для cp866 оно соблюдено для [А-П] без Ё, и не соблюдается для [Р-ЯЁ].

Там вот что написано:
Код: Выделить всё
Коды латинских букв следуют в порядке латинского алфавита, причем разница между кодами одноименных больших и маленьких букв составляет 32.

Можно добавить пару слов, что это правило не распространяется на русские буквы.
Oleg_D
постоялец
 
Сообщения: 391
Зарегистрирован: 09.05.2011 11:28:36

Пред.След.

Вернуться в Книга "Песни о Паскале"

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

Рейтинг@Mail.ru