Опечатки и ошибки, выявленные в тексте второго издания "Введения в профессию"

Том I

Стр.ПоложениеСодержание, комментарий
3115 строка сверхув слове «модфицирующее» пропущена буква «и»
346 строка снизув слове «становиться» не должно быть мягкого знака
424 строка сверхунаписано лишнее слово «ещё» (ещё ещё)
456 строка снизунаписано «программых» вместо «программах»
474 строка снизунаписано «логических», должно быть «логическим»
597 строка сверхунаписано «вы вернёмся», должно быть «мы вернёмся»
813 строка сверхупропущена «;» после команды echo 1 (перед фигурной скобкой)
8317 строка снизунаписано «полвека лет», слово «лет» лишнее
9220 строка сверхунаписано «/home/avst», должно быть «/home/lizzie»
1068 строка сверхуслово «SIGTERM» набрано не тем шрифтом
1122 строка сверхунаписано «между между», должно быть просто «между»
11212 строка снизунаписано «этот именно этот», должно быть «именно этот»
12118-19 строки сверхунаписано «будеть», лишний мягкий знак
1272 абзацдопущена фактическая ошибка: чтобы убрать переменную из окружения, в действительности достаточно одной команды unset, команда export здесь избыточна
1307 строка снизунаписано «Часть», должно быть «Часто»
1936 строка снизунаписано «на Хаскелее», лишняя буква «е»
1998 строка в тексте условия задачинаписано «говорилсь», должно быть «говорилось»
286начало второго абзацанаписано «похоже», должно быть «похожа»
3223 строка сверхунаписано «наша функция», должно быть «наша процедура»
35810 строка сверхунаписано «стрингов», должно быть «строк»
36811 строка снизунаписано «высоту», должно быть «высоты»
376в тексте примеранаписано «ch: char;», должно быть «c: integer;»
38314 строка сверхунаписано «gotoxy», должно быть «GotoXY» (для единообразия)
43721 строка сверхумежду словами «тем» и «насколько» должна быть запятая, а напечатана точка
4459 строка снизунаписано «остальные стержни», должно быть «остальные диски»
4574 строка снизунаписано «res := false», должно быть «res := true»
45920-21 строки снизунаписано «функции», должно быть «подпрограммы»
5693 строка сверхунаписано «сбрасывает», должно быть «сбрасывают»
570последний абзац параграфанаписано «при делении беззнаковых чисел нет специальные команды для расширения разрядности числа не нужны», лишнее слово «нет»
6135-6 строки после заголовка параграфане закрыта команда дословного воспроизведения, получилось довольно несуразно
6249 строка сверхунаписано «ассембер», пропущена буква "л"
629в сноскенеправильно воспроизведены числа Фибоначчи после 13 (должно быть 21, 34, 55...)
6975 строка снизунаписано «при попытка», должно быть «при попытке»

Том II

Стр.ПоложениеСодержание, комментарий
2621 строка сверхупропущен предлог «в», перед словом «любом»
336 строка сверхунаписано «функцию вызвать», должно быть «функцию можно вызвать»
64в сноске 22 предпоследняя строчканаписано «в перед», должно быть «а перед»
775 строка снизунаписано «представляет обой», должно быть «представляет собой»
903 строка снизунаписано «в область память», должно быть «в область памяти»
1033 строка сверхунаписано «вычисляются справа налево», должно быть наоборот — «слева направо»
1065 строка сверхунаписано «в этом параграфе», должно быть «в этой главе»
10918,19 строки снизуназвание кодировки cp1251 дважды набрано не тем шрифтом, должен быть моноширинный
12411 строка сверхунаписано «отличаюся», должно быть «отличаются»
14215 строка сверхупропущена точка в конце предложения (после слова «char»)
24215 строка снизупосле слова «информации» стоит точка вместо запятой
24817 строка снизунаписано «gotoxy», должно быть «GotoXY» (для единообразия)
355верхняя строканаписано «execve», должно быть «execvp»
3972 строка сверхунаписано «всё ещё единица», должно быть «всё ещё ноль»
4661 строка после заголовканаписано «ISO», должно быть «OSI»
50618 строка снизуслово «long» набрано не тем шрифтом
51020 строка сверхув вызове select последний параметр должен быть &timeout, а не NULL
532предпоследний абзац (мелким шрифтом)утверждается, что все команды атомарны; это в действительности не так, например, чтобы inc [var] сделать атомарной, нужно к ней добавить префикс lock (см. пар. 3.2.14 в 1 томе)
54812 строка сверхунаписано «sepaphore», должно быть «semaphore»
595в тексте примерапеременная fd описана после оператора; нужно из строки «int fd = ...» убрать слово int, а саму переменную добавить в описание в начале функции вместе с i.
7015 строка сверхуслово «vim» набрано не тем шрифтом
70117 строка сверхупосле слов «в одну строчку» стоит две точки вместо одной
70121,22 строки сверхуслова «next» и «previous» набраны моноширинным шрифтом, должен быть курсив

