LINUX.ORG.RU

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

 , , ,

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

4

6

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

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

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

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

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

>>> Ссылка на страницу издания

>>> Альтернативные способы скачивания

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

★★★★★

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

и… ПЕРЕУЧИВАЕМ, например, писать в Си i++, а не i=i+1;

А можно примерно понять разницу на уровне компилятора между этими двумя вариантами, что это такая важная часть, требующая переучивания?

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

И почему не i+=1, как все адекватные люди?

А вот так никто «адекватный» как раз не делает.

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

Когда-то, во времена К&R, вариант i++ был быстрее.

Он и сейчас никогда не медленнее, даже в сравнении с i += 1.

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

Это для Go адекватно, с его 12 вариантами оператора присваивания. Но вот лично я сомневаюсь, что вначале их все сразу не начнут лепить не по делу или не будут путаться.

Это я к вопросу, не начинать ли с Го. Вот только начинающие даже концепцию a:=a+6; не с ходу осмысливают.

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

Между inc(), i:=i+1 и i++ где меньше синтаксическая разница для человека?

inc() и ++i оба (обе?) семантически эквиваленты next(), а вот i+=N - в общем случае нет.

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

только начинающие даже концепцию a:=a+6; не с ходу осмысливают

Это да, лучше начинать с декларативного чего-нибудь.

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

В этом смысле академический «мёртвый» Паскаль даже предпочтительнее, поскольку после него не будет иллюзий, что знаешь «боевой» ЯП после вводного курса программирования.

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

Но я не понимаю, что мешает сразу на паскале и какие-нибудь численные методы писать и манипуляции данными и тд писать после базового курса программирования (например первая половина первого тома Столярова)?

И не знаю чем таким liksys упоролся, что ему не пофиг на определение побочных эффектов из книги.

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

Осталось понять, причём тут Питон?

При том, что питон отвечает всем перечисленным требованиям. Ты его не знаешь, поэтому тебе это не очевидно.

И какая связь между интеграцией с Си (что бы это ни значило) и ОБУЧЕНИЕМ?

Я уже раз 50 объяснял, в том числе - персонально тебе, но ты необучаем. Связка питона + си:

  • Показывает, чего стоят высокоуровневые структуры и приучает думать в контексте их оптимального использования
  • Помогает перейти от алгоритмов на высокоуровневом питоне к низкоуровневому си, поскольку у человека уже есть понимание типичных управляющих конструкций императивного языка и умение ими пользоваться
  • Демонстрирует современный подход при написании софта, где в рамках одного проекта пользуются разными языками для разных частей.
liksys ★★★★
()
Ответ на: комментарий от mister_VA

Судя по публичным учебным материалам, ссыль на которые тут приводилась, в этом курсе ЯП вообще не важен

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

В этом смысле академический «мёртвый» Паскаль даже предпочтительнее

Нет. Ты просто ищешь оправдания.

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

Не такой уж паскаль и мёртвый

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

И не знаю чем таким liksys упоролся, что ему не пофиг на определение побочных эффектов из книги.

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

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

И не знаю чем таким liksys упоролся

Давно уже не важно, чем именно... ;))

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

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

а зачем искать работу на хедхантере? нормальные люди ищую работу на западные компании, и вот как раз в западных компаниях паскаля выше крыши, и ты можешь выбрать какой угодно домен, от бразильского финсектора до немецкой промышленности. Это если говорить о наличии работы на конкретном языке и меркой циферок. А так на работу берут людей за умение решать конкретную бизнес задачу, а не за его технологический стек. Моя практика показывает, что большинство задач закрывает умение работать с ексель таблицами, а не йоба технологии, и продажа так называемого «програмного продукта или комплекса» это прогрев гоев на бабки, потому что главный програмный продукт в этом мире, компания майкрософт выпустила в 1985 году.

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

Во времена компиляторов без оптимизации? А сейчас то разницы нет.

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

как раз в западных компаниях паскаля выше крыши

Дремучего легаси, ты хотел сказать - примерно в таком же соотношении, как и в РФ. Ни разу не мертвый язык, ага.

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

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

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

Те, кто не ищет никакой работы, пишут на любом языке, какой им больше нравится. Или больше не пишут вообще.

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

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

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

большинство языков паскалеподобных Ада жива и приносит бабки, Спарк жив и приносит бабки

Ада заметно отличается от паскалей. И синтаксисом, и прочим.

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

никто ничего не разрабатывает

Уже одно это - бред. Остальное даже читать не буду, нет смысла, и так всё понятно.

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

Сходи на HH и сравни количество вакансий для питона и для паскаля.

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

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

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

Ты считаешь, что отличать процедуры от функций не нужно? Ну или можешь считать отличать «грязные» функции от «чистых» если от термина «процедура» тебя корёжит. Но главное само понимание, а не конкретные слова/термины.

но оголтело защищаешь.

Почему оголтело? Если я не согласен со Столяровым в каких-то вопросах, я его не защищаю. Я просто не понимаю, почему ты так прицепился к этому нюансу.

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

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

