LINUX.ORG.RU

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

 , , ,

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

3

4

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

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

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

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

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

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

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

★★★★★

Проверено: dataman ()
Последнее исправление: dataman (всего исправлений: 9)

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

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

Вот что было сказано про издание 2,9:

Издание авторским произволом получило номер 2,9 (два и девять десятых). Предполагается, что последующие версии, если когда-нибудь появятся, получат номера 2,99, 2,999 и т.д., т.е. номера электронных изданий будут арифметически всё ближе и ближе к тройке, но равными тройке станут лишь в случае, если книга когда-нибудь будет снова напечатана на бумаге типографским способом.

Всякие 2,91, 2,92 - незначительные изменения (добавление кликабельного оглавления и корректного текстового слоя, а также исправления найденных на момент публикации опечаток).

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

Извиняюсь, не согласен, до интернета я например basic изучал первым языком, и не просто basic, а gw-basic и БЭЙСИК на МК85, именно на МК85 он был первым

1 программа была, пиксель по диагоналям отскакивал от бортов и паспорт на МК85

все… больше ничего, и мне 10 лет (92 год) и никого..

изучай как хочешь

и только потом ZX SPECTRUM / Z80 и журналы, и ассемблер

а тооооолько потом либо Си, либо Паскаль, я выбрал Си

а вы тут рассуждаете что паскаль маст хэв… да нет, ничего подобного и я не один такой уникум, нас дофига было таких вообще что паскаль должен быть первым вообще как то не вижу веских причин

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

так там надо объяснять с начала термина вычисление/Тюринг/Черч/Конечные автоматы/Синтаксис ну то есть полностью переучивать

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

Я считаю, что это очень показательно. @Xenius прямо таки настаивает на том, что именно понимание по столярову дает БАЗУ, и только так можно писать хороший код.

Сам при этом программировать не умеет вообще. Буквально это.

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

Ну или хотя бы лисп-машины.

Emacs запусти - вот тебе и будет lisp-машина.

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

Я принципиально не хожу сраться со столяровым на его площадке

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

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

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

Он и с лора-то ушел потому что его тут слишком часто носом тыкали в его дурь, а забанить «обидчиков» возможности нет.

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

людей которые не очки драяли, а книжки читали

Мне даже интересно стало какая травма породила столь развесистые метафоры? Ты читал книжки сидя на обдристаном толчке? Или ты сыночка-корзиночка за которой до сих пор мамка дерьмо подтирает?

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

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

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

Было бы неплохо, чтобы упомянутые паскалисты, помимо чтения книжек, писали какой-нибудь полезный код.

Судя по их комментам в треде после создания DoubleCommander они достигли совершенства поэтому написание чего бы то ни было ещё утратило всякий смысл :)

Что само по себе довольно иронично - даже сам Вирт не стал зацикливаться на пасквиле, а двинулся дальше к Modula(-2) и Oberon. Причём в отличии от благополучно загнувшегося фронта пасквиля, для первого даже есть поддержка в GCC: https://gcc.gnu.org/onlinedocs/gm2/ - потому что писать компиляторы это воистину не языком про побочные эффекты на форумах трепать.

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

Какая разница что говорит дурак, не разбирающийся в программировании, про языки программирования? Это как автора новости про побочные эффекты слушать - мнение-то у него есть, только оно ценности никакой не представляет.

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

Какая разница что говорит дурак

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

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

Здесь речь идет исключительно об операциях и выражениях, о функциях нет ни слова.

Разницу между операцией и функцией я понимаю, а что это опровергает — не очень.

Приведу пример:

print("hello\n"); // returns int
exits(nil); // returns void

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

Во второй же строке возвращения результата нет, значит и побочного эффекта [выражения с возвращающим значением] нет.

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

Интересная философия. Думаю, г-н Столяров не оценит позицию Дэниела Инголлса, что: «Операционная система — это всё, что не поместилось в язык. Быть её вообще не должно».

Via_Sicka
()

Столько тут рекламмировали Столярова почитать, руки недоходили, скачал на телефон, опять не тянет, формат pdf, всё одной простыней.

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

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

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

Разницу между операцией и функцией я понимаю, а что это опровергает — не очень.

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

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

вообще что паскаль должен быть первым вообще как то не вижу веских причин

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

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

Вот просто так Паскалю как ЯП учить смысла нет и никто его, окромя школьных училок, не учит, и они учат ему около 20 уроков за всю школьную жизнь человеческой личинки. Паскаль просто УДОБЕН в качестве МЕТОДИЧЕСКОГО НАГЛЯДНОГО материала при ВВЕДЕНИИ в программирование. Удобен он своей ясностью и простотой, возможностью без невнятных для начинающих объяснений начать писать и запускать реальные программульки на реальном компе.

Возьмём для сравнения упомянутый тут Go (пусть будет «живой» Go завместо «мёртвого» Паскаля). Первая прога на Go:

package main
import "fmt"
 
func main() {
    fmt.Println("Hello!")
}

Объяснение к ней: «Программа на языке Go определяется в виде пакетов. Программный код должен быть определен в каком-то определенном пакете. Поэтому в самом начале файла с помощью оператора package указывается, к какому пакету будет принадлежать файл.»

Какой будет первая реакция начинающего? Правильно, «ЧЁ?!» Т.е. что такое пакет и зачем он нужен? В руководстве, которое я цитирую, что такое пакеты объясняют в гл. 6. До этого «пакет», «import» и «fmt.» – это такая магия.

А насколько «удобно» для начинающих ВОСЕМЬ способов объявить переменную?! 12 операторов присваивания? Просто широченное поле наплодить ошибок, которые не выявляются беглым взглядом опытного препода.

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

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

А как определение оно без контекста неполноценное.

Данное определение («Несовершеннолетними признаются лица, не достигшие 18 лет.») полноценно, поскольку «совершеннолетний» и «дееспособный» не тождественные понятия в юриспруденции.

И таки ОПРЕДЕЛЕНИЯ есть область произвола автора опуса. Дурным тоном является давать новые определения устоявшимся терминам или вводить новые термины, тождественные имеющимся.

Так что определения «Несовершеннолетними признаются лица, не достигшие 18 лет.», «Несовершеннолетними признаются лица, не достигшие 13 лет.», «Несовершеннолетними признаются лица, не достигшие 20 лет.» нельзя называть истинными или ложными, это ОПРЕДЕЛЕНИЕ термина в некой юрисдикции.

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

И у него получается рекурсия: процедура - это последовательность действий без побочного эффекта, а побочный эффект - это что-то, чего не бывает в процедурах.

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

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

Так вот, определение из Википедии довольно строго указывает, что речь идёт не о любых операциях или выражениях, а только о тех, которые обладают обоими характеристиками: “its … reading … and returning a value.” Если бы наличие последней было необязательным, то “and” можно было бы заменить на “or” и получилось бы «любой эффект, кроме чтения или возвращения».

Меня данное определение удивило. Оно явно не совпадает с общепринятым. С другой стороны, написано оно было явно не неделю назад, выбор слов, вероятно, не случаен и у редакторов, вполне вероятно, были причины оставить всё как есть. Различие же между академической и простой речью — обычное дело.

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

Похоже на вольную интерпретацию.

Нет, это буквально изложение столяровских заблуждений кратко.

В действительности, понятия процедуры и функции вообще не зависят от понятия побочного эффекта.

Я об этом и говорю.

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

☕️☕️ за Go. Хотя это мой любимый язык, для введения он не годится.

Я пробовал по-разному обыграть объяснение первой программы, но получается плохо и бессмысленно. Там, где приходится тщательно и неизбежно сглаживать углы (тот же самый импорт), в Паскале это просто можно отложить до более подходящего момента. Гениальный язык.

println задачу бы упростил. Однако, “it is not guaranteed to stay in the language” 1. И переход от println к математическим функциям всё равно должен быть короткий — намного короче введения в модули.

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

Там, где приходится тщательно и неизбежно сглаживать углы (тот же самый импорт)

Пфф, читал книжку по ассемблеру IBM 360, там первые учебные примеры для ввода (с перфокарт) вызывают макрос (не стандартный), типа пока делайте вот так, дальше будет объяснение, что это такое. И позже в книжке автор приводит код своего макроса) Не проблема.

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

типа пока делайте вот так, дальше будет объяснение, что это такое

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

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

Был (возможно, до сих пор есть) такой курс JavaRush, на котором преподавали Java. Там почти всё именно так объяснялась: «здесь говорим только об этом, на остальное не обращаем внимание». Это очень утомительный процесс даже для вовлечённого человека — наблюдал своими глазами.

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

Это очень утомительный процесс даже для вовлечённого человека.

Кому как. Мне подобные вещи наоборот кажутся чем-то таинственным, загадочным, а потом когда объясняют наоборот становится менее интересно.

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