Pull to refresh
12
0
Algorithm engineer @CrazyFizik

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

Send message

Мне важнее насколько давно обновлялся репозитарий, а вот это "02/03/23 14:50" мне ни о чем не говорит

Это было примерно 9 месяцев тому назад, не благодарите.

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

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

не говоря уж о том, 03 — это месяц или день, а 14:50 — это в каком часовом поясе?

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

Ну а для того чтобы не было двусмысленности совсем, то уже есть проверенные временем решения, как было раньше на том же Гитхабе, а сейчас это показывается по подсказке: 2 oct. 2023, 16:25 UTC+2 и тут есть все, что Вас интересует ;-) Собственно Oct 2, 2023, 4:25 PM GMT+2 тоже отлично информирует.

Ретрофутуризм - это будущее обращённое в прошлое.

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

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

А вот в ретрофутуризме все иначе, не так как в естественном историческом процессе - там всегда что-то остается как прежде, технологический прогресс играет сугубо утилитарную вещь и приобретает причудливые формы, как, например, в Дюне, где космические перелеты и развитые биотехнологии соседствуют с феодальными отношениями, и искусственнвми научными ограничениями, когда до кучи еще и все технологии ИИ отменены (при этом они есть) и это ретрофутуризм. И все произведения киберпанка это всегда ретрофутуризм, потому что технологии шагнули далеко вперед, а вот социальные, экономические и культурные отношения - нет, и итоге мы снова имеем очень причудливый мир High Tech, Low Life, который технологически ушел далеко вперед, а вот в социальном и экономическом плане полный регресс. Не-ретрофутуристичного киберпанка не бывает, иначе там нет будет почвы для протеста и это будет обыкновенная научная фантастика, как, например, Космическая Одиссея. Аналогично и Атомпанк - это могут быть сколько угодно развитые технологии с экзоскелетами и волшебными чемоданчиками, но люди продолжают оперировать понятиями Холодной Войны даже после апокалипсиса, как тот же Анклав в Фоллауте ;-)

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

В ретрофутуризме прогресс в одном месте всегда соседствует с застоем или упадком в другом месте, в итоге получаем сюжетобразующий конфликт, а декорации и точку отсчета выбираем уже по вкусу. Затянувшаяся до появления белого доспеха и раннего огнестрельного оружия Эпоха Викингов это тоже будет ретрофутуризм. В футуристичной же фантастике все направлено в будущее, через которое авторы-футуристы рассматривают проблемы настоящего. Формула тут очень проста: "человечество стало осваивать Солнечную систему - что дальше?" - это футуризм; "Белые победили Красных - что из этого выйдет?" - это уже альтернативная история; "человечество построило звездную империю, но скатилось в феодальное общество - что делать?" - это будет ретрофутуризм.

P.S. Сорян за некропостинг, но не мог пройти мимо.

В моём случае, слава б-гу, за эти спасибки давали компанейский мерч


Именно поэтому у вас она оказалась

совершенно сломанная и нерабочая вещь


Денюжки должны даваться, т.к. от соотношения выигрыша/риска типы координации и стратегий будут отличаться. При увеличении выигрыша, средняя выплата начнет уменьшаться и это вызовет разрушение координации. А снижение риска наоборот ведет к появлению координации — простейший пример скоординированной игры, это ревью-бомбинг, т.к. риски/затраты за -1 (или за +1) нулевые, совершенно незнакомые друг с другом люди могут внезапно самоорганизоваться и заминусить (или вознести) объект случайного хейта. Но все меняется, когда участие в игре становится ощутимым…

В общем это целая наука — теория игр, которая как раз затрагивает и такую систему мотивирования, там много разных видов кооперационных и скоординированных игр есть:

en.wikipedia.org/wiki/Coordination_game
en.wikipedia.org/wiki/Prisoner%27s_dilemma
en.wikipedia.org/wiki/Signaling_game
en.wikipedia.org/wiki/Keynesian_beauty_contest
en.wikipedia.org/wiki/Volunteer%27s_dilemma
en.wikipedia.org/wiki/Public_goods_game
en.wikipedia.org/wiki/Social_preferences
en.wikipedia.org/wiki/Hedonic_game
en.wikipedia.org/wiki/Tragedy_of_the_anticommons
en.wikipedia.org/wiki/Price_of_anarchy
en.wikipedia.org/wiki/Price_of_stability
en.wikipedia.org/wiki/Gift-exchange_game
en.wikipedia.org/wiki/Fair_division_experiments
Это все легко вычисляется, после чего дружбаны Вася и Петя, получают на двоих супер-задание: если их коллаборация действительно эффективна и они друг-друга тащат, то они её решат, если же нет, то после этого они перестанут друг-другу подкидывать бонусы, все просто…
В общем, не особо вышло.

