Как стать автором
Обновить
5
0.3

Пользователь

Отправить сообщение

У любой бюрократической системы на 10 000+ человек девизом идёт "гудхартили, гудхартим и будем гудхартить". Развитая система наказаний предсказуемо приведёт к а) развитому институту стрелочников и б) развитому потоку благ в пользу тех, кто классифицирует чиновников как "проворовавшихся".

Решил указать на то, какой именно давно известный алгоритм вы эмулируете своими расчётами. Больше (после предыдущего вашего ответа) не отвлекаю, хотите дальше писать о принципиально новом подходе в факторизации чисел в уникальной терминологии - ваше время, ваше право им распоряжаться. I'm out.

Встречный опыт: Qt Creator/C++, VS Code/TypeScript+HTML

Работает как продвинутый автокомплит, и в хорошем и в плохом смысле. В хорошем - предлагает поля структур, рутинные аксессоры / циклы / проверки, иногда он разумно предлагает блок в несколько десятков строк "по аналогии" (убрать который вообще в порядке следования DRY архитектурно очень нетривиально). В плохом - когда правишь файл с неидеальным чужим кодом, успешно подтаскивает из него неидеальные привычки его автора.

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

В Qt Creator работает вместе с обычным автокомплитом, так что проблем с непредсказуемым вводом имён полей/методов я не наблюдал.

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

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

В некоторых случаях его автокомплит вообще синтаксически не корректен.

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

1) Если на интервале в O(N) значений есть O(√N) требуемых элементов, то среднее расстояние между ними - O(√N).

2) Вы фактически полагаетесь на то, что из k² = aN + b² следует разложение aN = (k-b)(k+b). Этот способ называется "методом факторизации Ферма", и его оценка эффективности хорошо известна (спойлер: O(N) в плохих случаях для "базового" метода, надо доказывать если ваша модификация лучше). В любом случае, при 2q > p > q, перебирать придётся p-q строк, для больших множителей это непрактично много.

Моя расшифровка первых двух параграфов:

Для числа N (подразумеваемого вида N=pq, p, q различные нечётные простые, для примера рассматривается 323=17*19) рассматриваются кортежи

(k² mod N, N-k, k, N-2k, (N²-1)/4 + k²-kN, [(N²-1)/4 + k²] mod N, 2k-1, (N-k²) mod N) , k пробегает значения от 1 до (N-1)/2.

Наблюдение: если (N²-1)/4 + k² делится на p, то либо (N²-1)/4 + (k-1)² делится на p, либо (N²-1)/4 + (k+1)² делится на p. (доказательство очевидно, автору по-видимому тоже)

Кортежи для k, для которых k² < N либо [(N²-1)/4 + k²-kN] < N названы "тривиальными", дальше автор немного размышляет что при некоторых N тривиальными могут оказаться все кортежи.

Наблюдение: существует последовательные четыре значения k, такие что (N²-1)/4 + k² делится на p/q для первых двух и q/p для вторых двух (опять же очевидно, но рассуждение автора не выглядит строгим доказательством).

Наблюдение: для пары k1 = ap, k2 = bq = ap + 2m, существует l : l²<N, (ap+m)² = sN+l² ("квадратичные вычеты в этих центральных точках всегда оказываются полными квадратами").

Утверждение без ограничений тривиально неверно для p=17, q=19, a=1, b=3: k1=17, k2=57, "центральная точка" 37, 37² mod 323 = 77. (ap+m)² сравнимо с m² ((ap+m)² = [(ap+bq)/2]² ~ [(ap+bq)/2]²-abN = [(bq-ap)/2]² = m²), а потому утверждение верно при m²<N.

Наблюдение: если 2k-1 кратно p, то (N²-1)/4 + k² также кратно p, равно как и (N²-1)/4 + (k-1)². Автором представлено без доказательства, проверяется тупой подстановкой k=(ap+1)/2.

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

Мой личный вердикт: барахло.

так уже часть РОС на орбите

Простите, что? Единственный видимый мне план строительства РОС выглядит вот так, и первый запуск чего бы то ни было там помечен 10.2026. О каком объекте на орбите говорите вы?

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

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

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

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

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

Для полноты этого анализа желательно хотя бы прикинуть: 1) сколько денег стоит сколько-нибудь нетривиальное "согласование" (и с какими шансами оно поймает проблему, а не сведётся исключительно к жонглированию ответственностью); 2) сколько денег стоит ошибка в ручном вводе и сколько их будет в среднем за месяц. Первое можно посчитать заранее и превратить в рекомендацию программистам "выносите на обсуждение делать/не делать задачи оценочной длительностью от N дней".

1) При совместной разработке задача управления версиями важнее чуть более быстрой компиляции. Для этого формата надо писать свой git.

2) Синтаксически абсурдный текст (скажем, вставленный не туда copy-paste) может сильно напрячь эту систему. Вообще понятие "вставки" в терминах текста превращается в сложное преобразование дерева. Я начал набирать `int foo(char, ` и весь последующий текст в смысле подлежащего дерева превратился в тарабарщину.

