Jun. 28th, 2025

avva: (Default)
Задолжал объяснение странной функции waste() в очень старой версии компилятора C Денниса Ритчи. Этот компилятор был написан для компьютера PDP-11. Он работает в два прохода, как свойственно многим компиляторам (почему именно? разузнайте, если вам интересно). Эти два прохода - отдельные программы c0 и c1, первая пишет в временный файл, вторая читает из его и пишет в файл ассемблера. Когда это необходимо, первый проход передает второму напрямую синтаксическое дерево (AST, Abstracy Syntax Tree) данного выражения в исходном коде. Это дерево хранится в памяти как массив, содержащий ссылки-указатели внутрь самого себя. c0 "сериализует" это дерево просто записью массива как набора чисел во временный файл, а потом c1 читает его из файла на то же самое место в памяти, в котором оно было в c0, и поэтому все внутренние указатели продолжают работать.

Но как найти место в памяти, которое гарантированно имеет одинаковый адрес в c0 и в c1? Ритчи для этого использует сам код компилятора, в котором функции выставлены в известном порядке и первая загружается по известному фиксированному адресу в том конкретном компьютере и в той версии Юникса. В c0 для этого буфера AST используется место, которое занимает код функции init(), которая к этому моменту уже не нужна. В c1 не оказалось такой удобной функции, и Ритчи написал waste(), чтобы просто зарезервировать нужное число байтов.

Я не знаю подробностей насчет того, как устроена AST, почему первый проход должен передавать ее второму (обычно второму проходу нужно лишь зафиксировать адреса переменных и функций в уже готовом коде, но возможно Ритчи по-другому распределил работу), и как именно обеспечивается загрузка по идентичному адресу. Возможно, я найду время разобраться в этом (интересно!), и посмотреть на это дело в работе. Warren Toomey (он смог запустить этот компилятор в 2008-м) прислал мне ссылку на репозиторию юникса за июнь 72 года (DoctorWkt/unix-jun72 на гитхабе), где лежат скомпилированные c0 и c1, не вполне ясно, какой версии компилятора, но скорее всего в симуляторе PDP-11 apout, который написал Уоррен, можно будет их запустить, скомпилировать компилятор и скомпилировать им себя, и тогда уже будет легче разбираться. Привожу эту информацию на случай, если кто-то захочет попробовать, дайте знать, если получится.
avva: (Default)
Пригов ошибался, или как минимум не до конца оценил драму бытового существования, когда написал: "Только вымоешь посуду // Глядь - уж новая лежит". Я бы добавил к этому: "Только выбросишь бутылки // Тут же новые бегут".

P.S. К. добавляет: "Только вымоешь ребенка // Снова грязненький бежит".
avva: (Default)
Понравилось очень яркое описание второго дня в Израиле (из сообщества про 90-е). Июнь 1990-го года. Автору текста - ее зовут Мария Горелик - 22 года, они с мужем оба обладают очень полезной в Израиле профессией "актер драматического театра", и вот с двумя малолетними детьми и свекрами они прилетели в Израиль навсегда из Москвы в четверг вечером, и их наобум заселили временно в гостиницу в Иерусалиме, еще и в религиозном районе. На второй день, в пятницу, они пошли погулять по незнакомому городу в незнакомой стране, где вообще никого не знают:

"Вечерело, мы сдали детей бабушке с дедушкой и решили прогуляться и немного осмотреться вокруг. Вышли на улицу Яффо и пошли в сторону шука [рынка], это я сейчас такая умная, тогда я понятия не имела где мы и куда направляемся. Солнце еще не совсем село, вокруг ни души, все магазины на решетках и замках, тишина, мы идем мимо шука по противоположной стороне и видим открытый ряд Махане Йеуда, весь насквозь просматривется до самой Агрипас, абсолютно пустой и только летают цветные пустые пакеты тут и там. Полный сюрр. Ощущение апокалипсиса. (вы же помните – у нас дипломы «Актер драматического театра» - мы очень впечатлительные натруы). Эта картина произвела на нас такое впечатление, что дальше мы не пошли, а повернули назад и вот идем мимо остановок, старожили помнят, у шука тогда были остановки в три линии полукругом. И в этот момент раздается вой сирены, и сразу откуда-то появляются одинокие бегущие прохожие, придерживая шляпы, они разбегаются по закоулкам, вдруг какая-то машина проезжает и исчезает вдали. Мы, в полной уверенности, что начался конец света, бежать нам некуда, присели на корточки прям где шли, и накрыли головы руками - мы услышали первую в жизни сирену. Так начался наш первый шаббат на родине."

Про цветные пустые пакеты очень хорошо. Сразу встает перед глазами, ну может, это только у тех, кто жил в Иерусалиме, извините тогда те, кто не жил. Но мне очень понравилось.
avva: (Default)
Два замечания об учебниках физики.

1. В прошлом я давал ссылку на lecture notes Дэвида Тонга из Кэмбриджского университета, которые знающие люди очень хвалят. Он превратил их в полноценные учебники, которые недавно вышли в свет, пока есть четыре: классическая механика, электромагнетизм, квантовая механика и механика жидкости.

2. В поисках хороших задач для подготовки ребенка к экзамену по физике для старших классов (в этом году в него входит только механика) просмотрел несколько англоязычных учебников. Мне очень понравился учебник Дэвида Морина из Гарвардского университера "Problems and Solutions in Introductory Mechanics" (2014). Это для вводного курса в механику, специально подчеркивается, что лишь для 1/6 задач требуются хоть какие-то знания по матанализу. Мне особенно понравилось, что в каждой главе, кроме задач, есть вопросы "на понимание", с выбором из нескольких вариантов ответов (такие вопросы в Израиле называют "американскими", кстати). Вот два таких вопроса из пятой главы, "Энергия". Хотите попробовать свои силы?

5.1. Какие из следующих сил никогда, не при каких обстоятельствах, не могут совершать работу? (будьте осторожны!)

a) гравитационное притяжение
b) статическое трение
c) кинетическое трение
d) натяжение
e) нормальная сила (имеется в виду сила нормальной реакции опоры)
f) все предыдущие пункты неверны, все эти силы могут совершать работу

5.8. Тележка с колесами без массы содержит песок. Тележка начинает катиться вниз (не теряя при этом энергию на трение) из состояния покоя в долину, а потом обратно вверх на холм с другой стороны. Пусть высота, с которой она начала спускаться, равна h1, а конечная высота, на которую поднялась - h2. Если из дна тележки по дороге сыпется песок, как связаны h1 и h2?

а) h2 < h1
b) h2 = h1
c) h2 > h1

January 2026

S M T W T F S
    1 2 3
45678910
11121314151617
18192021222324
25262728293031

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 3rd, 2026 01:58 pm
Powered by Dreamwidth Studios