The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Релиз языка программирования Rust 1.30"
Отправлено Ordu, 26-Окт-18 15:39 
> Бегом читать ISO стандарт на с++. Особенно раздел memory model.

Зачем? Если кто-то пользуется дурацкими моделями, почему я должен? Есть меньшие адреса, есть большие адреса, а лево и право -- это уже как получится. Если я храню в памяти растр, то у растра есть "лево"/"право", "верх" и "низ", зачем мне нужны ещё лево право у памяти? Чтобы я как и ты в случае с utf8 путался бы в словах?

> Вы запутались совсем.
> Нет ничего зазорно в том что бы называть тупых тупыми.

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

> А что представляют собой данные в памяти компьютера как не цифры?

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

На некоторых архитектурах структура памяти сложнее. Скажем на x86 блоки по 64 байта образуют кеш-линию, и эти кеш-линии кешируются в более быстрой ассоциативной памяти. Иногда добавляют ещё слоёв кешей.

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

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

Тут единственная проблема встаёт -- это бывают архитектуры high-endian, бывают low-endian. Это о том, как хранятся многобайтовые целочисленные значения в памяти. Можно располагать старшие байты по младшим адресам, можно располагать их по старшим адресам. Кстати, именно работая с этими различиями я и понял, что идея приписывать памяти "лево" и "право" ущербна, она лишь путает и сбивает с толку. Если ты думаешь не о лево и право, а о меньших/больших адресах, и вербализуя свои мысли в голове не используешь слов "лево"/"право", но используешь "меньшие"/"большие" адреса, то проблема испаряется и даже не возникает.

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

Я так и вижу, как ты, дочитав до сюда, опять потерял нить и ничего не понимаешь, и поэтому думаешь что все вокруг тупые. Поэтому я тебе дам основной вывод из всего вышесказанного в готовом виде: то, что ты называешь памятью компьютера -- это условность, это не память, но какая-то модель памяти, и в зависимости от задачи, тебе следует использовать разные модели памяти. Некоторые из этих моделей даже типизированные модели, который позволяют говорить, как ты говоришь: память содержит цифры. Но тебе никогда не следует забывать, что то, как тебе память видится в данный момент -- это не более чем один из способов её видеть. И не факт, что это лучший способ. Лучшего вообще не существует, и на всякий случай всегда следует использовать две-три модели одновременно: есть психологические теории мышления, которые говорят, что мышление возможно только тогда, когда проблема имеет в психике два разных описания на разных "языках". Например, это может быть геометрическое описание в виде визуальных образов, символьное описание в виде формул, словесное описание на естественном языке. Процесс "перевода" с одного языка на другой критично важен для процесса мышления, и без него мышление не работает.

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру