Pull to refresh
4
0.3
Роман Титов @perfect_genius

Неостановимый генератор идей по улучшению мира

Send message

Честно говоря, я даже и не знаю, зачем сейчас на С++ использовать что-то для многопоточности, кроме oneTBB:

- Данная библиотека открытая под лицензией Apache 2.0;
- Использует под капотом либо современные С++ потоки "свежих" стандартов (собственно, поэтому собственные велосипеды на них по большей части лишены смысла), либо старые системные напрямую, при необходимости работы в т.н. "Legacy"-режиме;
- В библиотеке реализованы все наиболее серьезные алгоритмы, необходимые для обеспечения качественной реализации многопоточности, такие как work-stealing, пулы, приоритетные очереди и т.п. и все это опять же, качественно увязано между собой;

По данной библиотеке есть очень хорошая книга - "Pro TBB C++ Parallel Programming with threading building blocks", Michael Voss, Rafael Asenjo, James Reinders

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

Почему подобные прыжки туда-сюда-вверх-вниз в случае GOTO это очень плохо, а в случае ООП - это прям очень хорошо? Суть и там и там одна - логика разбросана хаотическим образом, при том что никакого code-reuse обычно не происходит - в подавляющем большинстве случаев тот или иной метод имеет как правило одного, ну очень редко два-три места вызова (если речь не идет про SDK или utility классы).

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

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

И если объяснять это ребенку, то в этом месте надо встать и попрыгать, оттачивая умение менять направление на противоположное строго одним прыжком :)

А вот умножение я бы сравнил с площадью прямоугольника (или с дискретным ее аналогом, если мы считаем не непрерывные величины, типа площади комнаты, а количество яиц или конфет в коробке MxN)

И из этого сравнения сразу очевидным становится идея коммутативности умножения. Если мы поверем коробку с яйцами на 90 градусов, то M и N поменяются местами, но количество яиц в коробке не изменится (при соблюдении должной осторожности - яйца все же хрупкие).

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

Кстати, нет ли у кого идеи очевидно не числового алгебраического поля, притом не слишком невыносимо сложного?

А можно ли это условно и грубо представить вот так?:

Перед нами экран/монитор. Пусть у него разрешение 1000 на 1000 пикселей и все они сейчас чёрные. Они не могут двигаться, потому что пространства нет. Если бы крайние таки могли, или же на экране был курсор, то при проходе за край экрана он тут же появляется с другой стороны. В итоге у такой вселенной нет границ и нет пространства вне экрана, но есть размер.

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

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

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

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


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


В итоге, третий тип обнаружить нелегко или невозможно.

Предложу идею бессмысленности нестарения клеток, которую нигде не встречал. Назвал её "у организма нет линейки".
Допустим, мы добились нестарения клетки, или её постоянного омоложения. Или её неограниченного количества делений.
А останется ли она на своём месте? Или встанет ли новая клетка точно на место старой?
Ведь если нет, то организм так со временем "поплывёт" — сравните пропорции органов молодого и старого человека.
В итоге со временем получится, что организм бессмертный, но "кривой" настолько, что функционирует неэффективно. В какой-то момент скорость нанесения вреда всему организму от его неэффективной работы из-за неоптимальной формы/пропорций превысит скорость устранения этого вреда.
Пример — родился ребёнок, но умирает из-за аномальной формы сердца.
Или Эйфелева башня: её детали постоянно заменяют на новые, но если эти детали точно не отмерять, а делать лишь "на глаз", то со временем она может погнуться и рухнуть совершенно новой.
Что думаете? Понадобится способ располагать клетки на своих местах.
Может быть этим и ограничена максимальная продолжительность жизни человека.

Лично меня "убивает" в современной клавиатуре три вещи:
-Backspace не нужен, есть Delete (откровение от клавиатуры Apple)
-Никому не нужная Caps Lock занимает очень вкусное место, а ещё вынуждает производителей приделывать диод. Рациональнее было бы вместо неё что-то нужное, например смену языка.
-стрелки справа — чем на них нажимать, если правая рука занята мышкой? Т.е. клавиатура не заметила изобретения мышки и продолжает быть в таком нелепом виде десятилетия.

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

С одной стороны это грустно, что мы биороботы, с другой обнадёживает. Что возможность рефлексии и мышления это своего рода попытка сбежать "из песочницы" внутри головного мозга. А возможность творить это попытка сохраниться на внешних носителях.

