Термин "обратный" в математике значит совсем другое.
Обратный — это дающий единицу соответствующей операции. Обратный по сложению к x — это -x, обратный по умножению к x — это 1/x. Обратная матрица — это которая при умножении на данную даёт единичную.
А электрический заряд положительный и отрицательный - противоположны друг другу именно в математическом смысле.
А что такое «противоположны»?
И мы это видим непосредственно в законе Кулона и в правилах расчёта общего заряда группы частиц.
И что разваливается, как только вы начинаете рассматривать более тонкие характеристики системы вроде дипольного момента, и о чём я тоже писал выше про зажмуривание глаз.
Да, я неаккуратно выразился в прошлом комментарии.
Отрицательный заряд — это не обратный к положительному в математическом смысле. Я привёл пример выше со всякими там мюониями и обычными водородами, почему это не работает.
С малой вероятностью и непонятно какой стоимостью. Местный американец, который будет счастливым агентом экономики и который будет тоже рассказывать, как тут классно, куда выгоднее.
У вас там жира, сторипоинты и дизайнеры зачем простороили такой пайплайн?
Чтобы было как в гугле, и чтобы можно было себе записать строчку в резюме «работал по аджайлу, использовал мультимикросервисы и кафку, деплоил кубером».
При разработке сайта городской библиотеки не обязательно проводить всю церемонию с джирой и сторипоинтами (да и аджайл манифесто прямо говорит, что церемонии — зло). Проще и полезнее для людей закрыть эту задачу быстрее и перейти к чему-то более полезному для пользователей библиотеки.
Что сделал твой шеф? Обесценил труд людей
Если труд бессмысленен и устроен только ради того, чтобы имитировать бурную деятельность, то зачем такой труд? Будем оставлять только ради того, чтобы никого не обидеть, ведь работа — это такой детский сад для взрослых, где вы просто весело проводите время, чтобы не скучать весь день?
Давай представим себе на минуту, что дизайнер Вася в это время менял этой же кнопке форму, или подстилку под этой кнопкой.
Нет никаких других дизайнеров. Тут мне одному-то работы едва хватает. Это не ведущая дизайн-студия Парижа, это сайт городской библиотеки.
Он ищет, что за таск. Не находит таска.
По ровно этой логике, к слову, можно было и моему начальнику проверить, что его работа ни с чем не пересечётся, и он это вполне сделал, например.
Надо было ему сделать как ты и пердлагал - выделить неделю, завести таск и смириться, что любое изменение, даже самое маленькое, в совместной разработке имеет как техническую стоимость, так и административную.
Это означает, что в итоге сроки будут раздуваться до совершенно несерьёзных размеров. Так делать не надо.
«У всех неэффективностей есть причины, ничего делать не надо» — это очень странный подход.
Языки вообще избыточны. В C++ вы вынуждены дублировать имя класса для описания конструктора, в нетипизированном лямбда-исчислении вы дублируете имена переменных, в питоне вы дублируете self какой-нибудь.
Возможно, дело в том, что неизбыточные и выразительные языки неюзабельны.
Разве что запрещением тех или иных возможностей в вашей кодовой базе. Ну как где-то запрещены исключения, где-то запрещено шаблонное метапрограммирование, где-то ещё что запрещено.
Создавать языки метапрограммированием в C++ тяжело: адекватной макросистемы нет, шаблонное метапрограммирование — ад. В языке ML-семейства (в хаскеле, например) куда проще что автору библиотеки с eDSL'ем, что её пользователю. Лисперы тоже много чего хорошего расскажут про их стиль метапрограммирования.
Создавать языки «классически», где вы пишете парсеры-компиляторы-интерпретаторы, на C++ тоже тяжело хотя бы просто потому, что на том же хаскеле комбинаторные парсеры пишутся за время, сравнимое со временем однократной компиляциии проекта, использующего тот же boost.spirit.
Я бы сказал, что основная ниша плюсов — развитие и взаимодействие с уже написанным кодом на плюсах. Так как его много, плюсы никуда не денутся. Но начинать новый чистый проект в 2025-м на плюсах я не вижу смысла (если это, конечно, не какая-нибудь эмбеддщина, где компиляторов других языков нет).
Вернее, что это тип, у которого определено сложение.
Нет.
У меня здесь Int бесконечно точный (как хаскельный Integer), а для других типов (например, машинного целого) эта функция не тайпчекается: x + 2 может быть меньше x.
По термуλx. x + 2 вы не сможете вывести тип, а по типу (x : Int) → (Σr:Int. r > x) вы не сможете вывести терм (особенно единственным образом).
Произвольность выбора (и особенно в случае бинарного лево/право в трёхмерном или даже двухмерном пространстве) показывает, что их не существует в реальности.
Если эти свойства полностью выражают, скажем, денотационную семантику программы, то для значительной доли программ достаточно будет свойств - основную программу можно будет не писать.
Утверждаю, что нет, ни в теории, ни даже на практике. Term finding — неразрешимая задача, и эффективных полуалгоритмов нахождения доказательств нет.
Ну да, если у вас там, условно, семантика сводится к равенству двух выражений в полукольце, то это разрешимая задача. Но подавляющее большинство интересных программ к этому не сводится.
Когда мы статически типизируем программу, мы вносим определённое дублирование. Представьте, что у вас вообще никакого дублирования нет, любой символ в программе уникален. Ну тогда вы просто не сможете проверить программу ну никак.
Мы ведь оба можем построить ЯП, в котором это утверждение формально не выполняется? :)
Так это прямо означает, что отрицательность — это просто метка, как «лево и право». Лево и право существует объективно в природе в доступных человеку ситуациях?
ага. когда вы на декларации записываете 1000 строк, там где могли бы написать на императивке a += b
Вы не поверите, но я тоже пишу a += b даже в чистой функциональщине. При этом это работает композабельно и универсально, для куда большего спектра выражений, чем это ваше a в императивщине. Можно этим же выражением обновить каждый нечётный элемент массива, например.
далее пришёл чувак который сказал "это сложно" и запили взамен bash'у systemd.
взамен bash'у systemd.
I can't even
Пришёл чувак и впилил взамен брейнфаку (восемь операторов) Go (дофига операторов и ключевых слов), ага.
Считать systemd заменой bash'у — это какой-то бред. systemd — это замена bash'у + всему набору команд, которые тащатся вместе с ним и так, и в вашей системе инициализации.
Лично мне нет существенной разницы, писать скрипты под openrc (в генте, которой я пользуюсь) или под systemd — они оба одинаково сложные, я их оба одинаково не знаю.
«создать рабочее место / платить зарплату учителю‑американцу»
А сколаршип для местного американца не создаёт рабочее место и зарплату?
Экономическая обоснованность и полезность созданных государством зарплат, кстати, неочевидна, потому что в этом случае зарплаты показывают не востребованный другими экономическими агентами труд, а исключительно политическую волю правителя.
«воспитать агента влияния, который, уехав домой, будет рассказывать, как там классно»
Ну правильно, рассказывать, как классно, куда важнее, чем делать, чтобы местным было классно.
Проблема с этим всем в том, что критерии авторитарности применяются очень избирательно (что нам говорит дружба Гейтса, в компании которого вообще был stack ranking, с демократами? что нам говорит дружба Безоса, у которого складские работники в бутылочку ходят, с демократами?), если вообще применяются, а не заметаются под ковёр из «ну вы понимаете, стиль управления такой, и вообще это не авторитарность, а эффективность».
Обратный — это дающий единицу соответствующей операции. Обратный по сложению к x — это -x, обратный по умножению к x — это 1/x. Обратная матрица — это которая при умножении на данную даёт единичную.
А что такое «противоположны»?
И что разваливается, как только вы начинаете рассматривать более тонкие характеристики системы вроде дипольного момента, и о чём я тоже писал выше про зажмуривание глаз.
Да, я неаккуратно выразился в прошлом комментарии.
Отрицательный заряд — это не обратный к положительному в математическом смысле. Я привёл пример выше со всякими там мюониями и обычными водородами, почему это не работает.
Только отрицательный заряд — это не «отсутствие положительного».
В мире, где можно потрогать объективное отсутствие яблока, эквивалентное яблоку, только наоборот, отрицательные числа тоже «существуют».
Угу, например, непотизм в госструктурах, несомненно, показывает востребованность 20-летнего сына начальника.
Востребованность для правителя (и правящей верхушки в общем).
С малой вероятностью и непонятно какой стоимостью. Местный американец, который будет счастливым агентом экономики и который будет тоже рассказывать, как тут классно, куда выгоднее.
Чтобы было как в гугле, и чтобы можно было себе записать строчку в резюме «работал по аджайлу, использовал мультимикросервисы и кафку, деплоил кубером».
При разработке сайта городской библиотеки не обязательно проводить всю церемонию с джирой и сторипоинтами (да и аджайл манифесто прямо говорит, что церемонии — зло). Проще и полезнее для людей закрыть эту задачу быстрее и перейти к чему-то более полезному для пользователей библиотеки.
Если труд бессмысленен и устроен только ради того, чтобы имитировать бурную деятельность, то зачем такой труд? Будем оставлять только ради того, чтобы никого не обидеть, ведь работа — это такой детский сад для взрослых, где вы просто весело проводите время, чтобы не скучать весь день?
Нет никаких других дизайнеров. Тут мне одному-то работы едва хватает. Это не ведущая дизайн-студия Парижа, это сайт городской библиотеки.
По ровно этой логике, к слову, можно было и моему начальнику проверить, что его работа ни с чем не пересечётся, и он это вполне сделал, например.
Это означает, что в итоге сроки будут раздуваться до совершенно несерьёзных размеров. Так делать не надо.
«У всех неэффективностей есть причины, ничего делать не надо» — это очень странный подход.
Языки вообще избыточны. В C++ вы вынуждены дублировать имя класса для описания конструктора, в нетипизированном лямбда-исчислении вы дублируете имена переменных, в питоне вы дублируете
selfкакой-нибудь.Возможно, дело в том, что неизбыточные и выразительные языки неюзабельны.
Разве что запрещением тех или иных возможностей в вашей кодовой базе. Ну как где-то запрещены исключения, где-то запрещено шаблонное метапрограммирование, где-то ещё что запрещено.
Создавать языки метапрограммированием в C++ тяжело: адекватной макросистемы нет, шаблонное метапрограммирование — ад. В языке ML-семейства (в хаскеле, например) куда проще что автору библиотеки с eDSL'ем, что её пользователю. Лисперы тоже много чего хорошего расскажут про их стиль метапрограммирования.
Создавать языки «классически», где вы пишете парсеры-компиляторы-интерпретаторы, на C++ тоже тяжело хотя бы просто потому, что на том же хаскеле комбинаторные парсеры пишутся за время, сравнимое со временем однократной компиляциии проекта, использующего тот же boost.spirit.
Я бы сказал, что основная ниша плюсов — развитие и взаимодействие с уже написанным кодом на плюсах. Так как его много, плюсы никуда не денутся. Но начинать новый чистый проект в 2025-м на плюсах я не вижу смысла (если это, конечно, не какая-нибудь эмбеддщина, где компиляторов других языков нет).
Правда, к C почти всё это тоже относится.
Это какое-то новое определение дублирования.
Нет.
У меня здесь
Intбесконечно точный (как хаскельныйInteger), а для других типов (например, машинного целого) эта функция не тайпчекается:x + 2может быть меньшеx.По терму
λx. x + 2вы не сможете вывести тип, а по типу(x : Int) → (Σr:Int. r > x)вы не сможете вывести терм (особенно единственным образом).Окей.
Где здесь дублирование из-за типов?
Произвольность выбора (и особенно в случае бинарного лево/право в трёхмерном или даже двухмерном пространстве) показывает, что их не существует в реальности.
Утверждаю, что нет, ни в теории, ни даже на практике. Term finding — неразрешимая задача, и эффективных полуалгоритмов нахождения доказательств нет.
Ну да, если у вас там, условно, семантика сводится к равенству двух выражений в полукольце, то это разрешимая задача. Но подавляющее большинство интересных программ к этому не сводится.
Мы ведь оба можем построить ЯП, в котором это утверждение формально не выполняется? :)
Привычка из одной старой до-CTAD-шной кодовой базы, где
Scopedбыло функцией, а не классом.Так это прямо означает, что отрицательность — это просто метка, как «лево и право». Лево и право существует объективно в природе в доступных человеку ситуациях?
Не совсем, потому что типами вы выражаете свойства, а термами, имеющими эти типы, вы показываете, почему эти свойства выполняются.
Тут нет того дублирования, о котором вы говорите.
Вы не поверите, но я тоже пишу
a += bдаже в чистой функциональщине. При этом это работает композабельно и универсально, для куда большего спектра выражений, чем это вашеaв императивщине. Можно этим же выражением обновить каждый нечётный элемент массива, например.I can't even
Пришёл чувак и впилил взамен брейнфаку (восемь операторов) Go (дофига операторов и ключевых слов), ага.
Считать systemd заменой bash'у — это какой-то бред. systemd — это замена bash'у + всему набору команд, которые тащатся вместе с ним и так, и в вашей системе инициализации.
Лично мне нет существенной разницы, писать скрипты под openrc (в генте, которой я пользуюсь) или под systemd — они оба одинаково сложные, я их оба одинаково не знаю.
А сколаршип для местного американца не создаёт рабочее место и зарплату?
Экономическая обоснованность и полезность созданных государством зарплат, кстати, неочевидна, потому что в этом случае зарплаты показывают не востребованный другими экономическими агентами труд, а исключительно политическую волю правителя.
Ну правильно, рассказывать, как классно, куда важнее, чем делать, чтобы местным было классно.
Проблема с этим всем в том, что критерии авторитарности применяются очень избирательно (что нам говорит дружба Гейтса, в компании которого вообще был stack ranking, с демократами? что нам говорит дружба Безоса, у которого складские работники в бутылочку ходят, с демократами?), если вообще применяются, а не заметаются под ковёр из «ну вы понимаете, стиль управления такой, и вообще это не авторитарность, а эффективность».
Друзьям всё, врагам — закон.
А как ему надо было поступить?