Кажется что просто не въехали для чего это нужно.

Сама по себе премия для немеханической работы — зло, потому что трудно определить что и как оценивать, в итоге разрабатывают какие-то KPI, под которые со временем все подстраиваются. Тем более целевой результат бизнеса не промотивировать сотрудника X, чтоб он пахал 24/7 и выдавал супер-результаты — это разрушит и рабочую атмосферу и самих ударников, а чтобы команда выдавала продукт и этот продукт приносил деньги. И что самое важное для проекта над которым работает более одного человека? Главное — это кооперация между сотрудниками.

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

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

Славяне [южные] на Балканах проникли почти во всех этнические группы: румыны, венгры, греки. Традиционно считается, что болгары образовались в результате ассимиляции славянами местных фракийских племен и пришлых булгарских племен. Однако какова была реальная роль булгар в этногенезе болгар, кроме собственно названия — неизвестно, так как предполагается, что булгары были тюрками, однако никаких ранних следов тюркского языка в болгарском языке не осталось, и только больгарский вариант булгарских рун находили, которые к слову даже расшифровать не получается (впрочем тут есть альтернативная теория — булгары были все же ираноязычными индоевропейцами, и кстати при таком допущении булгарские руны вполне себе расшифровываются).

Этоногенез булгар был особенным, так как там много кого понамешано, так что у них из языка даже падежи исчезли, но это уже произошло в среднеболгарском языке около XV века и связано с османскими завоеваниям, а так то староболгорский почти такой же как и церковнославянский. Собственно, византийцы изначально письменность на основе кириллицы придумали для моравов, но у моравов это дело не зашло (внезапно Великой Моравии не стало), так что в итоге первыми кто принял кириллическое письмо стали болгары. Византийцы были не дураками и глаголицу с кириллицей разрабатывали специально под нужды славян и в IX веке уже знали кто есть кто по языку и культуре — перепутать не могли. Булгары, как предполагают появились на Дунае около VI века, самое раннее в V веке, к тому времени уже кругом везде были славяне, у которых была уже целая куча археологических культур (достоверно славянских) и которые активно тогда мигрировали во все стороны. В VII веке возникло Первое Болгарское Царство, которое просуществовало вплоть до XI века, ну а в IX-X веке болгары уже во всю писали на старославянском письменном языке. Так что может булгары (хз, были ли это тюркоязычные или ираноязычные племена) и были на территории Болгарии, но славяне всех их ассимилировали, так что даже никакого следа не осталось, кроме названия.

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

image
Как думаете, что быстрее?

Быстрее будет автоматизировать процесс найма, раз уж в фирму X такой наплыв соискателей, lol.


Не, ну серьёзно, 2/3 Вайти-компаний на собеседованиях дают какие-то тупые задания, уровня заполни массив змейкой, да сбрось хрустальный шар, с далеко не самыми прозрачными критериями отсева (вероятно рэндомным), вместо того, чтобы просто взять и написать онлайн-тест, после прохождения которого можно будет и статистику собрать (а на основании этой статистики и выбрать с кем дальше разговаривать), и дать развернутый фидбэк (на уровне автоматически сформированного отчета по результатам тестирования, lol).


А то выглядит это со стороны очень забавно: люди вроде бы занимаются серьезным Вайти-бизнесом, но не могут написать онлайн-тест и автоматизировать процесс найма, lol


Был такой мужик — Уильям Брэдфорд Шокли, который широко известен в узких кругах всяких технарей тем, что изобрел транзистор. А еще он был один из тех, кто ввел моду на стартапики в Кремниевой долине. Так вот, для набора персонала он специально нанимал психолога который предварительно прогонял соискателей через свои тесты и задания. После же отсева психологом, прошедшие первый этап сдавали письменный экзамен и тест единый для всех, который Шоккли специально разработал для этого. И уже после двух этапов тестирования (психолога и своего), а также изучения бэкграунда соискателей (кто где и на что закончил, где работал и чем занимался) он принимал решение о том, кого нанять по вполне объективным критериям, а кто не проходил тестирование, те получали фидбэк по пунктам. Фактически отбор туда проходил по тем же рейтинговым принципам как и в университет, но еще усиленный психологом и более детальным изучением потенциального работника. Так вот люди, которых Шоккли нанимал таким путем это, например, Гордон Мур (будущий основатель Intel), Роберт Нойс (будущий основатель Fairchild Semiconductor), Виктор Гринчич (также будущий сооснователь Fairchild, а еще будущий создатель технологии RFID-меток) и много других людей такого же уровня про которых можно теперь прочитать в Википедии. Забавно, что Шоккли был достаточно посредственным менеджером, но все равно смог организовать надёжный и легко масштабируемый отбор в свою компанию в 50-60 годах, а спустя 60-70 лет некоторые почему-то не могут повторить то, что раньше умели делать даже посредственные менеджеры, lol. Похожий подход наема использовали в те времена и в AT&T, где Шоккли до этого работал в Bell Labs, но у Шоккли критерии были самые жесткие — он пытался нанять вообще самых лучших инженеров (потенциально).