3) Хранение любой служебной информации IDE упирается в требования обратной совместимости.

4) Если у меня почему-то сломалась IDE сейчас, или мне надо что-то поправить, а под рукой только планшет, или мне нужно править исходники через ssh, я могу открыть файл кода одним из 100500 редакторов. В дивном новом мире это ква, разработки без IDE не бывает.

До кучи, планы по развитию микроэлектроники (выловлены поиском в "Консультанте", тексты искались куда DuckDuckGo пошлёт):

Приказ Минпромэнерго РФ от 07.08.2007 N 311: " Ожидается, что в организациях электронной промышленности в 2011 г. будет освоен технологический уровень в 0,13 - 0,09 мкм ".

Распоряжение Правительства Российской Федерации №2396-р от 15 декабря 2012 года (программа развития на 2013-2025 годы): "в 2015 году планируется достижение уровня технологии 0,045 мкм с последующим переходом в 2025 году до уровня технологии 0,010 мкм"

Распоряжение Правительства РФ от 17 января 2020 г. № 20-р (стратегия развития на период до 2030 года): "создать: кремниевые фабрики, работающие в режиме "фаундри" для выпуска цифровых интегральных микросхем с топологическими нормами 28 нм, 14 - 12 нм, 7 - 5 нм".

Вот в такие моменты я люблю проект Wayback Machine. Сайт "Микрона":

07.01.2006: Есть 1,2 мкм. Планируется установка оборудования для производства микросхем с размером элемента 0,35 – 0,25 мкм.

30.09.2006: Есть 1,2 мкм. Планируется установка оборудования для производства микросхем с размером элемента 0,18 мкм.

11.03.2009: Раздел "Технологии" недоступен, "реализует инвестиционную программу модернизации производства микросхем до уровня 0,18 – 0,13 мкм".

05.08.2011: Есть КНИ 250 нм (КМОП a.k.a. EEPROM 180 нм). Проектная норма – 180 нм (2012 год). КМОП: Проектная норма – 90 нм (2012 год).

09.02.2013: КНИ 250 нм. Проектная норма – 180 нм (2012 год). КМОП: Проектная норма – 90 нм (2012 год). (sic!)

18.06.2015: Есть CMOS 90 nm. HCMOS065_LP 65 nm - В разработке: проходит квалификацию и освоение в производстве.

11.11.2018: Есть CMOS 90 nm. HCMOS065_LP 65 nm - В разработке: проходит квалификацию и освоение в производстве.

Настоящее время: Есть CMOS 90 nm. HCMOS065_LP 65 nm - В разработке: проходит квалификацию и освоение в производстве.

Как человек, который (в студенчестве) работал в "Макдональдс", я сообщаю вам что вы неправы. Туалеты чистятся по графику, а если человек прямо сейчас не занят вообще, кого-нибудь стараются отправить на перерыв или сделать то что всё равно надо будет сделать (пополнить запасы стаканов/салфеток на кассах, в таком духе). Придумывания объективно ненужной работы лично я не наблюдал.

Частное свидетельство: я так приходил. (Правда тикет был - сделать proof-of-concept из определённых штук, а не править существующий проект, но всё же...)

И на первый взгляд этого достаточно, чтобы уверенно заявить: код выше приведет к UB, если к моменту вызова push_back выполняется утверждение size() == capacity().

Нет. Код выше эквивалентен:

int& ref = v.back();
//в этот момент ref - валидная ссылка
v.push_back(ref); //А _после_ вызова - невалидная

Понятие "после" (sequenced-after) довольно хорошо формализовано в стандарте.

То что бедной реализации необходимо учесть что валидная ссылка может быть и на память, прямо или косвенно управляемую this - проблемы этой реализации, точно так же как случай присваивания объекта самому себе в operator=() и тому подобные штуки.

Завершение истории: подарок прислан и получен. Моя благодарность компании РСХБ.цифра.

Задача о разборчивой невесте - про выбор одной головой без возвращения, здесь перспективнее RLHF: HR берёт пять пар резюме, оценивает какое и насколько "лучше" в каждой паре. Приходит к тимлиду, говорит оценки. Тимлид смотрит на те же пары и говорит свои, потом объясняет почему они разошлись. Если стопка резюме очень большая, повторить ещё пару раз. Затем так обученный HR отбирает лучшие 2N резюме из стопки, тимлид сокращает их до лучших N, последние приглашаются на собеседование.

C++ в рантайме код не компилирует, а типы в смысле реализации настолько разные, что один и тот же код шаблонной функции при двух разных параметрах, кажется, может не иметь вообще ни одной общей инструкции.
Это немного легче увидеть, если смотреть со стороны реализации: вызов виртуальной функции требует знать её смещение в таблице виртуальных функций, разные единицы кода (.cpp-файлы) компилируются независимо, следовательно если бы компилятор наткнулся на инстанцирование шаблонной виртуальной функции типом, объявленном в том же модуле, смещение ему было бы взять неоткуда.

Информация

В рейтинге
2 573-й
Зарегистрирован
Активность