LINUX.ORG.RU

Вышло издание 2,92 книги «Программирование: введение в профессию» А. В. Столярова

 , , ,

Вышло издание 2,92 книги «Программирование: введение в профессию» А. В. Столярова

3

4

Тихо и незаметно 30 апреля 2026 года вышло издание 2.92, которое наконец включает в себя читаемый текстовый слой.

Исправлены опечатки и ошибки, обнаруженные в предыдущих изданиях, в частности 2.91 (где введена кликабельная навигация) и 2.9 (первое чисто электронное издание).

Книга предназначена для самообучения основам программирования и в отличии от многих других изданий предполагает фундаментальный подход - вначале основы дискретной математики и использования GNU/Linux или BSD с командной строкой, затем паскаль, потом ассемблер и только потом Си, системное программирование и альтернативные парадигмы (функциональное, логическое и так далее).

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

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

>>> Ссылка на страницу издания
>>> Альтернативные способы скачивания

>>> Новость на сайте автора

★★★★★

Проверено: dataman ()
Последнее исправление: dataman (всего исправлений: 9)
Ответ на: комментарий от liksys

персонально для тебя сделать разбор этого безграмотного бреда в прошлом треде

А можно ссылку? Достаточно на одно ключевое сообщение.

Интересно посмотреть, потому что я скорее согласен с конкретным приведённым отрывком.

kaldeon ★★
()
Ответ на: комментарий от kaldeon
Ответ на: комментарий от liksys

нормальный «боевой путь»

учитывая последующую интеграцию с западным миром в 80-90-ых министр оказался дальновиднее

Welle
()
Ответ на: комментарий от Welle

посмотри на его сменьщика и его деток(и их мать) - те ваще своим трудом почти Аэрофлот превозмогли

вот что знатит талант правильного происхождения

qulinxao3 ★☆
()
Последнее исправление: qulinxao3 (всего исправлений: 1)
Ответ на: комментарий от Welle

Министр закопал технологическую сферу, в которой совок мог поконкурировать с США, учитывая, что единых стандартов в те времена не было и вполне можно было по крайней мере европу посадить на свои машины. А так да, пришлось догонять. Дальновидность my ass.

liksys ★★★★
()
Ответ на: комментарий от zabbal

Сейчас на Озоне или Яндекс-маркете новый — от 19-20 тысяч

Охренеть! А кому они нужны и зачем?

Тем, кому нужно печатать много служебных бумажек. Главное достоинство — дешёвые расходники. Плюс текст более стоек, чем у струйного, нет канцерогенного порошка лазерного, нет нестойкой термобумаги. Я зимой приценивался на Авито к принтерам за 1000 р. (новый 15-20 тысяч), которые лет по 10 проработали в пожарной части и в ДЭЗе. (В итоге купил 30-летний принтер за 500 р.)

question4 ★★★★★
()
Ответ на: комментарий от zabbal

Ты с ним не общался я так понимаю? :)

Если считать общением в комментариях на ЛОРе, то общался. Ну и у меня нет цели именно исправить учебник, ибо я там точно не исправлю. Я просто выражал своё мнение и что нужно исправить. На этого автора больше публичное обращение воздействует, и, возможно он это сделает.

Feonis ★★★
()
Ответ на: комментарий от Welle

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

liksys ★★★★
()
Ответ на: комментарий от liksys

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

Welle
()
Ответ на: комментарий от Welle

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

Не надо, пожалуйста, искать оправданий. Министр - кретин. Это объективный факт хотя бы с точки зрения исторической перспективы.

liksys ★★★★
()
Ответ на: комментарий от liksys

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

Welle
()
Ответ на: комментарий от Welle

со стороны кажется, что систему постепенно закапывали с 50-ых

Те самые колхозники, между тем.

liksys ★★★★
()
Ответ на: комментарий от liksys

Определения вводятся для какой-то цели, а не просто так. В частности, определение побочного эффекта Столяровым введено, чтобы объяснить почему while((*dest++ = *src++)); вот так писать не надо. Если определять ПЭ как любое модифицирующее действие, то оно будет в любом случае и объяснить не получится.

Xenius ★★★★★
() автор топика
Ответ на: комментарий от liksys

Спасибо. По поводу побочных эффектов, цитирую Википедию 1:

In computer science, an operation or expression is said to have a side effect if it has any observable effect other than its primary effect of reading the value of its arguments and returning a value to the invoker of the operation.

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

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

Но тогда возникает вопрос, почему Столяров выбрал в качестве примера C и C++, в которых начиная с C89 есть void вместо возвращаемого значения.

любое модифицирующее (если угодно, «разрушающее») действие в самом деле оказывается побочным эффектом

Видимо, речь идёт о том, что если использовать модифицирующее действие (=, *= или ptr++) в иначе чистом выражении, то оно действительно будет побочным:

int mul(int x, int y) {return Val = x * y;}

Вопрос у меня к слову «любое». Если бы здесь возвращаемым типом был void, то побочного эффекта бы не было.

kaldeon ★★
()
Последнее исправление: kaldeon (всего исправлений: 4)
Ответ на: комментарий от Via_Sicka

Всё верно. СССР поначалу отрёк кибернетику как «буржуазную псевдонауку», оставшись позади, в то время как она цвела тысячами цветов в американских университетах и превращалась в современную информатику.

Чисто по секрету зашёл сказать, что кибернетика, которая «продажная девка буржуазии» не имеет ничего общего с информатикой (aka Computer Science). Та кибернетика это очередное псевдофилософское учение, призванное объяснить всё вообще и почему нужно кормить адептов кибернетики в частности. Но в СССР уже была такая штука — марксизм-ленинизм, вот его приверженцы конкурентам сами всё-всё объяснили.

ugoday ★★★★★
()
Ответ на: комментарий от ugoday

Даже не знаю что поставить, ☕️☕️ или ☺️. Убрать одно из двух — потерять смысл.

kaldeon ★★
()
Ответ на: комментарий от Bad_ptr

«int 21h/31h хватит всем!» (с) Билл Гейц

frob ★★★★★
()
Ответ на: комментарий от ugoday

совсем ненадолго

В «Философский словарь» 1954 года[8] издания попала характеристика кибернетики как «реакционной лженауки» Реабилитацией кибернетики в СССР можно считать 1955 год, когда в журнале «Вопросы философии» (№ 4) вышла статья академика С. Л. Соболева, А. И. Китова и А. А. Ляпунова «Основные черты кибернетики».

а в 58-ом издают Винера, как минимум, в трех издательствах

а воплей как будто прям столетние гонения были

как с «лысенковщиной» - пара лет (конец 40-ых - нач. 50-ых), (54-64 - параллельное сосуществование обоих лагерей), а отечественная биология до сих пор не может догнать из-за неё западные страны (встречап подобные высказывания)

Welle
()
Ответ на: комментарий от VIT

Зачем преподавателю писать код?

И вправду, зачем автору учебника физики знать какую-то там физику?

Ему надо этому вас научить, он не за код деньги получает.

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

zabbal ★★★★☆
()
Последнее исправление: zabbal (всего исправлений: 1)
Ответ на: комментарий от kaldeon

Я понял. Когда мы пишем Val = x * y в любом месте, то у оператора = есть два эффекта:

  1. Возврат значения
  2. Запись в переменную

По определению Википедии побочным эффектом является что угодно, кроме “reading the value of its arguments” и “returning a value to the invoker of the operation.”

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

Для сравнения, если мы возьмём выражение Val := x * y из языка Go, то здесь нет возврата значения, значит и понятие побочного эффекта неприменимо.

Подытожить можно так: Си сделал побочные эффекты неустранимыми, дав любому изменению право на возврат значения, тогда как ФП-языки сделали побочные эффекты неустранимыми, убрав все операции без возврата значения.

kaldeon ★★
()
Последнее исправление: kaldeon (всего исправлений: 1)
Ответ на: комментарий от zabbal

Я бы всё-таки осторожнее был с выводами и высказываниями. Хороший преподаватель должен уметь учить. Как он это делает есть его профессиональная хитрость, опыт, мастерство, если хотите. Знать свой предмет очень важное свойство, спору нет, а вот насколько глубоко, как эти знания преподносить, как вообще себя вести с учениками, это уже вещи обсуждаемые и для каждого преподавателя индивидуальные. Можно учить программированию не программируя самому? Думаю, что можно. Возможно вы имеете другое мнение, я спорить не буду.

VIT ★★
()
Ответ на: комментарий от Xenius

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

liksys ★★★★
()
Ответ на: комментарий от zabbal

и при этом считать что может поучать других

сейчас такое время что каждый может

Welle
()
Ответ на: комментарий от VIT

Можно учить программированию не программируя самому? Думаю, что можно.

А как это, пардон, реализуемо чисто технически? Раз не умеет сам, то значит должен пользоваться какими-то готовыми материалами - книгами, конспектами и т. п. И при этом должен быть настолько сказочно тупым чтобы (в отличии от собственных студентов) в процессе работы с этим материалом ничему не научиться. Это же описание примитивной электронной бубнилки из эпохи до LLM, а не живого человека.

как вообще себя вести с учениками

https://www.linux.org.ru/search.jsp?q=%D1%83%D0%B1%D0%B8%D1%82%D1%8C&range=COMMENTS&interval=ALL&user=Croco&_usertopic=on&sort=DATE&section= - как-то так судя по излюбленой манере общения Столярика.

zabbal ★★★★☆
()
Последнее исправление: zabbal (всего исправлений: 1)
Ответ на: комментарий от Welle

а воплей как будто прям столетние гонения были

Столетнии гонения ещё заслужить надо. Философскую теорию всего пытаются изобрести постоянно (потому как уж очень дело хлебное), но взлетают они редко. Вот, когда я студентом был, все околонаучные книжные были завалены литературой про синергетику. О ней хоть ещё помнят?

ugoday ★★★★★
()
Ответ на: комментарий от ugoday

литературой про синергетику. О ней хоть ещё помнят?

Наверняка встречается в описании бижутерии и косметики - слово-то красивое, духовитое: сразу ясно что ценник можно на пару процентов поднять ;)

zabbal ★★★★☆
()

проплаченные Столяровым «критиканы» целенаправленно поднимают тему в топ на 1 место

Welle
()
Ответ на: комментарий от zabbal

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

VIT ★★
()
Ответ на: комментарий от wandrien

Давай на чистоту, в программировании есть только целые числа.

BceM_IIpuBeT ★★☆☆☆
()
Ответ на: комментарий от monk

Я на Лисп ушёл из-за расстройства на Borland C++

Во все тяжкие. Хоть не Common?

BceM_IIpuBeT ★★☆☆☆
()
Ответ на: комментарий от kaldeon

запись в переменную — это и есть побочный эффект.

*запись в уже существующую(глобальную) переменную

BceM_IIpuBeT ★★☆☆☆
()
Последнее исправление: BceM_IIpuBeT (всего исправлений: 1)
Ответ на: комментарий от kaldeon

Подытожить можно так: Си сделал побочные эффекты неустранимыми

При чем тут Си? Си — это отражение процессора. Процессорные архитектуры — это один большой побочный эффект. Язык без рантайма не может далеко уйти от железа.

BceM_IIpuBeT ★★☆☆☆
()
Ответ на: комментарий от Welle

проплаченные Столяровым «критиканы»

Куда подойти за деньгами? Могу ещё почитать более подробно и ещё накинуть.

Feonis ★★★
()
Ответ на: комментарий от BceM_IIpuBeT

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

kaldeon ★★
()
Ответ на: комментарий от Welle

проплаченные Столяровым

Сходи на какой-нибудь ютуб, или соцсеть типа дзена и почитай комменты под любым актуальным и популярным видео или новости. Увидишь, как работают проплаченные боты под копирку. Тут совсем не похоже — слишком бодро — явно не проплаченные, а идейные.

CrX ★★★★★
()
Ответ на: комментарий от CrX

уровень разный: тут люди с высшим образованием

а палятся они на том, что альтернативы Столярову не предлагают

Welle
()
Ответ на: комментарий от Welle

а палятся они на том, что альтернативы Столярову не предлагают

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

kaldeon ★★
()
Последнее исправление: kaldeon (всего исправлений: 2)
Ответ на: комментарий от CrX

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

Welle
()
Ответ на: комментарий от kaldeon

Не совсем понимаю, что это изменило бы. Но в функциональщине вообще нельзя менять значения переменных.

BceM_IIpuBeT ★★☆☆☆
()
Ответ на: комментарий от kaldeon

ЦА автора - человек ничего не знающий в программировании

и вот такой человек заходит на лор и видит что в топе «Программирование: введение в профессию» А. В. Столярова, заинтересовывается, скачивает, видит «сербский формат» pdf и идёт на сайт автора за предыдущим изданием с нормальным форматированием. там с головой погружается в идеи автора и человечество получает ещё одного адепта столяровщины

Welle
()
Ответ на: комментарий от liksys

Логику можно обойти:

while (*(p++) = *(q++));

Это полностью не опровергает аргумент, но значительно ослабляет его: если практическое решение существует, какая разница?

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

if (val) {
    print("val is non-NULL");
}

if не проверяет на NULL явно, но иногда данный стиль допустим. Тогда как пример с while — это просто чистая случайность, в которой удачно сошлись все пазлы.

Разница такая же, как между фразами «если шеф — звони» и «косил косой косой косой».

Я думаю, что упоминание понятия побочного эффекта (в любом определении) здесь вообще не поможет. Это похоже на желание учить детей считать, начиная с арифметических аксиом, дескать иначе неверное впечатление о числах сложится.

kaldeon ★★
()
Последнее исправление: kaldeon (всего исправлений: 3)
Ответ на: комментарий от VIT

Вы сейчас спрашиваете, как заслужить доверие.

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

zabbal ★★★★☆
()
Ответ на: комментарий от Welle

и человечество получает ещё одного адепта столяровщины

Не обязательно - туда же не исключительно дураки заходят: по ошибке и нормальный может заглянуть иногда :)

zabbal ★★★★☆
()
Ответ на: комментарий от Xenius

while((*dest++ = *src++)); вот так писать не надо

Кому не надо ? Если вам не надо, не пишите. Очень лаконичная запись копирования null terminated буфера памяти. Одного взгляда хватает, чтобы понять что здесь происходит. Или вам привычнее, чтобы индекс бежал по буферу памяти, как по массиву. Ну так если компилятор не оптимизирует, то это менее эффективно. Или чтобы язык прятал от вас детали происходящего, как например в паскале происходит с присваиванием строк ? Тогда добро пожаловать в С++, но только здесь вы царь и бог, и сами решаете что и как скрыть, чтобы в конечном счёте логика вашей программы выглядела максимально лаконичной и понятной даже спустя N лет после её написания. И всё это практически с около нулевым оверхедом по памяти и CPU.

chikanuc
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.