Тьфу. Я описался.

P.S. Ну этимология у этих слов одна и ведут они свое происхождение от правславянского слова *slověninъ (мн. ч. *slověne). Ну и так-то словени со словаками происходят из одной общей археологической культуры — пражско-корчакской. К слову сказать сербы, хорваты и болгары все же ведут свое происхождение от пеньковцев
Зато тихо, спокойно, зелено, относительно высокий уровень жизни и даже работа есть, под боком Италия и Австрия, но так-то вся Европа открыта. Прозрачное миграционное законодательство, а средний уровень благосостояния выше чем в любой другой стране бывшего СФРЮ. Любые движняки мимо них проходят. Как народ словаки очень приятные люди, при этом все же более дисциплинированные чем остальные южные славяне.

Ну понятное дело, что все имеет свою цену. Но тут еще прикол, что я знавал пару случаев, когда люди начав с Черногории, потом некоторое время помыкавшись по Балканам, в итоге оседали в Словении. Рыба ищет где глубже, а человек где лучше.
Да там на самом деле почти везде на Балканах грустно. В Сербии, говорят, безработица в том году достигала чуть ли ни 25%, и средняя зарплата в Белграде, евро 600 эдак, причем я бы не сказал что Белград сильно уж так дешевле Москвы. Но правда Сербия имеет хоть какую-то самодостаточную экономику, и там даже иногда работу найти можно, если повезет, в отличии от Черногории, где главный локомотив экономики — это туризм.

Если уж брать страны бывшего СФРЮ — то лучше всего именно в Словении, вот вообще по всем параметрам, инфа 145%. Они и отваливались от остальной Югославии первыми и с минимальными разборками, так что десятилетняя гражданская война Словению не затронула. Море кстати там тоже есть, только совсем чуть-чуть, зато Альпы есть. Правда, понятное дело, переезд туда уже далеко не такой простой как в Черногорию, ЕС уже все-таки.
Ну вот в РФ, налоговое бремя решили разделить так: 13% физлицо платит со своих доходов, и я откровенно говоря не знаю ни одну развитую страну, где подоходный налог с доходов физических лиц такой низкий, ну а всякие социальные отчисления делает работодатель, что для него внезапно увеличивает стоимость рабочей силы на треть. Понятное дело, что работодатель будет платить еще и другие налоги (ну там с прибыли и т.д. и т.п.). Плюс есть еще косвенные налоги: акцизы, НДС и т.д. и т.п. Но зато в РФ есть налоговая дырка — ИП на УСН называется, ну и в целом налоговая система достаточно простая и не особо обременительная, так что в среднем налоговое бремя в РФ оказывается ниже чем в странах ОСЭР и составляет всего-то около 31% от ВВП

Ну вот почему-то в развитых странах предпочитают делать совершенно по-другому: во-первых прогрессивное налогообложение и чем больше человек заработал, тем выше будет эффективная ставка, во-вторых принято, чтоб все все оплачивали сами. В Германии человек сам платит от 15 и до 45% подоходного налога и эффективна ставка получается в среднем порядка 20%. Однако помимо подходного налога работник еще и сам за себя выплачивает половину (на условиях софинансирования) отчислений на социальные взносы, а это: медицинская страховка 7.3% с работника (и еще столько же с работодателя), пенсия — 9.6%, еще вот 1.5% на безработицу, а еще там платят церковный налог процента эдак 2 и есть так называемый налог на солидарность в размере 5.5%. В общем как ни крути, но в Германии эдак процентов 40% от зарплаты уйдет на налоги и это с учетом того, что работодатель там софинансирует часть налогов. При этом все косвенные налоги типа там также на месте, налоговая система очень муторная (зато гибкая), и налоговое бремя по итогу там уже выше чем в РФ — 37% от ВВП.

