Pull to refresh
8K+
18

User

1,5
Rating
1
Subscribers
Send message

Если кратко. Версия, вообще говоря, состоит из четырёх чисел, например: 1.2.3.4
Эти числа носят следующие названия в порядке слева направо: 1 - Major number, 2 - Minor number, 3 - Patch number, 4 - Build number.
Если отличается Major, то это означает наиболее радикальные отличия. Либо формат данных полностью изменился, либо полностью изменился пользовательский интерфейс. В общем, на новую программу придётся полностью переучиваться.
Если отличается Minor, то это, как правило, означает лишь расширение функционала существующей программы. Формат данных дополнился новыми полями, в интерфейсе пользователя появились новые пункты меню, новые виджеты. Однако пользователь, знакомый с предыдущей версией, без труда разберётся с новой, так как версии схожи между собой.
Если отличается Patch number, то это означает исправление ошибок в программе, без изменения интерфейса.
Последний - Build number, используется только разработчиком программы, например так: программист создаёт программу, присваивает ей очередной этот номер, затем программу проверяют на ошибки, если обнаруживают, то исправляют, и присваивают следующий номер. Либо добавляют функционал, и тоже увеличивают этот номер. Но все эти циклы происходят внутри компании, и чтобы не сбивать с толку конечных пользователей, изменения пишут в этот номер, чтобы потом, при распространении программы, просто его убрать.

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

там в оригинале пишут, что "уровень IQ вырос между 1932 и 1978 годами почти на 14 пунктов"

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

Эм, какая еще складывающая ситуация?

Ситуация такая, что человечество может начать утрачивать технологии, а воспроизвести их заново не сможет. Рано или поздно заводы повыходят из строя: сгорят в пожарах, продадут площади под рынки, и так далее. Не будет заводов - не будет сельскохозяйственной техники. Без техники обработать поля в прежних количествах не смогут, и начнётся голод.

Хотите рассказать, что вот 30к складывается ситуация и спасителя человека (или его сперму) нужно заморозить прямо сейчас?

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

Либо про научные данные, либо не нужно смешивать. Если Дробышевский озвучивает слухи, а не данные, то не стоит повторять слухи. Вы специально даете ссылки на какие-то сми-ресурсы?

Я просто забил в поисковик про исследования в Исландии, и выдал первую попавшуюся ссылку. Где-то должна и научная публикация быть. Я помню, что про эти исследования профессиональный биолог говорил. И речь не только про эти исследования. Уменьшается и размер мозга, причём многие тысячелетия.

Эээ, бардак какой-то. То есть 30к лет назад, женщины по интеллекту выбирали? Эх, популяризаторы популяризовывали и выпопулизовали

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

Если мы посмотрим на жизнь, какую ведут первобытные люди, то они постоянно таскают с собой оружие, и при этом ведут голодную жизнь. В таких условиях уверенный в себе идиот, который отбирает еду у других, проживёт ровно до того момента, пока не отвернётся. Обезьяна не может убить противника с одного удара, вооружённый человек - может.
Пикаперы сходятся на том, что женщина в половые партнёры старается выбрать мужчину, который по характеру наиболее похож на вожака стаи обезьян. А вожак стаи обезьян - это вовсе не самая умная особь, а самая наглая. Только вот незадача: в прошлом человечества такие наглые особи до возраста спаривания, видимо, не доживали.
Но 30 тысяч лет назад, видимо, жизнь людей заметно улучшилась, вот женщины и начали возвращать человечество назад к обезьянам. Я не говорю про всех женщин, но про многих.

P.S. Добавлю ссылку про уменьшение размера мозга у современного человека по сравнению с кроманьонцем:
https://www.ixbt.com/live/offtopic/my-glupeem-pochemu-u-chelovechestva-umenshaetsya-razmer-mozga-poslednie-tysyachiletiya.html

Эм, "идиократия" это в первую очередь комедия

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

А про Дробышевского странно, если он такое высказывает

Дробышевский лишь озвучил то, что и так у многих на слуху. Вот навскидку статья про снижение уровня интеллекта людей в Исландии: https://futurist.ru/articles/767

А причина уменьшения размера мозга проста: если открыть любой учебник по пикапу (соблазнению женщин), то станет ясно, что женщины себе полового партнёра вовсе не по интеллекту выбирают, а по уверенности мужчины в себе. Речь идёт не о браке, а именно о половом партнёре - о потенциальном отце её детей. Если такой отбор поколениями вести, то очевидно, что с мозгом станет.

Вообще говоря, фильм "Идиократия" не про это. Там причиной снижения уровня интеллекта называют современный половой отбор, при котором больше всего детей оставляют наименее интеллектуально развитые люди. В основу фильма легло научное открытие, что последние 30 тысяч лет постепенно уменьшается средний размер мозга у человека, и, видимо, снижается и уровень интеллекта. На эту тему, кстати, неоднократно высказывался антрополог Станислав Дробышевский.
Уменьшение размера мозга началось задолго до появления искусственного интеллекта. И вызвано, видимо, тем, что идиоты перестали массово погибать.

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

Да, это оптимизация. Меньше размер матриц, больше скорость их умножения.

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

как сделать операцию нелинейной на тритах?

так как мы имеем дело с дискретными значениями, то их легко можно заменить с помощью табличной функции на любые другие. К примеру, умножаем троичную матрицу весов на какой-то входной троичный вектор. Результат - вектор из целых чисел. Используем каждое из этих чисел как номер элемента в массиве (номера могут быть отрицательными, поэтому предварительно можно сложить с какой-то константой bias), и подставляем вместо номера элемента его значение в этом массиве.
На псевдокоде это можно примерно так записать:

A: TritMatrix = [[1,0,0], [-1,1,-1], [0,1,-1]] // матрица весов
x: TritVector = [1, 0, 1] // входной вектор
z: TritVector = A * x // произведение матрицы на вектор
f: [-3..3] int = [-2,-1,1,2,1,-1,-2] // табличная функция
result: IntVector // целочисленный вектор результата
for i: int = 0; i < 3; i++ {result[i] = f[z[i]]} // применение табличной функции
return result // возврат результата

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

Никому это не нужно.

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

Те 3D мониторы, что были, оставляют желать лучшего: они или стереоскопические, или с механическим вращающимся зеркалом. Полноценный 3D монитор будет чем-то вроде окна, через которое ты смотришь в другую комнату. Сместившись, можно будет увидеть изображение под другим ракурсом. На микроуровне каждый пиксель такого монитора в разных направлениях излучает разный, задающийся видеосигналом, цвет. Если у стереоскопического монитора объём передаваемых данных, грубо говоря, в два раза больше объёма данных обычного монитора, то у реального 3D монитора объём данных будет больше в миллион раз. Там без сжатия видеосигнала просто не обойтись.

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

Реальные, не стереоскопические, 3D мониторы нужны, например, для очков виртуальной реальности. Дело вот в чём. Человек определяет расстояние до объекта не только за счёт разницы изображений между двумя глазами, но и за счёт изменения фокусного расстояния глаза, меняя форму хрусталика. В современных очках виртуальной реальности изображение для каждого глаза - двумерное, и глаз не может правильно оценить дистанцию до объекта за счёт изменения фокуса. Это вызывает дискомфортные ощущения. А в очках виртуальной реальности будущего, для каждого глаза изображение будет создавать 3D-монитор, и хрусталик глаза заработает нормально.

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

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

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

В многопользовательских играх читеры, скорее всего, победят. Купят второй компьютер, с видеокамеры будут передавать на него изображение с игрового компьютера, по USB-кабелю передавать сгенерированные движения мыши, нажатия клавиш. А на втором компьютере будет сидеть нейросеть, и играть вместо читера. Отследить такое никакими античитерскими программами нельзя, и нормально играть pvp станет невозможно. Да и однопользовательский режим скатится на дно.

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

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

рациональные -- часть действительных чисел

Я имел в виду обыкновенные дроби. Они хранятся в виде пары значений: числитель и знаменатель.

так что если претензии к программистам Cinema 4D и предъявлять, то только в том, что они поленились сделать "красивое" округление.

Они отвели недостаточно места для хранения числа. Причём, если бы они для хранения чисел, введённых пользователем, использовали десятичные числа, а не торопились их преобразовать в двоичные, то 4 байт им вполне могло бы хватить для точного хранения тех значений, что я вводил.

в десятичном -- только текстовые по своей сути файлы, пример которого Вы и приводите

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

всё начинает считаться в двоичном виде

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

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

Может, вы и правы, что только экономисты это используют. Помню, когда-то давно впервые стал знакомиться с 3D-редактором Cinema 4D. И вскоре обнаружил, что этот редактор отказывается сохранять те десятичные числа, что я ввожу. Вместо короткого числа - выводит какую-то длиннющую дробь с кучей девяток. Видимо, они пожадничали с размером чисел с плавающей точкой. После этого я забросил ту программу.

Но все равно eax ^= ecx не сильно информативнее xor eax, ecx

Для меня информативнее. Из-за того, что в отладчике Visual C++ приёмник операции xor слева, а в Code::Blocks справа. Когда переключаешься между ними - это несколько дезориентирует.

Лично мне не известны применения десятичных чисел, кроме как в финансово-экономических задачах.

Cascading Style Sheets:

.main {
  box-sizing: border-box;
  float: left;
  width: 70%;
  background-color: #fff;
  border-radius: .5em;
}