Как бы вам сказать. Вам кажется, что нервы - это провода, их можно прозванивать, делать скрутки и контактные площадки.

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

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

Ну и речи о том, чтобы миниатюризировать все это до размера, чтобы сделать хотя бы 1000 "пинов", а даже не полмиллиона, нет.

Может тут есть знающие? Не знаю как гуглить такое: энергетически выгоднее сжимать газ для хранения в баллоне, или же таки выкачивать оттуда всё, чтобы создать вакуум?
Почему интересует: есть пневмотехника, раньше даже была пневмопочта. Так вот, вдруг дошло, что можно ведь и не "дуть", а втягивать. Что выгоднее?

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

Стоит отметить, что зарубежные производители освоили 4-нм техпроцесс и понемногу реализуют планы по разработке чипов по 3-нм и 2-нм техпроцессу.

Извините, но меня уже достало видеть эту фразу из новости в новость как только тема касается литографии. Для чего она тут, тупо чтобы показать как "там" все в шоколаде, а "тут" все плохо? 28nm - реальный физический параметр техпроцесса, 5-4-3-2 - маркетинговые названия, у которых под капотом в лучшем случае 14 или 10nm, что в данный момент является физическим пределом технологии - тут размер гейта уже исчисляется всего лишь десятками атомов, дальше пока что способов эффективно тасовать законы физики не придумал никто. Цифры, как указано по ссылкам, придуманы чисто для того чтобы отражать эффективность организации расположения транзисторов на подложке для поддержания ассоциации с законом Мура, "эффективную", а не "реальную" плотность размещения. Прекратите уже использовать маркетинговые фразы в контексте обсуждения параметров реальной технологии, мягко говоря, душком отдает.

Причем тут ASML? Весь проект делался и делается под МИЭТовский безмасочник.

Наработки отсюда: https://fcpir.ru/participation_in_program/contracts/14.578.21.0250/

Промежуточный процесс: https://sn.ntr.ru/proekti/project1011/

Основные работы: https://www.roseltorg.ru/procedure/0173100009521000167

И еще пара работ под грифом.

Уверенности уже нет, что это поможет.
Действия западных партнеров скорее способствуют затягиванию конфликта, и, вероятно, возврата к прежнему положению вещей уже не будет. Будет что-то другое.
Преступление слишком серьезное — покушение на монополию США применения насилия в внешней политике, тем более в сфере их интересов. Вызов гегемону брошен. Такое не простят.

Я вам расскажу, как обстоит дело сейчас, благо знаю, лично знаком с одним ВКС (высококвалифицированный специалист) из UK, работающим на высокой позиции топового уровня в российской (по факту) компании мирового класса. ("Фактически" я имею ввиду, ну, как Яндекс, который как бы NV. Но в этой компании с юрлицом на Западе фактически разработка и "мозги" все в России сидели, до прошлого месяца).
Человек искренне любит Россию, хотя, конечно, события последних пары лет, и особенно пары месяцев, сильно подорвали это отношение.

Что делает для привлечения таких людей Россия, чтобы они чувствовали, что их тут ждут, что им рады.
Ну, например в этом году ввели необходимость ежеквартально сдавать анализы на ВИЧ и сифилис. И вот топ этой компании каждые три месяца ездит в миграционный центр в Сахарово (это единственное на всю Москву место) и сидит там 5 часов в очереди, чтобы сдать кровь на сифилис.
А еще в случае потери работы его статус ВКС закрывается немедленно, и виза аннулируется. Проработал ты 8 лет в России, а теперь тебе пинок под зад, выметайся, ключи от квартиры в почтовый ящик опусти.

Вот так обстоит дело сегодня для иностранных высококвалифицированных специалистов в России.

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

О том как и почему появилось это понятие я сам когда давно писал.

Когда неопределённое поведение появилось другой альтернативы этому всему, в общем, не было.

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

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

Более того: как сейчас выясняется ещё в 2004м году разработчики компиляторов выбили себе карт-бланш на UB, которые они до сих пор не могут описать!

Вдумайтесь в уровень этого идиотизма: правила, нарушение которых позволяет вашему компилятору сломать, к чёртовой матери, вашу программу до сих пор не описаны в стандарте потому что их никак не могут разработать (ибо там противоречия воникают), ни в одном стандарте их нет (одна из последних попыток их добавить), но если вы их нарушаете — то получаете проблемы. Класс, да? Как таким языком вообще можно пользоваться? Это ж минное поле получается!

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

