Программирование: введение в профессию. Издание 2,9 (электронное)
АннотацияУчебник «Программирование: введение в профессию» ориентирован на самостоятельное изучение и предполагает использование систем семейства Unix (в т.ч. Linux) в роли сквозной среды для обучения. Скачать книгу
Дополнительные файлыФайл mv stud_io_inc stud_io.inc ErrataТом I
Том II
![]() |
Программирование: введение в профессиюпояснениеВы находитесь на официальном сайте Андрея Викторовича Столярова, автора учебных пособий по программированию и информационным технологиям. Если вы искали сайт замечательного писателя-фантаста Андрея Михайловича Столярова, то вам, к сожалению, не сюда. Андрей Михайлович Столяров в библиотеке Мошкова |
☞ From Egor (unverified) Mon Apr 14 08:53:20 2025 UTC
Синтаксические ошибки в примере
Внизу страницы 136, пример удаления всех отрицательных значений из списка содержит ошибки в операторах:
while first <> nil then
и
if first^.data < 0 do
.А остаток примера убежал на другую страницу.
ответить
Re: Синтаксические ошибки в примере
Ага, ну вот и начались ошибки, внесённые при подготовке версии 2.9. Спасибо, вы совершенно правы.
> убежал на другую страницу.
В этом я как раз никакого криминала не вижу. Сверстать так, чтобы тексты программ никогда не переносились между страницами — может, и можно, но лично я не возьмусь.
ответить
☞ From anon (unverified) Sun Apr 13 21:33:34 2025 UTC
Том 2, стр. 84, п. 4.11.3, строка 12
На FreeBSD указанная команда
man attr
к желаемому результату не приводит, вместо неё нужная страница ищется черезman curs_attr
.ответить
Re: Том 2, стр. 84, п. 4.11.3, строка 12
И что? Учесть все подобные нюансы невозможно.
ответить
☞ From Robert (unverified) Mon Mar 31 08:38:55 2025 UTC
Предположительно ошибка
На стр. 189 в первом предложении параграфа 3.3.1 написано:
Ранее в книге (стр. 134, параграф 2.10.5) было объяснено, что называть стек (а также очередь) структурой данных - некорректно.
ответить
Re: Предположительно ошибка
Вы просто выдернули половину фразы из контекста. Термин "стек", разумеется, не соответствует какой-то конкретной структуре данных, и не обозначает никакую структуру данных, но при этом стек всегда реализуется какой-то структурой данных. Что, заметим, написано и здесь (если не обрывать цитирование на половине предложения, как это сделали вы), и в параграфе 2.10.5.
ответить
☞ From Иван aka technocrat (unverified) Thu Mar 6 12:28:30 2025 UTC
offtop
Андрей Викторович, здравствуйте!
Несколько минут назад узнал о выходе электронного издания книги и хочу сказать, что Вы глыба!
Простите меня, если метафора Вам не понравится.
Я 74-го года рождения, программирование для меня некоторая страсть, но профессионально я не смог сделать это своим занятием, кривая жизни увела в сторону.
It doesn't matter.
Это не Ваша проблема.
Не хватает слов для выражения чувств возврата к 90-м, того "духа" пионерии в электронике и в вычислительной технике, восхищения от Вашего энтузиазма, профессионализма, преданности делу, в конце-концов от того, как Вы перекидываете мост между "тогда" и "сегодня".
Будьте здоровы и успехов Вам во всём!
P.S.
Как-то я писал Вам комментарий, в попытке указать на какую-то ошибку в издании и прошу простить за это, она была неуместныой и неудачной.
Тот комментарий Вы, скорее всего "похоронили" и это хорошо.
ответить
Re: offtop
Вот смотрю на это и не знаю, как реагировать. Какое "тогда", какое ещё "сегодня"? Если я только понимаю, про какой исторический период идёт речь, господствовал тогда омерзительный MSDOS, нормальные операционки на обычных компах только-только появлялись, публика про них и не знала толком. Ну, возможно, в те времена не было долбаной вебни, но было бы крайне странно думать, что сейчас кроме вебни нет вообще ничего.
ответить
Re: Re: offtop
Интересный момент: даже сама M$ не рассматривала DOS как что-то, что придёт надолго, они рассчитывали, что эта убогая хрень побудит людей покупать Unix-подобную Xenix, которую нельзя было поставить на PC с завода из-за разногласий между IBM (делавшей PC) и AT&T (которой принадлежали права на Unix). И успешно с этим продолбались, понятное дело. А всё почему? А потому что нехрен прибивать ОС к железу гвоздями -- DOS шёл на любом PC любого производителя as is, а Xenix каждый производитель должен был адаптировать к каждой своей модели PC, и разумеется, самой IBM эта процедура вообще была недоступна.
ответить
Re: offtop
Это конфликтует с моим пониманием истории. До сей поры мне встречалась только такая версия, что Билл Гейтс для MSDOS придумал модель per copy, т.е. вместо того, чтобы лицензировать её IBM за какую-то единовременную сумму, он потребовал, если не ошибаюсь, два бакса за каждый устанавливаемый экземпляр, и с этого началась копирастическая "революция" (ну или революция без кавычек, но в самом поганом смысле слова) в области софта. Упоминание Xenix в окрестностях этой истории я вижу впервые, да и при чём тут MS, на Xenix'е деньги бы зарабатывали не они.
ответить
Re: Re: offtop
Это верно, но не противоречит тому, что юзеру за его же деньги предоставляют в составе компа "троянского коня", который призван побудить его открыть кошелёк ещё раз, и на этот раз пошире, чтобы получить софт получше. Xenix лицензировалась точно так же, per copy (это для неё придумали изначально, ещё до дел с IBM), но значительно дороже, с отдельным вариантом для многопользовательских машин и без возможности купить копию у самой M$. Современная стратегия продаж винды это что-то среднее между таковыми для DOS и для Xenix.
Эта история не очень популярна, поскольку ломает простой и понятный полусказочный сюжет про гениального продажника. Точно так же, как ура-патриоты предпочитают рисовать образ непобедимой армии, а не изучать историю и военное дело, маркетологи рисуют образ акул бизнеса, перекраивающих мир одним решением. Ведь эти образы куда лучше продаются.
ответить
offtop
Если производитель написал для своего PC процедуры ввода и вывода на CON:, чтения и записи секторов дискеты, собрал BIOS (IO.SYS) https://raw.githubusercontent.com/microsoft/MS-DOS/refs/heads/main/v1.25/source/IO.ASM прилагаемым ассемблером и позаботился о процедуре IPL.
ответить
Re: offtop
Под PC здесь имелся в виду не абы какой персональный компьютер, а IBM PC-совместимый персональный компьютер, уже достаточно давно под PC имеют в виду именно это. Без указанных вами особенностей совместимым компьютер бы не был.
ответить
Re: offtop
Gary Kildall:
UNIX1985. Computer Chronicles
У IBM в первой половине 1980-х были машинки с XENIX на мотороловских 68k с 32-разрядной архитектурой. И не только у IBM
ответить
Re: Re: offtop
Судя по тексту, Килдалл говорил о персоналках прошедшей эпохи, когда UNIX уже был, но никто и не думал ставить его на персоналки, то есть, про 1970-е годы, примерно времена процессора Intel 8080. На самом первом IBM PC с Intel 8088 Xenix ещё как работал. А писался он вообще для 18-разрядного PDP-7, у которого даже процессора не было, и памяти от десятка до сотни килобайт.
Мало ли, что там у IBM было, у них и сейчас много всякого есть интересного. На PC-то этого не было.
ответить
Re: Re: Re: offtop
> Xenix ещё как работал. А писался он вообще для 18-разрядного PDP-7
Кто, пардон, для PDP-7 писался? Xenix? Что-то сдаётся мне, к моменту появления Xenix если где ещё и были живые PDP-7, то разве что в музеях.
ответить
Re: Re: Re: Re: offtop
Возможно, что-то я напутал, и не для PDP-7, а для PDP-11. Но на 11 она работала уже совершенно точно.
ответить
Re: offtop
На PDP-7 Томпсон развлекался со своими игрушками, и типа "заодно операционку написал". Она к тому времени (начало семидесятых) была уже безнадёжно морально устаревшей, зато на конкретный экземпляр никто, кроме Томпсона, не претендовал. Ну, типа, тот самый первый Unix, который ещё Unics.
В PDP-11 верю, почему нет. Её и наштамповали экземпляров примерно в 5000 (прописью: пять тысяч) раз больше, и изрядно позднее сделали, и клонов у неё было — когда я на бейсике БК0010 свой стартрек писал, не подозревал, что эта штуковина у меня на столе где-то в глубине души таки тоже PDP11.
ответить
☞ From Саша (unverified) Mon Mar 3 18:39:24 2025 UTC
Содержание
В новом издании «Содержание» подписано как (второе) «Оглавление». Интересно, как так вышло.
ответить
Re: Содержание
Очень просто вышло, закомментарил лишнего. Спасибо за сообщение.
ответить
☞ From NorD (unverified) Mon Feb 17 08:00:08 2025 UTC
Процедуры reset/rewrite
Здравствуйте, Андрей Викторович! Объясните, пожалуйста, следующий момент в Вашей книге: В 2.9.3 "Типизированные файлы" 1-го тома указано, что для режима "только запись" нужно в переменную filemode внести значение 1 и использовать процедуру reset. При этом выше по тексту книги написано, что переменная filemode влияет на процедуру reset, но не влияет на процедуру rewrite. Далее в главе 2.9.4 "Блочный ввод-вывод" в коде примера block_cp.pas перед открытием файла dest на запись мы заносим в переменную filemode 1 и используем процедуру rewrite, хотя это противоречит ранее изложенному. Правильно я понимаю, что в данном случае всё-таки должна применяться процедура reset? P.S. Спасибо Вам за книги и удачи в Ваших начинаниях.
ответить
Re: Процедуры reset/rewrite
Нет, там по смыслу нужна именно rewrite, а вот заносить какое-то значение в filemode перед её вызовом не нужно. Это должно было исчезнуть из примера при подготовке второго издания, но, как видим, не исчезло.
ответить
☞ From G (unverified) Fri Feb 7 10:36:53 2025 UTC
Файлы
А где файлы с примерами?
ответить
Re: Файлы
Законный вопрос.
До какой-то степени можно продолжать использовать архив примеров от второго издания, но, если честно, это так себе решение, поскольку в тексте книги многие примеры кода подверглись заметному редактированию. Придётся мне с этим что-нибудь придумать.
Технически проблема в том, что архив примеров один на все три тома, и там ожидаются, естественно, дальнейшие изменения по мере подготовки оставшихся двух томов. В общем, надо подумать, в каком виде это всё теперь публиковать.
ответить
Re: Re: Файлы
Редактирование в плане исправление опечаток и ошибок или какие-то примеры были основательно переработаны для большей наглядности?
ответить
Re: Re: Re: Файлы
В примерах конкретно к первому тому самое заметное изменение — в полноэкранных программах коды кнопок раньше (увы мне) присутствовали в виде чисел прямо в коде. Сейчас они вынесены в именованные константы.
В примерах к остальным двум томам, возможно, будут более серьёзные изменения; в частности, я планирую избавиться от идиотского (комитетского) sig_atomic_t.
ответить
☞ From Руслан (unverified) Tue Jan 28 21:12:52 2025 UTC
Задачник
Андрей Викторович, подскажите, задачник для второго издания учебника применим к новому изданию?
ответить
Re: Задачник
Не вижу, каким образом он мог бы стать "неприменим". Насколько я помню, ссылок на трёхтомник по номерам страниц в задачнике всё-таки нет, номера параграфов не изменились.
ответить
☞ From a (unverified) Mon Jan 27 10:59:37 2025 UTC
Errata
В издании 2.9 в 1 томе на странице 36 есть сноска номер 21. В ней слово "ps" должно быть напечатано другим шрифтом.
ответить
Re: Errata
Есть такое, благодарю
ответить
☞ From Алексей Л. (unverified) Mon Jan 27 07:20:54 2025 UTC
Печать издания 2.9
Издание 2.9 очень сложно распечатать, т.к. там что-то не то с размерами страниц :(
ответить
Re: Печать издания 2.9
http://www.stolyarov.info/node/427#cmt3
ответить
☞ From Anonymous (unverified) Sat Jan 25 02:30:44 2025 UTC
Том 1, стр 44
Я вас надеюсь не сильно заспамил комментариями? Комментарии/ошибки/неточности лучше в одном комменте или отдельно?
> При выполнении заданий практикума
Видно, что скопировано из методички без редактирования. Можно конечно так и оставить, но немного некрасиво.
Кстати и часть про логин в линуксе через putty или иксы где-то раньше тоже мне показалась странной, но я только сейчас осознал, что она тоже скопирована из какой-то методички без изменений. Там речь идёт о дисплейном классе, а в книге вроде как предполагается самостоятельно установленный линукс.
Ну и до кучи, echo "" "$3" "$2" "$1" можно было бы заменить на printf, чтобы избежать неаккуратного пробела, но я думаю то за ошибку не считается, так что я не стал писать сразу.
ответить
Re: Том 1, стр 44
> Комментарии/ошибки/неточности лучше в одном комменте или отдельно?
Лучше отдельно. Далеко не всегда есть достаточно времени, чтобы обработать целиком поступившую простыню.
> Видно, что скопировано из методички без редактирования.
Есть такое, да. Это всё изначально пришло отсюда, там даже основная проблема не в том, в классе всё происходит или дома, а в том, что текст чёрт-те как написан, в 2009 году я ещё недостаточно насобачился на такие тексты. В планах стоит перетряхнуть весь этот текст целиком.
> можно было бы заменить на printf
Простите, вы что, издеваетесь? Посмотрите внимательно на окрестности этого фрагмента и прикиньте, как будет выглядеть, если туда впендюрить ещё и рассказ про printf(1) (особенно учитывая, что текст ориентирован на людей, не имеющих никакого представления о Си).
ответить
☞ From Anonymous (unverified) Fri Jan 24 22:02:21 2025 UTC
Том 1, стр 38
VI — это шесть римскими цифрами, а редактор таки vi
ответить
Re: Том 1, стр 38
Согласен, спасибо.
ответить
☞ From Anonymous (unverified) Thu Jan 23 01:22:16 2025 UTC
Том 1, стр 27
> flash-брелке
По идее правильно будет с буквой о, flash-брелоке. Я тоже удивился, что оно так склоняется, но вот так.
ответить
Re: Том 1, стр 27
"Брелоке" это старая норма, из времён, когда слово "брелок" ещё не укрепилось в русском языке, и подчинялось его правилам лишь условно. В настоящее время оба варианта официально определены, как равноправные, а неофициально вариант, где "о" не выпадает, уже почти стал архаизмом.
ответить
☞ From anon (unverified) Tue Jan 21 19:22:48 2025 UTC
Изменения в издании 2.9
Извините, а какие есть ключевые изменения в новом издании?
ответить
Re: Изменения в издании 2.9
"Ключевых" нет. В основном исправлены ошибки из эрраты. Из нового — доработаны некоторые параграфы про оформление кода, особенно 2.12.9 и 2.12.10. Ну и ещё много где есть по одному-два абзаца, всего не вспомнить.
ответить
Re: Re: Изменения в издании 2.9
Хорошо, спасибо
ответить
☞ From Anonymous (unverified) Fri Jan 17 04:56:40 2025 UTC
Стр 23, том 1
"без малого полвека" — уже не "без малого", а чуток больше полвека. Декабрь 1974 — появление Альтаира 8800, то есть ровно полвека - декабрь 2024.
ответить
Полвека ПК
Альтаир 8800 - ещё не привычный прибор, а нечто среднее между игрушечным однобитным Kenbak'ом и настольными миниЭВМ (в том числе и для "персонального", хоть и не домашнего, использования), которыми в 1970 уже никого не удивишь.
Изобретатель Kenbak'а со своим изобретением
Конечно, Альтаир запустил микрокомпьютерный хайп, который привёл в том числе и к
взлёту бизнеса трёх корпораций на буквы A, D и Мпоявлению ПК в привычном виде.ответить
Re: Полвека ПК
Альтаир уже вполне себе ПК. Я довольно долго ковырялся на эмуляторе с ним. Хотя IMSAI 8080 пожалуй лучше.
ответить
☞ From Anonymous (unverified) Thu Jan 16 16:57:24 2025 UTC
Адресная арифметика в паскале
На странице 14 написано "за исключением разве что адресной арифметики" в отношении паскаля, но в гостевой книге есть примеры с таковой на паскале.
Интересно, адресная арифметика появилась только в Free Pascal или в TP и Delphi уже была?
ответить
Re: Адресная арифметика в паскале
Насколько я помню, в TP 7.0 честной адресной арифметики ещё не было, хотя, например, динамические массивы, от которых сишностью пасёт на километр, были уже в 5.0.
Так или иначе, на том этапе обучения, на который рассчитана паскалевская часть книги, адресная арифметика скорее вредоносна. Придумать такие задачи, которые невозможно было бы решить без списков, при этом имея динамические массивы (хоть в каком их варианте), и при этом достаточно простые для начинающих, лично я не возьмусь; следовательно, если обучаемому дать доступ хоть к адресной арифметике "по-честному", хоть к тем динамическим массивам, которые тянутся ещё с TP 5.0, если не раньше — то всё, нормально работать с указателями он никогда уже не научится.
ответить
Re: Re: Адресная арифметика в паскале
Проблема с динамическим массивом понятна - если массив может ресайзить сама RTL, то нет особой мотивации изучать, как это делать вручную, но с адресной арифметикой в чём проблема?
Если ученик додумается, скажем, выделять при необходимости вдвое больше памяти и копировать массив в новую область памяти, а потом забывать старую, это тоже требует понимания указателя как идеи. Хотя я и не предлагаю специально этому учить раньше времени.
ответить
Re: Re: Re: Адресная арифметика в паскале
> Если ученик додумается, скажем, выделять при необходимости вдвое больше памяти и копировать массив в новую область памяти, а потом забывать старую, это тоже требует понимания указателя как идеи.
Нет, не требует. Скажем так, я видел людей, делающих вот это вот не задумываясь, но при этом натурально паникующих при виде списка или дерева. А вот человека, легко обращающегося со списками, но при этом испытывающего проблемы с массивами динамически определяемой длины, я не видел ни разу.
ответить
Re: Адресная арифметика в паскале
Адресная арифметика с
PChar
появилась в TP/BP7 и TPW вместе сPChar
, если мне не изменяет память.Борландовский странноватый пример к
StrEnd()
:function StrEnd(Str: PChar): PChar;
TP7.0 Programmer's Reference (9.9M)
ответить
Re: Адресная арифметика в паскале
Тут да, я вполне могу ошибаться. Дело в том, что я TP осваивал на версии 5.5, активно писал (за деньги) на 6.0, "семёрка" у меня была, но я, скорее всего, не использовал от неё новые возможности, поскольку к моменту её появления (в смысле у меня, а не вообще в природе) все мои проекты на Паскале уже существовали, новых я не начинал. Поэтому если там что-то такое появилось, я мог просто не обратить внимания.
ответить
Re: Re: Адресная арифметика в паскале
Между 6.0 и 7.0 вышел такой "новый" продукт под названием Turbo Pascal for Windows 1.0(и 1.5)
В нём, похоже, и появилось это расширение для удобства прямого вызова функций 16-разрядного WinAPI. Вместе с фирменным борландовским стилем кнопочек, которые рисовала BWCC.DLL
ответить
☞ From Anonymous (unverified) Wed Jan 15 13:52:47 2025 UTC
Второе издание, которое вы держите в руках
На странице 17 в параграфе "Структура книги и используемые обозначения" во втором абзаце написано: "Второе издание, которые вы держите в руках...", хотя речь идёт про электронное издание 2.9.
ответить
☞ From Anonymous (unverified) Wed Jan 15 11:49:08 2025 UTC
Аннотация
На второй странице учебника в аннотации дважды повторяется: "Первый том учебника содержит три части, охватывающие базис знаний о программировании как виде деятельности" в конце первого и начале второго абзацев.
В прошлом издании фраза была только в первом абзаце, поэтому, возможно, оно было добавлено во второй абзац случайно.
ответить
Re: Аннотация
Есть такое, да. Чуть позже заведу страничку для эрраты.
ответить