Другие страны с высоким качеством жизни имеют еще более высокие налоги, и налоговое бремя там может подбираться и к половине от ВВП, например к таким странам относится Дания, где оно составляет 47% от ВВП. При этом налоги на доходы которые лично платятся работники могут доходить до 50%, плюс еще ведь и все косвенные налоги, такие как НДС в 25%, например, на своем месте, но понятное дело одним НДС'ом там не обходиться и все обходится заметно дороже. В Швеции налоговое бремя немного ниже чем в Дании и составляет всего-то каких жалких 43%, а налоги на доходы физических лиц могут доходить до 57%, но в среднем эффективная ставка там выходит порядка 30-35%

Зато низкое налоговое бремя в США, ниже даже чем в РФ, всего 26%, и не смотря на то что tax rate там находится в диапазоне 10-35% и нужно еще платить FICA (около 15% на пополам с работодателем). Но т.к. далеко не всех с улицы берут в Гугл, то эффективная ставка получается что-то в районе 15-20% однако достигается это достаточно хитрым путем: часть социальных услуг, которые в Европе предполагаются бесплатными или дешевыми, там платные и очень дорогие. Ну, например, аренда одного койко-места в день в больнице стоит от 2 и до 4 тысяч долларов, холецистэктомия может выйти в 50-60 тысяч долларов, а это уже медианный доход американца за год если что так, хотя в той же Дании и даже внезапно в РФ это делается вообще-то бесплатно (но для любителей платной медицины в РФ это обойдётся тысяч в 50… рублей). И хоть как-то сбить цены на медуслуги можно только за счет не самой прозрачной системы страховок. Еще вот нужно обзавестись пенсионным планом (и за это тоже же ведь берут деньги). Образование так вообще отдельное тема — высшее и профессиональное там платное и очень дорогое, настолько, что даже за коммьюнити колледж придется отваливать круглую сумму (впрочем, в Европе тоже далеко не везде халява, но вот в Германии, например, высшее образование бесплатное, еще и стипендию платят). Замечу что хоть школьное образование там в общем-то бесплатное, однако его имеет строгую корреляцию с местом жительства, и как правило жилье в районах с хорошей школой стоит не дешево, а жить в дешевом районе и записать ребенка в школу из другого района не получиться. По итогу на медицину в США уходит 20% ВВП, на пенсионную систему и на образование по 6% ВВП, и эти расходы ложатся не на бюджет, а на конечного потребителя — вот такая вот демократия, налоговое бремя вроде как не высокое, но за многие вещи придется платить напрямую из своего кармана.

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

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

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


Там несколько глубже проблема. Пока Черногория входила в Сербию, то в Белграде предпочитали закрывать глаза на некоторые… гхм… особенности внутренних порядков черногорцев, а черногорская верхушка власти очень активно любила играть на контрасте с Милошевичем во времена гражданской войны — «мы плохо живем, потому что Милошевич все-никак не успокоится». Однако, как известно, Милошевича в итоге сдали с потрохами, а Черногория после этого обрела независимость в одностороннем порядке — внешнеполитическая ситуация изменилась кардинально, теперь пенять на Сербию уже не получается, а вот банда Мило Джукановича как была у руля так и осталась, уровень жизни тоже, стабильно хреновый. Так что в стране стали достаточно сильны оппозиционные настроения, которые преимущественно просербские и естественно представляют угрозу для действующего режима. Понятное дело, что и ряд политических сил в Сербии хотели бы видеть более покладистую Черногорию, да и вообще независимость Черногории кагбэ лишила Сербию выхода к моря — сейчас-то они вряд ли уже решаться на военную интервенцию, но вот поддерживать оппозицию, почему бы и нет? Так что внутриполитическая ситуация там мягко говоря не очень, а основное пугало — это просербские силы которые хотят свершить переворот, логично что тут и русских под одну гребенку гребут вместе с сербами. Сербскую православную церковь в общем-то уже в открытую прессуют, самых просебрских лидеров оппозиции закрывали по обвинению в государственном перевороте, заодно когда черногорцы шили это дело, они еще к этому делу пришили двух граждан РФ, думаю Вы слышали про этот скандал? Замечу, что аресты лидеров оппозиции перед какими-нибудь выборами под каким-нибудь предлогом, типа попытки госпереворота, давняя политическая традиция Джукановича.