Фишка же в том, что ровно это и предполагалось делать с C. Это было даже явно прописано в соответствующем документе: Undefined behavior gives the implementor license not to catch certain program errors that are difficult to diagnose. It also identifies areas of possible conforming language extension: the implementor may augment the language by providing a definition of the officially undefined behavior.

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

Хорошее решение во времена, когда рабочая станция имела более слабый процессор чем тостер или зарядка для телефона сегодня.

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

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

Раньше были архитектуры с 9-битными байтами, и не с комплементарным представлением отрицательных чисел.

Дык фишка вот в чём: сейчас таких архитектур нету и современные версии C++ их не поддерживают, однако компиляторам по прежнему разрешено ломать программы, которые пользуются тем, что в современных процессорах комплемендарное представление отрицательных чисел не используется!

Тоже часто им пользуюсь и начал коллекционировать баги, как только они сломали его в Семёрке, большой список собрался уже.
Вот некоторые:
-куча графических глюков при частых выделениях, Ctrl+Z и Ctrl+Y. Портит картинку, что приходится его перезагружать.
-сглаживание хуже или вообще не работает при изменении размера картинки, если его перед этим выделить.
-если ширина картинки больше 34122 пикселей или высота больше 33448, то ползунок не довести до конца курсором — он прыгает на начало.
-если высота картинки больше 1190 пикселей и проскроллено вниз, то при изменении ширины вручную квадратиком справа, высота зачем-то прямо на глазах тает до:
-4760 пикселей (4720 в Win10) при масштабе 12,5%
-2380 пикселей (2360 в Win10) при масштабе 25%
-1190 пикселей (1180 в Win10) при масштабе 50%
Не помню уже зависит ли это от разрешения экрана, у меня 1366 на 768. Сейчас заметил, что эти числа зависят от положения скролла О_о. Т.е. числа выше даны для скролла до самого низа. Если не доводить, то будут другие значения…
-ручная обрезка, теперь уже снизу, не соответствует линии-указателю, если картинка не влезает в экран и отдалена зумом — обрежется больше нужного.
Это были наиболее раздражающие, есть много мелких, типа:
-при масштабе 300% и более в круге диаметром 37, 55, 56, 58, 62, 64 пропадают пиксели, появляются при отпускании кнопки мыши.
-если не трогать открытую картинку и провести инструментом вне холста с ней (серая зона) зажав правую кнопку мыши, то при закрытии спрашивает о сохранении изменений, будто мы что-то меняли. Не удивлюсь, если рисует там в памяти вне своей области.
-в строке состояния показываются координаты курсора, когда он над холстом. Но можно покрутить колёсик, чтобы показал и вне холста :)
-знали ли вы, что ластик может удалять определённый цвет? Правой кнопкой мыши.
В справке про это не написано, да и вообще в справке (F1) скриншоты старых версий Пейнта.
Ну а сколько глюков с текстом…
Когда-нибудь я найду время, чтобы залезть внутрь с отладчиком, чтобы посмотреть из-за чего это всё.

Я давно продвигаю эту идею на Хабре и считаю вот что: распространение будет ленивым — только бэкапы в безопасных местах. Цифровой разум в них будет в основном спать, будет мёртвым. Почему?
Потому что как только наше сознание соединяется с компьютером, оказывается в симуляции, оно хочет пережить как можно больше интересного. Но сюжетов не бесконечно, аттракцион заканчивается (оно даже в реале так, даже с безграничными ресурсами, но только у богатых). Далее либо запускать заново, что равнозначно зависанию-смерти, либо уснуть… в ожидании хоть чего-то нового-интересного — данных от автоматических зондов, которые распространяются по космосу всеми возможными способами, разбирая всю материю на постройки заводов для производства и запуска новых зондов, которые долетают до новых космических объектов и тоже разворачивают заводы. Как будто пулять сперматозоидами во все стороны, чтобы осеменять планеты, которые тоже начинают пулять во все стороны.
Летать им миллионы и миллиарды лет, так что остаётся только спать, быть отключённым, лежать файлом на накопителе бэкапа. Скорее всего, до скончания времён, но я оптимист, так что что-нибудь придумаем :)

1

Information

Rating
1,743-rd
Location
Набережные Челны, Татарстан, Россия
Date of birth
Registered
Activity