Ты совсем дурачок что ли? Было уже сказано: это показатель живости языка. Живость языка - один из факторов выбора питона.

Ты считаешь, что отличать процедуры от функций не нужно?

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

Я просто не понимаю, почему ты так прицепился к этому нюансу.

Потому что это нюанс, на котором строится вся схема обучения столярова, и уже в этом месте она - говно.

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

Было уже сказано: это показатель живости языка. Живость языка - один из факторов выбора питона.

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

тащить выдуманные правила из паскаля в си.

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

Потому что это нюанс, на котором строится вся схема обучения столярова

С чего бы прямо вся?

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

Для живости надо смотреть показатель коммитов в код на том или ином языке на всяких гитлабах и подобных и включить в исследования так же и self-hosted проекты.

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

Суть в том

Скажи вот мне пожалуйста, кем ты работаешь? Тебя научили столяровские опусы хоть чему-то, чтобы ты мог монетизировать эти знания?

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

Тебя научили столяровские опусы хоть чему-то, чтобы ты мог монетизировать эти знания?

Не в бровь, а в глаз. Мне бы хотелось увидеть хотя бы одного(!!) объективно успешного последователя столяровских идей. А то самому ему вон даже побираться приходится, так себе эталон.

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

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

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

Остынь. Ты путаешь университетское образование с курсами. В университетах ВСЕГДА изучали больше, чем требуется для профессии. Всегда. На то и университет. И вымершие языки изучают, если на то пошло. Если какой-то препод решил, что полезно дать какой-то язык – это его ПРАВО, это его методика. Читай «Закон об образовании в РФ» и не мороси. Кто-то для обучения написал Паскаль, а кто-то (тоже для обучения) написал Бейсик. Целые языки написаны для обучения! Да ладно языки – целые операционные системы написаны Специально_Для_Обучения. И десятилетиями вдалбливались в головы студентам. И студенты потом (о ужас!) сами писали велосипеды, линухи разные, вместо того чтобы идти и работать. Не тебе решать, кто и что должен делать. Каждый сверчок знай свой шесток.

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

По-моему вы оба по-своему правы.

Я полностью согласен, что суть университета — не дать навыки для монетизации, а обучить всесторонне, на то оно и высшее образование, а не ПТУ, что воспитывает не специалистов, а… ну наверное верно было бы сказать интеллегенцию, но это слово в наше время обросло какими-то совсем лишними коннотациями.

И при этом и Столяров и кто угодно, конечно, имеет право использовать ту методику, которую хочет. НО! У него ж вроде тут это право никто и не предлагал отнимать. Выдвигалась критика применяемой методики. С разных сторон. И во многом, по-моему, по существу. И она вовсе не сводится исключительно к тому, что тот или иной язык дескать мёртвый — это же лишь часть.

А возвращаясь к специальности и навыкам для зарабатывания денег… Да, университет не должен ограничиваться исключительно этим, более того он даже должен давать знания сверх этого, НО, и такие навыки он таки должен давать тоже в итоге. Если он их не даёт совсем (разница с «даёт их, но и много чего „лишнего“» принципиальная), то он не справляется со своей задачей.

CrX ★★★★★
()

Каково мнение уважаемого автора на ИИ ? Новые перлы есть или пока можно освежить вступление?

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

Остынь.

И не нагревался.

Ты путаешь университетское образование с курсами.

Нет. Любое образование получается ради практической пользы. Предполагается, что университет дает базис, позволяющий студенту работать по специальности. Но внутри многих университетом выстроен странный образовательный процесс, который превратил образование в голландский штурвал самоцели. Преподаватели в них окуклились в манямирке и вместо того, чтобы прислушиваться к фидбеку из индустрии (а фидбек таков, что студенты на выходе не готовы работать совсем), начинают греметь регалиями и кричать, что де они знают, как учить, а всем остальным надо молчать.

Потворствуя пыльным грелкам для стула, ты ухудшаешь уровень образования в РФ.

Если какой-то препод решил, что полезно дать какой-то язык – это его ПРАВО

А мое право, как источника его зарплаты, спросить с него за качество его работы.

Целые языки написаны для обучения!

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

целые операционные системы написаны Специально_Для_Обучения

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

Каждый сверчок знай свой шесток.

Тогда зачем ты влез в дискуссию? Сиди помалкивай.

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

Любое образование получается ради практической пользы

ты путаешь vocational training и свободные исcкуства :(

:)(

https://www.google.com/search?q=vocational vs liberal arts education

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

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

Реальные ОС для 16-разрядных ЭВМ физически не могут быть слишком сложны.

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

Ни по одному пункту не вижу, чтобы Паскаль в варианте FreePascal не подходил.

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

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

эээ очень забавное определение реальной ос :)

в целом 16 бит достаточно что-бы взорвать мозг какой либо вырвиглазной реализацией - в том числе оси - если вполную расчехлить все изыски Древних - в частности начиная с самомодифицирующего кода(данные всегда)

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

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

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

Потому что MINIX и книга написаны во второй половине 1980-х, когда ещё использовались 16-разрядные ЭВМ и простые системы для них, вроде RT-11.

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

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

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

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

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

Ты просто не нырял в разгул(хуже назгула) кутежа тех(ещё до Кнута) лет когда и 4к октета памяти это рай

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

Всё еще понятна и обозреваема в рамках учебного курса.

liksys ★★★★
()

https://ibb.co/jF9Nvg3

Не знаю, как учит программированию Столяров, но я точно знаю, как НЕ НАДО этого делать. Книжка называется «Паскаль для ШКОЛЬНИКОВ», автор Ушаков. Ничего не предвещало беды и было нормально до первых заданий. А что в них не так? А ты сидишь как дибил и пялишься в задание, не понимая как его решить. Просто не можешь написать код, не можешь составить алгоритм. А почему? А потому, что все предыдущие объяснения автора, все примитивы, не дают тебе нужного опыта… Кроме того, автор для заданий использует такую дичь, от которой начинает болеть голова. Заканчивается это тем, что смотришь в книгу, нихера не понимаешь как надо сделать, психуешь от злости, задаёшь 1000 вопросов клоду, и уже отчаявшись просишь написать его код. Он пишет, ты смотришь и ахиреваешь. Ахиреваешь и спрашиваешь себя «А как я до этого всего мог додуматься?!» А никак.

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

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

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

я точно знаю

Это вряд ли... :))

Иначе бы не путал книжку из категории «ненаучно-непопулярная литературка» c учебником, и не ожидал бы чего-то серьёзного от откровенно «бульварного чтива»... :)

И без ии ты до его выполнения не додумаешься

«Интеллект» искусственный помогает там, где недостаёт интеллекта «природного»... :))

Надо уметь именно думать

Да, именно так!.. :)) А иначе «смотришь в книгу, нихера не понимаешь как надо сделать»...

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

Паскаль для ШКОЛЬНИКОВ

Хм, есть ещё Попов с тем же названием.

https://ibb.co/jF9Nvg3

А сразу дать текстом слабо́́? Возьми любой OCR и вставляй текстом. Ладно, сделал это за тебя, правда Алиса переформулировала, но и так понятно:

Задание 5.4. Ввести три числа A, B, C и определить максимальное из них. Требуется нарисовать блок-схему алгоритма и написать программу.

Для этого понадобится if ... then begin ... end else begin ... end; Хочешь сказать до этой задачи не было описано как пользоваться if?

Задание 5.5. Ввести четырехзначное целое число и определить, является ли оно палиндромом (например, числа 6666 и 3223). Для выделения разрядов числа используются операции div и mod.

Чуть сложнее. Но с div и mod разбираешь число на разряды, которые можно засунуть в массив [1..4] или переменные a b c d какие-нибудь, если массивы ещё не изучали. Дальше просто if и ещё понадобится знать and

Задание 5.6. Ввести три числа A, B, C. Если ни одно из чисел не равно нулю, то в переменную K записать среднее арифметическое трех чисел.

Опять же, просто if и and и одно выражение с присваиванием.

Задание 5.7. Ввести значение X и, используя график функции, определить значение Y. Требуется заполнить блок-схему алгоритма.

Вот это без сам графика не получится. Если график дан например в картинке и нужно её распознать в коде на паскале — это уже довольно интересное задание. Но мне кажется, там как-то попроще.

задаёшь 1000 вопросов клоду, и уже отчаявшись просишь написать его код

А где ты берёшь Claude? Есть бесплатно?

Он пишет, ты смотришь и ахиреваешь. Ахиреваешь и спрашиваешь себя «А как я до этого всего мог додуматься?!» А никак.

Неужели так сложно? Там должна получиться пара-тройка строчек. Сейчас попробую скормить эти задания Claude в duck.ai, там правда старый 4.5.

Но книга Столярова написана вроде несложно, попробуй, только вводную часть тоже прочитай. Я-то читал уже зная паскаль, не могу 100% оценить.

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

Я посмотрел книгу, там if и логика рассказывается до этого задания, судя по содержанию. Решается это вот так:

program max_abc;
var a, b, c: integer;
begin
	write('Enter A B C: ');
	readln(a, b, c);
	write('Maximum number: ');
	if (a >  b) and (a >  c) then writeln(a);
	if (b >= a) and (b >  c) then writeln(b);
	if (c >= a) and (c >= b) then writeln(c)
end.

В программах не должно быть не-ascii символов. Если требуется ввод кириллицы например, то её надо подгружать из внешнего файла с локализацией. Скажи мне пожалуйста, в чём тут сложность? Вроде же элементарно решается с логическим оператором and, if и операциями сравнения.

По стилю: насколько я помню, Столяров рекомендует выносить на отдельную строчку тело if, while и тд, даже если оно из одного оператора или пустое. Но в данном случае тут чёткая повторяющаяся структура и мне кажется, что она лучше читается на идущих подряд строках.

Xenius ★★★★★
() автор топика
Последнее исправление: Xenius (всего исправлений: 3)
Вы не можете добавлять комментарии в эту тему: топик перемещен в архив.