В прошлом году, три оппозиционные партии таки смогли впервые с начала 90-ых годов оспорить монополию Демократической партии социалистов — это бывшая черногорская компартия и по совместительству личная партия Джукановича. Сейчас вроде как коалиция из трех оппозиционных партий смогла заполучить большинство мест в Скупщине и сформировать правительство, но во-первых, Джуканович по-прежнему президент, во-вторых, его партия по прежнему занимает больше всего мест в Скупщине, в-третьих он не хочет лишаться иммунитета, ибо это чревато для него (ну я там хз, вдруг итальянцы снова чего-нибудь вспомнят, вообще интересная во всех отношениях история), в-четвертых, оппозиция все же достаточно разнородная, в-пятых, оппозиционная коалиция достаточно умеренная, наиболее радикальные оппозиционеры рассажены по тюрьмам. Чем эта Санта-Барбара в итоге кончится — трудно предсказать. Но пока политическая ситуация в Черногории крайне нестабильная и это уже давно так, и понятное дело, что всем выгодно искать крайних в такой ситуации. Ну русские и сербы — отличный вариант для чучела внешнего врага, особенно в контексте предпочтений некоторых политиков: тут вам и русские хакеры, которые Трампа избрали, дык почему бы в таком случае русским хакерам не устроить переворот в Черногории, кек? :-) Ну эт достаточно популярный политический прием много где:

image

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

Ну, иначе никак. Такова особенность алгебра-прона: ради оптимизации вычислительной сложности (да и просто для решения задач), приходится крутить-вертеть, да гонять по местам все эти матрички. И эта проблема еще и исторически осложняется еще несовершенством парсеров — это у Матлаба вменяемый синтаксис с точки зрения математики, а вот все эти ваши Си-плюс-плюс только скалярными величинами оперировать и могут, а массивы не более чем структура данных, полноценных матриц нет, память плоская и т.д. и т.п. Работа с графикой уже подразумевает наличие векторных операций, однако видеокарты предназначены в первую очередь для того чтобы быстро отрендерить сцену и когда появились первые шейдеры (а я даже немного застал эти времена) их функционал был мягко говоря ограниченным, и понятное дело, что весь синтаксис был заточен под то, чтобы все транслировалось в высокоэффективный код. Отсюда тот же, например, column-major order, ну просто потому что при порядке row-major будет O(N^3) кэш-промахов, а это нехорошо, ща правда появилась возможность настраивать порядок, но там есть ньюанс, связанный с тем, что просто компиляторы поумнели, но это случилось далеко не сразу. Отсюда же идет мода реверсить порядок матриц (которые уже заранее будут транспонированы), так как начиная каскад умножений с вектора 1x4, мы сократим число умножителей и сумматоров для этого вычислительного потока, на сумматоры, конечно пофиг, а вот умножалка — она дорогая.

Это по идее восходит к тому, что сама запись применения функции/оператора взялась как sin(x), а не x->sin к примеру (и в каком-то языке программирования так и сделали).


Весь секрет в типичном порядке слов в человеческий языках, и в 42% языков используется именно SVO (subject-ver-object) порядок, например, в таких языках как греческий, русский, английский, китайский и т.д. и т.п. для которых простые предложения будут иметь следующий вид:
Кошка пьёт молоко

Уильям любит водку

Васян играет на фортепьяно

В общем что-то совершает действие над чем-то — субъект => действие => объект
image
Такой порядок является единственно-верным базовым порядком для английского языка и основным порядком слов для романских языков. Не смотря на то, что в славянских языках, кроме болгарского, порядок слов вроде бы свободный свободный, но нейтральным и дефолтным вариантом является именно SVO порядок (что хорошо видно на примере болгарского языка, где порядок слов фиксированный), аналогичная ситуация и в венгерском. Германские языки, все кроме английского, не являются SVO языками в полном смысле этого слова — они относятся к так называемым V2 языкам, где именно позиция глагола всегда фиксирована, что часто приводит к SVO структуре для простых предложений. Английский, так же как и другие германские языки был изначально тоже V2 языком, однако в процессе своей эволюции выродился в кристально чистый SVO язык (я думаю что это произошло не без участия влияния французского языка).

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

При этом древние индоевропейские языки, например, латинский и древнегреческий, а также современные азиатские версии индоевропейских языков, например, хинди, являются SOV (subject-object-verb) где подлежащие и дополнение меняется местами, однако сказуемое все равно остается на первом месте. Когда Ньютон придумывал матанализ, для него естественным был именно порядок SVO, а языком международного общения вплоть для середины XX века был также язык с сильным SVO порядком — французский и такой порядок поддерживался всеми остальными европейскими языками. Отсюда и пошла операторная форма записи, где сначала идет оператор (допустим, набла какая-нибудь — векторный дифференциальный оператор), а затем собственно аргумент (допусти, фи там какая-нибудь), отсюда и именная форма записи функций y=f(x), где f совершает какое-то действие над аргументом x и так далее. Просто так удобнее и это полностью соответствует структуре речи языков, на которых говорит большая заметная часть мира: китайский, испанский, английский, русский, португальский — это уже получается около 1/3 земного шара :-) Единственный серьезный конкурент SVO — это языки типа SOV, но так уже получилось, что именно носители SVO-языков доминируют в науке: подавляющее большинство ученых говорят либо на каком-нибудь языке, где базовой или нейтральной формой является именно SVO, либо языке с высоким сродством к SVO (немцы и скандинавы), а язык определяет мышление.

Встречаются, конечно, и обратные порядки, например, языки OVS и OSV — это несколько изолированных языков в Южной Америке. Ацтеки как и магистр Йода предпочитает порядок — «объект-субъект-предикат», OSV :-) А к OVS по-моему относится вообще всего один единственный язык, какой-то малой народности из Венесуэлы. А тот же арабский поддерживает две формы: SVO и VSO в зависимости что говорящий считает важнее: subject или verb (это немного влияет на контекст), причем, в современном арабском доминирует все же SVO порядок, а VSO это уже больше к классическим арабским текстам. По какой-то причине, но SVO форма является более сильной.

А вот:

x->sin к примеру (и в каком-то языке программирования так и сделали)


Это просто пришли функциональщики и давай сувать во все ЯП лямбда-формализм. Не в какой-то ЯП, а сразу в целую кучу: C#, Java, Scala, Kotlin, JS, Common Lisp, Python, C++, Delphi и т.д. в которые введён синтаксис функционального программирования, который подразумевает анонимность функций. Это просто одна из формальных систем для анализа вычислимости, где все по существу сводится к аппликации (тоже самое что и f(x) только, записанный в виде f x) и абстракции.
И все равно, корректной записью будет, что-нибудь типа такого y = x => Math.Sin(x); т.е. примерно тоже самое, просто немного другой формализм :-)
А она нужна? Платить бешеные европейские налоги и страховки???

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


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

За флаг

Ну за вывешивание некоторых флагов можно и срок вполне себе получить, в Германии, например.


У меня коллегу посадили на 15 суток за то что флаг в окно вывесил

Ну он же не свой личный герб вывесил, а вполне конкретный флажок, с вполне конкретным политическим смыслом, странно не ожидать фидбека. Не нужно быть Вангой, что в РБ с помощью особых магических символов можно вызвать пативэн. С таким же успехом он еще мог рискнуть и поехать в штаты: дифилировать с флагом конфедерации перед протестующими BLM-активистами и собрать статистику фидбэков :-)


Поехать в Черногорию, дабы переждать политический кризис в Белоруссии — хорошая идея. Но по остальному же получается так:
1) Натурализация — нет, как раз-таки Черногория пример долбанутого иммиграционного законодательства
2) Дождаться, что страна войдет в ЕС — сомневаюсь что в ЕС ждут мафиозное государство. Если вопрос входа Сербии в ЕС скорее политический, и институционально Сербия очень быстро адаптируется к требованиям ЕС, то Черногория институционально не совместима с ЕС и хз когда это случиться, если вообще случиться
3) Права человека, демократия, благоприятный политический климат — это не про Черногорию от слова совсем. Я так понимаю, что герой статьи только в 2020 году попал в Черногорию и прожил там меньше года и видимо не в курсе, что Черногория в контексте стран бывшей СФРЮ это как Туркмения в контексте стран бывшего СССР со своим мудрым туркменбаши. Черногория — это гибридный режим, причем нестабильный. В 2020 году там было относительно спокойно, ну потому что COVID, карантин-все-дела, а часть активистов акций протеста 2015-2019 годов (да, там акции протеста могут длиться годами) успешно укатило в тюрьму (говорят, госпереворот задумали устроить).
4) Низкий уровень преступности — тоже нет. Туристов понятное дело особо никто трогать не будет, но если рассчитывать жить там долго, то значит надо будет интегрироваться в местное общество: обзавестись нужными связями, разобраться кто там и чем заправляет, понять кому, сколько и когда надо заносить :-) Долго жить параллельно остальным черногорцам не получиться, но и въехать в это не-черногорцу войти тоже вот будет нелегко (даже сербу, а уж выходцу из тепличных условий пост-совка, тем более) — Черногория это государство с явно выраженной клановостью. Ну а черногорцы, хоть и кажутся ленивыми и добродушными, но ребята очень горячие и заводные (впрочем это особенность южных славян вообще). Черногорию правда основные балканские заварухи мимо прошли, но вероятность переворота там очень высока и весь хрупкий баланс интересов может посыпаться единомоментно.
5) Социальная инфраструктура и медицина — полная ж0па, хуже разве что только в БиГ, наверное (и то я не уверен). Я если честно, то даже хз, есть ли там хоть один аппарат МРТ. Остается надеятся только на то, что климат там в целом получше чем в РБ.
6) Экономика — не смотря на выход к морю, экономика в Черногории в полной ж0пе и в текущей обстановке надеятся на то, что Черногория оттуда выберится оттуда — не стоит.


Балканы — это вообще крайне специфический регион в культурном плане, и жить там можно только в том случае если действительно принять и понять ее. Ну и конечно же не забывать про то, что гражданская война на Балканах шла без малого 10 лет: с 1991 по 2001 года, и конфликт далеко не потушен.


В плане спокойствия — то самая спокойная страна бывшей СФРЮ — это Словения.


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


Строго обходить — БиГ и Косово, без вариантов.


Ну а в Черногории и Северной Македонии делать особо нечего.


Ну а для любителей легких путей попасть в ЕС, лучше рассматривать Румынию, но лучше если где-нибудь затесались прабабушки-прадедушки румыны. Румыния это уже не СФРЮ, но на Балканах это единственное государство с высокими и устойчивыми темпами роста.

Спокойно — это пасти овец под Нельсоном.


А вот Балканы и "спокойно" понятия немовместимые. Там замороженных конфликтов, которые могут в любой момент вспыхнуть — вагон, и маленькая тележка. Очень высокий уровень преступности и коррупции, балканская организованная преступность одна из самых развитых в мире, где Черногория один из важных перевалочных пунктов по торговле оружием, людьми и наркотиками. Де-факто бессменного лидера Черногории — Дукановича, который как сел на свой трон в 1991 году, так и сидит там, перемещаясь между должностями президента и пример-министра туда-сюда по несколько раз — пока всего лишь обвинялся в организации рэкита и контрабанде сигарет. Обвинялся если что официально, итальянцами, но у него иммунитет: когда он очередной раз был пример-министром, итальянцы в итоге прекратили его преследования.


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

Что же касается HLSL и OpenGL, то на самом деле оба шейдерных языка работают примерно одинаково и их цель севершить такую операцию над вершиной:
finalvertex.pos = AffineTransformMatrix * RotationMatrix * ScaleMatrix * vertex.pos
где vertex.pos — естественно это вектор-столбец, ну а все остальное — это матрицы перехода 4x4.
Но в силу вычислительной сложности, и учитывая, что GPU все равно не умеют в комплексные числа лучше всего делать:
finalvertex.pos = (vertex.pos.Tranpose() * ScaleMatrix.Tranpose() * RotationMatrix.Tranpose() * AffineTransformMatrix.Tranpose()).Tranpose()
Экономия хорошая получается, поэтому и используется такая странная нотация, причем она что в HLSL, что в OpenGL одинаковая на самом деле: VxM1xM2xM3 и M3(M2(M1(V))) — оба варианта являются обратными и работают с транспонированными матрицами и векторами. GPU использую старые трюки и способы для организации памяти и построения вычислительного конвейера, и все это тянется еще со времен Фортрана из 50-ых.
Там на самом деле все упирается в то, как используются вектора и матрицы и какой смысл в это вкладывается, с учетом того, что умножение матрицы происходит всегда слева на право, которая включает в себя действие умножения каждого вектора-строки одной матрицы на каждый вектор-столбец другой матрицы, а сама операция умножения не является коммутативной.

Например, если мы рассматриваем матрицы как линейные отображение (linear map), то в таком случае принято работать с представлением векторов к веткор-столбцами, тогда получается вот такое выражение как f(v) = Av, где v — это вектор-столбец с размерностью n × 1, над которой совершает операцию отображения матрица A размерности m × n которая по сути является линейным отображением (linear map) из пространства R^n в R^m. И кстати вектор-столбец v по отношению к скаляру x также является линейным отображением f(x) = vx из R^1 в R^n. Так что когда мы имеем дело с матричными преобразованиями, например, в вычислительной геометрии, то за вектора конечно же должны приниматься веткторы-столбцы, ну а операторами над этими векторами будут всякие матрицы перехода, например, матрицы поворота.

И в таком контексте вектор-строка, например, r, на самом деле рассматривается тоже как матричный оператор, только размерностью 1 x n, который осуществляет частный случай линейного отображения вектора[-столбца] из размерности R^n в R^1, т.е. переводит из векторного пространства над скалярным полем в это же самое поле — это называется линейная форма (linear form, linear functional), и примером такой линейной формы будет скалярное произведение r*v=x.

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

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

преобразование вектора чередой матриц иметь последовательный вид VxM1xM2xM3 или
извращённый вывернутый вид M3xM2xM1xV

Это две разные операции.

В первом варианте Вы сначала получайте линейную карту (rM1), причем r здесь тоже матрица, которую затем применяйте к М2 и получайте еще одну линейную карту ((rM1)M2), которую уже применяйте как оператор к матрице М3.

Во-втором случае Вы применяйте какую-то линейную карту (отображение) М полученную из ((М3М2)М1) к вектору v, причем принцип тот тот же: применяя линейную карту М3 к М2, получайте линейную карту (M3M2), которую затем применяйте к М1 и так получайте оператор линейного отображения М = ((М3М2)М1) для вектора v.

Математическая сущность операций разная: в первом случае принимается операция линейного отображения к матрице M3, во втором случае к вектору v. Причем если операция ((М3М2)М1) над v действительно существует, то чтобы получить тот же самый результат в обратном порядке с учетом того, что r эмитрово-сопряженная с v, то придется крутить-вертеть все матрицы, причем не просто крутить вертеть а комплексно сопрягать, иначе просто ответ не сойдется.

Дело в том, что эти все операции не просто умножение, Вы применяйте оператор линейного отображения к элементу векторного пространства и применяется это всегда слева направо. Причем появилось это не просто так, дело в том, что такая запись как Ax = y, это матричная запись систем линейных уравнений, где матрица A содержит коэффициенты линейных уравнений, ну а вектор x содержит их аргументы, которые отображаются в y линейным отображением А записанном в матричном виде. При строчки уравнений, записанных одна за другой, совершенно однозначно переводятся в более компактную запись, где коэффициенты (a) = a[1,1],...,a[m,n] и значения функций (y) = y[1], y[2],..., y[m] при m>=n совершенно однозначно попадают на свои места в матрицу А и вектор у в соответствии со своей позицией (и пофиг в каком порядке они записаны), ну а неизвестные аргументы x = x[1], x[2],..., x[n] образуют вектор этих самых неизвестных аргументов x. Ну а дальше получаем линейное отображение B = inv(A), применяем его к y как By и получаем профит — вектор неизвестных аргументов x. Ну а если взять и определить операцию матричного умножения наоборот, то чуда уже не получится. Так-то можно по-разному крутить вертеть, переставлять термы как это удобнее, добавлять новые термы и хитрить с понижением ранга, но исходное линейное уравнение всегда будет Ax = y, ну а линейная функция всегда будет y = Ax. Все идет оттуда — из алгебры, потом уже удобный вычислительный инструментарий алгебры применяется к другим областям математики, например, к геометрии.
А чем дальше, тем круче. Люди не смогли договориться о том, как писать вектора – в строку или в столбец.

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

Наследование в принципе оказалось неудачной концепцией с настоящими подводными валунами:


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


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


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


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


В общем наследование вещь опасная и требует очень осторожного подхода при проектировании архитектуры ПО, и даже большие и серьезные компании могут облажаться. Вот мой самый любимый пример — это стэк и очередь в Жабе. Вообще стэк и очередь — это достаточно примитивные структуры данных, в которые можно только поэлементно что-то пихать и также поэлементно опорожнять их, все, однако в Жабе поступили по другому — их сделали наследниками от списков, вот только списки и очереди это совершенно разные структуры данных, никак друг с другом не связанные, и при таком подходе к наследованию у стэка и очереди появляются нехарактерные для них свойства, ну, например, произвольный доступ. Т.е. однозначно вот это вот
https://docs.oracle.com/javase/7/docs/api/java/util/Stack.html
пример говнодизайна. Кто-то поторопился, не подумал как надо, и обратно уже не выпилишь, так и живем. Вроде бы работает, но сам факт того, что в самой Жабе встречаются примеры того как нельзя делать уже доставляет.


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


Кстати в Дотнете, который появился позже Джавы, со стэком и очередью так не опростоволосились
https://docs.microsoft.com/ru-ru/dotnet/api/system.collections.generic.stack-1
Но там тоже бывали свои приколы, как, например, на самой заре дотнета не было дженериков, зато была уйма неуниверсальных коллекций, которые до сих пор есть, но ими никто сейчас не пользуется и они уже давно стали атавизмом. Или еще более забавная ситуация, когда мелкомягким пришлось менять логику работы foreach — это уже не имеет прямого отношение к наследованию, это уже другая хипстерская штучка — функциональное программирование. Ну вот все любят ФП-сахар, но 90% любителей сахара отказалось не готово к такому явлению как замыкание, и все время напарывалось на одни и теже грабли.


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

Композиция же. Берем и собираем нужный набор компонентов в нужном контейнере и радуемся жизни.


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

1
23 ...

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity