Написал(-a) комментарий к произведению Ретро бит [5]
В реале оно как-то не особо взлетело, чаще всего на донаты хорошо, если хостинг окупается.
Заходил(-a)
В реале оно как-то не особо взлетело, чаще всего на донаты хорошо, если хостинг окупается.
Извиняюсь, все же поспорю.
То есть, мне кажется, что идеально было бы, если ГГ не лезет в полупроводниковые технологии в целом и изготовления чипов (там он вряд ли что-то понимает, хотя может пару мыслей и подкинет), но по идее, очень хорошо должен понимать каких параметров и харктеристик надо добиться для завоевания рынка.
Причем именно для 3d-ускорителей, в обычных CPU и без него грядку уже монстры окучивают, а 3d в реале до середины 90-х были узкоспецифичной нишей дорогих CAD и киноидустрии и еще 10 лет понадобилось, пока догадались, что на них можно сделать дешевые ускорители вычислений (специальные, стоимостью в крыло от боинга были еще с 80-х). И еще +5...7 лет, пока доперло, что можно нейросети легко тренировать. Притом и тут тоже послезнание, что нейросети считались интересной, но не особо стоящей внимание интеллектуальной игрушкой.
Есть ли планы, чтобы ГГ со временем залез в железо, например, 3d-ускорители для игр? Мне кажется, что на определённом этапе развития это естественно с его послезнанием. Тут же прям золотая даже не жила, а рудники, причём никто об этом не подозревает и ещё очень долго не поймёт. В реале ведь даже nvidia через лет 10 только сообразила, что видеокарты это не только "ценный мех".
Круто! Смэшер, Ви, Сильверхенд, Бестия, Блэкхенд, Альдекальдо и корпы Арасаки за и против Ёринобу. Просто охренеть. А еще прямо перчинка к блюду интересно как боевой бордель отожгет в замесе.
Киберпанк. Напишете, например, как Ви или Джони Сильверхенд или еще кто из вселеной игры Киберпанк 2077 попадают в нашу вселенную к нам :)
Дело даже не в готовности, а ещё и актерском составе. Уникально подобраны истории роли и исполнители.
Чую крутой замес намечается. За ГГ даже обидно, ему явно времени не хватает, дали бы ему время прокачался бы получше, подлечился или новое тело завел или что он там планировал, а так идет в драку уже с большими проблемами.
Кстати о книгах, я вот не знал, что "Идентификация Борна" снята по книге (или забыл), кроме того, сценарий или наметки к фильму тоже могут быть очень давние. Допустим 10 лет назад сценарий отвергли, потом в дело пошёл, а Крис только помнит когда фильм снимался.
Задел на будущее, когда захочется выпустить новую редакцию игры для нового железа, чтобы не переснимать ничего, а просто лучшую картинку выдать.
А PC уж лучше сразу брать XT - это будет вложение на долго.
В 1982-м XT еще не выпускается. А в 1983-м это будет вложение на один ну пусть два года, т.к. в 1984-м появится AT на 286-м процессоре, а в 1985-м уже 386-й процессор. Впрочем, с потоком денег за игры покупка новых ПК станет просто текущими расходами.
Зачем нанимать посторонних актеров, когда есть Трейси и Изабелла?
Я имел ввиду более исполнение трюков.
Возможно, хватит вообще фотоаппарата с большой скоростью съемки
Очень возможно. Правда они тоже недешевые были. Еще интересно, что ГГ может оказаться нужно не столько скорость съемки, сколько скорость работы затвора, чтобы снимать без смаза. Например, в 1982-м году Nikon FM2 имел относительно скромную скорость 3.5 кадра в секунду, но зато выдержка могла быть до 1/4000 сек. Canon F-1 имела скорость до 14 кадров в секунду, но выдержка дольше.
Тоже подумал, у него же под боком Голливуд со всеми разными студиями там. Наверняка есть варианты аренды для съемок, еще и провести их можно в павильонах, может даже нанять профессиональных актеров и исполнителей трюков.
Тоже была такая мысль, но там суть в том, что редактор производит логическое выделение отдельных сущностей. А как их отображать - это уже зависит от конкретных возможностей аппаратуры. Но даже на монохромных мониторах можно, например, ключевые слова отображать подчеркнутыми, знаки точка с запятой и другие - ярким, числа - ярким подчеркнутым, а текстовые строки - инверсным. Или еще как-то. Лучше всего позволить юзеру самому сконфигурировать на основе дефолта.
Между прочим, есть чудаки, которым не нравится подсветка и они ее специально отключают. Считают, что подсветка повышает нагрузку на зрение и рассеивает внимание. Мне их не понять, но такие есть.
Что мешает раньше изобрести? Для локалки, а локальные сети уже есть.
и последующих систем качество домашних игр выросло настолько, что люди все реже видели смысл идти в зал.
С другой стороны, аркадные автоматы даже сейчас есть и бизнес по их продаже неплохо себя чувствует. Кроме того, можно сделать зал не с аркадными автоматами, а компьютерные клубы, в том числе с возможностью поиграть по сети.
Пишут, что бабка-соседка отмазывается, что вроде собака каким-то образом.
Между прочим, уже внесенный залог не мог быть переиспользован? Или новый суд - новый залог, даже если прежний ещё не вернули?
Примерно тот же самый эффект: чем больше уровень компиляторной оптимизации, тем меньше смысла в ручной и даже отрицательный эффект от неё.
По-моему и так нормально, ГГ проявил вполне человеческую слабость, когда вспомнил нетривиальное решение и не подумал о более простом. Такое бывает. Keep It Simple Stupid принцип, хотя он слегка о другом.
Мне кажется лучше описать его мысли, когда он сообразит и при этом все будут думать какой он гениальный, а ему будет стыдно в душе, что зазнался, этакий щелчок по носу, о котором он никому не расскажет.
В текущем виде у задачи есть очевидный педагогический смысл для студентов, причём аспирант ведь не рассчитывал на машину Даффа (её даже ещё не было). С множеством массивов разной длины задача потребует больше времени и кода на решение. А время за терминалами не резиновое. Разве что сама задача будет не абстрактной, а пример практических проблем на реальном коде, которые "профессор" решил продемонстрировать студентам, что-нибудь с обработкой текстов, например. Или даже та самая задача, которую Дафф решал. Это тоже может быть тогда интересно и в логике событий.
Между прочим, такой трюк плюс ещё и усовершенствование быстрой сортировки - это заявка, чтобы на Каналью обратили внимание весьма известные люди. В реале машина Даффа очень понравилась самому Ричи, а Страуструп её приводил как пример гибкости языка.
Оно не то, что громоздкое, хотя и это тоже, но бессмысленно большая ручная работа была проделана.
Ага, первая реакция действительно, что это же не скомпилируется. Потом, а что так можно было со switch и while обращаться?
Кстати, сейчас в голову пришло, что у меня проверка скорости работы разных алгоритмов не совсем правильная. Надо было для единообразия и в наивном случае и с разверткой цикла использовать не индекс, а инкремент указателей. Хотя все-равно в while индекс инкрементируется, а разница между инкрементом указателя на 1 и целочисленным сложением его с числом не факт, что вообще имеется сейчас.
-O3, конечно. Сейчас поправлю текст.
Ну в общем, в этой проде задачка показалась интересной, чтобы ее проверить. Заводить эмулятор pdp-11 не стал, но на современной системе эксперимент провел. Три разных варианта в одной программе: наивный алгоритм (просто копирование), оптимизация с простым ручным разворотом цикла, оптимизация с Duff's device как в реале извратился инженер из Лукасфильма в 1983-м. Проверил с компиляцией с оптимизацией и без. Программа копирует 4Гб данных по 4 байта (использован 32-битный int). Без оптимизации наивный алгоритм выполняется 1.8 сек, простая оптимизация разворотом цикла 1.04 сек., Duff's device - 0.98 сек. С оптимизацией компилятором, наивно 0.22 сек., и по 0.37 сек. оба других алгоритма.
Получается, что на современных машинах и компиляторах оптимизировать такие низкоуровневые вещи как разворот цикла нет смысла вручную и даже может быть вредно для быстродействия. Во всяком случае, надо проверять результат оптимизации.
Программу компилировал gcc в Linux (gcc copydata.c -std=c99 -O0 -o copydata без оптимизации и с -O3 с оптимизацией) , но вроде системно-специфического ничего нет. Должно заработать и в винде с msvc, если кто захочет в эмуляторе проверить, то надо будет вместо фиксированной битности использовать int и long, и копировать не 4 Гб, а наверное 512 Кб.
Итак код программы (хотел убрать под спойлер, но движок сайта тогда глючит) :
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <stdint.h>
#define N 1000000000LL
#define STEP 8
void print_execution_time(clock_t start, clock_t end)
{
double cpu_time_used = ((double) (end - start)) / CLOCKS_PER_SEC;
printf("Execution time: %f sec\n", cpu_time_used);
}
void sum_and_print(int *mem)
/* checking the correctness of operation */
{
size_t i;
int64_t sum = 0;
for (i=0; i<N; i++) sum+=mem[i];
printf("sum = %lld, should be %lld\n",sum,(N-1)*N/2);
/* Arithmetic progression sum */
}
int main()
{
int32_t *src,*dst,*save_src, *save_dst;
size_t i,base;
clock_t start, end;
src = malloc(N * sizeof(*src));
dst = malloc(N * sizeof(*dst));
if (src == NULL || dst == NULL) {
printf("Memory allocated error!\n");
return 1;
}
for (i=0; i<N; i++) {
src[i]=i;
dst[i]=1;/* allocate all RAM page */
}
printf("Reserved %zu bytes\n",(sizeof(*src)+sizeof(*dst))*N);
/* наивный подход */
printf("Naive algorithm\n");
start = clock();
for (i=0; i<N; i++)
{
dst[i] = src[i];
}
end = clock();
sum_and_print(dst);
print_execution_time(start, end);
/* оптимизация за счет сокращения циклов */
printf("Optimized algorithm\n");
for (i=0; i<N; i++) dst[i]=0; /* clear dst */
start = clock();
base = N - (N % STEP);
for (i=0; i<base; i+=STEP)
{
dst[i]=src[i];
dst[i+1]=src[i+1];
dst[i+2]=src[i+2];
dst[i+3]=src[i+3];
dst[i+4]=src[i+4];
dst[i+5]=src[i+5];
dst[i+6]=src[i+6];
dst[i+7]=src[i+7];/* STEP == 8 */
}
for (i=base;i<N; i++)
{
dst[i] = src[i];
}
end = clock();
sum_and_print(dst);
print_execution_time(start, end);
/* Duff's device https://en.wikipedia.org/wiki/Duff%27s_device */
printf("Duff's algorithm\n");
for (i=0; i<N; i++) dst[i]=0; /* clear dst */
save_src = src; save_dst = dst;
start = clock();
base = (N + STEP-1) / STEP;
switch (N % STEP) {
case 0: do { *dst++ = *src++;
case 7: *dst++ = *src++; /* STEP == 8 */
case 6: *dst++ = *src++;
case 5: *dst++ = *src++;
case 4: *dst++ = *src++;
case 3: *dst++ = *src++;
case 2: *dst++ = *src++;
case 1: *dst++ = *src++;
} while (--base > 0);
}
end = clock();
sum_and_print(save_dst);
print_execution_time(start, end);
free(save_src);free(save_dst);
return 0;
}
Правда даст. Я даже проверил на современной системе, но проверять надо без оптимизаций компилятора, с ними наоборот, duff's device - самый тормозной
. Все же компиляторы за 40 лет зверски продвинулись в автоматической оптимизации
Глава шикарная. Запахло, ну этим самым запахло
Так в учебной задаче подобный хак никто и не потребует, задача решается и без него чуть менее универсально, просто раскручиванием вручную цикла. Главное догадаться, что управление циклом не "бесплатно" и программу можно заметно ускорить, оптимизировав его.
Нормальная задача на понимание работы компилятора.
Раскрутку можно сделать, если просто в теле основного цикла копировать не один раз, а порциями по несколько и потом по окончании цикла добрать остаток. В отличие от duff's device, решение будет неэффективно на коротком цикле. Но для большой длинны копируемого неважно. А инженер Лукасфильма сумел круто извратиться, сделав универсально, запихнув все в одну довольно неочевидную конструкцию.
P.S. На современных компах и компиляторах, эту задачу надо компилировать с ключом/опцией отключения оптимизации компилятора. Иначе парадоксальным образом самое простое решение в лоб с копированием будет самым быстрым, а duff's device самым медленным вариантом.
Скажу как читатель. Книга или нравится или не нравится. Если нравится - её читаю. Не нравится - не читаю. Все просто. Если нравится, могу на какие-то ошибки указать или что-то предложить для улучшения.
Но какой смысл требовать от автора, чтобы он фактически другое произведение стал писать?
Кроме того, есть по объему форма рассказа, повести, романа - каждая форма означает и определённый подход и даже стиль. А есть фактически такая форма как сериал - там тоже свой подход.
Помню, да. На бешеный темп может уйти несколько сот килобаксов даже, но ему вот-вот начнут поступать деньги от продаж игр и на пару-тройку в пределах 10 килобаксов должно хватить. Думаю разумно начать с алгоритмов сжатия информации. Жаль арифметическое кодирование уже запатентовали. Но можно еще успеть запатентовать LZW (1984-й год в реале) и алгоритм Jpeg (в реале 1987-й), а также такие варианты как фрактальное и вейвлет-сжатие. Правда в реале патент на базовый Jpeg (с DCT преобразованием) никому не мешал до 2000-х, а потом его аннулировали, когда попытались в 2002-м всех нагнуть, но для патентного пула подойдет.
Мысль возникла.
Про патенты на алгоритмы речь уже заходила. Почитал кое-что, как на них еще Билл Гейтс жаловался в 80-е речь. Так вот, наверное по-хорошему, Крису надо начать их патентовать в бешеном темпе как припадочному. Нести все что вспомнит из послезнания.
Иначе тоскливо жить станет: как раскрутится, на него примутся наезжать патентные лоеры конкурентов, а ему и ответить будет нечем. Патентный пул собирается, не только, чтобы другие не смогли перехватить алгоритмы, но и чтобы встречные иски подавать и в итоге добиваться крослицензионных соглашений. Правда патентовать денег стоит, как и поддержание в силе, но в те времена еще не особо больших, может и потянет.
Хотя бы основные алгоритмы сжатия и мультимедийные запатентовать. Оно как бы рано мультимедию, но это программы писать рано, а вот патенты получать может как бы поздно не стало.
Любопытный реликт 1991-го года. Книга без автора, была тогда в начале 90-х такая тенденция не указывать авторов у технических книг. Полистал, книга явно переводная, но с чего именно затрудняюсь угадать. В приложении указаны недокументированные функции, так там Int 28h содержит ряд функций как раз для безопасной работы tsr, реализующие фактически что-то вроде мьютекса для синхронизации с int 21h и др.
Наверное можно было создать «юникс для бедных» — однопользовательский, однозадачный (?), но совместимый на уровне системных вызовов с большими машинами.
Согласен, сейчас погуглил, нашел что в 1997-м году даже что-то такое появилось, называется Uzix, рассчитано даже на 64Кб 8-ми битки вроде спектрума. То есть, технически было возможно, а может даже кто-то и выпустил, но хорошо забылось.
Самое смешное, что таким однозадачным клоном Unix в некотором роде сама MS-DOS и является с версии 2.0. Там вполне сознательно в 1983-м очень много в API взяли из Unix, видимо были планы на портирование между DOS и Xenix. Система вызовов в Int 21h почти полностью копировала юниксовый syscall. Появились вполне в юниксовом духе дескрипторы файлов вместо FCB в 1.0, иерархическая система с каталогами, стандартные для Unix функции open/close/read/write и другие, пайпы и каналы ввода/вывода (stdin, stderr и др). Управление процессами (Exec ) было аналогично Unix, имитировался даже fork с засыпанием родительского процесса.
Для этого запрет прерываний есть, а в остальном согласен.
Извиняюсь за занудство, но DOS в обработчике не всегда запрещала прерывания (собственно даже не особо помню, чтобы она внутри сервисов это делала). А TSR, если активизировалась, то уже могла что-то прервать.
Да проблем с фоновой многозадачностью, особо, не было. Таймер давал 18,2 раза в секунду прерывания. Их можно было перехватывать. В перехватчике делать некие действия, передавать выполнение на перехваченный адрес. Там могла работать цепочка обработчиков. Главное, чтобы она сильно тормоза не создавала.
Проблема была не в том, чтобы на прерывание от таймера повесить свой обработчик, а в том, чтобы после этого система и программа, на фоне которой выполняется резидентная, работали корректно и не висли/не падали.
Хватало тонкостей. Например, не все функции DOS/BIOS было безопасно дергать изнутри TSR, особенно, если резидетных программ несколько было или необходимо было перехватывать не только таймер. Там же не было нормальных мьютексов и семафоров и раздельной памяти. Прикладная программа вызывает функцию DOS/BIOS, в момент ее исполнения TSR активизируется, прерывает исполнение функции, и в свою очередь ее же вызывает. И? Если прерванная функция не реентерабельная, то все могло закончиться плохо.
Ещё у MS уже тогда была привычка не документировать некоторые важные функции API, хотя они широко использовались в их программах.
Да и просто хватало багов в реализациях API и неточностей в описании - это уже безотносительно резидентности. Впрочем и сейчас хватает, но сейчас очень много информации можно найти в интернете, в том числе исходников и посмотреть как правильно что-то делать. А тогда часто только дебаггер в зубы.
Притом сама по себе многозадачность была востребована, в каком-то калечном уродливом виде она была даже в ms-dos, не помню про версию 1.0, но уже со 2-й точно были резидентные программы, которые что-то на фоне могли делать.
Например, спулер печати print.com, позволявший запустить печать и не дожидаясь окончания (печать на медленных матричных могла десятки минут и даже часами идти, если что объемное) вернуться в ms-dos и работать на фоне.
Но там все плохо документировано было, нормальные tsr-программы стали появляться после того как print.com дизассемблировали и разобрались как он работает.
Самое интересное, что в самом начале 80-х Билл Гейтс считал, что будущее за Unix. Microsoft тогда даже была разработчиком клона Unix - Xenix. Но в 80-е Windows не побеждала Unix, виндой тогда очень мало кто вообще пользовался. Первой реально популярной версией стала только Win 3.0 в 1990-м году.
К вашим аргументам я бы добавил, что ПК пользовательского класса и Unix тогда вообще были как бы в разных вселенных, считалось, что Unix - для серьезного железа и наоборот. То, что существовали отдельные варианты вроде Coherent или Minix картины не меняло. Даже Xenix отдельно не продавалась, ее поставляли для каких-то корпоративных поставок, обычно с многопользовательскими серваками/рабочими станциями с несколькими терминалами.
Ну нулевые, один хрен как-то так вышло, что только сейчас о ней узнал. Не то, чтобы я знаток игр был, но про более-менее известные/культовые хотя бы слышал, поэтому и удивился.
Надо же, только сейчас узнал про такую игру. В 90-е толи мимо прошла, толи не обратил на неё внимание и не запомнил.
В ящике у простого инженера могло и 180 выйти, но это примерно реальный потолок был.
Там не столько в языке надо хорошо рубить, сколько иметь хороший опыт работы с системами на которых он работает. А эти мейнфреймы - это совсем отдельный мир, даже можно сказать параллельный, относительно привычных нам компьютеров и программ.
Был клон PCjr - Tandy 1000, вещь заметно более популярная оригинала, но как-то тоже не особо сильно.
1C как бухгалтерская программа в основном популярна только в пределах РФ и некоторых других постсоветских республик. Из-за особенностей законотворчества, а не потому что не пустили куда-то.
В принципе, обычный QuickSort Хоара (т.н. быстрая сортировка) уже может впечатлить аспиранта, покажет, что студент реально разбирается и в алгоритмах и в программировании.
Если захочет выпендриться, напишет что-нибудь заведомо неизвестное в 1982-м году. Лишь бы сам ГГ знал :)) Например, Dual-Pivot Quicksort, который был придуман для Java Ярославским вместе с Бентли и Блохом в 2009-м году https://habr.com/en/companies/sberbank/articles/841342/ - суть в том, что в отличие от просто QuickSort используется разбиение не на две части с одним опорным элементом, а на три.
Есть правда риск, что аспирант не оценит и решит, что туповатый ГГ просто напутал в реализации быстрой сортировки. А вообще, чтобы просто по быстрому что-то написать лучше не выпендриваться, чем длинее и сложнее код, тем больше вероятность, что вот так на лету его записывая сам запутаешься.
Вообще-то есть уже, самое начало, но есть, я специально проверил перед тем как написать. Но в 1982-м это и неактуально, в любом случае, хотя бы через пару лет.
ГГ тогда надо начать писать программы для рабочих станций. DECstation, Sun, SGI - как раз начало их рассвета. А даже для PC, ну какие там медиаформаты они потянут? Трекерную музыку и gif-ки пока что только. Но рабочие станции - это уже более высокая лига
Так ведь подписывались, просто лимиты появились в 75-77-м году (до этого не было), можно было успеть, если вовремя подсуетиться, в небольших населенных пунктах и вообще проблем могло не быть.
Не, просто обсуждаем аннотацию и произведение. Показалось, что кое-что не логично, вот и высказался. Конечно спойлеров не хочу,
так и работать на массы. Так понятнее?
Если на массы, то он неизбежно вляпается в большую политику. Хочет или не хочет, но логика обстоятельств заставит. Или на каком-то этапе станет себя ограничивать в масштабе помощи.
К примеру, спасти или не спасти Союз, но избежать развала страны и экономики, гибели людей (в том числе русских) в разных "конфликтах", вроде Чечни, предотвратив это все - это помощь массам? Помощь. Но из аннотации похоже, что настолько масштабной помощью он даже пытаться заниматься не станет. Я об этом противоречии.
С церковью есть такой момент, что ГГ из-за того, что он латинос, скорее всего, католик, даже если он сам об этом не знает :) Но это может стать проблемой, если он начнет хотя бы изредка посещать протестантские собрания. Его могут ни те, ни эти не понять.
Написал(-a) комментарий к произведению Ретро бит [5]
Дело даже не в бесплатности, а в том, что это игра на поле Microsoft. Как-то переиграть их там не получалось никому до конца нулевых, пока они не стали слишком много глупостей допускать, да и потом не особо на самом деле.