Это тестовый сайт, предназначенный для бета-тестирования новой версии программного обеспечения. Все зарегистрированные здесь учётные записи, а также оставленные комментарии время от времени просто исчезают. Настоящий (рабочий) сайт расположен по адресу http://www.stolyarov.info
Опечатки и ошибки, выявленные в тексте второго издания "Введения в профессию"Tue Mar 2 16:06:59 2021
Быстропрыг: Том 1 — Том 2 — Том 3
Номера страниц и строк даны в соответствии со вторым изданием, вышедшим в издательстве МАКС Пресс. В книгах издательства ДМК другая вёрстка, там номера страниц и строк отличаются. Кроме того, некоторые ошибки там уже исправлены, но, к сожалению, далеко не все. Том I
Том II
Том III
|
Программирование: введение в профессиюпояснениеВы находитесь на официальном сайте Андрея Викторовича Столярова, автора учебных пособий по программированию и информационным технологиям. Если вы искали сайт замечательного писателя-фантаста Андрея Михайловича Столярова, то вам, к сожалению, не сюда. Андрей Михайлович Столяров в библиотеке Мошкова |
☞ From Илья (unverified) Thu Feb 24 17:05:00 2022
Том ІІ, стр. 311, 2-й абзац, 5-я строка снизу
В слове "командной" пропущена буква н.
ответить
⮴ From admin Thu Nov 3 17:23:31 2022
Факт
Спасибо!
ответить
☞ From fluorine Tue Feb 22 16:16:00 2022
1 том, стр. 490, предпосл. абзац параграфа
... Поскольку к моменту выполнения команды (в данном случае — в данном случае команды с запоминанием возврата) ...
не забыто ли слово адреса (команды с запоминанием адреса возврата)?
ответить
⮴ From admin Thu Nov 3 17:18:09 2022
Еле нашёл. В
Еле нашёл. В издании от МАКС Пресс это страница 526.
В принципе вы правы, проблема в том, что там и так от слова "адрес" в глазах рябит -- оно есть и в предыдущей фразе, и в следующей, и вообще его там, как бы так выразиться, много.
В общем, пусть оно тогда будет "с запоминанием точки возврата" -- я думаю, тут не слишком сложно догадаться, что именно имеется в виду.
ответить
☞ From Alejandro Tue Feb 22 11:01:00 2022
2 том587, 3 строка
2 том
587, 3 строка перед заключением — точка с запятой вместо просто запятой
606, 4 строка снизу — "... прерывании надлежащим образом сохранена. ..." вместо "... прерывании будет надлежащим образом сохранена. ..."
616, 16 строка снизу — "IBM PC-совместимых", лучше "IBM-PC-совместимых"
616, 11 строка снизу — "DosBox", обычно пишут "DOSBox"
617, 9 строка — Qemu вместо qemu, единообразие
3 том
625, 5 строка снизу — судя по всему, оборот "к сожалению" лишний
636, 2 абзац, 4 строка — запятая после "как минимум"
636, 3 абзац, 2 строка — "в форме, отличной от исходного текста", по смыслу должно быть "в форме исходного текста"
ответить
⮴ From admin Thu Nov 3 17:05:31 2022
> 587, 3 строка
> 587, 3 строка перед заключением — точка с запятой вместо просто запятой
фигушки :-)
> 606, 4 строка снизу — "... прерывании надлежащим образом сохранена. ..." вместо "... прерывании будет надлежащим образом сохранена. ..."
Тогда уж "при котором" тоже заменить -- на обыкновенное "когда". Пожалуй, соглашусь, так будет легче читаться.
> 625, 5 строка снизу — судя по всему, оборот "к сожалению" лишний
Ни фига он не лишний, в том-то и дело. Если человеку в руки дают инструмент, а у него при этом не возникает само собой непреодолимое желание на уровне зуда немедленно попробовать сей инструмент в деле -- на чём попало, для чего попало, лишь бы задействовать -- то из этого человека сделать хорошего программиста, ну, э... такое себе. Поэтому сам по себе эффект золотого молотка вообще-то полезен. Вредным он становится только тогда, когда человек перестаёт обращать внимание на другие инструменты, ограничиваясь тем одним, который уже у него в руках. Но вот это, к счастью, как раз происходит далеко не со всеми.
> 636, 2 абзац, 4 строка — запятая после "как минимум"
Там ещё и Ч.У. (пресловутое "как минимум" употреблено дважды), так что я переделал фразу совсем.
> 636, 3 абзац, 2 строка — "в форме, отличной от исходного текста", по смыслу должно быть "в форме исходного текста"
Напротив, для тех, которые передаются в исходниках (например, скрипты на питоне), нет смысла отделять зависимости времени сборки от зависимостей времени исполнения, поскольку и сборка, и выполнение будут происходить на одной и той же системе.
Спасибо!
P.S. Фуууууух, неужели я всё это разгрёб?
ответить
☞ From Alejandro Tue Feb 22 10:57:00 2022
2 том440, 13
2 том
440, 13 строка снизу — "Wifi" вместо "WiFi"
469, 15 строка снизу — "koi8r" вместо "koi8-r"
499, 3 абзац, 4 строка — точка с запятой вместо просто запятой
502, вызов bind — нет приведения типа к struct sockaddr*
Тот же пример — название переменной ok; по идее, должно быть res, т.к. ok логичнее использовать с отрицанием, а не сравнением
506, 16 строка снизу — 999999, возможно, лучше использовать математический режим
515, 4 строка и 516, 1 строка примера — разные размеры буфера
576, первый профиль функции — лишняя точка
3 том
290, 2 строка — "справа сверху" вместо "слева сверху"
291, начало 4 абзаца — пропущена запятая перед тире
Там же, на следующей строке — "это что" вместо "это то, что"
292, 8 строка — R и A, шрифт
ответить
⮴ From admin Thu Nov 3 16:00:39 2022
> 499, 3 абзац, 4
> 499, 3 абзац, 4 строка — точка с запятой вместо просто запятой
Ну уж нет :-) Можно переформулировать, чтобы там запятая была -- например, можно вместо "следовательно" написать "так что". Но в текущем виде там именно запяточка, её на точку заменить можно, но никак не на запятую.
> 506, 16 строка снизу — 999999, возможно, лучше использовать математический режим
Ну там как бы моноширинный шрифт, и имеется в виду значение переменной. Мне самому кажется, что тут лучше будет математика, но я не могу внятно сформулировать сколько-нибудь общее правило, когда в таких случаях использовать mathmode вместо моноширинного.
> 515, 4 строка и 516, 1 строка примера — разные размеры буфера
Йолки, как вы такое вылавливаете? 8-() Впечатляет.
> "это что" вместо "это то, что"
Несомненно, можно и так, но не вижу в этом обязательности. Просто фраза построена менее формально.
В очередной раз спасибо!
ответить
☞ From Alejandro Tue Feb 22 10:53:00 2022
2 том142,
2 том
142, предпоследний абзац параграфа — противоречие, на первой строке написано "Некоторые компиляторы ... позволяют описывать", на предпоследней строке "... и в других компиляторах не поддерживается ..."
161, 1 строка — "0, 1 и 2", шрифт
Также перечисление enum expr_item_types оформлено не в соостветствии с рекомендациями из главы, посвященной оформлению кода
247, 12 строка — putty, шрифт
338, 8 строка — 1, шрифт
3 том
109, функция void f(const char *str) — лучше str заменить на str ? str : "" или что то вроде такого в связи с тем, что ниже приведён пример вызова f(0)
114, сноска — "символ раскрытия области видимости" вместо "раскрытие области видимости"
162, перегрузки инкремента — побочный эффект во 2-ой строке обоих методов
253, вызов accept — лишний пробел после операции приведения типа
ответить
⮴ From admin Thu Nov 3 15:07:19 2022
> 142,
> 142, предпоследний абзац параграфа — противоречие,
Нет тут никакого противоречия, противоречие было бы, если бы в конце было сказано что-нибудь вроде "ни в каких других компиляторах". Но да, кривенько :-) Поменял формулировку в рукописи.
> 247, 12 строка — putty, шрифт
Ну там рядом ещё Minicom, и операционки перечисляются -- их как бы не хочется все моноширинным делать. Пожалуй, правильный компромисс тут -- написать Putty с заглавной буквы, тогда уж точно это не будет "цитатой из чего-то компьютерного", будет просто имя собственное.
> лучше str заменить на str ? str : ""
А ведь верно. Как вы такое замечать ухитряетесь, этому тексту 15 лет, я с трудом могу оценить количество читателей, но несколько тысяч точно есть, и вот поди ж ты.
> 114, сноска — "символ раскрытия области видимости" вместо "раскрытие области видимости"
Ну, если совсем формально, э... то согласен :-) Если есть операция и её символ, то есть тогда и символ раскрытия, и само раскрытие, и операции соответствует именно оно. Поправил это в рукописи, не выношу в эррату — чтобы сообразить, что это ошибка, нужно в узел завязаться.
> 162, перегрузки инкремента — побочный эффект во 2-ой строке обоих методов
Кстати да, good catch. Просто этот пример написан задолго до того, как я для себя определил, как надо относиться к побочным эффектам.
Но вообще исправление этого (разнесение на две строчки) несколько снизит наглядность, вместо того, чтобы её повысить: проблема в том, что тут используется значение операции инкремента (что, да, нехорошо), но происходит-то это как раз в определении операции инкремента. Вообще как-то довольно стрёмно получается: сами мы результатом инкремента принципиально не пользуемся, но для пользователя описвываемого класса эту возможность аккуратненько сохраняем.
Короче, занёс это в TODO, тут надо думать.
> 253, вызов accept — лишний пробел после операции приведения типа
Ну да, ... но нет. С учётом наличия там ещё и операции взятия адреса оно как-то громоздко получается, если без пробела. То есть на мой скромный вкус читается хуже.
ответить
☞ From Flau (unverified) Sun Feb 20 12:15:00 2022
Задачник, 77 стр., #6.13
textttuknowncommand. Проблема с командой LaTeX'а
ответить
⮴ From admin Sun Feb 20 12:40:10 2022
На задачник
На задачник есть своя errata — прямо на странице, посвящённой задачнику. И эта ошибка там уже есть.
ответить
☞ From Anonymous (unverified) Sat Feb 12 14:48:00 2022
2 том, 399
2 том, 399 страница, 2 абзац, "...заменяет действоваВшее множество...", пропущена в.
ответить
☞ From Anonymous (unverified) Sat Feb 12 14:34:00 2022
2 том, 397
2 том, 397 страница, 8 строчка снизу, написано "какую нибудь", пропущен дефис.
ответить
☞ From Alejandro_ (unverified) Tue Feb 8 03:47:00 2022
1 том.299 -
1 том.
299 - "контр-интуитивны", лишний дефис
432, рисунок 2.12 - треугольник у стрелки, идущей от first, лучше немного повернуть по часовой стрелке, т.к. линия в треугольник входит неаккуратно
570, 8 строка - для числа 2, по видимому, лучше включить математический режим
2 том.
241 (5 строка) и 548 (сноска) - man, шрифт
556, 2 абзац, 6 строка - "от 0 до 4" набраны обычным шрифтом, ниже - моноширинным
557, 2 абзац, 3 строка - "1", шрифт
559 - дважды неправильно набрана фамилия Таненбаума
3 том.
283, 3 абзац - возможно, числа, используемые в тексте программы (9, 5, 7 и т.д.), должны быть моноширинными
298, 2 абзац, 4 строка снизу - FLTK, шрифт
300, 2 абзац - Ok, Yes и No, возможно, должны быть моноширинными
307 - "в §10.10" вместо "в главе 10.10"
ответить
⮴ From admin Thu Nov 3 13:21:23 2022
> треугольник у
> треугольник у стрелки,
в xfig'е крайне сложно добиться нужного вида от сплайновых стрелочек, но я попробую что-нибудь с этим сделать
> 241 (5 строка) и 548 (сноска) - man, шрифт
Вот не хочу в конструкции "man-страница" менять шрифт. По той же причине, по которой не хочу этого делать в слове "var-параметр".
> 300, 2 абзац - Ok, Yes и No, возможно, должны быть моноширинными
Ну, э... скорее всё-таки нет. Они ведь не на терминал выводятся, и в нашей программе в явном виде не фигурируют (хотя, конечно, они есть где-то в недрах FLTK). А так -- это же кнопки в графических диалогах, и шрифт, которым их нарисует FLTK, моноширинным не будет.
За всё остальное спасибо, внёс (в основном прямо в рукопись)
ответить
☞ From punkochel (unverified) Sun Feb 6 18:57:00 2022
Опечатка
Издание ДМК. Стр. 532. В описании типов переходов: "Короткие (short) переходы используюся для оптимизации в случае, если точка, куда надлежит «прыгнуть», отстоит от текущей команды не более чем...". Опечатка в слове отстоит, возможно здесь имелось ввиду слово - отстает, а возможно это и не опчатка, но меня она ввела в некоторое недоумение)
ответить
⮴ From admin Wed Nov 2 20:07:17 2022
Не поверите, в
Не поверите, в русском языке действительно есть такое слово.
ответить
☞ From Strongful (unverified) Fri Feb 4 05:32:00 2022
Опечатка
Т.1,стр. 45, 9 строчка снизу:"Во-первых, такое решение должно было принято осознанно.
Правильно будет: Такое решение должно быть принято осознанно.
ответить
☞ From Alejandro_ (unverified) Thu Feb 3 22:23:00 2022
I'm here again :)
1 том
702, предпоследний абзац - фрагмент "всех, у кого возникнет такое желание" лучше поставить перед "Хочется, однако, ", т.к. "предупредить" и "что" разделяет слишком длинная фраза
702, последняя строка - у смайлика из-за шрифта третий символ съехал вверх (или первые два вниз) :-)
2 том
с. 502 - для 2-го параметра вызова accept отсутствует операция приведения типа
3 том
с. 157, сноска - вместо unsigned long используется int
Также объект класса SparseArrayInt невозможно индексировать, если он, например, передан в функцию по константной ссылке (а без этой возможности пример выглядит каким-то неполным). Компилятор будет ругаться, например, на такое:
P.S.: Также в файле sparse.cpp в функции main ветки switch отформатированы в разных стилях, а в ветке default перечислены не все возможные действия.
P.P.S.: а мне ведь просто задачки по 10-ой части порешать захотелось :D
ответить
⮴ From admin Wed Nov 2 20:00:49 2022
> 702,
> 702, предпоследний абзац
Да, тяжеловата получилась. Спустя 12 лет после того, как эта фраза была впервые составлена (а она присутствовала ещё в самом первом издании книжки по NASM'у -- в виде друх брошюрок в МГТУГА) я, пожалуй, соглашусь, что её стоит переформулировать, там эта вводная конструкция сокращается втрое без потери смысла. Ну, э... в бесконечно далёком 2010 году мои навыки работы с текстом были намного слабее, чем сейчас (после двух изданий трёхтомника).
> у смайлика из-за шрифта
Это и есть, на мой взгляд, канонический вид смайлика, ведь смайлики появились во времена господства текстового режима и моноширинных шрифтов.
> объект класса SparseArrayInt невозможно индексировать
Да, факт -- для полноты картины нужна константная версия для operator[]. Ну, это надолго, внёс себе в список TODO одним из пунктов, там много чего придётся перекраивать, и в тексте, и в последующих примерах.
> в файле sparse.cpp в функции main
экая бяка, thanks, поправил
ответить
☞ From fluorine Thu Feb 3 11:54:00 2022
1 том, 222 стр.,
1 том, 222 стр., сверху
Кроме того, каждое число... , а строки как мы знаем разделены символом перевода строки
Видимо имелось в виду заканчиваются
1 том, стр 171, ближе к концу второго абзаца
На первый "уголок" попадут дроби 1/1 И ЗДЕСЬ ТОЧКА вместо запятой
Вот это (снизу) не помню скидывал или нет, поэтому продублирую
1 том, стр 174 начало
Если, скажем, нарезать ... (сейчас в физике считается, что наменьший
ответить
⮴ From admin Wed Nov 2 16:31:31 2022
Спасибо :-)
> разделены
Да, не вполне аккуратно получилось. Переформулировал в исходнике, подождём теперь третьего издания... авось когда-нибудь дождёмся.
> ТОЧКА
Good catch! (на мелком шрифте, да в окружении всяких дробей -- её ещё пойди заметь. круто в общем)
> не помню скидывал
Да, это уже было :)
ответить
☞ From Alejandro_ (unverified) Wed Feb 2 19:32:00 2022
1 том.694, 3 абзац,
1 том.
694, 3 абзац, 9 строка - должно быть "от -127 до 128"
2 том.
139, 3 абзац - ", не снабженный словом struct, "; лучше " (без слова struct) ", а то можно подумать, что в Си есть названия структур без слова struct (если забыть про typedef)
429, 3 абзац, 5 строка - 0, шрифт
429, 4 абзац - для неустранимых ошибок используется LOG_CRIT
Там же - LOG_WARN вместо LOG_WARNING
------------------------------
И на всякий случай
3 том.
177, начало параграфа, 5 строка - "couldn't open the file", обычный шрифт вместо моноширинного
------------------------------
Также есть пара вопросов. В параграфе, посвящённом чисто виртуальным методам, сказано, что синтаксис с "= 0;" неудачен и, в частности, есть проблема в том, что нет возможности использовать другое число (вместо 0). Так вот, какой синтаксис здесь был бы лучше и в чём проблема с числом 0, если 0 можно просто рассматривать как адрес данного метода в таблице виртуальных методов?
ответить
⮴ From admin Wed Nov 2 14:05:51 2022
> 694, 3 абзац, 9
> 694, 3 абзац, 9 строка - должно быть "от -127 до 128"
Может, я и не понимаю чего, но: порядок у нас тут 8-битный, т.е. от 0 до 255, причём 0 и 255 -- значения особые (0 - для денормализованных, 255 -- для не-чисел), остаются от 1 до 254, если из них вычесть смещение -- а оно в данном случае 127 -- получим от -126 до 127, что и написано в книге.
> 139, 3 абзац - ", не снабженный словом struct, "; лучше " (без слова struct) ", а то можно подумать, что в Си есть названия структур без слова struct
Там "не снабжённые", т.е. главное слово -- "имена", больше ни с чем не бьётся. В принципе понимаю, о чём идёт речь, но не понимаю, как тут вот это вот "без слова struct" поможет делу, по-моему кривой смысл можно прочитать хоть так, хоть эдак.
> 4 абзац - для неустранимых ошибок используется LOG_CRIT
Цитирую man:
# LOG_CRIT critical conditions
# LOG_ERR error conditions
Готов согласиться, что "неустранимая ошибка" -- это термин не из этой области (это отличие между кодами 4xx и 5xx в http и smtp), но CRIT -- это тоже не "неустранимая ошибка", а "критическая ситуация" (если я только правильно понимаю, что к чему, скажем, неизвестное имя пользователя в пришедшем письме -- это вполне себе неустранимая ошибка, но на критическую не тянет ни анфас, ни в профиль).
В общем, переформулировал в рукописи, убрав слово "неустранимая".
> Так вот, какой синтаксис здесь был бы лучше
Подозреваю, правильно было бы ввести ключевое слово, например, pure или undefined.
> если 0 можно просто рассматривать как адрес данного метода
Его нельзя рассматривать как адрес. Если бы можно было, и проблемы бы не было. Но тогда там можно было бы что-нибудь ещё использовать, кроме нуля -- например, имя другого метода того же класса с таким же профилем. Или просто произвольную целочисленную константу (это не так бессмысленно, как может показаться: я много раз встречался с ситуацией, когда виртуальную функцию приходится описывать только ради того, чтобы она для разных потомков возвращала разные целочисленные константы, и когда она вызывается эн миллионов раз, начинает душить жаба и приходится вместо виртуального метода делать простое целочисленное поле, что идеологически неправильно, коль скоро оно являет собой особенность именно класса целиком, а не отдельного объекта).
В таком же виде синтаксис просто идиотичен.
ответить
☞ From Илья (unverified) Mon Jan 31 17:27:00 2022
Том І, cтр. 625, 18-я строка сверху
Написано «случе», пропущена буква "а"
ответить
⮴ From admin Wed Nov 2 12:57:00 2022
Good catch!
Супер, и никто ведь не заметил до сих пор. Спасибо!
ответить
☞ From Alejandro_ (unverified) Sun Jan 30 10:06:00 2022
2 том, с. 287 --
2 том, с. 287 -- recvfrom и sendto принимают шесть параметров, но они перечислены в списке вызовов с пятью параметрами; вместо них можно привести getsockopt и setsockopt (или mount и linkat, для того, чтобы имена не были похожи друг на друга, но эти два вызова, в отличие от getsockopt/setsockopt, в книге не встречаются)
ответить
⮴ From admin Wed Nov 2 12:21:54 2022
Факт
Отдельное спасибо за предложенную замену :-)
ответить
☞ From Alejandro_ (unverified) Thu Jan 27 08:38:00 2022
1 том540 - i386
1 том
540 - i386 набрано моноширинным шрифтом
2 том
251 - 343, шрифт
253, функция check - if сдвинут на следующую строку
259, 3 строка - 27, шрифт
366 - возможные значения полей структуры struct tm набраны обычным шрифтом
384, 1 абзац - сигналы реального времени один раз всё же были упомянуты (389, 4 абзац)
393 - пустой оператор, обозначенный ";" вместо "{}" (для единообразия)
397, 7 строка снизу - "какую нибудь", пропущен дефис
403, предпоследний абзац, 4 строка - "0 и 1", шрифт
407, последнее предложение параграфа - "сложный" и "сложнее" (тавтология)
482, 3 строка снизу - протоколы IPX/SPX не поддерживаются в ядре Linux с 2018 года, в OpenBSD - с 2007
3 том
114 - "точка" без кавычек, "стрелка" с кавычкамим
306 - треугольные скобки у <X11/Xlib.h>
ответить
⮴ From admin Wed Nov 2 12:14:59 2022
Спасибо в очередной раз
> 251 - 343, шрифт
увы, не понял, что имеется в виду
> 253, функция check - if сдвинут на следующую строку
так и задумано, см. пар. 2.12.5 в первом томе. Стиль, когда "else if" пишут в одну строчку, допустим и даже чаще применяется, но мне он не нравится, потому что при этом первая ветка выглядит не так, как последующие.
> 384, 1 абзац - сигналы реального времени один раз всё же были упомянуты (389, 4 абзац)
Явным образом они там не упоминаются. Да даже если бы и упоминались, ну и что? Про них ничего не рассказывается, а сам абзац, где вскользь упомянуты "какие-то ещё сигналы", набран мелким шрифтом, т.е. это даже не совсем часть основного текста. Так что собственное обещание "проигнорировать" этот механизм я считаю исполненным.
> 114 - "точка" без кавычек, "стрелка" с кавычкамим
Ну так точка там же действительно точка, а стрелка -- вообще-то никакая не стрелка, а минус и знак больше.
Спасибо ещё раз :-)
ответить
☞ From fluorine Tue Jan 25 14:24:00 2022
конец первого
конец первого абзаца, А ещё здесь любопытно отметить, что 0.00(0110)2 - это не что иное, как одная десятая... , ну а 0.25 - это 1/4, то есть то самое 0.01...
1 том ДМК, стр 151
В во втором издании 162я стр. снизу
ответить
⮴ From admin Wed Nov 2 09:28:54 2022
И так прочитал,
И так прочитал, и сяк, и в ту сторону, и в эту... Что тут не так-то?
ответить
☞ From Илья (unverified) Tue Jan 25 12:55:00 2022
Том І, стр. 579, 5-я строка снизу
Лишнее "от" после длинного тире.
ответить
⮴ From admin Wed Nov 2 09:26:40 2022
Спасибо!
Спасибо!
ответить
☞ From Alejandro_ (unverified) Tue Jan 18 05:56:00 2022
2 том161, 1 строка
2 том
161, 1 строка - 0, 1 и 2, шрифт
231, функция int_callback_minmaxcount - конструкция вида a = b = c;
692, 9 строка - "собственный тамошний", одно из слов лишнее
695, 6 строка - main(), скобки
3 том
215 - инстанциация вместо инстанцирование
252, метод Start - нет вызова close(ls) для случаев, если bind или listen вернули -1
255, метод ReadAndIgnore - "ignoring = 0;" вместо "ignoring = false;"
257, начало 11 главы - graphics вместо graphical
575, $12.3.1, 4 и 5 строки - лишние угловые скобки у названий файлов (тем более, что в следующем абзаце скобок нет)
Там же, во втором абзаце - шрифты у числовых значений кода завершения команды
ответить
⮴ From admin Wed Nov 2 09:15:46 2022
> 692, 9 строка -
> 692, 9 строка - "собственный тамошний", одно из слов лишнее
Не вижу, каким способом любое из слов лишнее -- фраза разваливается при опускании любого из них. Впрочем, фраза получилась "чересчур разговорная", так что я её переформулировал в рукописи, спасибо за обнаружение :-)
> 215 - инстанциация вместо инстанцирование
пардон, не вижу криминала
За всё остальное большое спасибо, внёс (тем или иным способом)
ответить
☞ From Anonymous (unverified) Tue Jan 18 03:30:00 2022
Том 2, стр 46, конец страницы.
> значение выражения 5.0/2.0 приблизительно равно 2.5
Но ведь в данном случае оно как раз в точности равно 2.5.
Может надо было взять пример, где знаменатель бы делился на 5? Тогда получится конечная десятичная дробь в десятичной записи, но бесконечная в двоичной.
ответить
⮴ From admin Mon Oct 31 21:11:00 2022
Good catch!
Отличное замечание, спасибо! В рукописи заменил на 32/5, давайте теперь вместе надеяться, что когда-нибудь эта рукопись будет напечатана.
ответить
☞ From fluorine Sat Jan 15 18:56:00 2022
1 том, страница 174
1ый абзац
поискать в Интернете статьи про так называемое число Грэма. ... (сейчас в физике считается, что это наменьший
ответить
☞ From Alejandro_ (unverified) Sat Jan 15 00:22:00 2022
2 том.685 — -o
2 том.
685 — -o <filename>, моноширинный шрифт у угловых скобок
Также, возможно, стоит упомянуть о флаге -Wextra и о том, что не стоит использовать уровнь оптимизации выше 2, т.к. код может получаться даже медленнее
3 том.
292, сноска — создатели FLTK для сборки библиотеки из исходных текстов используют CMake, так что о консерватизме говорить не приходится :(
ответить
⮴ From admin Mon Oct 31 21:04:43 2022
> моноширинный
> моноширинный шрифт у угловых скобок
Факт, спасибо -- поправил прямо в исходнике
> Также, возможно, стоит упомянуть о флаге -Wextra
Ну там до чёрта полезных флагов, нужно как-то себя ограничивать, книжка и так огромная. Тем более что -- признаюсь честно -- сам я -Wextra никогда не использую.
> не стоит использовать уровнь оптимизации выше 2
поставил себе пометку, подумаю на эту тему
> о консерватизме говорить не приходится :(
Увы, консерватизм не исключает идиотизма.
ответить
☞ From Alejandro_ (unverified) Thu Jan 13 03:32:00 2022
1 том83,
1 том
83, предпоследняя строка — кавычки для "love, ken"
283, 2 строка — HTTP, шрифт
609 — "(0 или 1)", шрифты у чисел
2 том
18, последняя строка — точка перед "Следует"
21, 4 строка — printf, шрифт
22, 2 строка после заголовка — main, шрифт
26, 2-ая сноска — шрифты у типов данных и строковых литералов
30, 2 абзац, 2 строка — 0, шрифт
174 — отступ у пустого комментария :-)
576, 4 строка — waitpid(), скобки
3 том
10 часть —
delete[]
иdelete []
, единообразие130, рис. 10.2 — рисунок стоит обновить, на фоне всех остальных выглядит неаккуратно :(
179, 1 строка — "функция" вместо "[статический] метод", на всякий случай :)
366, 6 строка — 7 и 3, шрифты
378, 2 абзац, 2 последние строки — шрифт у номеров дескрипторов и названий потоков
Во всех томах — MS DOS, единообразие
----------------------------------------
Ёще есть несколько вопросов:
1. 1 том, с. 334, 2 строка — возможно, не стоит предлагать новичкам беззнаковыми типами увлекаться, особенно если эти Id кто-нибуль решится использовать в качестве счётчика цикла? :)
2. 3 том, с. 248 — значение, возвращаемое методом RemoveFd, в чём его всмысл? В исходниках я не заметил чтобы оно использовалось
3. 3 том, с. 252 — проверка результата listen, есть ли в ней смысл, если socket и bind успешно отработали?
ответить
⮴ From admin Mon Oct 31 20:43:43 2022
Спасибо!
> 1 том
> 83
там слишком много кавычек тогда будет, выделил английский вариант курсивом — это тоже допустимо
> 2 том
> 26, 2-ая сноска
Это 28 страница, и сноска там единственная :-P Но да, сплошной \textit вместо \texttt
> 130, рис. 10.2 — рисунок стоит обновить,
Как вам версия в издании ДМК? (стр.120 и 121) Или тоже не очень? В принципе эти диаграммы можно вообще перерисовать, расположив оба объекта слева, чтобы исключить сплайновые стрелочки, от которых вся неаккуратность. Просто места занимать будет намного больше, вот это меня останавливает.
> 179, 1 строка — "функция" вместо "[статический] метод"
Да ладно, что она, не функция? Надо иногда разнообразить используемые слова, "метод" там и так то и дело глаза мозолит.
> MS DOS
Нашёл два (буквально два) вхождения, отличных от "MS-DOS" (одно с пробелом, другое слитно), и поправил их, вставив дефис. На всякий случай проверил -- вроде бы это соответствует оригинальному наименованию.
1. 1 том, с. 334, 2 строка — возможно, не стоит предлагать новичкам беззнаковыми типами увлекаться, особенно если эти Id кто-нибуль решится использовать в качестве счётчика цикла? :)
Надо мало того, что использовать в качестве счётчика, так ещё и счётчик сделать убывающим, и предел -- ноль, и ещё предупреждение компилятора проигнорировать. Нефиг, пусть эту шишку каждый сам набивает, это полезно.
2. 3 том, с. 248 — значение, возвращаемое методом RemoveFd, в чём его всмысл? В исходниках я не заметил чтобы оно использовалось
Оно и не используется, слишком простенький пример для этого. Но вот вы подумайте, а что делать, если такого дескриптора в списке не нашлось? Падать с треском? Или "молча игнорировать"? По-моему, вернуть false тут самый правильный вариант, а проигнорировать ошибку может и головная программа.
3. 3 том, с. 252 — проверка результата listen, есть ли в ней смысл, если socket и bind успешно отработали?
С этим, пожалуй, даже соглашусь.
В общем, в очередной раз спасибо, всё остальное я внёс -- частично в эррату, частично прямо в рукопись. По принципу "надо же верить вот что-то хорошее" давайте попробуем поверить, что третье издание всё-таки когда-нибудь состоится.
ответить
☞ From Anonymous (unverified) Tue Jan 11 18:54:00 2022
Том I стр. 515, 10-ая строка снизу
ComplexMultiplication. ComplexRealPart...
Вероятно, после ComplexMultiplication должна быть запятая, а не точка.
ответить
☞ From Anonymous (unverified) Mon Jan 10 16:39:00 2022
Том I, стр. 257, 7-я строка снизу
написано «учениками» вместо «ученикам»
ответить
☞ From Scud (unverified) Sat Jan 8 06:56:00 2022
Том I, стр. 592,
Том I, стр. 592, первая строка:
"стек «растёт вниз», то есть в направлении убывания адресов"
стр. 600, третья строка снизу:
"«вверх» (то есть в сторону уменьшения адресов)"
Я вижу здесь противоречие.
ответить
☞ From Scud (unverified) Fri Jan 7 11:18:00 2022
Том I, стр. 589,
Том I, стр. 589, указание в скобках (кроме команд... ...регистр
CX
), чуть ниже середины страницы:А это действительно так? Мне не удалось добиться обозначенного поведения, в моём
nasm version 2.13.02
строчкавыполняется
ECX
раз.ответить
⮴ From admin Thu Feb 17 12:50:02 2022
Похоже, вы
Похоже, вы правы. Откуда я в 2007 году взял это утверждение про 16-битные версии строковых команд, сейчас уже не найти, зато в добром десятке описаний, которые с ходу удалось нагуглить, про это нет ни слова.
Хотя, конечно, версия ассемблера тут ни при чём, речь ведь идёт о командах процессора.
ответить
☞ From Alejandro_ (unverified) Wed Jan 5 19:51:00 2022
2 том201-202 —
2 том
201-202 — пробел между do и while
361, 9 строка — моноширинный шрифт у 1 и 31, возможно, лишний
369, 8 строка — похожая ситуация, моноширинный шрифт у 0, возможно, лишний
486, профили функций — избыточное слово int после short
500 — можно упомянуть, что на вызовах fcntl можно сэкономить при помощи опции SOCK_NONBLOCK (при вызове socket), а также при помощи вызова accept4, по последнее есть только в линуксе
525 - 5-ый параметр pselect — указатель на структуру timespec, а не timeval
3 том
252, 254 — конструктору FdHandler зачем-то передаётся true в качестве 2-го параметра
По поводу класса EventSelector — а не правильнее было бы завершать цикл не (или не только) по флажку quit_flag, но и если у нас нет никаких отслеживаемых событий (max_fd == -1, нет таймаутов и т.п.), причём проверку организовывать в начале, а не конце цикла? В частности, если кто-то случайно удалит объект класса ChatServer, то программа навсегда застрянет в главном цикле. Да и главный цикл может не один, а несколько серверов обслуживать, и позволять всем подряд прерывать его как-то странно.
ответить
⮴ From admin Fri Feb 18 12:24:00 2022
> 201-202 — пробел
> 201-202 — пробел между do и while
то ли не нашёл, то ли не понял, но в общем не вижу дефекта
> 361, 9 строка — моноширинный шрифт у 1 и 31, возможно, лишний
В других аналогичных местах вы сами требовали сделать шрифт моноширинным.
> 369, 8 строка — похожая ситуация,
Здесь, пожалуй, соглашусь, так как рядом имеет место арифметическое выражение, набранное в math mode. В таблицу выносить не буду, поправил прямо в исходнике.
> 486, профили функций — избыточное слово int после short
оно и после unsigned избыточное вообще-то; здесь меня терзают смутные сомнения, стоит ли что-то править
> 500 — можно упомянуть
но можно ведь и не упоминать, правда? учебник/самоучитель — это не справочник, к тому же книжка и так толстая получилась
> 525 - 5-ый параметр pselect
неприятненько, да. Спасибо.
> 252, 254 — конструктору FdHandler зачем-то передаётся true в качестве 2-го параметра
вы имеете в виду, что можно использовать умолчание? но такое использование, во-первых, есть право, а не обязанность, а во-вторых, тут скорее стоит подумать, не убрать ли это умолчание совсем; подумаю на эту тему, пометку соответствующую себе поставил.
> а не правильнее было бы завершать цикл не (или не только)
делать завершение _только_ по исчерпанию событий заведомо нельзя, поскольку могут быть и такие события, реакцией на которые должно стать завершение программы; да пусть даже мы и не рассматриваем в этом примере сигналы как события (хотя это просто упрощение для книжного примера, не более того), может быть предусмотрена, например, команда серверу выключиться.
Далее, завершение главного цикла при исчерпании событий логично лишь на первый взгляд. Это можно сделать каким-то ещё флагом (что-то вроде quit_on_empty_event_set), но совершенно точно нельзя делать иначе как по явно выраженной воле программиста. Библиотека должна делать своё дело.
Возможно, стоит из главного цикла вываливаться по сигналу, на который нет обработчика (при условии, что вообще обработчики сигналов предусмотрены), но это уже не для короткого примера.
ответить
⮴ From Alejandro Fri Feb 18 13:47:00 2022
>> 201-202 — пробел
>> 201-202 — пробел между do и while
Ох, и под чем я был, когда писал это?! Имелись ввиду пробелы между while и круглой скобкой
> вы сами требовали
Я ничего не требовал, кто я такой для этого :D Когда я репорчу подобные штуки, то исхожу из соображения, что то, что встречается в коде (идентификаторы, константы, etc) или печатает программа, набираются моноширинным, а числа, описывающие, например, диапазоны возможных значений (как тут) или "состояние" программы (как тут, 2 том, страница 600), обычным.
>> 486, профили функций
Как ни странно, я это решил отрепортить, вспомнив про этот комментарий (только вместо комитетов man-страницы).
Маленькое уточнение: под "по исчерпанию событий" имеются ввиду в т.ч. и исчерпание источников событий?
ответить
⮴ From admin Fri Feb 18 18:43:56 2022
> пробелы между
> пробелы между while и круглой скобкой
а! теперь понял :-) самое интересное, что источником этого (судя по EV_QUIT_NOW) оказался пример из главы про ncurses, там тоже этот пробел есть. Вернее, был. Поправил всё прямо в рукописи, формально это не ошибка, хотя, конечно, единообразие нарушается. Заодно поставил в планы втащить в текст параграф про "декоративные пробелы" из "Оформления кода" (ну, не весь, скорее всего, но хотя бы какой-то рассказ про это тут нужен).
> а числа, описывающие, например, диапазоны возможных значений
что-то сложно :-) вообще, надо сказать, проработка соглашений подобного рода — занятие ещё то
> вместо комитетов man-страницы
в man-страницах нынче вообще stdint'овские типы, комитеты дотуда добрались
> под "по исчерпанию событий" имеются ввиду в т.ч. и исчерпание источников событий?
А там иначе быть и не может. Иной вопрос, что, коль скоро в примере нет инфраструктуры для обработки сигналов, то логично было бы, если select вернул -1, вываливаться в любом случае (в примере не так, и это не очень правильно), а тогда уже программист в основной программе может захотеть, чтобы оно при отсутствии событий работало до сигнала (примерно как pause()), а сигналы обрабатывать вне этой функции. Впрочем, даже если оставить как есть, siglongjump из обработчика сигнала тоже никто не отменял. Короче, нет никаких проблем представить себе ситуацию, когда продолжение работы при отсутствии источников событий имеет смысл. Следовательно, нефиг автору главной программы навязывать свои услуги, которых он не просил.
ответить
☞ From Scud (unverified) Wed Jan 5 08:55:00 2022
Том I, стр 584-585, в
Том I, стр 584-585, в комментариях программы:
Название регистра
edx
должно быть записано какEDX
Я так и не понял, где вы используете строчные, а где - прописные для имён регистров, но конкретно здесь стилистически все одинаково должны быть, наверное?
ответить
⮴ From admin Thu Feb 17 11:58:18 2022
Да, тут явное
Да, тут явное нарушение единообразия, вы правы.
А общий принцип простой: в коде регистры записаны на нижнем регистре, а в тексте самой книги -- на верхнем. Но тут комментарий, да ещё по-русски, так что правильнее, видимо, всё-таки на верхнем.
ответить
☞ From Олег (unverified) Sun Jan 2 12:30:00 2022
Том I стр. 316, 17-ая строка сверху
...Ctrl-\(28), Ctrl-](29)., Ctrl-^(30)...
Вероятно, ненужная точка после Ctrl-](29).
ответить
☞ From Anonymous (unverified) Thu Dec 30 19:28:00 2021
Том 2, Стр. 362
Том 2, Стр. 362 строка 22: "отправляется" вместо "отправляет"
Том 2, Стр. 371 строка 10: вызовы на практике не проверял, но может речь о setpriority, вместо getpriority, исходя из описания ошибки, возвращаемой вызовом nice, EPERM
Том 2, Стр. 465 последняя строка: может быть "нового провайдера доступа в Интернет или хостингового оператора", вместо "новый провайдер доступа в Интернет или хостинговый оператор"
Также в некоторых фрагментах одного кода встречаются как комментарии на русском, так и на английском (например, код на стр. 516, стр. 518 и стр. 520) Понятно, что книга --- не код, но так и задумано?
ответить
⮴ From admin Thu Feb 17 11:50:01 2022
> Том 2, Стр. 362
> Том 2, Стр. 362 строка 22: "отправляется" вместо "отправляет"
Вообще-то нет :-) Здесь "отправляет" — сказуемое, подлежащим для которого выступает wait (а не зомби). Иной вопрос, что словосочетание "сам зомби" здесь, хоть формально это и правильно, приводит к запинке и диссонансу, хочется видеть "самого зомби", а не "сам". Я в рукописи заменил "сам зомби" на "сам процесс", так будет проще читаться.
> Том 2, Стр. 371 строка 10:
Берём man 2 getpriority и читаем следующее (в секции RETURN VALUE):
Так что речь тут именно про getpriority, ибо с setpriority такой проблемы вообще нет, он только и умеет что 0 или -1 возвращать. А про EPERM тут вообще не упоминается.
> Том 2, Стр. 465 последняя строка: может быть "нового провайдера
Вот уж фигушки :-) Здесь винительный падеж, вопросы "кого/что", а провайдер и оператор в данном случае организации, они не живые.
В общем, спасибо за выявление шероховатости с "зомби" :)
ответить
☞ From Scud (unverified) Wed Dec 29 06:34:00 2021
admin, а Вам
admin, а Вам висячие строки как, например, Том I, страница 416, самый низ - подсказывать? Или вы в них не видите проблем?
ответить
⮴ From admin Wed Dec 29 16:14:04 2021
Вообще у меня
Вообще у меня настройками в преамбуле висячие строки запрещены. К сожалению, этот запрет не действует на окружение verbatim, которое тут как раз и имеет место. Репортить такие штуки бессмысленно, вёрстка следующего издания в любом случае будет другой. Уж если я это проморгал при финальном просмотре перед отправкой в типографию (или даже увидел, но не смог исправить приемлемыми усилиями, так тоже бывает) — то всё, досвидос, что выросло то выросло.
ответить
☞ From Scud (unverified) Wed Dec 29 06:27:00 2021
Том I, стр.472,
Том I, стр.472, пример в середине листа:
Для единообразия с другими примерами на листе - параметры поменять на p и q? Или в именно a, b - какой-то смысл вложен?
ответить
⮴ From admin Wed Dec 29 16:15:04 2021
с именем метки
с именем метки законфликтует
ответить
☞ From fluorine Tue Dec 28 20:11:00 2021
2 том, стр. 409, конец 2 абзаца
... знакомый нам системный вызов fstat
как оказалось isatty работает через ioctl, а не через fstat
ответить
☞ From fluorine Mon Dec 27 19:39:00 2021
не повезло этому примеру
1 том страница 664, пример кода не соответсвует содержанию copy.asm
В copy.asm:
%if %0 > 6
pop ebp
%if %0 > 6
%error "Can't handle Linux syscalls for more than 6 params"
%endif
p.s.: оказывается вы ещё вместо 7'и перед %error поставили 6
В книге
%if %0 > 6
pop edi
%if %0 > 7
%error "Can't do Linux syscall with 7+ params
Ещё на странице 661, в конце предпоследнего абзаца
сказано, что он откажется работать с более чем шестью параметрами.
Ещё в конце макроса kernel можно было бы, поставить отступ в 2 пробела
перед %error, выглядело бы лучше, но в принципе это не так, чтобы ошибка.
ответить
⮴ From admin Thu Feb 17 11:05:18 2022
Требуется внесение ясности
Тут явственно требуются пояснения.
Итак, во-первых, и в-главных: больше шести параметров у линуксового системного вызова быть не может, ибо некуда. EAX занят номером вызова, ESP — ну, это ESP, его трогать нельзя вообще совсем (если я правильно понимаю, ядро, работая в контексте процесса, некоторое время ещё продолжает использовать его, процесса, стек, да плюс к тому если на выходе из сисколла будет сигнал отрабатывать — ... Ну в общем нельзя ESP трогать :) ), так что (если речь идёт о i386) остаётся на параметры всего шесть регистров. Но это и не страшно, я знаю всего два сисколла с шестью параметрами (mmap и pselect), а с семью и больше, насколько я понимаю, их нет и никогда не было.
Во-вторых, у макроса kernel на один параметр больше, там ведь ещё и номер вызова. %0, таким образом, на единичку больше, чем количество параметров вызова.
В-третьих, макрос этот, кроме copy.asm, встречается ещё в двух примерах, которые расположены в отдельных директориях: asmcopy/ и asmgreet/, в обоих случаях там макрос вынесен в отдельный файл kernel.inc, он вроде одинаковый в обоих случаях, и там таки уже всё правильно. А вот в copy.asm, да, признаю, поправить забыл. При этом в книжке макрос воспроизводится ровно один раз, в примере copy.asm, а дальше предлагается "набрать такой макрос, как на странице такой-то".
Далее, фраза "Can't handle Linux syscalls for more than 6 params" при переносе в книгу превратилась в "Can't handle Linux syscalls with 7+ params" по одной довольно банальной причине: в той версии, которая в примерах, оно тупо не лезло в ширину полосы вёрстки :-) Но я как-то привык к тому, что "7+" значит "семь и больше". Т.е. смысл при этом остался прежний.
Итого: единственная ошибка тут — в архиве примеров в файле copy.asm, там самый внутренний %if должен быть %0 > 7. Её я только что поправил, спасибо за её выявление. Надо ещё собраться с силами и выложить исправленный архив.
Заодно:
> Ещё в конце макроса kernel можно было бы, поставить отступ в 2 пробела перед %error
поскольку с этим я полностью согласен (единообразия для), я это тоже только что везде поправил.
ответить
⮴ From Alejandro Thu Feb 17 12:00:00 2022
> всего два
> всего два сисколла с шестью параметрами (mmap и pselect)
Ещё есть recvfrom и sendto (это ещё в одном из моих комментов указано) :)
ответить
⮴ From admin Thu Feb 17 17:19:14 2022
Ну да, факт :) Я
Ну да, факт :) Я почему-то всё время забываю, что там есть ещё параметр flags, и в результате мне подсознательно кажется, что параметров там пять.
ответить
⮴ From fluorine Thu Feb 17 15:48:00 2022
Ну и простыня. С
Ну и простыня. С примереми, которые в книге дублируются беда конечно.
Ещё не все разгребли? Боюсь, что мои комменты потерялись :)
Ещё
---
1 том, стр. 419 предпоследний абзац середина
. Возвращать наша функция будет значение типа boolean: true, ..., и false, если не удалось
значение, или тип? Может: Возвращать наша функция будет логическое значение true, ..., и false, если не удалось.
1 том, стр. 424 перед следующей темой
Сравните это с кодом, приведённым на стр. 401, ...
А на стр. 401 продолжение объяснения, а не начало. Код в конце 400й страницы. Команда не та?
Не люблю репортить такие ошибки, вроде и не ошибки, но придратся хочется.
ответить
⮴ From admin Fri Feb 18 11:17:00 2022
Разгрёб ещё
Разгрёб ещё далеко не всё, но ничего никуда не потеряется, не беспокойтесь. Просто комментов с багрепортами много, а времени на них, увы, мало. А тут ещё вы зачем-то начали номера страниц не по тем книжкам давать, приходится ещё и на это тратить время.
> значение типа boolean
Я решительно не вижу, что вам тут не нравится. Функция возвращает значение. Значение имеет тип boolean. Ну вот бывают переменные типа boolean, бывают значения типа boolean, что не так?
> на стр. 401
> Команда не та?
метка не там :( С этими verbatim'ами постоянно такая хрень: метку внутри него поставить нельзя, можно или перед, или после, и в обоих случаях есть риск, что страница получится не та: если метку поставить перед кодом, а код уйдёт на следующую страницу, страница в метке будет предыдущая; если поставить после кода, а страница окажется разорвана ровно после verbatim'а, получится следующая (в этом случае именно это и случилось)
ответить
⮴ From fluorine Fri Feb 18 10:02:00 2022
Ещё---конкретно
Ещё
---
конкретно ДМК
т.1, стр. 475, 2й абзац
Директив uses можно использовать несколько, а можно перечислять
нельзя использовать несколько
proof: https://wiki.freepascal.org/Uses
Every Pascal module – i. e. program, unit, or library – can have at most one uses clause per section. It has to appear right after the section headings. Section headings are interface and implementation in a unit.
ответить
⮴ From admin Fri Feb 18 11:07:45 2022
Да,
Да, неприятненько. Хорошо, что обратили внимание.
NB: во втором издании это стр.509
ответить
⮴ From fluorine Fri Feb 18 10:26:00 2022
К предыдущему комментарию
1 т., стр. 479, последний абзац
или вообще в самом начале модуля сразу после его заголовка
Не будет работать:
$ cat unit1.pp
unit unit1;
uses crt;
interface
implementation
end.
$ fpc unit1.pp | tail -n 3
unit1.pp(2,5) Fatal: Syntax error, "INTERFACE" expected but "USES" found
Fatal: Compilation aborted
Error: /usr/bin/ppcx64 returned an error exitcode
ответить
⮴ From admin Fri Feb 18 11:32:19 2022
Неприятно, но
Неприятно, но факт. Спасибо.
ответить
☞ From Miha_s (unverified) Sun Dec 26 12:16:00 2021
Опечатка Т.2
Опечатка: Т.2 стр. 399 в начале:
после профиля вызова 3 строчка: заменяет "действовашее"
ответить
☞ From Alejandro (unverified) Sun Dec 26 09:42:00 2021
Шрифты и еще кое-что :)
1 том.
299, 4 строка - возможно, жирный закончился раньше чем нужно :)
316 - "Ctrl-] (29)", после скобки ненужная точка + возможно, не те шрифты у кодов в скобках
356, 3 строка снизу - Crtl-*, шрифты
357, 3 строка снизу - "символу с кодом 11", шрифт у 11
358 - возможно, тут лучше символ "+" моноширинным
382 - шрифты у возвращаемых функцией random значений
454 - "с сохранением сортировки", лучше "с сохранением упорядоченности"
491, 1 строка - возможно, лучше "Конечно, эта программа не решает никакой(-ую) задачи(-у)..."
2 том.
60, строки 9 и 15 - возможно, у названий циклов шрифт не тот
110 - функция starmatch, нет пробела после заголовка цикла
Там же, тело switch - возможно, отступы у меток лишние
419, 16-17 строки - лучше "например, в той же сфере промышленной автоматики", т.к. промышленная автоматика уже раннее упоминалась
421 - 13, шрифт, 3 раза
Там же - возможно, koi8-r тоже не тем шрифтом
428 - шрифт у номеров дескрипторов
429 - профиль closelog, void в скобках
464 - моноширинный шрифт у TTL, возможно, лишний
474 - 10 и 13, шрифт
687 - скобки у main
3 том.
244, 7 строка - "этих", лучше "эти"
271 - colnames неудачно снесены на следующую строку
Параграф про фунарг-проблему в нефункциональных языках - gcc почему-то заглавными, в других местах такого, вроде бы, нет
Там же - 2 раза шрифт у var
370 - функции вроде select функциональщики обычно называют filter или что-то вроде; и, кстати, а не правильнее ли было её с использованием левой редукции реализовать?
402, 5 строка - stderr, шрифт
ответить
⮴ From admin Wed Feb 16 00:50:00 2022
начнём с декабрьской простыни
> 299, 4 строка - возможно, жирный закончился раньше чем нужно :)
нет, так и было задумано
> 491, 1 строка
ну вот нет, мне не кажется, что так лучше
> 2 том
> 60, строки 9 и 15 - возможно, у названий циклов шрифт не тот
здесь имеется в виду именно "название" цикла, т.е. то, что используется в разговоре вместо громоздкого "цикл с постусловием". То есть это то, что люди в разговоре применяют, а не цитата из формального языка. Иной вопрос, что на той же странице чуть ниже я таки do-while в том же контексте набрал моноширинным, вот это надо будет поправить
> 3 том
> 271 - colnames неудачно снесены на следующую строку
не вижу никакой альтернативы, особенно если учесть, что эти строки обязаны зрительно быть связаны с константами из предыдущего массива
> Там же - 2 раза шрифт у var
не нашёл; на указанной странице что-то найти ещё реально, но в таком здоровом параграфе -- в общем ожидаемо не нашлось
> 370 - функции вроде select функциональщики обычно называют filter
мне об этом ничего не известно, ну да и пусть себе называют, мне-то что :)
> а не правильнее ли было её с использованием левой редукции реализовать?
пришлось бы к списку добавлять элементы в конец, это так себе идейка -- квадратичность на ровном месте
В общем, спасибо. Уффф :) Так, глядишь, постепенно все ваши комменты разгребу.
ответить
⮴ From Alejandro_ (unverified) Wed Feb 16 11:02:00 2022
> строки
> строки обязаны зрительно быть связаны с константами из предыдущего массива
А нельзя, например, так? Проблемы с отступом тут нет и первые элементы массивов находятся на одномм уровне.
Кстати, по моим наблюдениям, в книге в описаниях нигде "звёздочка" не "прилипает" к слову const, кроме этого примера.
> 2 раза шрифт у var
Mein Gott, сам еле нашёл :) 361 (3 строка снизу) и 362 (2 абзац, 3 строка). Но вообще такое может найтись в любой из 12 частей.
> filter
Зато тот, кто видел слово filter (в таком контексте), быстро сообразит, что оно делает, например, здесь
И, заодно, не возникнет при случае асссоциаций в выборкой событий и вызовом select :)
ответить
⮴ From admin Wed Feb 16 18:40:49 2022
> А нельзя,
> А нельзя, например, так?
подумаю
> "звёздочка" не "прилипает" к слову const
звёздочка перед const — вообще крайне редкое явление, сейчас grep'нул, нашёл всего четыре таких места во всей книге. При этом я совершенно не уверен, что поступил правильно при описании прототипов exec*
>> 2 раза шрифт у var
э нет :-) сейчас специально проверил, "термин" (жаргонизм, конечно, не термин) "var-параметр" есть много где и нигде не используется шрифтовое выделение для var. Причина примерно та же, что и выше с do-while: это человеческое название, а не цитата из языка.
> Зато тот, кто видел слово filter
Давайте всё-таки отличать сообщения об ошибках от рекомендаций вида "как сделать лучше". В первых я нуждаюсь, крайне их приветствую, всячески за них благодарен и всё такое прочее. Ну а последние, гм... насколько я помню, за все семь лет проекта я в явном виде ничьих рекомендаций не принимал, и, похоже, правильно делал: среди непрошенных советов есть такие, которые реально могли бы сделать книгу лучше, но гораздо больше таких, которым если последовать, от книги ничего толком не останется.
Вот в данном конкретном случае вы мне предлагаете переименовать функцию в примере, основываясь на том, что где-то у кого-то якобы существует какая-то именовательная традиция, при этом лично я про неё понятия не имею, никогда с этим не сталкивался и вдобавок у меня самого слово filter тоже нагружено ассоциациями, причём посильнее, чем select. Есть здесь вообще повод для обсуждения? По-моему, нет, только время потеряли.
ответить
⮴ From Alejandro Mon Feb 21 15:58:00 2022
На счёт терминов
Во втором томе: с. 200 и далее — do-while
В третьем томе: параграф про inline-функции — само слово inline-функции :)
ответить
⮴ From admin Mon Oct 31 18:39:45 2022
Про inline-функции
Про inline-функции согласен, поправил эту главу. С do-while вопрос сложнее, там во многих местах перечисления -- в одном месте if, while, do-while, и если их переделать, но придётся везде, где "оператор if" упоминается, тоже шрифт переделывать. Единообразие, конечно, штука хорошая, но тут мне уже пассионарности не хватит.
ответить
☞ From Anonymous (unverified) Sat Dec 25 11:41:00 2021
Том I, стр. 169, 2-я строка снизу
Том I, стр. 169, 2-я строка снизу
Добрый день,
речь о конъюнкте отрициний аргументов x и y: в текущем виде может быть истолкован неверно - как отрицание конъюнкции двух аргументов, хотя чуть выше в тексте для этого и применялись скобки. Для невнимательных читателей, вроде меня :-), все-таки лучше визуально разделить аргументы (знаком точки (умножения) или амперсандом), чтобы отрицание каждого элемента не сливалось в общее отрицание конъюнкции.
Данное пожелание справедливо для двух конъюнктов на указанной строке, а также для двух конъюнктов в тексте рассматриваемого абзаца на следующей странице.
ответить
⮴ From admin Wed Jan 5 19:36:00 2022
Пожалуй,
Пожалуй, вы правы. Поправил я это прямо в рукописи, в таблицу не буду выносить — долго объяснять, в чём проблема :-)
ответить
☞ From fluorine Fri Dec 24 11:06:00 2021
1 том, стр. 663
в примере кода внизу посередине нарушен отступ
%rep %0
%rotate -1
вот здесь.....push dword%1
в copy.asm отступ в 2 табуляции
ответить
☞ From Олег (unverified) Thu Dec 23 20:24:00 2021
Том I стр. 316
...Ctrl-\ (28), Ctrl-] (29)., ...
После Ctrl-] (29), скорее всего, ненужная точка.
ответить
⮴ From admin Wed Jan 5 19:30:28 2022
Факт, спасибо
Факт, спасибо
ответить
☞ From (unverified) Thu Dec 23 18:11:00 2021
Том 1, страница 109, таблица 1.3, последняя строка.
Том 1, страница 109, таблица 1.3, последняя строка. Предлагаю переформулировать. Не "отменить все изменения, внесённые в текущую строку", но "отменить все изменения, внесённые в последнюю изменённую строку (и перевести указатель на неё)". В скобках - опционально. Благодаря Вашей книге впервые открыл vim без опасения что-то сломать (а это, поверьте, очень много), начал пробовать команды из таблицы, и последнюю приведённую команду (U) проинтерпретировал как "отменить все изменения в строке, на которую указывает курсор". Ещё удивился, как это vim запоминает все изменения по строкам. Пришлось потратить время, чтобы понять, что произошло, когда я увидел, что vim повёл себя не так, как я того ожидал. Это не плохо и, пожалуй, не показательно, но всё же предлагаю переформулировать.
P.S. Благодарю за книги
ответить
⮴ From admin Wed Jan 5 19:13:51 2022
Ну да,
Ну да, сформулировано не совсем корректно. Совсем правильно будет "отменяет сразу несколько последних изменений, если все они сделаны в одной строке текста".
Чтобы vim'а не бояться, откройте для себя vimtutor. Вот прямо команду такую дайте, дальше действуйте по инструкции.
ответить
☞ From feriman Wed Dec 22 09:28:00 2021
Том 3, стр. 629, 3-я
Том 3, стр. 629, 3-я строка сверху - "Ctrl-C" набрано не тем шрифтом.
ответить
☞ From fluorine Mon Dec 20 13:49:00 2021
1 том, стр 555 самое начало
fig7
Что-то не приходит в голову ассоциаций с fig*, может dig(it)?
ответить
⮴ From admin Wed Jan 5 19:00:39 2022
figure, в принципе
figure, в принципе вполне допустимое слово для цифры, хотя и реже встречается, чем digit
вообще, пожалуй, проще будет действительно поправить, чтобы ни у кого таких сомнений не возникало
ответить
☞ From fluorine Mon Dec 20 12:35:00 2021
Нет противоречий?
стр. 524
сноска внизу: коды команд ... от 1 до 15 ячеек
стр. 547
Регистр EIP, ... (отметим, .. от 1 до 11 идущих подряд ячеек)
ответить
☞ From feriman Sun Dec 19 16:48:00 2021
Том 3, стр. 601, 4-я
Том 3, стр. 601, 4-я строка снизу - написано "... значения, соответствующие странам света ...", должно быть "... сторонам света ...".
ответить
☞ From feriman Sat Dec 18 22:41:00 2021
Том 3, стр. 579, 18-я
Том 3, стр. 579, 18-я строка сверху - слово "Tcl" напечатано не тем шрифтом.
ответить
☞ From feriman Sat Dec 18 22:26:00 2021
Единство стиля
Том 3, стр. 576, 8-я строка снизу -
r = fgets(cmd_buf + len, bufsize-len, stdin);
, мне кажется что пробелы вокруг "+" лишние.ответить
☞ From feriman Sat Dec 18 22:14:00 2021
Том 3, стр. 546,
Том 3, стр. 546, нижний пример - размер шрифта меньше чем у остальных примеров.
ответить
☞ From feriman Sat Dec 18 21:54:00 2021
Том 3, стр. 575, 6-я
Том 3, стр. 575, 6-я строка сверху - написано "позволяюще" вместо "позволяющие".
ответить
☞ From feriman Sat Dec 18 21:34:00 2021
Том 3, стр. 573, 17-я
Том 3, стр. 573, 17-я строка сверху - написано "функциии" вместо "функции".
ответить
☞ From feriman Sat Dec 18 21:07:00 2021
Том 3, стр. 572, 14-я
Том 3, стр. 572, 14-я строка снизу - написано "вызывамого", должно быть "вызываемого".
ответить
☞ From feriman Sat Dec 18 15:36:00 2021
Единство стиля
Том 3, стр. 554, третий пример сверху - написано
proc greet {name}
вместоproc greet { name }
.Том 3, стр. 555, два примера сверху - написано
proc quad {x}
вместоproc quad { x }
.Том 3. стр. 558, второй пример сверху - написано
proc swap {a b}
вместоproc swap { a b }
.В других примерах используется стиль, предполагающий наличие отступов после открывающей фигурной скобки и перед закрывающей фигурной скобкой второго аргумента команды
proc
.ответить
⮴ From admin Sun Jan 2 20:25:07 2022
Там этих
Там этих "других примеров" не намного больше, так что с ходу непонятно, в какую сторону править, в эту или в противоположную. Но, пожалуй, соглашусь: после Си/Си++ фигурные скобки без этих внутренных пробелов воспринимаются паршивенько.
ответить
☞ From feriman Sat Dec 18 14:08:00 2021
Том 3, стр. 555, 16-я
Том 3, стр. 555, 16-я строка сверху (текст примера) - написано "set s 0;". Не опечатка, но мне кажется что здесь точка с запятой излишняя.
ответить
⮴ From admin Sun Jan 2 20:15:56 2022
Согласен.
Согласен. Поскольку не опечатка, правлю прямо в рукописи, её всё равно через несколько месяцев готовить к переизданию.
ответить
☞ From feriman Sat Dec 18 13:27:00 2021
Том 3, стр. 553, 16-я
Том 3, стр. 553, 16-я строка сверху - написано "... попросту говоря, эти команды не предназначаются для использования в составе выражений ...". Не опечатка, но мне кажется что правильнее будет сказать "... эти команды не предназначены ...".
ответить
⮴ From admin Mon Oct 31 18:28:46 2022
Пожалуй,
Пожалуй, соглашусь. Поправил прямо в рукописи, поскольку не ошибка.
ответить
☞ From scud (unverified) Sat Dec 18 10:58:00 2021
Я озвучу здесь,
Я озвучу здесь, что я ничего не понимаю. Может стоит раскрыть доказательство Том I, 189, 2 последних абзаца? Мне не то, что не очевидно, мне доказательство кажется неверным, потому что S(S') вообще не обязан останавливаться, пусть S самоприменим, но мы же ему другой вход подали, не S, а S'?
ответить
⮴ From admin Sat Dec 18 11:10:00 2021
Есть такое
Есть такое понятие "доказательство от противного", знаете? В этой схеме делается некое допущение, а потом доказывается, что такое допущение никак не может быть верным. В данном случае в роли допущения — что существует алгоритм, который про любой алгоритм может сказать, самоприменим тот или нет. Т.е. этот S (а именно так в доказательстве обозначен этот гипотетический алгоритм) должен, когда ему на вход дали алгоритм (любой!!!) не просто "остановиться", а ещё и сказать (правильно сказать!) "да" или "нет".
Если предположение ослабить и сказать, что, мол, вот пусть будет такой алгоритм, который для некоторых алгоритмов говорит "да" или "нет", а на других зацикливается — то доказать его невозможность не получится. Знаете, почему? Потому что такой алгоритм вообще-то возможен, и есть чуть-чуть подумать, это окажется очевидно (ну пусть он, к примеру, говорит "да" на всех алгоритмах, не содержащих ни циклов, ни рекурсии, ни переходов назад, а как чего из этого увидит — так тут же от ужаса в бесконечный цикл; выглядит слишком просто, но "ослабленным" условиям удовлетворяет). Но такой алгоритм не является решением проблемы самоприменимости.
ответить
⮴ From Scud (unverified) Thu Dec 23 09:37:00 2021
Вот теперь даже
Вот теперь даже я понял доказательство.
Я ведь не просто так: не понял и вам сразу писать. Я перечитывал, я понять пытался, но не получалось.
А причина в том, что каждый раз до вашего объяснения воспринимал строчку "В самом деле, допустим, такой алгоритм есть" как "В самом деле, допустим, есть такой алгоритм, который, если подать ему на вход _собственный_ исходный код, определяет остановится ли он". Ну вижу что чушь, такую программу очень легко реализовать же, но что конкретно я неправильно понимаю - всё не доходило.
Так вот, вдруг я не один такой? Для таких как я специально, возможно переписать обозначенную строчку чуть, чтобы яснее было какой "такой" алгоритм есть.
"В самом деле, допустим, что существует алгоритм, который может определить, самоприменима ли программа, поданная ему на вход". Ну или как-то иначе, но раскрыв "такой" непосредственно в предложении.
ответить
⮴ From admin Thu Dec 23 17:41:19 2021
Пожалуй,
Пожалуй, соглашусь; этот абзац надо переформулировать.
ответить
☞ From scud (unverified) Sat Dec 18 10:38:00 2021
Опечатка
Том I, стр 97, строка 1: "дугие"
ответить
⮴ From admin Sat Dec 18 10:44:26 2021
Класс! Вот прям
Класс! Вот прям на самом виду, и никто не заметил до сих пор. Спасибо!
ответить
☞ From Anonymous (unverified) Sat Dec 11 08:53:00 2021
Том 1 стр. 239
Про точку с запятой в Паскале:
Слово end оператором не является, так что точку с запятой перед ним обычно не ставят.
С точки зрения языка, её можно не ставить перед end. НО обычно её там ставят всегда, а её отсутствие можно считать плохим стилем. https://wiki.freepascal.org/End
Вы в книге обращаете внимание, что отступы и форматирование кода крайне важно. Так вот, точка с запятой перед end, по моему мнению, точно такая же важная часть форматирования.
Т.е. посыл в книге должен быть ровно противоположный: "Точка с запятой ставится всегда, кроме как перед else".
Про опциональность точки с запятой перед end можно упомянуть, но не заострять на этом особого внимания.
Ну и придётся дописать точку с запятой во всех примерах кода...
ответить
⮴ From admin Sat Dec 11 10:02:00 2021
Да неужели,
Да неужели, а?
Ну так вот нет. Совершенно категорически нет. Мне, надо сказать, стоило довольно серьёзных усилий выловить и ликвидировать все паразитные точки с запятой перед end'ами, в первом издании их было довольно много — всё-таки сишные привычки дают себя знать. Но именно их наличие — это крайне паршивый стиль, это, собственно говоря, показывает, что автор кода не вполне понимает, что пишет и как устроен язык, на котором он пишет. А кроме того, разница в подходах к точке с запятой между Паскалем и Си (здесь — разделитель между операторами, там — часть оператора) сама по себе ценна тем, что можно показать, как языки программирования умеют друг от друга отличаться, показать на довольно наглядном примере, что Си — не догма и что может быть по-другому.
Поэтому внимание здесь именно что жёстко заостряется, и в примерах самым тщательным образом избегаются пустые операторы в виде точек с запятой перед end'ами. И прежде чем меня учить "хорошему стилю", стоит, наверное, подумать мозгом.
Кстати, по приведённой ссылке ни слова не сказано на тему того, что такие точки с запятой можно и тем более нужно ставить. Впрочем, даже если бы и было сказано — после эпопеи с SeekEof, в ходе которой пришлось столкнуться и с кодом реализации FP, и с людьми, которые сейчас им занимаются — для меня эти люди более ни малейшим авторитетом не обладают.
UPD: Я предпочитаю объяснять людям, как устроен синтаксис языка, а не требовать, чтобы они запомнили, что, видите ли, перед else точка с запятой не ставится, но вообще-то если это else внутри case, то ставится. Привычка рассматривать точку с запятой по-сишному, как часть оператора, а не как разделитель между ними, совершенно неизбежно ведёт к недопониманию происходящего и к необходимости зубрёжки на ровном месте; это недопустимо, и, следовательно, недопустимо толерантное отношение к паразитным запяточкам, и уж тем более совершенно недопустимы любые измышления на тему желательности таковых.
Засим всё. Ваши дальнейшие ссылки на "авторитеты", которые рассказывают, что точку с запятой перед end следует ставить, здесь не пройдут премодерацию. И пойдите куда-нибудь ещё, в Интернете очень много разных сайтов, здесь вам делать нечего.
ответить
⮴ From Anonymous (unverified) Fri Dec 17 02:47:00 2021
А мне вообще не
А мне вообще не нравятся эти точки с запятой. Во многих языках они нужны только если на одну строку лепят более одного оператора.
К сожалению, такое их использование плохо согласуется с тем, что каждый if, while, for и тд считаются за один оператор. Но в более поздних языках Вирта это изменили, вроде как.
А почему, по вашему мнению, сейчас всем пофиг на все Модулы, модулы-2, обероны и прочее кроме 1.5 анонимусов, а паскаль хоть и по-немногу теряет позиции, но всё ещё один из самых популярных языков?
Сейчас из языков с синтаксисом похожим на более поздние разработки Вирта остался только Lua.
ответить
⮴ From admin Fri Dec 17 09:21:12 2021
> Во многих
> Во многих языках
Не во многих, а в командно-скриптовых. Больше в наше время нигде строка не считается синтаксической единицей, перевод строки рассматривается как один из пробельных символов. И это правильно. Внешний вид программы со всеми отступами и прочими декорациями — зона ответственности программиста.
> пофиг на все Модулы
Паскалю повезло — существовал Turbo Pascal, и он был в своё время самым популярным инструментом разработки под первую в истории реально массовую "платформу" (хотя тогда такого слова не было) — MSDOS. Поэтому появилось много людей, знающих Паскаль. На этом его популярность до сих пор и держится. Модулам повезло меньше.
Ну а Оберон изначально мертворождённый бастард. Потому что grabage collected. Вирт, судя по всему, на старости лет сбрендил, что такое выкатил.
> Lua
Да окститесь, что там общего с Паскалем?
ответить
⮴ From Anonymous (unverified) Fri Dec 17 12:44:00 2021
> Да окститесь,
> Да окститесь, что там общего с Паскалем?
Не с паскалем, а скорее с модулами и обероном. Операторы цикла, условия и тд заканчиваются end, но без begin. Разработчик вроде где-то писал, что при разработке языка смотрел на модулу.
А вот почему он не взял уже имевшийся и занимавщий ту же нишу Tcl мне не очень понятно.
> Turbo Pascal, и он был в своё время самым популярным инструментом разработки
Ну, что он был популярен в народе — тут спору нет. Но как инструмент для разработки массового софта он почему-то в голове не укладывается. Например из игр на паскале я знаю только "Гопник". Если вы скажете, что что-то вроде Norton Commander, rar, pkzip, arj, lexicon, word perfect, prince of persia, wolf3d, digger..., в общем что-то из DOS-программ, названия которых я могу вспомнить, было написано именно на Turbo Pascal, я буду удивлён.
ответить
⮴ From admin Fri Dec 17 16:21:47 2021
Ну уж слово end,
Ну уж слово end, гм... Это, конечно, очень, очень важный аспект синтаксиса языка :-)
Про Турбо Паскаль — с графикой там была беда-беда, так что игрушки вряд ли; но в целом для своего времени инструмент был более чем достойный, я на нём, помнится, резидентные программы писал (и ведь работали), а ещё мы с приятелем, помнится, сотворили хрень с паролями, которая подменяла код разделов на винте и имела свой драйвер для тех разделов, которые "скрытые"; драйвер был, естественно, на асме, а вот то, что сейчас бы назвали "юзерспейсовой обвеской" — таки да, на Турбо Паскале. Кстати, из архиваторов на нём тоже что-то было, только я в упор не помню, что — зоопарк архиваторов тогда был знатный. А ещё на нём успешно писали вирусы, в том числе полиморфные, только не спрашивайте меня, как.
ответить
⮴ From Anonymous (unverified) Sat Dec 18 01:28:00 2021
По-моему, идея
По-моему, идея заменить громоздкие конструкции
if ... then begin ... end else begin ... end
наif ... then ... else ... end
всё-таки весьма неплохая.Странно, что Вирт сразу не догадался, что ключевые слова then, else, do дублируют роль операторных скобок. В asm и record он уже и так обошелся без begin, оставив только end, можно было так же сделать и в других конструкциях.
ответить
⮴ From admin Sat Dec 18 10:09:25 2021
В asm и record конец
В asm и record конец должен быть обозначен всегда, а в циклах и ветвлениях телом может быть один оператор, тогда скобки не нужны. В действительности «лишние» begin'ы вообще никак не мешают, давно известно, что лаконичность не означает снижения трудоёмкости кодирования (да, вот так, вот прямо так).
Зато при таком раскладе начинается совершенно неизбежная путаница при вложенных if'ах, так и тянет потом ещё и else сделать обязательным.
ответить
⮴ From Anonymous (unverified) Sat Dec 18 16:58:00 2021
> Зато при таком
> Зато при таком раскладе начинается совершенно неизбежная путаница при вложенных if'ах, так и тянет потом ещё и else сделать обязательным.
Не совсем понимаю, что за путаница. Но вообще, думаю есть смысл иметь оператор elseif, elif или подобный чтобы уменьшить количество вложенных условий. А else обязательным делать не нужно.
ответить
⮴ From admin Sat Dec 18 18:23:52 2021
Да классика
Да классика же:
к какому из if'ов относится else. Вообще-то если каждый if нужно закрывать end'ом, проблемы как таковой нет, разве что с диагностикой (какой из end'ов забыли написать).
Слова elseif, elif и т.п. не являются операторами, такие вещи входят в тот оператор ветвления, который начался словом if. Кстати, да, если каждый if нужно закрывать end'ом, без elif'а или его аналога в конце будет слишком много end'ов и нормального форматирования не получится.
ответить
☞ From Олег (unverified) Fri Dec 10 09:30:00 2021
Том I стр. 154
... то его численное значение будет ⨊ki=010kdk
степень и индекс вместо k, вероятно, должны быть i
⨊ki=010idi
(теги sup и sub, скорее всего, не доступны).
ответить
⮴ From admin Fri Dec 10 17:49:50 2021
Thanks :-)
.
ответить
☞ From putilin (unverified) Thu Dec 9 01:42:00 2021
Замечания
Том II с. 249
и далее возникла проблема: все программы с curses не линкуются с библиотекой при компиляции со стандартным набором опций. Решено добавлением -lcurses в конец.
gcc -Wall -g curses_hello.c -o curses_hello -lcurses
Том II c. 694
$ valgrind --version
valgrind-3.17.0
$valgrind --tool=memcheck --db-attach=yes ./badcode
valgrind: Unknown option: --db-attach=yes
valgrind: Use --help for more information or consult the user manual.
теперь для отладки используются -vgdb
$valgrind ---tool=memcheck -vgdb-error=0 ./badcode
и два терминала
Том III c. 659
имя файла патча должно быть old-new.diff - см. выше его
создание
ответить
⮴ From admin Fri Dec 10 11:19:20 2021
Спасибо
Вопрос с valgrind требует дополнительного изучения, но к третьему изданию это будет учтено.
ответить
☞ From feriman Wed Nov 24 14:45:00 2021
Том 1, стр. 78 -
Том 1, стр. 78 - нарушен порядок сносок, сначала идёт сноска под номером 17, а за ней 16.
ответить
⮴ From admin Fri Dec 17 10:43:43 2021
Это, к
Это, к сожалению, из серии "оно само". Такой эффект получается, если плавающий объект, сам содержащий сноску, и при этом описанный после некой другой сноски, физически оказывается в тексте до неё. Вон в версии от ДМК эти сноски оказались на разных страницах, и эффекта не наблюдается. Выловить такие штуки довольно сложно, хотя если выловить — то преодолеть можно. Факт тот, что вылавливать их нужно уже в полностью готовом оригинал-макете, где не предполагается больше никаких правок.
ответить
⮴ From feriman Sat Dec 18 16:02:00 2021
Я так и подумал
Я так и подумал что "оно само", но всё же принял решение указать на это. :-)
ответить
☞ From feriman Wed Nov 24 14:41:00 2021
Том 1, стр. 78 -
Том 1, стр. 78 - точка на пустой строке после Рис. 1.5.
ответить
☞ From feriman Wed Nov 24 13:34:00 2021
Том 1, стр. 66, 11-я
Том 1, стр. 66, 11-я строка сверху - написано "... устройства, способные хранить от нескольких до нескольких десятков двоичных разрядов; ...". Кажется здесь "от нескольких" лишнее.
ответить
☞ From feriman Wed Nov 24 10:51:00 2021
Том 1, стр. 64, 22-я
Том 1, стр. 64, 22-я строка снизу - написано "... логические уровни, соответствующее ...", должно быть "соответствующие".
ответить
☞ From Alejandro (unverified) Tue Nov 23 05:43:00 2021
1 том.236, 2 абзац
1 том.
236, 2 абзац — шрифты у Ctrl-*
2 том.
10, 1 строка — "синтаксис", точнее будет "лексика"
33, 4 строка снизу -- "команды printf", возможно, должно быть "команды
printf
"33, 4 строка снизу — "которые представляют собой обертку", "обёртку" вместо "обёртки"
372, пример — объявление переменной fd после операторов
452, 7 строка — "транспортные" вместо "сетевые"
3 том.
190, 1 абзац, последняя строка — "наконец", запятые
262 — Ctrl-C, шрифт
263 — подпись к рисунку, стоит добавить кавычки к "Hello, world"
279, 5 строка — free(), скобки
35 сноска — раннее в тексте "тип бокса" встречалось (273, 5 строка)
300, 2 абзац, 3 и 6 строки снизу — "0 и 1" и "0 и 2", шрифты
Параграф про "свой главный цикл" — стоит упомянуть wait_for_expose и Fl::flush (поскольку между win->show() и Fl::run() окна, как ни странно, еще не видно, а от использования Fl::run мы отказались), и, возможно, default_callback (callback, вызываемый при закрытии окна при помощи "крестика")
306, предпоследняя строка — <X11/Xlib> вместо <X11/Xlib.h>
------------------------------
Ещё есть такой вопрос: в 4 части в параграфе про параметры функций упомянуты strtol, strtoll и strtof; а нельзя ли вместо них использовать sscanf? Или это ещё хуже?
ответить
⮴ From admin Fri Dec 10 10:58:47 2021
> 10, 1 строка —
> 10, 1 строка — "синтаксис", точнее будет "лексика"
ни фига, операторные скобки — понятие синтаксическое, в лексике они рассматриваются по отдельности и без указания их роли
> 190, 1 абзац, последняя строка — "наконец", запятые
как ни странно, нет: в данном случае "наконец" представляет собой обстоятельство, а не вводное слово (отвечает на вопрос "когда"), и не обособляется
> 35 сноска — раннее в тексте "тип бокса" встречалось (273, 5 строка)
вот же чёрт :-) Good catch. Посмотрел, там с этим термином вообще полный бардак, так что поправил сразу в рукописи, а то тут в таблице слишком долго описывать, что и где надо поменять.
Про "свой главный цикл" — я FLTK не трогал со времени работы над этой главой при написании четвёртого тома первого издания, т.е. с февраля 2020 г., и всё напрочь забыл, сейчас нет времени туда лезть; но:
> wait_for_expose
А мы это вообще можем делать, если главный цикл у нас свой и программа построена событийно-ориентированно?
> Fl::flush
wait её вызывает, насколько я понимаю; в принципе возможен вариант, что из сокета, связанного с X-сервером, долго ничего не будет сыпаться, и окно так и будет невидимым, но может ли так быть на практике?
> sscanf? Или это ещё хуже?
конечно, хуже: sscanf нам ничего (от слова совсем) не скажет про то, где и обо что она споткнулась; все эти strtoXX хотя бы позволяют понять, в какой позиции строки возникли проблемы
ответить
⮴ From Alejandro (unverified) Fri Dec 10 13:20:00 2021
> операторные
> операторные скобки
хотел было написать про их внешний вид, но потом возник вопрос: если лексический анализатор наткнулся на скобку, то он не должен вернуть токен, в котором есть информация о типе этой скобки?
По поводу wait_for_expose:
Ну а если от программы без отрисованного окна не будет никакого толку?
> wait
Вы правы, wait вызывает эту функцию, однако, если перед началом главного цикла уже есть готовые окна, всё равно придётся вызвать wait или Fl::flush (или тот же wait_for_expose), чтобы отрисовать их.
По поводу strto*:
А как, на Ваш взгляд, должен выглядеть интерфейс этих функций?
ответить
⮴ From admin Fri Dec 10 17:48:12 2021
> он не должен
> он не должен вернуть токен, в котором есть информация о типе этой скобки?
Насколько я понимаю, нет — если я только правильно понял ваш вопрос. Лексер возвращает токен, который и есть эта скобка, т.е. просто другое представление самой по себе скобки. Про то, что токен '{' как-то там связан с токеном '}', лексер ничего не знает, это епархия синтаксического анализатора.
> Ну а если от программы без отрисованного окна не будет никакого толку?
Это частности. Факт тот, что отрисовка окна происходит более чем в одну операцию ввода-вывода, как следствие wait_for_expose блокирующая, а в событийно-ориентированных программах блокирующие функции можно вызывать лишь в случае, если есть гарантия, что они не заблокируются. Здесь, напротив, практически гарантируется блокировка.
> всё равно придётся вызвать wait
В обсуждаемом параграфе предлагается делать Fl_Widget::wait(0,0) каждый раз, когда сокет связи с X-сервером демонстрирует готовность к чтению.
> А как, на Ваш взгляд, должен выглядеть интерфейс этих функций?
Например, так:
ответить
⮴ From Alejandro (unverified) Fri Dec 10 18:38:00 2021
Я имел ввиду
Я имел ввиду кое-что другое. Допустим, все типы токенов описаны каким-нибудь enum'ом, и встретив ту же '{', лексер вернёт значение вроде token_left_brace, ну а то, что token_left_brace и какой-нибудь token_right_brace связаны между собой, лексер, конечно, не знает и знать не должен. При такой схеме работы разница между begin/end и фигурными скобками как раз остается на уровне лексики.
> wait
Может у меня что-то не так с иксами, но если ни одно окно программы не отрисовано, на сокете, связанном с X-сервером, никаких событий не возникает.
ответить
⮴ From admin Fri Dec 10 23:04:09 2021
Ага, теперь
Ага, теперь представим себе, что лексемы представляются не enum'ами, а строками. Вряд ли так, конечно, будет в боевом компиляторе (ибо медленно), но в принципе такая реализация возможна. Лексер при этом знает только, что некоторые символы (и их последовательности) следует рассматривать как разделители. К тому же end в Паскале заканчивает не только begin, но ещё и record, и case, а вот представить себе фигурную скобку в такой роли как-то тяжко.
В общем, какой-то странный вопрос. Может, я и неправ, тогда я останусь при своём заблуждении, но повода для исправления я тут не вижу.
Про иксы: посмотрел одну свою старую программу, таки да — я там wait(0,0) вызывал, прежде чем нырнуть в главный цикл. Пожалуй, flush будет логичнее. Что-нибудь придумаю с этим.
ответить
☞ From feriman Mon Nov 22 12:08:00 2021
Том 2, стр. 205, 6-я
Том 2, стр. 205, 6-я строка сверху - "... что там возвращает операция инкремента в той и другой её форме." Мне кажется что должно быть "... в той или другой её форме."
ответить
⮴ From admin Fri Dec 17 10:31:00 2021
Пожалуй,
Пожалуй, соглашусь. Поскольку это формально не ошибка, я её поправил сразу в рукописи.
ответить
☞ From feriman Sun Nov 21 15:59:00 2021
Том 2, стр. 165, 9-я
Том 2, стр. 165, 9-я строка снизу - вместо "then" должно быть "than".
ответить
☞ From fluorine Sun Nov 21 13:23:00 2021
1 том, страница 371, самое начало
Версия Free Pascal, имевшаяся у автора этих строк на момент, ... и дальше проблемы
В ncrt нет таких проблем (ReadKey не даёт тройных кодов, либо просто один символ, либо ноль и символ далее), правда там появились новые проблемы, в частности нет ScreenWidth, ScreenHeight, а попытка подключить вторым модулем crt, ведет к непредсказуемым последствиям.
Залез в исходники, там творится крамешный ад. Видимо буду дальше пользоваться простым crt.
ответить
⮴ From admin Sun Nov 21 14:37:18 2021
Насчёт
Насчёт кромешного ада — это да. Исходный кромешный ад творится в головах тех, кто сейчас поддерживает Free Pascal, остальное просто производные.
К сожалению, другого поддерживаемого паскаля тупо нет.
ответить
⮴ From fluorine Sun Nov 21 14:42:00 2021
> К сожалению,
> К сожалению, другого поддерживаемого паскаля тупо нет.
к сожалению (
Я все таки разобрался в этой мешанине кода,
вместо ScreenWidth -> nMaxCols,
а вместо ScreenHeight -> nMaxRows.
ответить
⮴ From fluorine Sun Nov 21 15:07:00 2021
Теперь я точно
Теперь я точно утвердился, что не буду использовать этот модуль ncrt. На попытку вызвать KeyPressed, оно взяло ещё и включило вывод символов, то за что в ncurces отвечают noecho/echo. В начале, когда писал свою программу в ней KeyPressed не было. Когда включил туда KeyPressed поведение резко поменялось. 1.5 часа за отладкой D: Это первый случай, когда функция с побочным эффектом заставила меня потерять столько времени.
Спасибо за ответ!
ответить
⮴ From fluorine Sun Nov 21 19:50:00 2021
Попробовал,
Попробовал, паскалевскую версию ncurces, получилась мешанина из попыток объединить паскалевские строки с сишными zero-terminated string, а на всякие попытки использовать integer'ы, компилятор вываливается с требованием использовать сишные int'ы, которые в паскале LongInt'ы. Больше наверное пробовать не буду :), правда ещё есть video... Но оно наверное тоже как fpc'шники пишут: The default Unix/Crt unit is not portable enough, and one big hack.
ответить
☞ From Bogd_Art (unverified) Sun Nov 21 12:57:00 2021
Ошибочка
МАКС-Пресс, страница 112, последняя строка:
Написано: "...в нём всё-таки прИдусмотрен."
Должно быть: "...в нём всё-таки прЕдусмотрен."
ответить
⮴ From admin Sun Nov 21 13:18:51 2021
Факт, спасибо.
Факт, спасибо.
ответить
☞ From fluorine Sun Nov 14 09:34:00 2021
1 том литература
[2]
Можно поменять ссылку на (та не работает): https://www.bell-labs.com/usr/dmr/www/cacm.pdf
[3]
http://www.faqs.org/docs/artu/ не работает
PDF продаётся, а в HTML как ни странно есть:
http://www.catb.org/esr/writings/taoup/html/index.html
ответить
⮴ From admin Sun Nov 14 13:16:38 2021
Видимо, проще
Видимо, проще будет ссылки вообще выкинуть.
И да, о Реймонде я был лучшего мнения.
ответить
⮴ From fluorine Sun Nov 14 13:40:00 2021
Видимо, проще
Видимо, проще будет ссылки вообще выкинуть.
==
Да, тоже так подумал, они же вам не подконтрольны.
Уже не важно, но
https://www.bell-labs.com/usr/dmr/www/cacm.pdf
это просто the unix time-sharing system, только когда начал читать понял, вообще-то правильней эта ссылка
https://www.bell-labs.com/usr/dmr/www/hist.pdf
the evolution of [...]
И да, о Реймонде я был лучшего мнения.
==
Я хотел "Собор и Базар" прочитать, тоже оказывается продаётся :(, поискать можно, но всё равно испортил впечатление о человеке
ответить
⮴ From fluorine Wed Dec 29 14:40:00 2021
[3]http://www.faqs.org/docs/
[3]
http://www.faqs.org/docs/artu/ не работает
Наверное нужно ещё из второго тома удалить ссылку на Реймонда [6], там она та же.
ответить
☞ From Anonymous (unverified) Sat Nov 13 19:04:00 2021
Том 1, стр. 505, 12
Том 1, стр. 505, 12 строка снизу:
"set var x=50"
При отладке программы, написанной на паскале, долго не мог понять, почему не работат эта команда, пока случайно не попробовал вместо "=" использовать ":=":
"set var x:=50"
Для меня было не совсем очевидно, что gdb использует не свой синтаксис, а синтаксис нужного языка. Он узнаёт это тоже из отладочной информации?
ответить
⮴ From admin Sat Nov 13 19:25:40 2021
Любопытно
Должен признать, что я этого не знал, текст просто скопировал из своих старых черновиков. На Паскале я уже очень давно не писал ничего настолько серьёзного, чтобы при отладке потребовалось изменить переменную.
По поводу "откуда gdb узнаёт" -- нет, не из отладочной информации, там такого просто нет. Вот тут, например, про это рассказывается: https://css.csail.mit.edu/6.858/2014/readings/i386/s03_02.htm
ответить
☞ From feriman Thu Nov 11 22:11:00 2021
Том 2, стр. 74, 7-я
Том 2, стр. 74, 7-я строка сверху - написано "синтаксическим требованиями" вместо "синтаксическим требованиям".
ответить
☞ From feriman Tue Nov 9 19:38:00 2021
Том 2, стр. 43, 15-я
Том 2, стр. 43, 15-я строка снизу - "... sizeof, формально говоря, явлется операцией ...", пропущена буква 'я' в слове "является".
ответить
☞ From Alejandro (unverified) Sat Nov 6 11:50:00 2021
1 том.374, 384 — var
1 том.
374, 384 — var моноширинным шрифтом, в других местах обычным
541, 11 строка снизу — Ctrl-D, шрифт
550 — странно оформлена 13-ая сноска
591, абзац про nop — помимо иронии, команда nop действительно полезная; она занимает в памяти 1 байт и позволяет выравнивать адреса машинных команд, при этом тратит всего один такт процессора
2 том.
102, 1 строка — "операнды сложения могут быть выполнены", возможно, лучше "могут быть вычислены"
125 — fscanf(/* ... */) == 1
162-163 — размер отступа у примеров typedef
205 — getchar, скобки
224, 10 строка — p, шрифт
580, 9 строка снизу — "элеметов" вместо "элементов"
697, 4 строка — "предыдущего параграфа" (?)
3 том.
157 — "Наличие в классе A", A, шрифт
546 — if { $code } { /* ... */ /* возможно, здесь должно быть exit 2 */ }
549 — лишние "ёлочки" у fal
ответить
⮴ From admin Sat Nov 13 13:36:06 2021
> var
> var моноширинным шрифтом, в других местах обычным
Прошерстил grep'ом исходник, "обычным" оказалось всего пять вхождений, моноширинным -- почти вдвое больше. Сделал везде моноширинный. Номера страниц выискивать не осилил, поэтому внёс прямо в исходник, в список вносить не буду, не такая уж это серьёзная ошибка.
> команда nop действительно полезная
Ну я как бы в курсе, сам применял (в качестве тела макроса, который при определённых обстоятельствах должен был развернуться в "пусто", но при этом не должен был утратить способности помечаться меткой), так противоположного и не утверждается. Если команда есть — зачем-то её ввели, пусть читатель сам догадается.
Спасибо!
ответить
⮴ From Alejandro (unverified) Sun Nov 14 06:48:00 2021
3 том, с. 546
3 том, с. 546 попала в список опечаток первого тома
ответить
⮴ From admin Sun Nov 14 11:39:26 2021
Спасибо,
Спасибо, исправил
ответить
⮴ From fluorine Sat Nov 13 14:58:00 2021
А можно, если не
А можно, если не секрет зачем вам пришлось выравнивать адреса машинных команд? Загуглил нашел только аргрумент "для быстродействия". Вроде мы не гонимся за скоростью.
ответить
⮴ From admin Sat Nov 13 19:18:28 2021
Да ладно, кто
Да ладно, кто это не гонится за скоростью? Вон стандартизаторы и примкнувшие к ним gcc'шники за каждый лишний такт готовы удавиться (и пусть бы их) и весь мир тоже удавить (а это намного хуже) — без --fno-strict-aliasing уже gcc использовать невозможно.
ответить
⮴ From Alejandro (unverified) Sat Nov 13 20:21:00 2021
nop с этой целью
nop с этой целью как раз компиляторы используют. Если человек использует эту команду (да и вообще если на языке ассемблера пишет), то уж точно не для повышения быстродействия.
ответить
☞ From sbs1990 (unverified) Thu Nov 4 03:48:00 2021
Опечатка том 1, стр. 353
Опечатка том 1, стр. 353:
В абзаце про явные преобразования типов:
>> Например, выражения integer('5') и byte('5') оба будут иметь целочисленное значение 53
ответить
⮴ From admin Fri Nov 12 22:45:12 2021
вроде 48+5 с утра
вроде 48+5 с утра 53 было, не?
ответить
☞ From feriman Tue Nov 2 16:16:00 2021
Том 2, стр. 547, 9-я
Том 2, стр. 547, 9-я строка сверху - "...; ну а до тех пор, пока все операции захвата мьютексов проходят успешно, обращениЯ к ядру не потребуЕтся ни при захвате мьютексов (...), ни при их освобождении ..."; (мне кажется, что слово "потребуется" должно быть в множественном числе).
ответить
⮴ From admin Fri Nov 12 22:43:00 2021
я здесь имел в
я здесь имел в виду, что слово "обращения" — это родительный падеж единственного числа, а не множественное число, как действительно можно подумать.
ответить
☞ From feriman Tue Nov 2 14:58:00 2021
Том 2, стр. 539, 14-я
Том 2, стр. 539, 14-я строка снизу - написано "... мы пыталсь избежать." - пропущена буква 'и' в слове "пытались".
ответить
☞ From feriman Mon Nov 1 13:05:00 2021
Том 2, стр. 417, 8-я
Том 2, стр. 417, 8-я строка снизу - написано "Ясно, что лидеР сеанса, не обладающЕГО управляющим терминалом ...".
ответить
⮴ From admin Fri Nov 12 22:54:00 2021
Ну так
Ну так обладателем терминала является сеанс, а не процесс, в том числе не лидер. То есть здесь имеется в виду не "обладающий лидер", а "обладающего сеанса".
ответить
☞ From Anonymous (unverified) Sat Oct 30 07:33:00 2021
Печатная
Печатная версия от "ДМК Пресс" - 1 том, страница 159 (виды бесконечности). В самом низу: "Коль скоро мы упомянули рациональные симла ...". Симла - в данном случае числа?
ответить
⮴ From admin Fri Nov 12 22:50:00 2021
Да-с,
Да-с, неприятненько. Первый обнаруженный глюк, внесённый в рукопись при подготовке макета для ДМК. В версии от МАКС Пресс этой фразы просто не было, там была длинная сноска, я её решил вытащить в основной текст, ну и вот :(
Спасибо за внимательность.
ответить
☞ From Alejandro (unverified) Thu Oct 28 16:00:00 2021
Опечатки
2 том.
с. 13 -- Вы про C18 забыли :)
с. 125 -- fscanf(/* ... */) == 1, в параграфе про строковые функции рекомендовано в таких ситуациях ставить 1 и тому подобное слева от знака равенства
с. 142, 15 строка снизу -- пропущена точка
Глава про программу на Си без стандартной библиотеки -- сообщение dunno выводится на stdout, а не на stderr
Там же -- "!", дальше его нет нигде
Там же, с. 265 -- формально, execve выполняет не наша программа (хотя и тот же процесс), но, если и его считать "нашим", то он является "полезным" вызовом (как write и exit_group)
с. 349 -- профиль fork, void в скобках, нигде такое больше не встречается
с. 320 -- CTRL-D шрифт
с. 361 -- "для отдельной главы", глава вместо параграфа
с. 397 -- pause(), скобки
с. 420 -- CTRL-C шрифт
с. 509, 3 строка снизу -- "множество" вместо "множества"
с. 600 -- возможно, моноширинный шрифт у чисел лишний
с. 693 -- CTRL-C и pid, шрифт
3 том.
часть про C++ -- class Complex, название метода modulo
ответить
⮴ From admin Sat Nov 13 11:04:33 2021
> с. 13 -- Вы про C18
> с. 13 -- Вы про C18 забыли :)
да не так чтобы забыл, я просто перестал следить за этой вакханалией после C11
> с. 142, 15 строка снизу -- пропущена точка
не нашёл
> сообщение dunno выводится на stdout, а не на stderr
Вообще говоря, так и задумывалось, ведь само сообщение сформулировано как обращённое к пользователю, а не как диагностическое. Но я на эту тему подумаю.
> Там же, с. 265 -- формально, execve
там сказано, что строки нужно посчитать и единицу вычесть, это как раз имеется в виду execve :-) надо, наверное, добавить замечание об этом
> с. 320 -- CTRL-D шрифт
не нашёл
> с. 420 -- CTRL-C шрифт
не нашёл
> с. 600 -- возможно, моноширинный шрифт у чисел лишний
мысль понятна, но я не уверен, что могу объяснить, почему он тут лишний (при том что всякие нули и минус-единицы везде моноширинные)
> с. 693
691 :-P и pid в списке уже был, но Ctrl-C (и заодно Shift-F) не было
ответить
⮴ From Alejandro (unverified) Sat Nov 13 11:20:00 2021
> с. 142, 15"типа char
> с. 142, 15
"типа char При этом"
> dunno
Формально, наша программа не сумела поприветствовать пользователя, а "return 1;" смотрится как-то привычнее с выводом на диагностический поток.
> strace
тогда 2 строки вычитать, последняя строка содержит информацию об обстоятельствах завершения процесса.
CTRL-D и CTRL-C уже внесены, а я опять про 22 страницы забыл :)
ответить
⮴ From admin Sat Nov 13 11:53:12 2021
> "типа char При
> "типа char При этом"
Ага, теперь нашёл, только оно уже в списке после вот этого коммента
> Формально, наша программа не сумела
Да не, мысль-то вполне понятна, просто сомнения меня гложуть. Я бы сказал, здесь правильнее даже выходить с успешным кодом, нежели выдавать сообщение как диагностическое.
> тогда 2 строки вычитать
чёрт, а ведь факт!
ответить
☞ From fluorine Thu Oct 28 14:41:00 2021
т.1, стр. 116 стр, 12 стр сверху
Права на запись позволяют модифицировать каталог...
==
Для модификации каталога нужен не только бит записи, нужен ещё и бит исполнения для каталога.
ответить
⮴ From admin Sat Nov 13 10:01:26 2021
Там весь абзац
Там весь абзац придётся переформулировать. Ну да, придётся :)
ответить
☞ From feriman Tue Oct 26 12:04:00 2021
Том 1, стр. 13, 9-10
Том 1, стр. 13, 9-10 строки сверху - написано "... добил рукопись части про Си ...".
ответить
⮴ From admin Fri Nov 12 19:59:12 2021
Ну да, именно
Ну да, именно так и написано. А что не так-то?
ответить
⮴ From feriman Sat Nov 13 10:31:00 2021
Тут я ошибся.
Тут я ошибся. Осознал после отправки коммента. Извините :)
ответить
☞ From Anonymous (unverified) Mon Oct 25 17:12:00 2021
Опечатка, Том 2
В коде curses_col.c на страницах 259-260 в функции shift_pairs для изменения цвета пары используются целочисленные значения (fg и bg), но разве они не должны быть индексами для массива all_collors? В других функциях так и сделано. Заранее извиняюсь, если что-то неправильно понял
ответить
⮴ From admin Fri Nov 12 19:53:15 2021
Факт. Я
Факт. Я восхищён :-)
ответить
⮴ From Anonymous (unverified) Sun Nov 14 08:50:00 2021
В опечатках вы
В опечатках вы отметили "bg, fg", а надо, наоборот, "fg, bg"
ответить
⮴ From admin Sun Nov 14 16:02:52 2021
Спасибо,
Спасибо, поправил.
ответить
☞ From feriman Mon Oct 25 12:41:00 2021
Том 3, стр. 214, 16-я
Том 3, стр. 214, 16-я строка снизу, опечатка в слове "случае".
ответить
☞ From Anonymous (unverified) Fri Oct 22 10:40:00 2021
3 том, 664
3 том, 664 страница, 3 абзац, 4 строка, в самом конце написано: "назыают"
ответить
☞ From fluorine Mon Oct 18 12:48:00 2021
Том 3, страница 670
После двух export'ов в в конце страницы:
(в нашем примере можно убрать из CVSROOT слово vasya вместе с символом @)
===
Разве не нужно убрать ещё домен cvsserv.example.com?
ответить
⮴ From admin Fri Nov 12 19:37:03 2021
ага, и как CVS
ага, и как CVS тогда узнает, где реп? телепатически?
ответить
⮴ From fluorine Sat Nov 13 15:03:00 2021
Извиняюсь,
Извиняюсь, пропустил, если ваша локальная уч. запись называется так же, как и запись на машине с реп.-ом
ответить
☞ From Anonymous (unverified) Sun Oct 17 16:56:00 2021
Т3 стр. 579, 12
Т3 стр. 579, 12 строка снизу. "для этого прощ всего воспользоваться..."
ответить
☞ From Anonymous (unverified) Sun Oct 17 16:30:00 2021
2 том, 188
2 том, 188 страница, 3 сверху строка, 2 раза написано "вытекает из"
ответить
⮴ From admin Fri Nov 12 19:23:56 2021
это третий том,
это третий том, не второй
и оно уже в списке
ответить
☞ From Anonymous (unverified) Wed Oct 13 22:24:00 2021
Том 1, страница 535
Здравствуйте!
В первом томе на 535 странице (предпоследний абзац) написано: "в памяти ячейках, идущих подряд". Думается, что имелось в виду "в ячейках памяти, идущих подряд".
ответить
⮴ From admin Fri Nov 12 19:20:06 2021
там не "в памяти
там не "в памяти ячейках", там в "пяти ячейках"
ответить
☞ From feriman Sun Oct 10 10:04:00 2021
2 том, стр. 204, 13
2 том, стр. 204, 13 строка сверху - написано "побочным" вместо "побочными".
2 том, стр. 211, 8-9 строки снизу - написано "не оглядываяь" вместо "не оглядываясь".
ответить
☞ From feriman Sun Oct 10 08:50:00 2021
стр. 204, 13 строка
стр. 204, 13 строка сверху - написано "побочным" вместо "побочными".
ответить
☞ From feriman Thu Oct 7 10:32:00 2021
2-й том, стр. 628,
2-й том, стр. 628, 3-я строка снизу (без учёта сноски), написано "планировщих" вместо "планировщик".
ответить
☞ From Anonymous (unverified) Tue Oct 5 10:43:00 2021
Свои 5 копеек
Том 3 страница 630 2 абзац "В этом смысле примеры программ на языке ассемблера, которые мы рассматривали в третьей части книги (во втором томе)..."
Третья часть в новом издании первый том:)
ответить
☞ From Alejandro (unverified) Tue Oct 5 09:03:00 2021
1 том.646 -
1 том.
646 - "номером прерывания" набрано курсивом, хотя это новое понятие и в первом издании был жирный курсив.
683, 3 строка снизу - судя по всему, пропущено "движется".
2 том.
674, 12 строка сверху - лишняя запятая перед вообще.
ответить
⮴ From admin Fri Nov 12 18:57:05 2021
> 646 - В первом
> 646 -
В первом издании это понятие было вынесено в глоссарий, а сам глоссарий пребывал в колоссальном беспорядке. Во втором издании я глоссарий привёл в порядок, вот в ходе этого "номер прерывания" оттуда был выкинут за ненадобностью — ну глупо как-то, а что такое номер прерывания? ну, число такое, у каждого прерывания своё, типа номер... ну в общем номер прерывания и есть.
> 683, 3 строка снизу - судя по всему, пропущено "движется".
мммм.... ну вот не понял, куда там его вкрячить.
> 674, 12 строка сверху - лишняя запятая перед вообще.
фраза несколько тяжеловата, согласен, но запятая там вроде бы стоит правильно -- на ней можно споткнуться, неправильно истолковав структуру фразы.
ответить
⮴ From Alejandro (unverified) Sat Nov 13 03:12:00 2021
> 683, 3 строка
> 683, 3 строка снизу
"то в любом разумном смысле слова "движется" следует считать"
Просто, по идее, после "слова" должно быть то самое слово, про смысл которого говорится :)
ответить
⮴ From admin Sat Nov 13 08:51:37 2021
Ага, понял. Ну,
Ага, понял. Ну, э... тут, наверное, правильнее будет выкинуть слово "слова". Просто — в любом разумном смысле.
ответить
⮴ From Alejandro (unverified) Sat Nov 13 11:27:00 2021
М.б. тогда лучше
М.б. тогда лучше "то здравый смысл подсказывает, что этот автомобиль стоит на месте" ?
ответить
⮴ From admin Sat Nov 13 12:03:51 2021
Не, это слишком
Не, это слишком слабое утверждение. Мало ли кому кто что подсказывает.
ответить
⮴ From Alejandro (unverified) Sat Nov 13 12:50:00 2021
> слишком
> слишком слабое утверждение
Разве это проблема? Сомневаюсь, что человек, для которого 10^-10 км/час -- это скорость едущего автомобиля, до конца части про язык ассемблера доберется.
ответить
⮴ From admin Sat Nov 13 14:21:16 2021
Ну вот я не
Ну вот я не хочу, чтобы меня за такого человека приняли :-)
ответить
☞ From Alejandro (unverified) Thu Sep 30 20:47:00 2021
2 том.с. 499, 3
2 том.
с. 499, 3 абзац - тавтология в первом предложении, дважды повторяется слово "данных"
3 том.
388 - дважды "do-it" вместо "do_it"
401, 2 строка - "eof-object" вместо "eof-object?"
581, последняя строка - "Ctrl-D" шрифт
ответить
⮴ From admin Sun Oct 3 12:02:47 2021
Спасибо!
Это всё внёс, а ваш более старый коммент (который побольше объёмом) пока ждёт своего часа, но я и до него скоро доберусь.
ответить
☞ From Anonymous (unverified) Sat Sep 25 07:57:00 2021
3 том, 121
3 том, 121 страница, 1 абзац, написано: "...синонимы неких целочисленных переменных...", но ведь min, max у нас ссылки на переменные типа float, или я чего-то не понимаю...
ответить
⮴ From admin Sat Sep 25 16:44:08 2021
Ух ты
Как говорят англоязычные товарищи, good catch. Когда-то очень давно в этом примере использовался тип int, но я в какой-то момент обнаружил, что засилье типа int приводит к довольно странному эффекту: некоторые студенты забывают, что это вообще такое, и пытаются вообще все переменные, вплоть до указателей, описывать как int'ы :-) У них, конечно, не получается, но сам факт довольно забавен. С тех пор я стараюсь в примерах варьировать типы. Вот только код примера я поменял, а про фразу, упоминающую тип, забыл.
В следующем издании поправлю эту фразу, спасибо :-)
ответить
☞ From Anonymous (unverified) Fri Sep 24 19:26:00 2021
Опечатка, Том 2
Здравствуйте, на странице 70 второго тома в последнем предложении предпоследнего абзаца упоминаются инициализаторы массивов ("...мы уже видели эту ситуацию в примерах инициализаторов массивов."), но часть про них расположена дальше.
ответить
⮴ From admin Sun Oct 3 12:00:50 2021
Вы правы, это
Вы правы, это придаточное предложение -- рудимент, оставшийся от первоначальной структуры книги, которая потом была изменена. Спасибо!
ответить
☞ From Alejandro (unverified) Fri Sep 24 14:09:00 2021
2 том
83, последняя строка - эта операция имеет смысл и для проверки на то, перекрываются ли 2 области памяти или нет, например, для реализации своего memcpy
158 - в России были изобретены АВЛ-деревья, а не красно-черные
318 - "Ctrl-D" шрифт
Параграф про mmap - стоит упомянуть, что перед созданием отображения только что созданного файла необходимо не забыть увеличить его размер при помощи truncate или ftruncate, иначе можно поймать SIGBUS
(и это не один я такой забывчивый, 1, 2, 3)
350 - 0, шрифт
403, жирным - 0, шрифт
414 - 0, шрифт
418 - "0 или 1", шрифты
483 - raw-сокеты есть не только в ядре Linux
489 - inet_addr, man рекомендует не использовать эту функцию, из-за ip-адреса 255.255.255.255, при котором она "ошибется", вернув -1 (прям как atoi, только наоборот)
490 - 0, шрифт
490 - "этот fromlen", должно быть "то на что указывает этот fromlen"
494 - указатель, передаваемый в качестве 2-го параметра, константный
495, жирным - 0, шрифт
506 - в этой связи можно упомянуть (ссылкой наперед) про pselect, который не портит timeout
509, многострадальный timeout - перед началом листинга сказано, что прарметр timeout будет оставлен нулевым, но в самом листинге timeout зачем-то заполняется
578, 1 строка - 0, шрифт
686 - "заменой расширения на .o", должно быть "заменой суффикса на .o"
----------------------------------------
Филологическое:
473, 7 строка - правильно "серверы", а не "сервера", т.к. в слове "сервер" ударение неподвижное. То же самое, например, с драйверами и кластерами.
ответить
⮴ From admin Fri Nov 12 18:45:45 2021
> 83, последняя
> 83, последняя строка
вообще-то нет, результат вычитания адресов при применении к чему-то отличному от элементов одного и того же массива не определён. Оно и понятно, у нас не всегда и не везде "плоская" адресация, а в сегментированном пространстве адреса могут быть из разных сегментов, а сегменты могут накладываться друг на друга, причём так, что интерпретация результатов вычитания, как её ни реализуй, будет сродни чёрной магии. Когда оба операнда вычитания относятся к одному массиву, они заведомо указывают внутрь одного сегмента, иначе адресная арифметика работать не сможет.
> Параграф про mmap
В принципе да, хотя не факт, что нужно упоминать именно ftruncate, скорее нужен какой-то пассаж про размер файла. Подумаю на эту тему.
> 489 - inet_addr
Во-первых, 487, а не 489 :) А во-вторых, ну не рекомендует, и что? Там двумя строками выше показано, как надо. Хотя оговорку добавить, конечно, можно.
> 686
685 :-P даже не сразу нашёл
> правильно "серверы", а не "сервера"
Ну да, конечно, и уж точно "тракторы", а не "трактора", адназначна (tm). Я одну филологиню как-то спросил, а как тогда будет множественное от слова "доктор". Она, не моргнув глазом, ответила "врачи". Но меня так просто не собьёшь, а что, говорю, если это не те, которые врачи, а те, которые "наук", ну, они ещё в учёном совете заседают. Тут она на секунду запнулась, но таки выдала, что эти будут "обладатели учёной степени".
Дудки-с :-) Я в этих измывательствах над живым языком участвовать не буду. Пока что я ни от одного тракториста или там автомеханика не слышал словоформы "тракторы", и точно так же ни от одного сисадмина не слышал "серверы". Значит, правильно — трактора и сервера, а филологи могут сколько угодно упражняться в словоблудии, но язык им не подчиняется, он живёт своей жизнью.
ответить
⮴ From Alejandro (unverified) Sat Nov 13 03:34:00 2021
> 83, последняя
> 83, последняя строка
А если рассматривать только плоскую модель? Это же только в форточках и MS DOS есть проблемы с сегментами (особенно в последнем с этими идиотскими регистровыми парами)
> 487, а не 489
забыл, что нужно 2 страницы прибавлять :)
> 685
А это уже никакие 2 страницы не объяснят...
ответить
⮴ From admin Sat Nov 13 08:59:21 2021
> Это же только
> Это же только в форточках
Ну, форточки пока никто не отменял. Опять же, есть и какие-то микроконтроллеры с сегментацией, хотя их, как водится, никто толком не видел.
Про MS-DOS — дело не в нём, дело в 16-битной версии x86. Фиксированные регистровые пары из исполнительного адреса исчезли при переходе к 32-битной системе регистров и команд.
ответить
☞ From unch Fri Sep 24 10:46:00 2021
опечатка (том 2, стр. 700)
"...,это простое и понятное поведение был "модифицировано"...".
ответить
☞ From Юра (unverified) Thu Sep 23 09:17:00 2021
Опечатка. т3.
В тексте примера на стр.199, деструктор. Должно быть, вероятно пустое тело, вместо которого там точка с запятой.
Лютая капча
ответить
⮴ From admin Thu Sep 23 19:17:00 2021
Какое ещё нафиг
Какое ещё нафиг "пустое тело"? Перечитайте параграф 10.4.13, а потом осознайте, что этот ваш деструктор — вовсе не пустой, он на следующей странице описан с телом весьма и весьма не пустым.
ответить
☞ From feriman Tue Sep 7 19:29:00 2021
Том 3, стр. 188, 3-я
Том 3, стр. 188, 3-я строка сверху, словосочетание "вытекает из" повторяется дважды.
ответить
☞ From feriman Tue Sep 7 11:21:00 2021
Опечатка
3-й том:
стр. 130, 12 строка снизу, написано "сам", возможно должно быть "самого"
ответить
⮴ From admin Fri Sep 24 13:21:25 2021
Насколько я
Насколько я понимаю, всё-таки нет, мы ведь не говорим "применить деструктора", мы говорим "применить деструктор" (поскольку он неодушевлённый, а падеж винительный). Но вообще, конечно, конструкция получилась та ещё :-) избавлюсь от неё в следующей версии.
ответить
☞ From feriman Tue Sep 7 11:14:00 2021
Опечатки
2-й том:
стр. 344, 6 строка снизу, написано "упрощениям", должно быть "упрощениями"
стр. 390, 13 строка сверху, написано "расчитывают", должно быть "рассчитывают"
3-й том:
стр. 106, 5 строка снизу, написано "функция-деструктора", должно быть "функции-деструктора"
стр. 126, 15 строка снизу, написано "константными", должно быть "константным"
ответить
⮴ From admin Fri Sep 24 13:16:36 2021
Большое
Большое спасибо, прошу прощения за замедленную реакцию.
ответить
☞ From Anonymous (unverified) Sun Aug 29 10:16:00 2021
Второй том, стр.
Второй том, стр. 618, начало абзаца "Такие виртуальные машины — контейнеры". Вероятно, стоит добавить второе тире после "контейнеры" для обособления.
ответить
☞ From Tony (unverified) Sun Aug 22 10:43:00 2021
Том № 2, стр. 521
Первая строка. Номер страницы указан неверно из-за неправильной ссылки в латехе.
ответить
☞ From Xen (unverified) Sat Aug 14 05:45:00 2021
Том №1 с.368
Том №1 с.368 во втором абзаце, 7 строка SreenHeight вместо ScreenHeight
PS Большое спасибо за книги!
ответить
☞ From Anonymous (unverified) Sat Aug 7 12:56:00 2021
1 том, страница
1 том, страница 544, 4 абзац, "правило восьмидесятой колонОки".
ответить
☞ From Anonymous (unverified) Sat Jul 17 13:31:00 2021
Примеры из книги: кодировка и опечатка
Хотел возмутиться, что у вас во всех файлах комменты на русском в КОИ8, который мне неудобно читать, а оказалось, что всего в одном, и конечно же, том самом, в который я посмотрел первым:
Предлагаю комменты в diamond.pas таки перевести на английский.
А в третьем файлике закралась опечатка:
> "Last-Translator: Andrey V. Solyarov\n"
Такая же опечатка и в de.po в том же каталоге.
ответить
⮴ From admin Tue Aug 3 14:53:00 2021
Спасибо!
Спасибо!
Особенно досадно, что в diamond.pas остались комменты по-русски, я их тупо забыл вычистить, когда формировал этот файл copy-paste'ом из LaTeX'овского исходника книжки. Разумеется, это совершенно недопустимая ситуация -- в тексте программы не место символам, не входящим в ASCII.
ответить
☞ From Anonymous (unverified) Sat Jul 17 06:05:00 2021
modulo
Том 1, стр 259
> program modulo;
Что-то глаз зацепился. Вроде как modulo в английском — это mod из Pascal или % из остальных языков. А тут absolute value. Но с другой стороны, гугление показывает, что для комплексных чисел и векторов modulus значит их длину/расстояние от нуля. Не знаю, стоит ли вообще такие мелочи репортить и отвлекать?
ответить
⮴ From admin Fri Sep 24 12:26:33 2021
Пожалуй, Вы
Пожалуй, Вы правы. Исправлю в следующем издании, если оно когда-нибудь будет.
ответить
☞ From Anonymous (unverified) Fri Jul 16 05:33:00 2021
Биты - байты
Том первый, страница 206:
>> Один подход, называемый little-endian, предполагает, что первым идёт самый младший байт числа, далее биты располагаются в порядке возрастания
Наверное, имелось в виду "байты".
ответить
☞ From Anonymous (unverified) Thu Jul 15 07:14:00 2021
ls внешняя программа
Страница 120, первый том, второе издание, примечание. Реальный тест показывает, что :
Я думаю, вы хотели сказать
echo
, а неls
. А вот cd, насколько я понимаю, сделать внешней командой невозможно и в виде отдельного файла её нет.ответить
⮴ From admin Fri Jul 16 18:32:01 2021
Вы оказались
Вы оказались правы насчёт ls, хотя проверять-то это, конечно, нужно иначе, например:
И вправду вызывает внешнюю, зараза. Но "хотел сказать" я ровно то, что сказал, раньше ls таки внутри шеллов присутствовал. В какой момент выпилили — не знаю, не уследил.
Про cd — да, процесс может текущую директорию сменить только себе, но не кому-то другому, так что cd нельзя сделать внешней. Про это рассказывается во втором томе.
ответить
☞ From Anonymous (unverified) Sun Jul 11 01:51:00 2021
Страница 81,
Страница 81, первый том:
Следует заключать конструкцию "$DIR/$1" в двойные кавычки, поскольку имена каталогов может содержать пробелы и прочие спецсимволы. Вообще, в bash следует все обращения к переменным заключать в кавычки, кроме исключительных ситуаций, когда вы пытаетесь сделать что-то странное.
Для сравнения, в Tcl после подстановки переменной её содержимое никогда не интерпретируется, если вы явно сами не напишете {*}$var или что-то вроде. А в bash — наоборот, если не добавить кавычек, то содержимое побьётся на слова.
Жалко, нет шелла с синтаксисом Tcl, но поддержкой пайпов и прочих перенаправлений ввода-вывода.
ответить
☞ From Flau (unverified) Thu Jul 8 13:24:00 2021
т.2, с.148
2-й том, стр. 148. В последней строке первого абзаца после слова "окажется" стоит точка, а не запятая.
ответить
☞ From Alejandro (unverified) Wed Jun 30 16:39:00 2021
Опечатки
1 том.
с. 329, 15 строка снизу - "Ctrl-D", шрифт
с. 665 - FreeBSD шрифт
2 том.
с. 69 - "aplha" вместо "alpha"
с. 99 - "(s от слова string)", s набрана обычным шрифтом, смешивается с остальным текстом
с. 318 - "Ctrl-D", шрифт
c. 418 - "Ctrl-C", шрифт
с. 436, сноска - "меньшего" вместо "наименьшего"
с. 682, предпоследняя строка - пропущена запятая
с. 686, последняя строка - "в части 5", должно быть "в части 4"
3 том.
с. 75 - "do-while" набрано обычным шрифтом, в других местах моноширинным
с. 77 - "стр.207", нет пробела
Также в архиве примеров есть следы CVS.
------------------------------
Возможно, тоже опечатки:
2 том.
с. 51 - скобки у имени функции f (нигде в книге они вроде бы больше не используются)
с. 92, 19 строка сверху - char, шрифт. В 4 строке снизу используется моноширинный
с. 412, 414 - 2 абзац, 3 и 4 набраны обычным шрифтом, выше по тексту (c. 412) коды обозначены моноширинным
ответить
⮴ From admin Thu Aug 19 12:55:00 2021
Спасибо!
Т.2 стр. 436 — не вижу криминала;
стр. 682 — подозреваю, что имеется в виду запятая перед союзом "и", но я не уверен, что там она есть — перед ним не обособляемая конструкция, а простое перечисление однородных членов;
Остальное внёс, спасибо! Пардон за замедленную реакцию, внезапно стало не до того.
ответить
⮴ From Alejandro (unverified) Thu Aug 26 19:28:00 2021
Ну тогда ...
... щас еще добавлю :)
2т.
c. 64, 1-ый абзац - формально, нет. Умножение и деление можно реализовать и без аккумулятора (хотя только вручную и работать будет гораздо медленнее).
с. 250 - CTRL-C шрифт
c. 362, 5 строка после заголовка вызова wait - "wait", возможно, тут должен быть курсив
с. 604 - фрагмент текста "(программного прерывания)", видимо, съехал вперед
т 3.
с 181, 5 строка снизу - "толлейбусы"
с 248 - в заголовке 2-го цикла for лишний пробел
Таблица с опечатками, 1-ый том, с. 100 - "CTRL-К" вместо "CTRL-R"
------------------------------
И еще такой вопрос: а что по поводу электронной версии издания для ДМК Пресс? Вы писали, что планировали выложить её на сайт. Или пока нет возможности?
> Пардон за замедленную реакцию
Я, если честно, уже через неделю волноваться начал. Вдруг все пропало.
ответить
⮴ From admin Fri Sep 24 12:24:31 2021
спасибо!
2т. c. 64, 1-ый абзац - формально, нет
Ну да, подумаю, что тут следует сделать.
Остальное внёс/исправил, большое спасибо! Вы ухитряетесь вылавливать опечатки, прожившие в тексте много лет.
а что по поводу электронной версии издания для ДМК Пресс? Вы писали, что планировали выложить её на сайт. Или пока нет возможности?
Возможность есть, просто никак руки не дойдут. Видите, я вон даже на комментарии с опечатками реагирую с месячным лагом.
ответить
⮴ From Alejandro (unverified) Sun Sep 26 13:49:00 2021
Опечатки в опечатках
2 т., с. 604 попала в опечатки первого тома.
3 т., с. 188 - "0 строка сверху" вместо "3 строка сверху".
ответить
⮴ From admin Sun Oct 3 11:15:34 2021
спасибо
поправил
ответить
☞ From Anonymous (unverified) Tue Jun 15 13:57:00 2021
Том 2, Обзор средств взаимодействия процессов
Во втором томе в параграфе 5.3.13 на странице 382 второй абзац начинается с предложения: "... использовать возможностями системы ...". Возможно, имелось в виду: "... пользоваться возможностями системы ..."
ответить
☞ From Alejandro (unverified) Wed Jun 9 14:53:00 2021
Том 2.с. 555 -
Том 2.
с. 555 -
if(fork()==0) /* ... */
с. 586 - нет операции взятия адреса функции
worker_thread
с. 591 - а как вариант перевода "файл захвата"?
Том 3.
с. 413 - в статье Мэтта Майта (ссылка [17] из книги ведёт сюда) с отключённым js большую часть примеров не видно
с. 415 - относительно
defun
иlet
сдвиг обычно делают равным одному стандартному отступу (2-3 пробела)ответить
⮴ From admin Tue Jun 15 17:19:28 2021
> с. 586 - нет
> с. 586 - нет операции взятия адреса функции worker_thread
в параграфах про callback-функции и про сигналы тоже нет взятия адреса при передаче функции параметром в другую функцию; я вообще не уверен, что такое взятие адреса в книге где-то есть, кроме параграфа об указателях на функции
> с. 591 - а как вариант перевода "файл захвата"?
по мне так намного хуже; это словосочетание предполагает, что существует некий захват как отдельная сущность, тогда как его на самом деле нет, есть только файл
> с. 413 - в статье Мэтта Майта
вопрос, как мы понимаем, не ко мне; не сослаться на этот набор примеров я никак не могу
> с. 415 - относительно defun и let
вообще-то именно это я и предлагаю сделать, только не для defun и let, а вообще для всех форм; но вот насчёт "обычно" — я пока что чаще встречал именно такой стиль, как показано в примере
ответить
⮴ From Alejandro (unverified) Tue Jun 15 18:15:00 2021
Еще кое-что
404 - Ещё два fork'a в заголовке if
631, мелким шрифтом - "к концу третьего тома"
> в параграфах про callback-функции и про сигналы
А в чём отличие от обычных функций? Или это какая-то традиция?
Про статью: я, когда зашел на эту страницу, подумал, куда таки примеры спрятались :)
> я пока что чаще встречал именно такой стиль
Я хоть и немного игрался с лиспом, но вот такого ни разу не встретил. Вообще, это "разнообразие" вызывает ощущение, что у любителей лиспа вообще нет никаких принципов.
ответить
⮴ From admin Tue Jun 15 19:33:51 2021
> А в чём
> А в чём отличие от обычных функций?
Вроде бы ни в чём. В книге нигде не говорится, что надо обязательно амперсанд применять к имени функции, когда нужен её адрес — сказано лишь, что так делать можно. И в главе, где это сказано, так почему-то сделано (уже не помню, по какой причине). В остальных местах вроде бы так не делается, хотя поручиться не могу — я не уверен, что просмотрел все места, где используются адреса функций.
> ощущение, что у любителей лиспа вообще нет никаких принципов.
К сожалению, у меня такое тоже временами возникает.
ответить
☞ From Anonymous (unverified) Wed Jun 9 14:15:00 2021
Том 2, Пример запуска внешней программы
Во втором томе в параграфе 5.3.8 приведен пример вызова внешней программы с последующим ожиданием устранения зомби-процесса.
Для функции wait() в коде не включены заголовочные файлы sys/types.h и sys/wait.h
ответить
☞ From Anonymous (unverified) Wed Jun 9 11:15:00 2021
Том 2, опечатка
Во втором томе на странице 344 первый абзац заканчивается предложением: "... причем одна и та же физическая памяти может про необходимости ..."
ответить
☞ From Anonymus (unverified) Mon Jun 7 11:58:00 2021
Том 3 стр.336 3-я
Том 3 стр.336 3-я строка снизу.
Должно быть reverse1_do вместо reverse_do ?
ответить
☞ From Alejandro (unverified) Sat Jun 5 19:48:00 2021
Опечатки
том 2
с 381 - "подробное рассмотрение сигналов нас ждет в следующей главе", сигналы рассматриваются через параграф
том 3
240, 4 строка снизу - "сроку" вместо "строку"
375, 3 абзац, 4 строка - "много старше" вместо "намного старше"
383 - состязяний
ответить
⮴ From admin Sun Jun 6 17:27:00 2021
"много" - в
"много" — в таком контексте вполне допустимо, хотя, возможно, выглядит устаревшим. Остальное внёс. Спасибо!
ответить
⮴ From Alejandro (unverified) Sun Jun 6 18:27:00 2021
В таблице у
В таблице у опечатки "стоку" номер страницы не тот :)
ответить
⮴ From admin Sun Jun 6 18:49:47 2021
thanks :-)
.
ответить
☞ From Anonymous (unverified) Tue Jun 1 11:31:00 2021
Просьба пояснить
Здравствуйте.
Поясните, пожалуйста, не могу понять:
(Массивы - Том 1, стр.346)
program OlympiadCounter;
const
MaxSchool = 67;
MaxGroup = 100;
type
CountersArray = array [1..MaxSchool] of integer;
var
Counters: CountersArray;
i, c, n: integer;
begin
for i := 1 to MaxSchool do
Counters[i] := 0;
Переменной Counters был присвоен тип соответственно описанный выше.
Вопрос: что это за индекс Counters[i] ?
ответить
⮴ From admin Tue Jun 1 14:40:14 2021
Честно говоря,
Честно говоря, не вполне понимаю ваш вопрос, что значит "что за индекс"? Переменная Counters имеет тип CountersArray, который описан как массив integer'ов. То есть Counters — это массив переменных типа integer. Ну а Counters[i], очевидно, элемент этого массива с номером i. Поскольку это находится в цикле по переменной i, она пробегает значения от 1 до MaxSchool. Весь цикл целиком — заносит нули во все элементы массива.
Что-то вы, похоже, слишком быстро книжку читаете, а делать ничего не пробуете.
ответить
⮴ From Anonymous (unverified) Tue Jun 1 15:15:00 2021
"Теперь real100 —
"Теперь real100 — это имя типа; переменная такого типа будет состоять из ста переменных типа real (элементов массива), которые снабжены своими номерами (индексами), причём в качестве таких индексов используются целые числа от 1 до 100. Введя имя типа, мы можем описывать переменные этого типа, например:
Описанные таким образом а и b — это и есть массивы; они состоят из элементов а[1], а[2], ..., a[100], b[1], b[2], ..., b[100]"
В моем понимании элемент массива Counters должен иметь индекс от 1 до 67.
По поводу пробовать - я проверял, все работает, так же пробовал свое понимание - не работает. По этому попросил пояснить.
ответить
⮴ From admin Tue Jun 1 15:57:03 2021
> В моем
> В моем понимании элемент массива Counters должен иметь индекс от 1 до 67.
Абсолютно верно, и что? Чему, по-вашему, равен идентификатор MaxSchool? Какие значения будет принимать переменная i?
> так же пробовал свое понимание - не работает
Вот смотрите, часть про Паскаль в книге начинается на стр.231, а обсуждаемый пример находится на стр.346. Ну хорошо, допустим, параграф про массивы начинается раньше, на стр.338. Всё равно больше ста страниц материала. Что, до сей поры прямо вот всё-всё было понятно? А сколько, извините за вопрос, программ вы за время изучения всего этого материала самостоятельно придумали, написали на компьютере и запустили? У меня, честно говоря, ощущение, что ни одной, поскольку в тупик вас поставили не массивы и не индексы, а банальный цикл for и переменная цикла в нём.
ответить
☞ From Александр (unverified) Fri May 28 09:06:00 2021
Удаление из списка
На стр. 153 при удалении текущего элемента из списка, в ветках "else" разве не нужно делать first->prev = NULL и last->next = NULL соответственно? Спасибо.
ответить
⮴ From admin Fri May 28 14:27:56 2021
Нет, не нужно,
Нет, не нужно, это уже сделал второй if (не тот, в котором ветка else сработала, а второй). В этом плане случаи первого и последнего элементов не представляют собой ничего особенного.
ответить
☞ From Anonymous (unverified) Thu May 27 13:45:00 2021
Том 2, опечатка
На странице 150 первый абзац заканчивается предложением:
"...; ограничимся тем, что адаптируем рассмотренный там решения к реалиям языка Си"
Возможно, имелось ввиду:
"...; ограничимся тем, что адаптируем рассмотренное там решение ..."
Либо:
"...; ограничимся тем, что адаптируем рассмотренные там решения ..."
ответить
☞ From Anonymous (unverified) Thu May 27 13:15:00 2021
Том 2, рекурсивное удаление элементов из односвязного списка
Во втором томе на странице 149 приведен следующий алгоритм:
void delete_negatives_from_int_list(struct item **pcur)
{
if (!*pcur)
return;
delete_negatives_from_int_list(&(*pcur)->next);
if ((*pcur)->data < 0) {
struct item *tmp = *pcur;
*pcur = (*pcur)->next;
free(tmp);
}
}
Не должен ли уход в рекурсию быть после проверки элемента?
ответить
⮴ From admin Thu May 27 15:13:26 2021
А ничего, что
А ничего, что тогда придётся вместо if сделать while, то есть вернуть в текст тот самый цикл, от которого хотелось избавиться?
ответить
⮴ From Anonymous (unverified) Thu May 27 18:23:00 2021
По закону Мерфи
По закону Мерфи я это понял уже после того, как комментарий был написан и отправлен, да там и связность может тогда нарушиться. Не по чину взял :)
ответить
⮴ From admin Thu May 27 19:21:20 2021
Да нет,
Да нет, связность не нарушится, если сделать всё аккуратно, но вот цикл в таком примере будет смотреться прямо-таки грандиозно :-)
ответить
☞ From Anonymous (unverified) Thu May 27 07:31:00 2021
Том 2, Форматированный ввод
Во втором томе на странице 116 в таблице 4.2 форматный символ
x
описан как ожидающий целое число в шестнадцатеричном представлении из стандартного потока ввода, но этот спецификатор ожидает своим параметром беззнаковое целоеответить
☞ From Anonymous (unverified) Wed May 26 09:23:00 2021
Том 2, Динамическая память
В параграфе 4.3.14 после первого абзаца приведен прототип функции
void* malloc(int size)
, в то время как он должен бытьvoid* malloc(size_t size)
ответить
⮴ From admin Thu May 27 15:18:32 2021
Устройте
Устройте спиритический сеанс и расскажите это покойному Деннису Ритчи. NB: ни одно из имён типов, кончающихся на _t, в Той Самой Книге не упоминаются нигде, кроме последней главы, в которой рассказывается про совсем свежий на тот момент "стандарт" (и рассказ не оставляет сомнений в том, что авторам языка стандарт — даже самый первый и наименее идиотичный из всех — не понравился).
Если серьёзно: выверты комитетского мышления я стараюсь не пропускать в текст своей книги — настолько, насколько это возможно. К сожалению, возможно это не всегда; gid_t пришлось упомянуть в рассказе про getgroups/setgroups, а одиозный socklen_t — в рассказе про accept и recvfrom. Естественно, соответствующие рассказы снабжены подобающими комментариями.
ответить
☞ From Anonymous (unverified) Wed May 26 07:56:00 2021
Том 2, Перечисляемые типы
На странице 70 приведен следующий участок кода:
enum example_enum {
example_first = 100,
example_second = example_first * 20,
example_third = example_first + 1000,
example_last = example_third
};
Значения констант будут 100, 2000, 1100 и 1100, а не 100, 2000, 3000 и 3000, как указано в книге
ответить
☞ From Alejandro (unverified) Tue May 25 18:17:00 2021
Опечатки
2 том.
280 - "выглядят проще, чем на самом деле", возможно лучше "выглядят проще, чем они есть на самом деле"
388 - BSD набрано моношириным шрифтом
689, 3 абзац - gdb, шрифт
691, предпоследняя строка - pid, шрифт
3 том.
44, 8 строка - не изменен номер тома
402 - нет точки в конце 4 абзаца
403, последний абзац - "пропробуем" вместо "попробуем"
404 - у второго let'а нарушен размер отступов
411, строка 6 - написано "и"; по идее, должно быть "или"
533 -
\x=>20-x
и\x=20-x
, так и должно быть?541, 643 - написано "MacOS X", пропущен пробел
570, 4 абзац - пропущено две запятые
654 - world с заглавной буквы, в программе - с маленькой
655 - xterm шрифт
--------------------------------------------
Не уверен, что тут ошибки или опечатки, но, возможно, стоит обратить на это внимание.
2 том.
386, 9 строка - "1" набрано моноширинным шрифтом
3 том.
56 - "рекурсию, либо как максимум" вместо "рекурсию либо, как максимум,"
413 - hello world набрано моноширинным шрифтом, в других местах обычным
492, 2 абзац, 7 строка - ", когда" вместо "; когда"
648 - "(например тот же Tcl)", пропущена запятая после "например"
650, 3 абзац, последняя строка - трансляции или транслятора?
ответить
⮴ From admin Thu May 27 16:26:15 2021
III том, стр.402 --
III том, стр.402 -- по-моему, точка там и не нужна, достаточно вопросительного знака в скобках
MacOS X -- ну их нафиг, я такое написание считаю допустимым, благо macOS уж точно когда-то использовалось (слитно, хотя и без X)
> 570, 4 абзац - пропущено две запятые
не нашёл; зато там точка пропущена -- это факт :-)
> II том, 386, 9 строка - "1" набрано моноширинным шрифтом
конкретно здесь это было так задумано, я только не уверен, что везде так :(
> 56 - "рекурсию, либо как максимум" вместо "рекурсию либо, как максимум,"
по-моему, хуже становится
> 413 - hello world набрано моноширинным шрифтом, в других местах обычным
здесь говорится, что программа это печатает, то есть выдаёт на терминал, так что использование моноширинного шрифта тут правильно; к сожалению, я не уверен, что везде так же
> 492, 2 абзац, 7 строка - ", когда" вместо "; когда"
там одна запяточка уже есть, разве что всю фразу переделать
> 650, 3 абзац, последняя строка - трансляции или транслятора?
по смыслу именно "любые элементы трансляции"
Спасибо!
ответить
⮴ From Alejandro (unverified) Thu May 27 18:37:00 2021
> MacOS XЯ на это
> MacOS X
Я на это обратил внимание, т.к. в первом томе используется "Mac OS X"
> 570, 4 абзац
"abra(kadabra), foo(bar,bur), и т.п." На 5 строк выше той точки.
> "рекурсию, либо как максимум"
Не уверен. Если убрать "как максимум", то запятые там вообще не нужны. Там же "либо" одно.
ответить
⮴ From admin Sat May 29 22:54:24 2021
Про Mac OS —
Про Mac OS — убедили, сделал везде с пробелом (это не только в третьем томе такое было), если будет следующее издание -- получится единообразно :-)
Про запятые — ок, после abra(kadabra) запятая действительно пропущена, но зачем она перед "итп"?
Про "либо" — видимо, вы это воспринимаете как перечисление однородных членов, а я — как придаточное предложение, отделённое союзом.
ответить
☞ From Александр (unverified) Sat May 22 10:56:00 2021
Здравствуйте, в
Здравствуйте, в Т.1 на странице 586 говорится, что использование "rep" с "lods" не имеет смысла, но до этого команда "rep" нигде не упоминалась. Спасибо за книги, очень нравятся.
ответить
☞ From Алексей Олегович (unverified) Thu May 20 22:17:00 2021
освободить ресурс
Том 1, страница 391, программа MultAndAdd.
В программе отсутствует close(f).
ответить
☞ From Алексей Олегович (unverified) Thu May 20 05:49:00 2021
опечатка в слове comparison
Первый том, страница 363, ветка в case со знаками '<', '>', '='. В слове comparisIon лишняя буква i. Проверял в нескольких словарях - везде comparison.
ответить
☞ From Алексей Олегович (unverified) Wed May 19 01:44:00 2021
согласование падежных окончаний
Второе издание, первый том, страница 321, середина второго абзаца сверху: строка с примечанием №29.
...параметры-переменные, которых потребуется двА:...
Нужно: двЕ, так как параметры-переменные женского рода.
ответить
⮴ From admin Wed May 19 08:24:20 2021
Мне почему-то
Мне почему-то кажется, что они как раз мужского рода. Надо будет корректору это дело показать.
ответить
⮴ From Алексей Олегович (unverified) Mon May 24 15:37:00 2021
посоветовавшись со справочниками...
Так как обе части слова "параметр-переменная" склоняются, то род определяется родом главной составляющей: если главная "параметр" - мужской, если "переменная" - женский. Похоже, здесь "параметр" главнее, так что Вы правильно написали. Прошу прощения. Когда читал - у меня глаз споткнулся; к таким вещам отношусь внимательно, поскольку обычно глаз спотыкается обо всякие нелепицы и несуразности.
ответить
☞ From Алексей Олегович (unverified) Fri May 14 00:17:00 2021
опечатка?
Первый том, второе издание, страница 180, 3-4 строка второго сверху абзаца: "или, скажем, теории вероятности". Насколько я знаю не "теория вероятностИ", а "теория вероятностЕЙ" - не раз за эту оговорку от разных математиков и физиков выслушивал.
ответить
⮴ From admin Fri May 14 07:03:36 2021
Пожалуй, Вы
Пожалуй, Вы правы.
ответить
☞ From Anonymous (unverified) Thu May 6 23:50:00 2021
Т. 2, стр. 364-365,
Т. 2, стр. 364-365, параграф 5.3.8.
Исходя из предыдущих параграфов текст программы следует исправить, дабы не противоречить:
if(pid == 0) {
execlp("ls", "ls", "-l", "a", "/var", NULL);
perror("ls");
fflush(stderr);
_exit(1);
}
И без подключённого компилятор ругается, но работает.
ответить
⮴ From admin Wed May 12 07:45:09 2021
Это где,
Это где, по-вашему, что-то чему-то противоречит? Тому, что десяток страниц назад в комментарии мелким шрифтом сказано, что "некоторые авторы рекомендуют"?
А что, включить мозг и понять, что в данной конкретной программе (как, на самом деле, и в большинстве программ) эта рекомендация не имеет смысла — это мы уже не можем?
ответить
☞ From Gleb (unverified) Sat May 1 17:04:00 2021
Первый том, на
Первый том, на странице 578 [array+4*ecx-4], кажется, должно быть [array+4*ecx-1]
ответить
⮴ From admin Tue May 11 14:51:44 2021
Когда кажется,
Когда кажется, надо меры принимать, чтоб не казалось. Особенно если учесть, что размер элемента массива в этом примере как раз 4 байта и там подробно расписано в тексте, почему всё именно так.
ответить
☞ From __greye (unverified) Thu Apr 29 19:31:00 2021
v2:242 4.10.3
Второй том, стр.242, п.4.10.3, второй абзац: "Такой случайной информации." -- используется точка вместо запятой.
ответить
☞ From Tony (unverified) Thu Apr 29 12:51:00 2021
Опечатка, т.2
Опечатка т.2, стр. 355, первая строка:
"Важную роль играет execve". Вместо функции "execve" должна быть функция "execvp".
ответить
☞ From Vladimir_M Sun Apr 25 06:53:00 2021
Том 2, стр. 397,
Том 2, стр. 397, строка 2- вместо "единица" должно быть "нуль". При единице процесс не должен уходить в вызов pause().
ответить
☞ From Anonymous (unverified) Mon Apr 19 09:31:00 2021
Макросы nasm
В файле stud_io.inc в последнем абзаце преамбулы присутствует фраза "Should this needs ...", не стоит ли использовать просто "should this need"?
ответить
⮴ From admin Fri Apr 23 16:44:24 2021
Да, кривенько
Да, кривенько получилось. Переформулировал.
ответить
☞ From newx Sat Apr 17 23:26:00 2021
Опечатка: т.1, стр. 130
Опечатка: т.1, стр. 130
В последнем абзаце внизу написано:
"Часть рекомендуют команды запуска программ,..."
Как я понимаю, должно быть:
"Часто рекомендуют команды запуска программ,..."
ответить
☞ From Anonymous (unverified) Sat Apr 17 11:34:00 2021
Том 1
Том 1, стр. 629, числа Фибоначчи 1,1,2,3,5,8,13,21,34,55
ответить
☞ From Alejandro (unverified) Thu Apr 15 16:12:00 2021
Тут еще кое-что
Тут еще кое-что нашлось :)
3 том.
147 - раскрытие области видимости, вероятно, лишнее
374 - Поправьте, если не прав, но слово
when
, в отличие отfor
и т.п., можно использовать и внеloop
389 -
do-it
вместоdo_it
. Кстати, по моим наблюдениям, лисперы как раз предпочитают использовать тире вместо подчеркиваний390 -
nil
вместо(exit)
. Сnil
при нажатии Ctrl+C программа не завершится, а перейдёт в REPL395 - Не знаю, уместно это или нет, но там не "Hello world", а echo :)
410 -
det
вместоdiscrim
(или тому подобного)411 -
eq
вместоeq?
------------------------------
Оставлю это здесь, вдруг поможет кому-нибудь.
В Chicken Scheme 5.* флаг
-uses library
в сочетании с-x
, а также флаг-postlude
не работают. Вместо этого, чтобы убрать лишнее из бинарника, нужно в начало программы добавить строку(import scheme)
, в конец программы - вызов главной функции, а компилятор вызывать такответить
⮴ From admin Sun Apr 18 11:57:33 2021
?
> 390 - nil вместо (exit). С nil при нажатии Ctrl+C программа не завершится, а перейдёт в REPL
УМВР, только что ещё раз проверил. Возможно, зависит от версии?
С остальным согласен, внёс. Спасибо!
ответить
⮴ From Alejandro (unverified) Tue Apr 20 16:26:00 2021
С nil и (exit)
С
nil
и(exit)
немного погорячился. Скриптовую версию не проверял, но "откомпилированная" приnil
нормально завершается. В REPL при нажатии Ctrl+C программа переходит только при загрузке исходника при помощи флага--load
.Ещё на странице 21, на 12 строке запятая пропущена. И то, что на с. 147 не просто избыточно, а приводит к ошибке.
ответить
⮴ From admin Fri Apr 23 18:41:53 2021
> на странице 21,
> на странице 21, на 12 строке запятая пропущена
ммм где?
ответить
⮴ From Alejandro (unverified) Sat Apr 24 11:24:00 2021
"сначала не
"сначала не понял, потом объяснили и я понял". Запятая перед "и".
ответить
⮴ From admin Sat Apr 24 11:37:29 2021
Вот чёрт знает,
Вот чёрт знает, я тут запятой не ощущаю. Надо будет корректору показать.
ответить
⮴ From Elentin_ (unverified) Fri Nov 12 19:24:00 2021
"сначала не
"сначала не понял, потом объяснили и я понял"
Сложносочинённое предложение. Нужна запятая перед и.
Не нужна была бы если было:
"Сначала не понял, потом я понял и пошёл" (я понял и я пошёл).
И не нужна была бы в ещё довольно хитром случае (когда части сложноподчинённого предложения объединяются либо вопросительной интонацией, либо общим вводным словом или придаточной частью), но тут не он :)
ответить
☞ From Sergius (unverified) Wed Apr 14 16:38:00 2021
Опечатка
Опечатка: том 1, страница 112, строка 12 снизу
Написано: ставят этот именно этот редактор
Исправление: ставят именно этот редактор
ответить
⮴ From Anonymous (unverified) Thu Apr 15 19:42:00 2021
Опечатка в опечатках
Опечатка в таблице опечаток
В комментарии выше говорится про опечатку на странице 112, но в таблице опечаток она ошибочно указана, как страница 142.
ответить
⮴ From admin Sun Apr 18 09:46:46 2021
Спасибо,
Спасибо, поправил
ответить
☞ From Trollkarl (unverified) Tue Apr 13 17:10:00 2021
В томе II на стр.
В томе II на стр. 142 нет точки в конце первого предложения во 2 абзаце.
Андрей Викторович, посмотрите еще на первую опечатку, обозначенную в таблице для второго тома - стр. 21, пропущен предлог "в" перед словом "любом". Если это опечатка из моего комментария, то там стр. 26, а строка, получается, 14-15. Во всяком случае, на стр. 21 ничего такого нет.
ответить
⮴ From admin Thu Apr 15 08:45:54 2021
Спасибо,
Спасибо, страница действительно была указана неправильно, а вот строка там реально 21-я.
ответить
☞ From Anonymous (unverified) Tue Apr 13 12:54:00 2021
Опечатка т.1
В первом томе на странице 391 приведен текст программы, считывающей из заданного пользователем файла действительные числа. В ходе работы программы происходит открытие файла с помощью reset(f), но не происходит закрытия с помощью close(f)
ответить
⮴ From admin Tue Apr 13 14:05:26 2021
И что? :-)
И что? :-)
ответить
⮴ From Anonymous (unverified) Tue Apr 13 18:21:00 2021
Эта тема уже
Эта тема уже поднималась, почитайте эту цепочку.
ответить
☞ From Anonymous (unverified) Tue Apr 13 11:38:00 2021
Опечатка т.1
В первом томе на странице 383 в программе, рисующей цветные звездочки в терминале, на строке 27 вместо принятого ранее стиля GotoXY(..., ...) напечатано gotoxy(..., ...)
ответить
☞ From Parthen Sun Apr 11 11:22:00 2021
Баг или фича?
1 том, начало стр. 389
"(см. §§ 1.4.5 и 1.4.6)"
Двойной знак параграфа по делу тут стоит?
ответить
⮴ From admin Mon Apr 12 21:28:19 2021
По делу,
По делу, читается как множественное число ("параграфы")
ответить
☞ From Anonymous (unverified) Thu Apr 8 09:34:00 2021
3 том, с. 391, 6
3 том, с. 391, 6 строка снизу - Schicken вместо Chicken
ответить
☞ From Trollkarl (unverified) Tue Apr 6 15:53:00 2021
Том 2, стр. 26, 2
Том 2, стр. 26, 2 абзац: "в Си можно описать локальную переменную любом составном операторе" -- потерялся предлог "в".
ответить
☞ From Alejandro (unverified) Thu Apr 1 19:33:00 2021
Опечатки
1 том.
106 - SIGTERM шрифт
459 - "функции" вместо "процедуры"
532 - процессоры Itanium перестали выпускать в 2017 году
537 - 5 строка снизу, 40 и 64 шрифт
2 том.
83 - m+k шрифт
106 - параграф или глава?
109 - cp1251 шрифт
116 - 10 строка сверху, форматная строка
220 - до свиданья (?)
466 - ISO вместо OSI
506 - long шрифт
701 - 5 строка, vim шрифт
701 - 2 абзац, 3 строка, лишняя точка
701 - next и previous шрифт
ответить
⮴ From admin Thu Apr 8 12:24:55 2021
Спасибо!
> 532 - процессоры Itanium перестали выпускать в 2017 году
Насколько я понимаю, в 2017 году вышел последний процессор в линейке, то есть его начали производить, а не закончили; а прекратить поставки Intel только ещё собирается грядущим летом.
> 537 - 5 строка снизу, 40 и 64 шрифт
как ни странно, так и задумано
> 83 - m+k шрифт
а тут прямо-таки так и задумано, и совсем не странно -- m тут переменная из программы, так что должна быть моноширинная, а k -- абстрактное "произвольное число", набрано математическим шрифтом, как и должно быть
> 116 - 10 строка сверху, форматная строка
не нашёл
> 220 - до свиданья (?)
там это во всём параграфе так, начиная со стр.219 (в самом верху); вроде бы вполне допустимая разговорная форма
По остальным -- спасибо, внёс в список.
ответить
⮴ From Alejandro (unverified) Sat Apr 10 15:19:00 2021
Спасибо за
Спасибо за объяснения!
В 3 томе на с. 317 GCL не тем шрифтом набран.
Также хотелось бы спросить по поводу примера на с. 487: что делает
[Ch] = ","
и тому подобное? Интерпретатор (по крайней мере, в режиме REPL) это всё унифицировать не может.ответить
⮴ From admin Sat Apr 10 16:07:23 2021
> [Ch] = "," Очень
> [Ch] = ","
Очень просто, тут проверяется, представляет ли собой Ch символ запятой, точнее, код этого символа:
Незадача в том, что это шестая версия swipl, а у вас наверняка уже седьмая. До шестой включительно строковые литералы в двойных кавычках по умолчанию рассматривались как список кодов символов, начиная с седьмой версии умолчания поменялись. Сейчас седьмой версии развёрнутой нет под рукой, но если мне склероз не изменяет, получить старый вариант поведения можно, вычислив такую вот псевдоцель:
Подробности — на стр.435--436 мелким шрифтом.
ответить
☞ From Vsevolod (unverified) Mon Mar 29 19:07:00 2021
Том 1, стр
Том 1, стр 457
procedure IsInTree
В случае равенства (val == p^.data) надо бы true вернуть
(res := true)
ответить
⮴ From admin Wed Mar 31 07:45:23 2021
Спасибо.
Спасибо. Досадно, конечно...
ответить
☞ From Anonymous (unverified) Thu Mar 25 13:14:00 2021
Опечатка
Т. 3, стр. 541:
"под именем tclsh в системе становлен"
ответить
☞ From Anonymous (unverified) Thu Mar 25 11:32:00 2021
Том 3, стр. 426, "не
Том 3, стр. 426, "не давшие себе труда подумть"
ответить
☞ From Anonymous (unverified) Wed Mar 24 14:47:00 2021
Первый том,
Первый том, сноска на стр.51
"... известно более ранее описание..." - раннее
ответить
☞ From Trollkarl (unverified) Tue Mar 23 12:01:00 2021
Первый том, с.
Первый том, с. 569, первый абзац — "Команды mul и imul сбрасывает флаги".
ответить
☞ From AniMath (unverified) Mon Mar 22 13:07:00 2021
1 том, 200
1 том, 200 страница, 4 абзац, 8 строчка. "т.н. число с плавающей точкой". Наверно должно быть: "т.е.(то есть) число с плавающей точкой".
ответить
⮴ From admin Tue Mar 23 17:47:57 2021
"т.н." означает
"т.н." означает "так называемое", именно это и было задумано
ответить
☞ From Anonymous (unverified) Mon Mar 22 12:55:00 2021
199 страница, 1
199 страница, 1 том, в тексте задачи, во втором абзаце, 3 строка, в самом конце написано "говорилсь".
ответить
☞ From Anonymous (unverified) Sun Mar 21 01:37:00 2021
Том 3, стр. 243:
Том 3, стр. 243: "хорошо знакомое нам по третьему тому событийно-управляемое программирование". След первого издания?
ответить
⮴ From admin Sun Mar 21 10:42:43 2021
Спасибо
> След первого издания?
он и есть
ответить
☞ From Anonymous (unverified) Fri Mar 19 19:51:00 2021
Так и было задумано?
с. 358, второй абзац - Что особенно приятно, при присваивании стрингов. Посыл, безусловно, понятен, но ассоциации пикантные ;-) Да и везде по тексту либо "строки", либо "string".
ответить
⮴ From admin Sat Mar 20 07:44:00 2021
Не было так задумано
Не было так задумано. В первой черновой версии этого текста "стринги" упоминались многократно, но потом я решил их вычистить. Вот это вхождение недочистил. Спасибо, поправлю.
ответить
☞ From Anonymous (unverified) Thu Mar 18 19:34:00 2021
Не знаю,
Не знаю, считать ли это ошибкой, но всё же. В примере на стр. 397, если открытие файла dest завершилось ошибкой, выдаем сообщение в erroutput и вырубаем всё halt'ом. Но разве мы не должны перед этим закрыть src, открытие которого прошло успешно несколькими строками ранее?
ответить
⮴ From admin Thu Mar 18 21:25:41 2021
А зачем? Чтоб
А зачем? Чтоб лишний раз прыгнуть в ядро и обратно? Если б это ещё хотя бы был поток на вывод, то можно было бы подумать про вытесение буферов или что-то такое, но на чтение-то...
ответить
⮴ From Anonymous (unverified) Fri Mar 19 06:11:00 2021
Т.е., закрытие
Т.е., закрытие файла при "одноразовом использовании", как и возврат затребованной динамической памяти — скорее, правило хорошего тона? И там, и там система всё равно уберёт за нами на выходе весь бардак, поэтому допускаются некоторые вольности, нужно только понимать, чем рискуем.
ответить
⮴ From admin Fri Mar 19 19:18:59 2021
Вы вообще о чём?
Вы вообще о чём? Какое ещё "правило хорошего тона"? И то, и другое абсолютно обязательно.
Просто нужно понимать, что при завершении программы все открытые дескрипторы закрываются, а куча перестаёт существовать вместе со всеми динамическими переменными, поэтому непосредственно перед завершением программы освобождать ресурсы бессмысленно. Подчёркиваю: непосредственно перед завершением программы. То есть если точно известно, что вот прямо сейчас программа будет завершена, что она не будет больше открывать никаких файлов, не будет больше создавать динамических переменных, ну то есть всё, работа окончена, все свободны.
ответить
⮴ From Anonymous (unverified) Fri Mar 19 19:38:00 2021
вот прямо
вот прямо сейчас программа будет завершена
Освобождение ресурсов именно в этой ситуации и имелось в виду под "правилом хорошего тона" - можно, но, в принципе, никакого криминала без этого не приключится. А так, вы мой второй комментарий-догадку и перефразировали сейчас. Спасибо, прибавилось ясности.
ответить
☞ From Anonymous (unverified) Thu Mar 18 06:20:00 2021
Опечатка
Т.1, стр. 697, 5 строка снизу:
"...либо при попыткА"
ответить
☞ From DenisTsed (unverified) Sat Mar 13 19:50:00 2021
Том 1, страница
Том 1, страница 258, шестая строчка сверху. Опечатка в слове "низачем".
ответить
⮴ From admin Sun Mar 14 13:36:56 2021
И в чём,
И в чём, по-вашему, состоит опечатка?
ответить
⮴ From Anonymous (unverified) Sat Jul 3 05:54:00 2021
Имеется в виду,
Имеется в виду, что у компиляции (по мнению школьников) больше нет функций. Не́зачем - не нужно, нет необходимости, нет причины, нет основания.
ответить
⮴ From admin Sat Jul 3 09:42:48 2021
Здесь (в
Здесь (в наречии) не/ни определяется положением ударения. При этом слово "низачем" с ударением на последний слог в русском языке существует:
https://ru.wiktionary.org/wiki/%D0%BD%D0%B8%D0%B7%D0%B0%D1%87%D0%B5%D0%BC
— и в обсуждаемом контексте мне кажется однозначно более подходящим, чем "незачем" — вместо "незачем" я бы тогда развернул какое-нибудь придаточное предложение.
ответить
☞ From Metronomicon (unverified) Sat Mar 13 05:00:00 2021
Том 1, стр. 322
Второе предложение: "... пусть наша функция работает ..." - а должно быть "процедура".
По всей видимости, "рудимент", доставшийся от первого издания, где в аналогичной одноимённой программе действительно использовалась функция, а не процедура.
ответить
⮴ From admin Sat Mar 13 07:56:16 2021
Спасибо
Да, всё именно так.
ответить
☞ From Tony (unverified) Thu Mar 11 18:41:00 2021
Опечатка, т.2
Пропущена буква во втором абзаце сверху на странице 124: "printf и scanf они отличаюся только наличием".
ответить
☞ From Montague (unverified) Thu Mar 11 15:35:00 2021
Опечатка
Том 1, стр. 376.
Опечатка в коде программы "MovingStar". В место ch: char; должно быть c: integer;
ответить
⮴ From admin Fri Mar 12 09:07:52 2021
Факт.
Результат пагубной привычки копировать текст изменённой программы по кусочкам. В архиве примеров, естественно, всё в порядке, поскольку программу я запускал и пробовал. А вот в тексте -- вот такое :(
ответить
☞ From Trollkarl (unverified) Thu Mar 11 13:30:00 2021
Том 1, с. 286,
Том 1, с. 286, первая строка второго абзаца: "В общем случае структура текста процедуры очень похоже на".
ответить
☞ From Alejandro (unverified) Wed Mar 10 15:01:00 2021
Опечатки
2 т.
510 - не используется
timeout
. Обидно, что то же самое сwritefds
заметил, а это нет :(548 - binary sepaphore
575 - запятая перед "либо"
595 - объявление переменной после оператора
if
3 т.
394 - пустой список без квотирования
472 - "все процедура" вместо "все процедуры"
ответить
⮴ From admin Fri Mar 12 09:02:23 2021
Спасибо!
Насчёт "либо" на стр.575 меня терзают смутные сомнения. Покажу этот фрагмент профессионалам, но по-моему не должно там быть запятой.
А последняя ошибка — на стр.474, а не 472 :-P
Спасибо!
ответить
⮴ From Alejandro (unverified) Mon Mar 15 15:35:00 2021
В книге всё в
В книге всё в порядке. Это, видимо, мне показалось, что там два "либо", а не одно.
ответить
☞ From Skonikol Wed Mar 10 06:54:00 2021
Опечатка. Том #1
Страница 59, строка 7 сверху:
«...вы вернёмся...» скорее всего, исходя из общей стилистики, «...мы вернемся...».
ответить
☞ From Anonymous (unverified) Tue Mar 9 17:39:00 2021
Кажется, опечатка
Том 1. Стр. 294. 6 строка снизу. "но по окончании выполнение процедуры x".
ответить
⮴ From admin Tue Mar 9 17:47:00 2021
В упор не вижу
В упор не вижу опечатки, что вы имеете в виду?
ответить
⮴ From Parthen Mon Mar 29 15:38:00 2021
Наверное,
Наверное, должно быть так:
"... но по окончании выполнениЯ процедуры x"
ответить
⮴ From admin Mon Mar 29 18:56:15 2021
Проблема как
Проблема как раз в том, что там так и написано, можете сами в PDF глянуть.
ответить
☞ From Anonymous (unverified) Tue Mar 9 12:36:00 2021
Страница 92, "(в
Страница 92, "(в нашем примере это /home/avst)" перед блоком, демонстрирующим команды cp и pwd (в конце страницы), должно быть "/home/lizzie"
ответить
☞ From Anonymous (unverified) Tue Mar 9 11:19:00 2021
Опечатка?
Том 1, стр. 613
Некоторые такие псевдокоманды - db, dw, dd, resb, resw и resd~---нам уже известны из \Sx\ref{memory_reservation}
ответить
⮴ From admin Tue Mar 9 17:36:33 2021
Эх :(
Ну да, команду \verb не там закрыл. Но вот как я это не заметить-то ухитрился?...
ответить
☞ From Tony (unverified) Sun Mar 7 13:14:00 2021
Опечатка, т.2
Здравствуйте.
В сноске на 64 странице есть предложение "в перед возвратом переносится".
Возможно вместо предлога "в" должен стоять союз "а".
ответить
☞ From Anonymous (unverified) Sat Mar 6 15:31:00 2021
Первый том,
Первый том, страница 83, второй снизу абзац, четвертая снизу строка: "спустя почти полвека лет"
ответить
☞ From Anonymous (unverified) Sat Mar 6 13:53:00 2021
Опечатка т.2
Опечатка т.2 стр.33, строка 6:
Си, функцию вызвать, не объявив.
можно?
ответить
☞ From Skonikol Sat Mar 6 13:23:00 2021
Опечатка Том №1
Страница 45, строка 6 снизу:
"программых" вместо правильного "программах".
ответить
☞ From Anonymous (unverified) Thu Mar 4 18:53:00 2021
Опечатка
Т.2, стр.90, 3 строка снизу:
"данные будут копироваться в область память в стековом фрейме"
в область памяти
ответить
☞ From Anonymous (unverified) Thu Mar 4 12:03:00 2021
Возможно опечатка
Возможно опечатка, или я никак не пойму:
т.2, стр.103, стока 3 сверху:
"Аналогично действует и операция "запятая": её операнды всегда вычисляются справа налево, и перед началом вычисления правого операнда завершаются все побочные эффекты левого."
Если сначала завершается вычисление левого, а потом правого, то наверно это слева направо.
ответить
☞ From Anonymous (unverified) Wed Mar 3 20:27:00 2021
Опечатка: т.1,
Опечатка: т.1, стр. 47, 4 строка снизу:
"... с функциональным и логических программированием, ..."
ответить
⮴ From admin Wed Mar 3 21:21:56 2021
Факт, спасибо
Факт, спасибо
ответить