LINUX.ORG.RU

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

 , , ,

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

4

4

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

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

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

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

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

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

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

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

★★★★★

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

Проблема C в том, что там указатели начинаются уже практически в Hello world-е. А указатель это очень сложно.

В указателях нет ничего сложного. Объясняю:
1. Все переменные хранятся в ячейках памяти
2. У каждой ячейки памяти есть адрес (тупо порядковый номер)
3. Если записать адрес ячейчки в другую ячейку, то это получится переменная-указатель
4. Можно обращаться к переменным не по имени, а по адресу - через переменную-указатель
5. PROFIT

Если нарисовать на листке бумаги, это доступно 6-летнему ребенку, который умеет считать до 100.

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

Думаешь, что оператор ИИ, изучавший паскаль, будет генерировать код на питоне лучше, чем оператор ИИ, изучавший питон?

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

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

Автор считает, что обучение начиная с C неприемлемо, поскольку портит мышление программиста. И он это обосновывает в книге и на своём сайте. Вначале прочитай аргументацию, а уже потом спорь.

В частности, в Си почти всё вычисление состоит из побочных эффектов.

У автора есть опыт преподавания в МГУ. И да, кажется, что указатели — это просто, если уже их понимаешь. Но если ты только учишься, это сложно и лучше вначале получить основы без указателей, а уже потом, когда умеешь что-то писать переходить к ним.

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

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

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

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

В указателях нет ничего сложного

Кому-то нет, а многим есть.

Объясняю

Ничего не понятно.

Ты точно понимаешь, что целевая аудитория, которой ты объясняешь, ещё про переменные даже ничего не знает? И про память ничего не знает. Первая программа это напечатать «привет мир». Вторая программа это считать с консоли a и b и распечатать a + b. И ты уже в ячейки пошёл.

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

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

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

Xenius ★★★★★
() автор топика
Ответ на: комментарий от kaldeon
while true ; do
  curl -C - --max-time 2 -O https://host/file
done

Попробуй две секунды. DPI не успевает понять что там вообще происходит. Можно и три попробовать.

IPR ★★★★★
()

torrent

$ tar -tvf stolyarov_info_latest.tgz
drwxr-xr-x crocodil/crocodil 0 2025-10-25 17:23 stolyarov_info/
drwxr-xr-x crocodil/crocodil 0 2025-10-25 17:26 stolyarov_info/extra/
-rw-r--r-- crocodil/crocodil 50274 2025-07-31 23:34 stolyarov_info/extra/progintro_2_91_examples.tgz
-rw-r--r-- crocodil/crocodil  3363 2022-09-10 16:26 stolyarov_info/extra/stud_io_inc
drwxr-xr-x crocodil/crocodil     0 2025-10-25 17:28 stolyarov_info/pdf/
-rw-r--r-- crocodil/crocodil 3635561 2025-07-31 22:21 stolyarov_info/pdf/progintro_2_91_v3.pdf
-rw-r--r-- crocodil/crocodil  911358 2022-09-10 16:27 stolyarov_info/pdf/latex3days.pdf
-rw-r--r-- crocodil/crocodil  721830 2022-09-10 16:27 stolyarov_info/pdf/codestyle2.pdf
-rw-r--r-- crocodil/crocodil 1896767 2025-07-31 22:21 stolyarov_info/pdf/progintro_2_91_taskbook.pdf
-rw-r--r-- crocodil/crocodil  424090 2022-09-10 16:27 stolyarov_info/pdf/wrong_taylor.pdf
-rw-r--r-- crocodil/crocodil 1327390 2022-09-10 16:27 stolyarov_info/pdf/osintro.pdf
-rw-r--r-- crocodil/crocodil 1384062 2022-09-10 16:27 stolyarov_info/pdf/cppintro5.pdf
-rw-r--r-- crocodil/crocodil 4204472 2025-07-31 22:21 stolyarov_info/pdf/progintro_2_91_v2.pdf
-rw-r--r-- crocodil/crocodil  474905 2022-09-10 16:27 stolyarov_info/pdf/unix.pdf
-rw-r--r-- crocodil/crocodil  507509 2022-09-10 16:27 stolyarov_info/pdf/infosoc.pdf
-rw-r--r-- crocodil/crocodil  474905 2022-09-10 16:27 stolyarov_info/pdf/unixref.pdf
-rw-r--r-- crocodil/crocodil 1327390 2022-09-10 16:27 stolyarov_info/pdf/os.pdf
-rw-r--r-- crocodil/crocodil  531301 2022-09-10 16:27 stolyarov_info/pdf/gameserv.pdf
-rw-r--r-- crocodil/crocodil 3614726 2025-07-31 22:21 stolyarov_info/pdf/progintro_2_91_v1.pdf
-rw-r--r-- crocodil/crocodil 1323558 2022-09-10 16:27 stolyarov_info/pdf/nasm_unix.pdf