Любые научно-технические расчёты (а всякие 3D-модели и т.п. к ним и сводятся) ведутся исключительно в двоичном виде.

Расчёты, может и ведутся в двоичном виде, так как процессор, например, троичную арифметику, вряд ли поддерживает. Однако хранение исходных данных может быть необходимо в десятичных числах. Хватает текстовых 3D-форматов, например OBJ. Его можно преобразовать при считывании в более компактный формат, а затем, после изменений, сохранить в текстовом виде без ошибок преобразования десятичных чисел.

Это вычисление хэша:

DWORD hashDword(DWORD hash, DWORD v)
{
	return rol(hash ^ v, 13);
}

Например, хэш от прямоугольника:

DWORD hashRect(DWORD hash, const RECT &rc)
{
	hash = hashDword(hash, rc.left);
	hash = hashDword(hash, rc.top);
	hash = hashDword(hash, rc.right);
	return hashDword(hash, rc.bottom);
}

Получается что избыточное "=" добавляется только ради того чтобы не ломать привычку Си-шникам.

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

eax ^= ecx
cl = 13
eax ~<<= cl // циклический сдвиг влево на cl бит

А программист это может переписать так:

eax = (eax ^ ecx) ~<< 13

Это уже не ассемблерный код, но вполне себе корректное выражение.

Покажите мне хоть один компилятор (C++, Rust или другого компилируемого языка), который бы генерировал ассемблерный код с макросами.

Visual C++ генерирует ассемблерные листинги с макроконстантами. Приведу фрагмент:

_TEXT	SEGMENT
_hInstance$ = -8					; size = 4
?getInstance@@YAPAUHINSTANCE__@@XZ PROC			; getInstance, COMDAT
...
; 14   : 	HINSTANCE hInstance = GetModuleHandle(NULL);
	mov	esi, esp
	push	0
	call	DWORD PTR __imp__GetModuleHandleW@4
	cmp	esi, esp
	call	__RTC_CheckEsp
	mov	DWORD PTR _hInstance$[ebp], eax
; 15   : 	InterlockedExchangePointer(&s_hInstance, hInstance);
	mov	esi, esp
	mov	eax, DWORD PTR _hInstance$[ebp]
	push	eax
	push	OFFSET _s_hInstance
	call	DWORD PTR __imp__InterlockedExchange@8

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

С моей точки зрения, это взаимоисключающие утверждения.
Мне трудно представить, как отказ от макроконстант может облегчить чтение листинга. Вы реально собираетесь в уме держать, какое численное значение что означает? Вот сравните: eax = 11045 или eax = $HEAVY_LASER_ID, что понятнее выглядит?

В 64-разрядной версии MASM поддержку встроенных макросов (.if, .while, invoke и пр.) вообще убрали.

Хоть я и говорил про макроконстанты, а не про .while, но и здесь выскажусь. Большой проект, скорее всего, будет содержать таблицы. Это могут быть, например, наборы поддерживаемых разрешений экрана, карты сообщений: событие - действие, и прочее. Особенность всего этого в том, что эти таблицы понадобиться вставить в нескольких разных местах кода, и согласовать. Например, для каждого разрешения экрана должно быть текстовое описание, чтобы пользователь мог выбрать это разрешение из меню, и, к примеру, своя процедура быстрой очистки заэкранного буфера. И нужно следить, чтобы одно другому соответствовало. Удобнее всего такие таблицы вставлять в код макроциклами. Приведу условный пример:

// Декларация таблицы разрешений экрана
#let resolutions = [{x: 640, y: 480} {x: 1024, y:768}]
...
string resolutionToString[#[resolutions.count]] = {
// Здесь r - курсор, который проходит по всем элементам таблицы resolutions
// Участок #delim ... #endfor выполняется для всех итераций цикла, кроме последней.
// В данном случае он просто выводит запятую между строками.
#for resolutions |> r: \" #[r.x] x #[r.y] \" #delim, #endfor
}
...
void clearOffscreen()
{
    switch(resolutionID)
    {
    #for resolutions |> r:
    case #[indexof(r)]:
        memzero(offscreenBuffer.dataPtr, #[r.x * r.y] * bytesPerPixel);
        break;
    #endfor
    }
}

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

Десятичные числа нужны не только для финансистов. Ещё они нужны для графической разметки. Описание разметки задаётся примерно в виде: "умножить высоту этого окна на 80% и сложить с удвоенной толщиной этой рамки". Если мы преобразовали десятичные числа в двоичные, и прокручиваем длинный документ, то ошибка накапливается, пока графические элементы не начнут съезжать от правильных положений. Всё, что касается разметки, 3D-графики, чертежей - там нужны десятичные числа.

Information

Rating
1,831-st
Registered
Activity