LINUX.ORG.RU

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

 , , , ,

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

1

2

В среду, 9 апреля 2025 года, Андрей Столяров (пользователь @Croco) опубликовал на своём сайте новую версию второго тома под изданием 2,9. Второй том, как и в предыдущем издании, посвящён изучению языка Си, взаимодействию программиста с операционной системой (Unix) и объяснению концепции параллельного программирования.

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

Ввиду обстоятельств, сложившихся в последнее время, о которых Столяров поделился в своём обращении от 25 марта, были даны некоторые обещания публике, которые он был намерен выполнять по достижении определённых сумм пожертвований. За довольно короткое время (около двух недель) была набрана значительная сумма, и Столяров приступил к выполнению своего первого обещания — сделать кликабельную навигацию во всех трех томах учебника третьего издания. В вышедшем втором томе навигация уже работает.

В очередной раз Андрей Викторович выражает благодарность публике:

Всем поддержавшим спасибо за поддержку, это мотивирует.

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



Проверено: CrX ()
Последнее исправление: maxcom (всего исправлений: 8)
Ответ на: комментарий от sabacs

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

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

Разверни свою мысль. Над чем думать? Над невозможностью копипаста? Над психическим расстройством столярова? Над несовершенством мира?

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

Затем, что у читателя должна быть возможность скопипастить кусок текста для использования

Чего его бы? Если бы читатель заплатил, то согласен, а так… «дарёному коню в зубы не смотрят».

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

PS Я здесь Столярова не осуждаю ибо он, как автор, волен поступать так как считает нужным, но я лично так бы не делал. Ну и для опытного человека восстановить текстовый слой не составит особого труда. :)

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

«дарёному коню в зубы не смотрят»

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

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

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

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

Чего его бы? Если бы читатель заплатил, то согласен, а так… «дарёному коню в зубы не смотрят».

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

gaylord
()

Сейчас я читаю две книги: High Performance Browser Networking от Ильи Григорика, и параллельно читаю второй том Столярова «Системы и Сети», конкретно часть №6 «Сети и протоколы».

Столяров пишет отлично, никаких претензий к изложению про сети нет.

Если в личном блоге и форумах Столяров позволяет себе радикальные высказывания и агрессивный стиль поведения, то конкретно главы его работы, посвященные устройству компьютерных сетей, написаны технически верно, лаконично и связанно. Оцениваю учебный материал как первосортный. Рекомендую. Смело можно читать перед погружением в более специализированные источники, такие как работы Ильи Григорика.

Столяров дает ряд определений: сетевой интерфейс, сетевое соединение (прямое, многоточечное), гейт (он же шлюз), концентратор, коммутатор, маршрутер :-)) роутер, хост, DNS как распределенная база данных, хранящая фрагменты текста по ключу URL, токен, домен, поддомен, зона ответственности и т.д. включая уровни OSI и TCP/IP стек.

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

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

С этим базисом уже гораздо проще переходить к разбору таких вопросов как Latency, RTT, Congestion Control/Avoidance, и понять смысл Bandwidth Delay Product как тот объем данных которые сервер может передавать без потери качества соединения.

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

Каков автор, такова и реакция на его книги.

Каковы «реакционеры», таковы и их реакции на книги, обусловленные их («реакционеров») личным отношение к автору книг, но не самими книгами...

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

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

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

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

Никого не напоминает? ;) :))

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

Скорее всего термин появился во времена расцвета WoW и линейки.

https://en.wiktionary.org/wiki/twink#Noun_3 приводит примеры использования из 1997 года. В rec.games.mud.diku и rec.games.mud.admin. Lineage выпустили в 1998 году, Lineage II — в 2003, World of Warcraft — в 2004. Текстовые MUD-ы и сопутствующий жаргон в РФ к тому моменту уже были достаточно известны. (Моего однокурсника за них отчисляли в 1999 году.)

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

Никого не напоминает? ;) :))

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

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

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

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

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

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

Произвести сравнение с примитивами в Golang. Чтоб по делу, и с пользой. Даны примитивы многозадачности в библиотеках Си, оценить прогресс за последние 15–20 лет, сравнить с примитивами в Python, Ruby, C#.

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

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

Вы знаете другие способы это сделать, не попадая в зависимость от торговцев воздухом или централизованным структурам вроде Let's Encrypt?

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

А вы можете обсудить книги?

Нет, похоже, что онЕ не могут...

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

В чём проблема с Let’s Encrypt? К сожалению прока ещё не придумали как организовать доверие в системе публичных ключей без централизованных структур.

eternal_sorrow ★★★★★
()
Последнее исправление: eternal_sorrow (всего исправлений: 1)

Сейчас я для себя открыл книгу по Minix: Operating Systems Design and Implementation, 3rd edition. Написанную Таненбаумом и Вудхалом.

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

У Столярова все, что касается параллельного программирование вынесено в 7 раздел «Параллельные программы и разделяемые данные», есть закон Амдала (на сколько в идеале можно ускорить задачу), и классических задач по больше чем две (философы, писатели и парикмахер). Что интересно, у Столярова показана реализация мьютекса через код на Ассемблере, выделен целый параграф 7.1.5 «О реализации мьютексов».

Два разных подхода, можно сравнить.

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

Столяров описал закон Амдала для расчета максимального выигрыша при параллельных вычислениях. Но он не учитывает того факта, что Concurrency — разделение задачи на независимые друг от друга подзадачи, используется для оптимизации выполнения даже на одном ядре (без параллелизма). И используется для решения проблемы, известной как Head of Line Blocking, когда какая-то задача заставляет всю систему ожидать ее выполнения.

Не учитывается разница между двумя схожими терминами: Concurrency и Parallelism. В серверном программировании «многозадачность» используется в основном для отложения какой-то задачи, которая ждет ответа по сети, и перехода к другой задаче.

Для примера: в языке Go горутины прикрепляются и открепляются к тредам процесса (не конкретно к какому-то одному треду). Таким образом достигается высокая скорость переключения внутри одного процесса, еще более высокая, чем переключение между тредами при помощи механизмов ОС. Следовательно, цель такой архитектуры — как раз реализовать быстрое переключение между задачами, которые ожидают недетерминированного по времени ответа из сети. Речь не идет о ускорении вычислений, речь идет об избегании простаивания машины в ожидании ответа.

Схема реализации многозадачности в Go называется M:N scheduling и позволяет выигрывать в производительности и масштабировании посредством работы в user space и избегания дорогих системных вызовов для переключения между задачами. Также goroutine гораздо более легковесные, чем треды, — занимают несколько килобайт вместо мегабайта. Оптимизация происходит при помощи автоматического подбора количества тредов под конкретную задачу при определенных условиях. Также в Go используются разные алгоритмы для оптимизации балансировки распределения горутин между тредами, например work-stealing.

P.S. В конце хочется уточнить, что трехтомник Столярова содержит информацию необходимую для понимания статей вроде:

https://www.ardanlabs.com/blog/2018/08/scheduling-in-go-part1.html

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

Мое понимание устройства Golang во многом базируется на детальном изучении и конспектировании работ А.В. Столярова.

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

В том, что это зависимость от Let's Encrypt. Почему какая-то контора должна влиять на работу вашего сайта?

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

На самом деле придумали, так работает I2P.

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

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

а зачем шифрование, там где оно не нужно?

театр безопасности не дёшев

Что даст возможность зайти на персональный сайт человека с шифрованием трафика?

см Мозг Фирмы Стафорда Бира (рыцарь и проч проч) algedon

хы хы Форестер эпигон с мировой динамой

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

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

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

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

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

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

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

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

а зачем шифрование, там где оно не нужно?

У меня провайдер одно время баловался - подсовывал в http страницы свои блоки. Не рекламные, а типа «оплати, скоро закончатся деньги».

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

а зачем шифрование, там где оно не нужно?

хрен его знает зачем, но браузеры сильно матерятся на нешифрованые сайты. Думаю, скоро их запретят вовсе.

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

Ага, подкючаешься в localhost, а тебе говорят, что это не безопасно, я бы посмотрел на это.

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

Технология ради технологии это пуста трата времени и денег. У всего должна быть цель.

Любой кто пытается слушать трафик, должен получить лишь рандомный набор байтов.

Как иронично, что у этого «кого-то» есть приватный ключ, сертификат от которого тебе навязали. Sapienti sat.

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

это все-равно создает и поддерживает культуру зашифрованности трафика вообще

Нафиг мне эта культура? Религиозный фанатизм?

, что повышает защищенность юзера от разного рода цензуры

Что-то я не заметил, чтобы кто-то цензурировал HTTP, но при этом не цензурировал HTTPS трафик.

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

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

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

Вы не правы. Почитайте про децентрализованные системы.

Просто есть разные уровни надежности и надежности https вполне хватает для бытовых целей и даже поболее.

Для бытовых целей и HTTP хватает для всех сайтов без персональных данных.

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

Нафиг мне эта культура? Религиозный фанатизм?

Информационная гигиена. Выше уже неоднократно писали, что это предотвращает MitM от провайдера.

Вы не правы. Почитайте про децентрализованные системы.

Это никаким боком не относится к HTTP/HTTPS. Весь интернет не переделать.

Для бытовых целей и HTTP хватает для всех сайтов без персональных данных.

Нет.

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