LINUX.ORG.RU

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

 , , ,

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

4

5

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

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

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

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

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

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

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

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

★★★★★

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

Нет. Я не понимаю, мы ходим по кругу.

Действительно по кругу ходим.

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

Ни по одному пункту не вижу, чтобы Паскаль в варианте FreePascal не подходил. Конечно, если живой подразумевает, что есть масса вакансий с ним, то тут проблема, но даже вакансии, между прочим, имеются! Если верить https://o-kurse.ru/blog/it-i-tsifrovye-professii/specialist-po-pascal/ то на сегодня (март 2026, дата статьи) на hh.ru имеются 95 вакансий с FreePascal и 300 вакансий с Delphi (вероятно не только их требуют). Конечно это небольшое число и вакансии могут быть мусорными, но всё же.

Для новичков пригоден. Если TP/BP/Delphi были пригодны в 90-х, то чего бы им сейчас не быть пригодным? В том числе для практических задач студента. Лабы считать точно получится. Т.к. FreePascal практический язык, то и интеграция с сями там налажена. Есть нужные типы данных и директивы компилятору с сишными соглашениями о вызове.

Достаточно распространён, чтобы находить в интернете решения проблем.

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

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

Курс в MIT (SICP) рассчитан на специфическую аудиторию: сильных студентов с развитым математическим мышлением. Это не для всех. И этот курс очень высокой интенсивности, быстро добирающийся до весьма сложных понятий без «бытового» программирования. Фактически, хотя он и позиционируется для студентов 1-го курса, но для успешного освоения желательно уже иметь хотя бы начальный опыт программирования.

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

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

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

Ну раз спустя 33 страницы всё ещё не видишь, то я уже ничем не могу помочь.

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

Но по удобству формошлёпия (как в хорошем, так и в плохом значении этого слова) к Delphi пока никто даже близко не приблизился. Стоит признать, как факт, что это, пожалуй, единственная полноценная RAD среда.

Спорно. Я бы назвал Clarion. Clarion for Windows, конечно же: здесь же речь идёт про ху... ээээммм... "гуЁвый интерфейс", верно??.. :)

Хотя, как по мне, и под DOS (CPD v2.1, Clarion Professional Developer) «Клаша» была хороша́. В хорошем смысле этого слова. :))

P.S. «Я так думаю!» © :)

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

повторюсь у Северенса ( есть диалог с Бомбалом) достаточно проработанная конь-прицепция как python/c (ну там как и у Зеда ещё и упор что под ругой (ba)sh+git ) - это типо аналог-англосферный нашего Столярова А.(В?). - бюджеты(больше в абсолютных чисел привлечённых стороников ибо популюс решает) иные поэтому более проработан и меньше индивидуальных экцентричностей

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

Вирт-языки ( без мусорки) - не подходят под современную свежую трудовую силу по причине большей стем-ориентированности - а это требует бОльших предварительных капитальных затрат от «профсоюза капитало-держателей»

если сравнивать Oberon-среду с Python+Repl (яркий пример scapy как инструмент который не есть отдельная компильнутость а расширеный интерпретатор python'а подточенный по задачи «исправления» сети) то отличия не большие но значимые для публики почти как acme vs мыcode

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

ибо популюс решает

А точно не «охлос»??.. ;))

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

в (до)гон

https://en.wikipedia.org/wiki/Charles_Severance_(computer_scientist) py4e и там же https://www.cc4e.com/

И следовательно https://www.dr-chuck.com/ вполне идеальный http://stolyarov.info/ для liksys ;(

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

Для него и макра функция - чел самый успешный облучатель при этом

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

сразу можно будет приучить к правильному пониманию как устроена работа программы?

сразу с отладчика начать?

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

сразу с отладчика начать?

Да!.. Напишите сначала отладчик!.. ;P ;))

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

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

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

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

Курс в MIT (SICP) рассчитан на специфическую аудиторию

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

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

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

Печально в таком подходе то, что любой другой ЯП потребует полной переделки курса, т.е. победит Rust и курс для C++ выбрасывается, а выбравший в качестве базового ЯП Go преподаватель не сможет опереться на курс с базовой Java.

Либо из любого другого ЯП в качестве базового лепим я-ля уродливый аналог Паскаля и потом доучиваем и… ПЕРЕУЧИВАЕМ, например, писать в Си i++, а не i=i+1;.

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

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

Дык, вроде в Паскале Inc() имеется? И емнип - испокон веков, не?

bugfixer ★★★★★
()
Ответ на: комментарий от 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
()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)