Мне с Turbo/Borland Pascal'я во времена 286/386 запомнилось, что там по-умолчанию 1-based. Ну и соответственно в мозги будущим программистам лили эту парадигму, что обычно циклы писались I:=1 to N, а не I:=0 to N-1. Да, сам язык, возможно этого не запрещал, но вот так сложилось.
Тут можно поспекулировать, что первичней мнимая часть, потому что через степени мнимой i можно выйти на действительные +1 и -1, а через степени действительных в мнимую уже никак.
Еще история вспомнилась — как-то я реализацию BASE64 отлаживал на VisalC++ 98. Для теста в код была впендюрена строковая константа, что-то вроде
const char s[] = "DJKFHGKJHGJ242423?==";
Не сходится — хоть ты тресни. Потом в отладчике случайно замечаю, что константа то у меня «DJKFHGKJHGJ242423#» — я чуть умом не тронулся :) Как гуглить "?==" тоже непонятно. Спасло, что под рукой оказался gcc — он выдал варнинг «trigraphs are not supported». Эта дрянь именно из EBCDIC'ов и вылезла, где не было #, {} и еще всякого. Т.е. ?==include <something.h> — корректный код :)
А не надо байтики откусывать :) надо символы откусывать. Плюс правда придётся тянуть state вместе с byte-offset, но это некритично. Основной минус — нельзя строку отгрызть с конца, а такой use case типа «оканчивается на xyz» попадается довольно часто.
Полностью согласен. Как человеку, работавшему в AAA индустрии (я есть в титрах Quake Champions), многие термины резали ухо — как будто машинный перевод. Плюс raymarching с raytracing'ом перепутан.
TL;DR: RTX — www.youtube.com/watch?v=7lVAFcDX4eM
FFF — www.factorio.com/blog/post/fff-176
#define SV_TYPE_XENIX_SERVER 0x00000800
#define SV_TYPE_SERVER_UNIX SV_TYPE_XENIX_SERVER
P.S: Автору UTF-C — мегареспект! :)