Том III

Стр.ПоложениеСодержание, комментарий
147в тексте примера«A::» не нужно (избыточно и приводит к ошибке)
2439 строка после заголовканаписано «по третьему тому», должно быть «по второму тому»
3118 строка сверхунаписано «представляющая как (в роли которых», пропущено слово «данные» перед скобкой
31720 строка снизуслово «GCL» набрано моноширинным шрифтом, должен быть обычный
3323 строка сверхунаписано «операция!условнаяусловных операций», в исходнике перепутана команда LaTeX'а, должно быть просто «условных операций»
334первый примерназвание функции sqe-det стоит поменять на sqe-discr или что-то вроде
34612 строка снизунаписано «наывается», пропущена буква «з»
35218 строка снизунаписано «лябмда-списка», перепутаны буквы в слове «лямбда»
374в комментарии к примеруслово «when» бывает не только в loop, как и некоторые другие символы — стоит это упомянуть
3899 строка сверхунаписано «do-it», должно быть «do_it»
3916 строка снизунаписано «Schicken» вместо «Chicken»
39413 строка снизунаписано «-postlude '(main ())'», должно быть «-postlude '(main \'())'», поскольку в Scheme, в отличие от классических лиспов, пустой список сам в себя не вычисляется
395последняя строка параграфанаписано «Hello, world», должно быть echo
410пример внизуимя переменной det стоит поменять на discr или что-то вроде
411пример внизунесколько раз написано eq, тогда как должно быть eq?, это ведь Scheme
42614 строка снизунаписано «подумть», пропущена буква «а»
474начало второго абзацанаписано «Все процедура», должно быть «Все процедуры»
54114 строка сверхунаписано «становлен», должно быть «установлен»
Спасибо всем, кто помог (и продолжает помогать) выявлять эти ошибки!

Т. 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);
}

И без подключённого компилятор ругается, но работает.

admin аватар

Это где,

Это где, по-вашему, что-то чему-то противоречит? Тому, что десяток страниц назад в комментарии мелким шрифтом сказано, что "некоторые авторы рекомендуют"?

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

Первый том, на

Первый том, на странице 578 [array+4*ecx-4], кажется, должно быть [array+4*ecx-1]

admin аватар

Когда кажется,

Когда кажется, надо меры принимать, чтоб не казалось. Особенно если учесть, что размер элемента массива в этом примере как раз 4 байта и там подробно расписано в тексте, почему всё именно так.

v2:242 4.10.3

Второй том, стр.242, п.4.10.3, второй абзац: "Такой случайной информации." -- используется точка вместо запятой.

Опечатка, т.2

Опечатка т.2, стр. 355, первая строка:
"Важную роль играет execve". Вместо функции "execve" должна быть функция "execvp".

Том 2, стр. 397,

Том 2, стр. 397, строка 2- вместо "единица" должно быть "нуль". При единице процесс не должен уходить в вызов pause().

Макросы nasm

В файле stud_io.inc в последнем абзаце преамбулы присутствует фраза "Should this needs ...", не стоит ли использовать просто "should this need"?

admin аватар

Да, кривенько

Да, кривенько получилось. Переформулировал.

newx аватар

Опечатка: т.1, стр. 130

Опечатка: т.1, стр. 130

В последнем абзаце внизу написано:
"Часть рекомендуют команды запуска программ,..."

Как я понимаю, должно быть:
"Часто рекомендуют команды запуска программ,..."

Том 1

Том 1, стр. 629, числа Фибоначчи 1,1,2,3,5,8,13,21,34,55

Тут еще кое-что

Тут еще кое-что нашлось :)

3 том.
147 - раскрытие области видимости, вероятно, лишнее
374 - Поправьте, если не прав, но слово when, в отличие от for и т.п., можно использовать и вне loop
389 - do-it вместо do_it. Кстати, по моим наблюдениям, лисперы как раз предпочитают использовать тире вместо подчеркиваний
390 - nil вместо (exit). С nil при нажатии Ctrl+C программа не завершится, а перейдёт в REPL
395 - Не знаю, уместно это или нет, но там не "Hello world", а echo :)
410 - det вместо discrim (или тому подобного)
411 - eq вместо eq?

------------------------------

Оставлю это здесь, вдруг поможет кому-нибудь.

В Chicken Scheme 5.* флаг -uses library в сочетании с -x, а также флаг -postlude не работают. Вместо этого, чтобы убрать лишнее из бинарника, нужно в начало программы добавить строку (import scheme), в конец программы - вызов главной функции, а компилятор вызывать так

csc -static -strip -x main.scm
admin аватар

?

> 390 - nil вместо (exit). С nil при нажатии Ctrl+C программа не завершится, а перейдёт в REPL

УМВР, только что ещё раз проверил. Возможно, зависит от версии?

С остальным согласен, внёс. Спасибо!

С nil и (exit)

С nil и (exit) немного погорячился. Скриптовую версию не проверял, но "откомпилированная" при nil нормально завершается. В REPL при нажатии Ctrl+C программа переходит только при загрузке исходника при помощи флага --load.

Ещё на странице 21, на 12 строке запятая пропущена. И то, что на с. 147 не просто избыточно, а приводит к ошибке.

admin аватар

> на странице 21,

> на странице 21, на 12 строке запятая пропущена

ммм где?

"сначала не

"сначала не понял, потом объяснили и я понял". Запятая перед "и".

admin аватар

Вот чёрт знает,

Вот чёрт знает, я тут запятой не ощущаю. Надо будет корректору показать.

Опечатка

Опечатка: том 1, страница 112, строка 12 снизу
Написано: ставят этот именно этот редактор
Исправление: ставят именно этот редактор

Опечатка в опечатках

Опечатка в таблице опечаток
В комментарии выше говорится про опечатку на странице 112, но в таблице опечаток она ошибочно указана, как страница 142.

admin аватар

Спасибо,

Спасибо, поправил

В томе II на стр.

В томе II на стр. 142 нет точки в конце первого предложения во 2 абзаце.
Андрей Викторович, посмотрите еще на первую опечатку, обозначенную в таблице для второго тома - стр. 21, пропущен предлог "в" перед словом "любом". Если это опечатка из моего комментария, то там стр. 26, а строка, получается, 14-15. Во всяком случае, на стр. 21 ничего такого нет.

admin аватар

Спасибо,

Спасибо, страница действительно была указана неправильно, а вот строка там реально 21-я.

Опечатка т.1

В первом томе на странице 391 приведен текст программы, считывающей из заданного пользователем файла действительные числа. В ходе работы программы происходит открытие файла с помощью reset(f), но не происходит закрытия с помощью close(f)

Эта тема уже

Эта тема уже поднималась, почитайте эту цепочку.

admin аватар

И что? :-)

И что? :-)

Опечатка т.1

В первом томе на странице 383 в программе, рисующей цветные звездочки в терминале, на строке 27 вместо принятого ранее стиля GotoXY(..., ...) напечатано gotoxy(..., ...)

Parthen аватар

Баг или фича?

1 том, начало стр. 389
"(см. §§ 1.4.5 и 1.4.6)"
Двойной знак параграфа по делу тут стоит?

admin аватар

По делу,

По делу, читается как множественное число ("параграфы")

3 том, с. 391, 6

3 том, с. 391, 6 строка снизу - Schicken вместо Chicken

Том 2, стр. 26, 2

Том 2, стр. 26, 2 абзац: "в Си можно описать локальную переменную любом составном операторе" -- потерялся предлог "в".

Опечатки

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 шрифт

admin аватар

Спасибо!

> 532 - процессоры Itanium перестали выпускать в 2017 году

Насколько я понимаю, в 2017 году вышел последний процессор в линейке, то есть его начали производить, а не закончили; а прекратить поставки Intel только ещё собирается грядущим летом.

> 537 - 5 строка снизу, 40 и 64 шрифт

как ни странно, так и задумано

> 83 - m+k шрифт

а тут прямо-таки так и задумано, и совсем не странно -- m тут переменная из программы, так что должна быть моноширинная, а k -- абстрактное "произвольное число", набрано математическим шрифтом, как и должно быть

> 116 - 10 строка сверху, форматная строка

не нашёл

> 220 - до свиданья (?)

там это во всём параграфе так, начиная со стр.219 (в самом верху); вроде бы вполне допустимая разговорная форма

По остальным -- спасибо, внёс в список.

Спасибо за

Спасибо за объяснения!

В 3 томе на с. 317 GCL не тем шрифтом набран.

Также хотелось бы спросить по поводу примера на с. 487: что делает [Ch] = "," и тому подобное? Интерпретатор (по крайней мере, в режиме REPL) это всё унифицировать не может.

admin аватар

> [Ch] = "," Очень

> [Ch] = ","

Очень просто, тут проверяется, представляет ли собой Ch символ запятой, точнее, код этого символа:

?- [Ch] = ",".
Ch = 44.

?- 

Незадача в том, что это шестая версия swipl, а у вас наверняка уже седьмая. До шестой включительно строковые литералы в двойных кавычках по умолчанию рассматривались как список кодов символов, начиная с седьмой версии умолчания поменялись. Сейчас седьмой версии развёрнутой нет под рукой, но если мне склероз не изменяет, получить старый вариант поведения можно, вычислив такую вот псевдоцель:

set_prolog_flag(double_quotes, codes)

Подробности — на стр.435--436 мелким шрифтом.

Том 1, стр

Том 1, стр 457
procedure IsInTree
В случае равенства (val == p^.data) надо бы true вернуть
(res := true)

admin аватар

Спасибо.

Спасибо. Досадно, конечно...

Опечатка

Т. 3, стр. 541:
"под именем tclsh в системе становлен"

Том 3, стр. 426, "не

Том 3, стр. 426, "не давшие себе труда подумть"

Первый том, с.

Первый том, с. 569, первый абзац — "Команды mul и imul сбрасывает флаги".

1 том, 200

1 том, 200 страница, 4 абзац, 8 строчка. "т.н. число с плавающей точкой". Наверно должно быть: "т.е.(то есть) число с плавающей точкой".

admin аватар

"т.н." означает

"т.н." означает "так называемое", именно это и было задумано

199 страница, 1

199 страница, 1 том, в тексте задачи, во втором абзаце, 3 строка, в самом конце написано "говорилсь".

Том 3, стр. 243:

Том 3, стр. 243: "хорошо знакомое нам по третьему тому событийно-управляемое программирование". След первого издания?

admin аватар

Спасибо

> След первого издания?

он и есть

Так и было задумано?

с. 358, второй абзац - Что особенно приятно, при присваивании стрингов. Посыл, безусловно, понятен, но ассоциации пикантные ;-) Да и везде по тексту либо "строки", либо "string".

admin аватар

Не было так задумано

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

Не знаю,

Не знаю, считать ли это ошибкой, но всё же. В примере на стр. 397, если открытие файла dest завершилось ошибкой, выдаем сообщение в erroutput и вырубаем всё halt'ом. Но разве мы не должны перед этим закрыть src, открытие которого прошло успешно несколькими строками ранее?

admin аватар

А зачем? Чтоб

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

Т.е., закрытие

Т.е., закрытие файла при "одноразовом использовании", как и возврат затребованной динамической памяти — скорее, правило хорошего тона? И там, и там система всё равно уберёт за нами на выходе весь бардак, поэтому допускаются некоторые вольности, нужно только понимать, чем рискуем.

admin аватар

Вы вообще о чём?

Вы вообще о чём? Какое ещё "правило хорошего тона"? И то, и другое абсолютно обязательно.

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

вот прямо

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

Опечатка

Т.1, стр. 697, 5 строка снизу:

"...либо при попыткА"

Том 1, страница

Том 1, страница 258, шестая строчка сверху. Опечатка в слове "низачем".

admin аватар

И в чём,

И в чём, по-вашему, состоит опечатка?

Том 1, стр. 322

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

admin аватар

Спасибо

Да, всё именно так.

Опечатка, т.2

Пропущена буква во втором абзаце сверху на странице 124: "printf и scanf они отличаюся только наличием".

Опечатка

Том 1, стр. 376.
Опечатка в коде программы "MovingStar". В место ch: char; должно быть c: integer;

admin аватар

Факт.

Результат пагубной привычки копировать текст изменённой программы по кусочкам. В архиве примеров, естественно, всё в порядке, поскольку программу я запускал и пробовал. А вот в тексте -- вот такое :(

Том 1, с. 286,

Том 1, с. 286, первая строка второго абзаца: "В общем случае структура текста процедуры очень похоже на".

Опечатки

2 т.
510 - не используется timeout. Обидно, что то же самое с writefds заметил, а это нет :(
548 - binary sepaphore
575 - запятая перед "либо"
595 - объявление переменной после оператора if

3 т.
394 - пустой список без квотирования
472 - "все процедура" вместо "все процедуры"

admin аватар

Спасибо!

Насчёт "либо" на стр.575 меня терзают смутные сомнения. Покажу этот фрагмент профессионалам, но по-моему не должно там быть запятой.

А последняя ошибка — на стр.474, а не 472 :-P

Спасибо!

В книге всё в

В книге всё в порядке. Это, видимо, мне показалось, что там два "либо", а не одно.

Skonikol аватар

Опечатка. Том #1

Страница 59, строка 7 сверху:
«...вы вернёмся...» скорее всего, исходя из общей стилистики, «...мы вернемся...».

Кажется, опечатка

Том 1. Стр. 294. 6 строка снизу. "но по окончании выполнение процедуры x".

admin аватар

В упор не вижу

В упор не вижу опечатки, что вы имеете в виду?

Parthen аватар

Наверное,

Наверное, должно быть так:
"... но по окончании выполнениЯ процедуры x"

admin аватар

Проблема как

Проблема как раз в том, что там так и написано, можете сами в PDF глянуть.

Страница 92, "(в

Страница 92, "(в нашем примере это /home/avst)" перед блоком, демонстрирующим команды cp и pwd (в конце страницы), должно быть "/home/lizzie"

Опечатка?

Том 1, стр. 613

Некоторые такие псевдокоманды - db, dw, dd, resb, resw и resd~---нам уже известны из \Sx\ref{memory_reservation}

admin аватар

Эх :(

Ну да, команду \verb не там закрыл. Но вот как я это не заметить-то ухитрился?...

Опечатка, т.2

Здравствуйте.
В сноске на 64 странице есть предложение "в перед возвратом переносится".
Возможно вместо предлога "в" должен стоять союз "а".

Первый том,

Первый том, страница 83, второй снизу абзац, четвертая снизу строка: "спустя почти полвека лет"

Опечатка т.2

Опечатка т.2 стр.33, строка 6:

Си, функцию вызвать, не объявив.

можно?

Skonikol аватар

Опечатка Том №1

Страница 45, строка 6 снизу:
"программых" вместо правильного "программах".

Опечатка

Т.2, стр.90, 3 строка снизу:
"данные будут копироваться в область память в стековом фрейме"
в область памяти

Возможно опечатка

Возможно опечатка, или я никак не пойму:
т.2, стр.103, стока 3 сверху:
"Аналогично действует и операция "запятая": её операнды всегда вычисляются справа налево, и перед началом вычисления правого операнда завершаются все побочные эффекты левого."
Если сначала завершается вычисление левого, а потом правого, то наверно это слева направо.

Опечатка: т.1,

Опечатка: т.1, стр. 47, 4 строка снизу:
"... с функциональным и логических программированием, ..."

admin аватар

Факт, спасибо

Факт, спасибо

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступны HTML теги: <a> <em> <strong> <ins> <del> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <pre>
  • Строки и параграфы переносятся автоматически.

Подробнее о форматировании

CAPTCHA
Проверка на бота
Image CAPTCHA
Copy the characters (respecting upper/lower case) from the image.