А что с датами?

dataman ★★★★★
()

Из первого тома Столярова:

Интересно, что средства командной строки присутствуют и в системах семейства Windows; получить окно терминала с соответствующим пригла- шением там можно, если нажать сакраментальную кнопку ¾Пуск¿ (Start), выбрать в меню пункт ¾Выполнить¿ (Run) и в качестве имени команды вве- сти три буквы ¾cmd¿; но стандартный интерпретатор командной строки под Windows очень примитивен, использовать его неудобно, а большинство поль- зователей даже не подозревают о его существовании. Профессионалам он тоже не подходит, так что в мире Windows даже они вынуждены обходиться графическими интерфейсами, задействуя командную строку только в редких случаях, как правило, связанных с обслуживанием системы. Программисты, привыкшие к unix-системам и по тем или иным причинам вынужденные ра- ботать с Windows, часто устанавливают там перенесённые из-под Unix интер- претаторы командной строки; например, такой интерпретатор входит в пакет MinGW.

Сразу видно, что автор акадЭмик, в смысле, учёный, а не прикладной технарь. Либо зашоренный юниксоид. Большой и сложный софт в винде либо (частично) тестируется, либо развёртывается, либо параметризуется именно через говно-скрипты на cmd.exe. Да, многие вещи, которые сделаны изначально грамотнее в юниксовых шеллах, либо вообще отсутствуют, либо выглядят так вырвиглазно и блевотно в cmd.exe, что могут вызвать приступ белой горячки даже у здорового человека. Но эти скрипты есть и они играют свою роль.

Про PowerShell вообще ни слова, а он уже лет 15 стандарт де факто во всех административных автоматизациях и рутинных проверках. Причём, не все команды и скрипты требуют понимания сложного синтаксиса, объектной модели .NET и проч. Например, вычислить SHA256 контрольную сумму загруженного дистрибутива свеженького Альтика:

PC C:\Users\seiken> Get-FileHash alt-workstation-10.4-x86_64.iso

Просто и предельно ясно. И заметьте, без какого-либо Cygwin…

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

Это же не повод не учиться?

Взрослый это понимает. Ребёнок идёт по пути наименьшего сопротивления.

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

Так автор и пишет, что в Windows есть командная строка, но неюзабельная. А PoSh ещё и тормозной до ужаса по сравнению с cmd и команды ещё более-вырвиглазные. Вот линуксовая sha256sum сразу понятно и легко запоминается (например я никуда не смотрел), а какой именно хэш будет в Get-FileHash непонятно. Почему именно Get-FileHash а не Get-File-Hash или GetFileHash тоже непонятно и нелогично. Это невозможно сходу запомнить, это только если ты скрипты пишешь в редакторе, а для интерактивной работы почти непригодно.

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

Просто и предельно ясно

Не очень ясно что это именно SHA256.

sha256sum alt-workstation-10.4-x86_64.iso

выглядит проще и яснее.

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

Большой и сложный софт в винде либо (частично) тестируется, либо развёртывается, либо параметризуется именно через говно-скрипты на cmd.exe. Да, многие вещи, которые сделаны изначально грамотнее в юниксовых шеллах, либо вообще отсутствуют, либо выглядят так вырвиглазно и блевотно в cmd.exe, что могут вызвать приступ белой горячки даже у здорового человека. Но эти скрипты есть и они играют свою роль.

Это всё от бедности средств, понятное дело. Никто бы в здравом уме не писал на cmd, если бы из коробки там был bash или хотя бы ash.

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

Про PowerShell вообще ни слова

Видимо, это всё мимо него прошло.

wandrien ★★★★
()
Последнее исправление: wandrien (всего исправлений: 1)
Ответ на: комментарий от Manhunt
  1. У каждой ячейки памяти есть адрес (тупо порядковый номер)

Не обязательно, в Forth вместо массива адресов – связный список и специфическая адресная арифметика. А в общем случае адресное пространство может быть графом.

quickquest ★★★★★
()

паскаль, потом ассемблер

Странно, что не наоборот. Сначала учащихся надо помучить, а потом успокоить :)

quickquest ★★★★★
()

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

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

Том 2. Глава 7 «Параллельные программы и разделяемые данные»

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

Далее он теоретизирует с законом Амдала и делает вывод:

Едва ли не единственная область программистской деятельности, в которой параллельные вычисления действительно нужны, а наша пресловутая α принимает значения, при которых хотя бы не обидно бороться за возможное ускорение работы — это числовые расчёты, в большинстве случаев связанные с математическим моделированием физических явлений; с такими задачами мы обычно сталкиваемся в суперкомпьютерных вычислительных центрах, принадлежащих научным организациям. Обычный пользователь с объёмными расчётами может встретиться разве что при обработке собственноручно отснятого цифрового видео, но этим занимаются далеко не все; писать же программы, предполагающие преобразование видеоданных, приходится совсем небольшому количеству программистов.

Ещё категоричнее в своей манере Андрей Викторович высказался в гостевой книге: «Многоядерные процессоры — это самое дебильное, что было придумано в компьютеростроении за всю его историю. Я бы сказал, вызывающе дебильное.». http://stolyarov.info/guestbook/archive/11/#cmt194

Причём ещё в прошлом году, даже не 10 лет назад.

Это уже извините, прямое введение в заблуждение своих читателей.

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

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

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

В четвёртых, кроме закона Амдала есть ещё и закон Густафсона Reevaluating Amdahl's law (ссылка на web archive) который немного с другой стороны (количество обрабатываемых данных в единицу времени) смотрит на параллелизацию вычислений.

В конце концов, из весьма частых примеров: компиляция ядра Linux и многих других программ почти линейно ускоряется в зависимости от количества процессоров. make -j число_ядер и вперёд!

По этому поводу даже пишу небольшу статью.

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

В указателях нет ничего сложного. Объясняю:

  1. Все переменные хранятся в ячейках памяти
  2. У каждой ячейки памяти есть адрес (тупо порядковый номер)
  3. Если записать адрес ячейчки в другую ячейку, то это получится переменная-указатель
  4. Можно обращаться к переменным не по имени, а по адресу - через переменную-указатель

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

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

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

Все байты памяти, доступной программе, имеют уникальный номер

Не обязательно. Можно замапить одно и то же два раза. Будет два разных номера, указывающие на один байт памяти (если ты под памятью имеешь в виду RAM). В тех же микроконтролерах такое сплошь и рядом.

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

Есть ли изменения, посвящённые проникновению ИИ во все сферы программирования?

Он выше этого. Впрочем для обучения программированию причём тут ИИ во всех сферах?

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

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

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

Автор считает, что обучение начиная с C неприемлемо, поскольку портит мышление программиста. И он это обосновывает в книге и на своём сайте. Вначале прочитай аргументацию, а уже потом спорь.

Да вобщем-то, это стандартный подход, который может меняться от специальности к специальности. Например, на «Прикладной Математике» и смежных дисциплинах больше упор на формальные граматики, модели вычислений, как можно более полно парадигмы, минимум или вообще ноль ассемблера (просто говорим, что есть формальные модели вычислений, а гарварды с фоннейманами - это просто реализации).

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

Собсна, Столяров тут ничего нового не придумал. То же самое и в американских ВУЗах, и в европейских было.

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

Страницы-простыни тоже приведены к человеческому виду?

Нет, см. мой коммент выше

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

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

Не в курсе всей линейки Intel и AMD, может там что-то и есть из совсем кастрированных атомов/целеронов и не снятое с производства. Среди разных микроконтроллеров можно поискать что-нибудь.

Но так-то да, минимум 2-х ядерное всё сейчас.

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

А какие конкретно советы?

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

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

Почему именно Get-FileHash

Понять это невозможно, но легко запомнить: сосиска из верблюда ;)

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

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

Не обязательно. Можно замапить одно и то же два раза. Будет два разных номера, указывающие на один байт памяти (если ты под памятью имеешь в виду RAM). В тех же микроконтролерах такое сплошь и рядом.

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

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

soomrack ★★★★★
()

...паскаль, потом ассемблер и только потом Си, системное программирование...

Странно, но ваш покорный именно в таком порядке изучал эти ваши АйТи, методом научного тыка.

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

Lazarus позволяет создавать кросплатформенные приложения под линукс и винду

А андроидные Total Commander и плеер AIMP вроде бы тоже на FPC?

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

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

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

Вот линуксовая sha256sum сразу понятно и легко запоминается (например я никуда не смотрел)

не смотрел, потому что уже знаешь. Твоё мнение как линуксоида заведомо субъективное, тебе нужно сначала забыть все команды линуксового набора, и тогда мыслительный эксперимент будет чище.

а какой именно хэш будет в Get-FileHash непонятно

тот, который до сих пор стандарт де факто в 2026г. Мы опять возвращаемся к теме наиболее вероятно используемых настроек по умолчанию - то, что отличает целевой продукт от конструктора «сделай сам».

Почему именно Get-FileHash а не Get-File-Hash или GetFileHash тоже непонятно и нелогично.

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

А если не помнишь - как и в юниксах - есть автодополнение команды, как и в баше и др. Вместо «man » просто «Get-Help ».

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

даёт скачать только первые несколько килобайт

Это стандартная работа одного из механизмов ТСПУ. Не обязательно, что есть какая-то причина блокировки конкретного сайта, просто под общие ограничения связи мог попасть.

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

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

Это так кажется. Я помню себя, когда после фортрана и калькулятора я столкнулся с пидипишным ассемблером. Вот мне стоило большого труда понять команды типа MOV R1, (R4) или, даже MOV R1, @(R4) и как ими пользоваться. Крокодил мне рассказывал из практики преподавания, что «тест на указатели» — это по-сути тест на программиста. Не до каждого доходит.

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

Вообще, забавно, как некоторые преподносят работу с командной строкой как некое ноу-хау, которое только в юниксе существует, и не доступно глюпым неюниксоидам по причине сакральности консольного знания, доступного только избранным ЛОЛ

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

curl --continue-at - --max-time 1 несколько раз, то можно скачать любой «заблокированный ресурс».

А ещё --max-time может быть дробным :) Но некоторые сайты не поддерживают докачку.

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

Вышло издание две целых девяносто две сотых книги?

Третья версия без 8%.

question4 ★★★★★
()

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

А самая главная ошибка - изучение паскаля - уже исправлена? А непонимание столяровым побочных эффектов? А общее сектантство?

liksys ★★★★
()

включает в себя читаемый текстовый слой

Он всегда был читаемый. Человеком по крайней мере.
А чего это он переобулся?

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

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

Мне в учебниках матана остро не хватало знания используемых алфавитов: греческого, готического, еврейского… :)

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

отверстие для спуска пара из под закрытой крышки.

Предохранительный клапан.

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

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

Так ты сходи к нему в гостевую на сайт :)

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

А чего это он переобулся?

нос по ветру и хвост пистолетом!

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

Как минимум две прослойки знаю. Операционная система отображает физическую память в виртуальную память для каждой программы (путём настройки процессора). Это на т.н. application cpu, т.е. процессорах, которые могут запускать полноценные операционные системы. Кроме этого внутри процессора есть какая-то логика, которая отображает адреса памяти на разные устройства. На RAM, на периферию. И эта логика порой отображает одну физическую память на несколько адресов. Для программы на C это будет выглядеть, как несколько разных указателей на одну память.

Вот пример на C для линукса, который это демонстрирует.

#include <fcntl.h>
#include <stdio.h>
#include <string.h>
#include <sys/mman.h>
#include <unistd.h>

int main() {
    const char *name = "/myshm";
    size_t size = 4096;

    int fd = shm_open(name, O_CREAT | O_RDWR, 0666);
    ftruncate(fd, size);

    void *ptr1 = mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
    void *ptr2 = mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);

    printf("Address 1: %p\n", ptr1);
    printf("Address 2: %p\n", ptr2);

    strcpy(ptr1, "Hello from Address 1!");
    printf("Data at Address 2: %s\n", ptr2);

    munmap(ptr1, size);
    munmap(ptr2, size);
    shm_unlink(name);
}
Address 1: 0x7f6c7fd5d000
Address 2: 0x7f6c7fd33000
Data at Address 2: Hello from Address 1!

Что касается второго примера, в процессоре STM32F0 по адресу 0x2000_0000 расположена SRAM, а по адресу 0x0000_0000 расположена настраиваемая периферия, в том числе можно настроить так, что там будет тоже SRAM, т.е. указатель на 0x2000_0001 и 0x0000_0001 будут указывать на один и тот же байт в SRAM.

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

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

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

тот, который до сих пор стандарт де факто в 2026г. Мы опять возвращаемся к теме наиболее вероятно используемых настроек по умолчанию - то, что отличает целевой продукт от конструктора «сделай сам».

Отборная клоунада.

Хэш - это общее понятие. Всё равно что «языком» называть «английский язык», потому что это «язык по-умолчанию» (по умолчанию кого?)

А если год будет 2036 или 2046, то тогда что? Команда перестанет работать? Команда будет возвращать хэш иного типа? Пожалуется в спортлото?

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

Сишка и питон не годятся, по крайней мере, по мнению автора.

Я в этом с ним полностью согласен.

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

А указатель это очень сложно.

Но ведь нет :)

Zhbert ★★★★★
()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)