Имя истинного врага - миссионеры.
От: alpha21264 СССР  
Дата: 11.08.25 08:33
Оценка: 2 (2) +1 -3 :))) :))) :)))
Есть такая книжка из жанра альтернативной истории "Миссионеры" (авторы Евгений и Любовь Лукины).
Сюжет про то, как могли бы индейцы подготовиться к приходу европейцев.
Там вместо приветствия используется фраза "Когда будет произнесено имя истинного врага".

Так вот про миссионеров.
Миссионеры бывают не только религиозные, миссионеры бывают так же и компьютерные.
И чаще всего они пропагандируют какую-нибудь дурь. (Я имею в виду не только христиан).

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

Вот и теперь некоторые несознательные граждане хотят быть святее папы римского,
и предлагают везде писать модификатор const и даже... делать разные типы для разных int,
"чтобы яблоки с апельсинами не складывать".

Например:
https://rsdn.org/forum/cpp/8975571.1
Автор: Pzz
Дата: 09.08 13:52


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

Допустим у нас есть несколько (ну допустим пять) величин: метры, килограммы, секунды, ньютоны и джоули.
Да, их нельзя складывать с друг с другом. Но их можно(нужно) умножать и делить.
Таким образом, чтобы написать формулу, которая содержит три величины, нам нужно иметь 3*(5+1)*(5+1) типов данных.
То есть 36 типов для результатов умножения (килограмм*метр),
И 2*36 типов для деления килограмм/метр и метр/килограмм.
То есть, что-то около сотни типов. (Точная цифра =108)

И чтобы над всем этим великолепием можно было выполнять действия, нужно 100*100 — десять тысяч функций.
Ну... вот так одним лёгким движением Вы обеспечиваете себя работой до пенсии.
Конечно, какие-то операции будут бессмысленными, и не должны быть реализованными,
но и тех, что должны быть реализованы, Вам хватит, чтобы работа встала навсегда.

Миссионеры конечно скажут, что для таких ситуаций у них есть шаблоны,
на что я скажу, что я хочу ЭТО видеть. Как вы будете трахаться с шаблонами.

В этом месте миссионер скажет, а зато Вам компилятор подскажет, когда Вы вставите в формулу не ту переменную.
На что я отвечу, что да, раз в год я могу вставить в формулу не ту переменную.
Но я это делаю не чаще раза в год, и за пять минут найду такую ошибку.
А весь остальной год мне придётся бороться против компилятора,
и на этом будет потеряно гораздо, гораздо, ГОРАЗДО больше времени.

А зачем же тогда они это пропагандируют? На этот вопрос ответа нет.

Поэтому, я говорю: не слушайте миссионеров. Миссионеры — это враги.
В данном случае я опять не христиан имею в виду.

Течёт вода Кубань-реки куда велят большевики.
Re: Имя истинного врага - миссионеры.
От: so5team https://stiffstream.com
Дата: 11.08.25 08:40
Оценка:
Здравствуйте, alpha21264, Вы писали:

У вас есть плохая привычка сперва сказать "A", а потом молча слиться, когда вам задают вопросы (например
Автор: so5team
Дата: 08.08 12:47
).
Re[2]: Имя истинного врага - миссионеры.
От: alpha21264 СССР  
Дата: 11.08.25 08:44
Оценка: +1 :))
Здравствуйте, so5team, Вы писали:

S>У вас есть плохая привычка сперва сказать "A", а потом молча слиться, когда вам задают вопросы (например
Автор: so5team
Дата: 08.08 12:47
).


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

Вот в Вашем напримере какого рода ответ Вы ожидаете получить? Смысл Вашего вопроса какой?

Течёт вода Кубань-реки куда велят большевики.
Отредактировано 11.08.2025 8:46 alpha21264 . Предыдущая версия .
Re[3]: Имя истинного врага - миссионеры.
От: so5team https://stiffstream.com
Дата: 11.08.25 08:53
Оценка: +2
Здравствуйте, alpha21264, Вы писали:

A>Пищу для размышлений я дал, а дальше сами.


Тупой наброс теперь так называется? Ну OK.

A>Вот в Вашем напримере какого рода ответ Вы ожидаете получить?


Честный желательно. Используете ли вы в своем коде классы?
Если используете, то есть ли в ваших классах const-методы?

A>Смысл Вашего вопроса какой?


Вы на вопросы сперва ответьте.
Re: Имя истинного врага - миссионеры.
От: Pzz Россия https://github.com/alexpevzner
Дата: 11.08.25 10:03
Оценка:
Здравствуйте, alpha21264, Вы писали:

A>Поэтому, я говорю: не слушайте миссионеров. Миссионеры — это враги.

A>В данном случае я опять не христиан имею в виду.

Знаешь, что ты сейчас сказал?

Ты сказал, что если к вам придёт человек и научит вас варить сахар, то надо сварить его самого заживо в котле для сахара, потому что сахар-то он научил готовить, а торты — нет.
Re: Имя истинного врага - миссионеры.
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 11.08.25 10:11
Оценка: 1 (1) +1
Здравствуйте, alpha21264, Вы писали:


A>Да, конечно, хорошо бы чтобы компилятор подсказывал, когда ты пытаешься метры с килограммами сложить.

A>Но у всего есть цена. Так давайте посмотрим на цену.

Давай.
У европейцев спутник "Ариан-5" упал когда-то, с типом данных не угадали. Стоит ли работы программиста?
Или сбой навигации у самолётов над Мёртвым морем, когда высота была отрицательной.
Есть области, где стоит платить такую цену.
Re: Имя истинного врага - миссионеры.
От: Qulac Россия  
Дата: 11.08.25 10:11
Оценка:
Здравствуйте, alpha21264, Вы писали:


A>Есть такая книжка из жанра альтернативной истории "Миссионеры" (авторы Евгений и Любовь Лукины).

A>Сюжет про то, как могли бы индейцы подготовиться к приходу европейцев.
A>Там вместо приветствия используется фраза "Когда будет произнесено имя истинного врага".

A>Так вот про миссионеров.

A>Миссионеры бывают не только религиозные, миссионеры бывают так же и компьютерные.
A>И чаще всего они пропагандируют какую-нибудь дурь. (Я имею в виду не только христиан).

Да разрабатывали как люди в машинных кодах, а потом пришли эти жертвы егэ т.е. миссионеры и все испортили.
Программа – это мысли спрессованные в код
Re[2]: Имя истинного врага - миссионеры.
От: alpha21264 СССР  
Дата: 11.08.25 10:11
Оценка:
Здравствуйте, Pzz, Вы писали:

A>>Поэтому, я говорю: не слушайте миссионеров. Миссионеры — это враги.

A>>В данном случае я опять не христиан имею в виду.

Pzz>Знаешь, что ты сейчас сказал?


Pzz>Ты сказал, что если к вам придёт человек и научит вас варить сахар, то надо сварить его самого заживо в котле для сахара, потому что сахар-то он научил готовить, а торты — нет.


В данном случае будет уместно сказать "учу читать".

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

Течёт вода Кубань-реки куда велят большевики.
Re[2]: Имя истинного врага - миссионеры.
От: alpha21264 СССР  
Дата: 11.08.25 10:14
Оценка:
Здравствуйте, Nuzhny, Вы писали:

A>>Да, конечно, хорошо бы чтобы компилятор подсказывал, когда ты пытаешься метры с килограммами сложить.

A>>Но у всего есть цена. Так давайте посмотрим на цену.

N>Давай.

N>У европейцев спутник "Ариан-5" упал когда-то, с типом данных не угадали. Стоит ли работы программиста?

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

Течёт вода Кубань-реки куда велят большевики.
Re[2]: Имя истинного врага - миссионеры.
От: alpha21264 СССР  
Дата: 11.08.25 10:16
Оценка: :)
Здравствуйте, Qulac, Вы писали:

A>>Так вот про миссионеров.

A>>Миссионеры бывают не только религиозные, миссионеры бывают так же и компьютерные.
A>>И чаще всего они пропагандируют какую-нибудь дурь. (Я имею в виду не только христиан).

Q>Да разрабатывали как люди в машинных кодах, а потом пришли эти жертвы егэ т.е. миссионеры и все испортили.


Тебе не кажется, что твоя реплика похожа на кривляние?

Течёт вода Кубань-реки куда велят большевики.
Re[2]: Имя истинного врага - миссионеры.
От: so5team https://stiffstream.com
Дата: 11.08.25 10:16
Оценка:
Здравствуйте, Nuzhny, Вы писали:

N>У европейцев спутник "Ариан-5" упал когда-то, с типом данных не угадали.


С Ариан-5 не все так просто.
А вот с Mars Climate Orbiter да, вот прям про сочетания единиц в разных метрических системах.
Re[2]: Имя истинного врага - миссионеры.
От: koenig  
Дата: 11.08.25 10:17
Оценка: +1 :))
N>У европейцев спутник "Ариан-5"

ошибка типов!
Re: Имя истинного врага - миссионеры.
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 11.08.25 10:25
Оценка:
Здравствуйте, alpha21264, Вы писали:


A>Вот и теперь некоторые несознательные граждане хотят быть святее папы римского,


Нет


A>и предлагают везде писать модификатор const


Я пишу, и мне это абсолютно не мешает, а вполне даже помогает


A>и даже... делать разные типы для разных int,

A>"чтобы яблоки с апельсинами не складывать".

Тоже хорошее дело, жаль только, что в плюсах нет


A>Да, конечно, хорошо бы чтобы компилятор подсказывал, когда ты пытаешься метры с килограммами сложить.

A>Но у всего есть цена. Так давайте посмотрим на цену.

A>Допустим у нас есть несколько (ну допустим пять) величин: метры, килограммы, секунды, ньютоны и джоули.

A>Да, их нельзя складывать с друг с другом. Но их можно(нужно) умножать и делить.
A>Таким образом, чтобы написать формулу, которая содержит три величины, нам нужно иметь 3*(5+1)*(5+1) типов данных.
A>То есть 36 типов для результатов умножения (килограмм*метр),
A>И 2*36 типов для деления килограмм/метр и метр/килограмм.
A>То есть, что-то около сотни типов. (Точная цифра =108)

A>И чтобы над всем этим великолепием можно было выполнять действия, нужно 100*100 — десять тысяч функций.

A>Ну... вот так одним лёгким движением Вы обеспечиваете себя работой до пенсии.

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

Но и сразу тебе это никто делать не предлагает. Собрался ты делить километры на секунды, компилятор тебе дал по рукам, ты пошел проверил: "да, я всё правильно делаю, просто пока нет такого метода", и сделал метод, который позволяет делить расстояние на время и возвращает скорость. Всё. Делов на три секунды.

По хорошему, подобное уже должно было бы быть в стандартной библиотеке, или в бусте, как минимум.

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


A>Конечно, какие-то операции будут бессмысленными, и не должны быть реализованными,

A>но и тех, что должны быть реализованы, Вам хватит, чтобы работа встала навсегда.

Нет конечно


A>Миссионеры конечно скажут, что для таких ситуаций у них есть шаблоны,

A>на что я скажу, что я хочу ЭТО видеть. Как вы будете трахаться с шаблонами.

А что с ними трахаться? Для подобного если шаблоны и надо применять, то это будет элементарно. Даже если и захочешь потрахатся, не с чем будет.



A>В этом месте миссионер скажет, а зато Вам компилятор подскажет, когда Вы вставите в формулу не ту переменную.

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

Ты лучше скажи, какой софт ты пилишь, чтобы я его стороной обходил


A>А весь остальной год мне придётся бороться против компилятора,

A>и на этом будет потеряно гораздо, гораздо, ГОРАЗДО больше времени.

Да нет, на подобное время уходило тогда, когда я забивал на предупреждения компилятора. Как стал собирать всё с -Wall -Werror, и поправил свои либы (на что ушла где-то неделя, вдумчивого разбирательства с каждым из кейсов), такой проблемы просто нет.


A>А зачем же тогда они это пропагандируют? На этот вопрос ответа нет.


Упрощаем жизнь себе, и рекомендуем это другим.


A>Поэтому, я говорю: не слушайте миссионеров. Миссионеры — это враги.

A>В данном случае я опять не христиан имею в виду.

Были такие товарищи — луддиты. Вот ты на них очень похож
Маньяк Робокряк колесит по городу
Re[3]: Имя истинного врага - миссионеры.
От: so5team https://stiffstream.com
Дата: 11.08.25 10:25
Оценка: +1
Здравствуйте, alpha21264, Вы писали:

A>Ракета летела совершенно нормально.

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

Если мне не изменяет склероз, то на Ариан-5 переиспользовали часть кода из Ариан-4. И старый код не был расчитан на параметры взлета Ариан-5. Поэтому-то снимаемые телеметрией величины вышли за диапазон, на который был расчитан код Ариан-4. И смог бы переиспользованный из Ариан-4 код корректно обработать эти величины дальше, если бы не было жесткого контроля на уровне преобразований типов, это еще вопрос.

Так что это не из-за параноии, а из-за излишнего доверия к коду, который работает.
Re[3]: Имя истинного врага - миссионеры.
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 11.08.25 10:29
Оценка:
Здравствуйте, alpha21264, Вы писали:

A>Ну, у меня же и основная работа есть. Поэтому я могу забыть про дискуссию или потерять к ней интерес.


Ну да когда обосрамшись, то интерес действительно быстро теряется


A>Пищу для размышлений я дал, а дальше сами. Спор ради спора я вести не буду. Так что терпите.


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


A>Вот в Вашем напримере какого рода ответ Вы ожидаете получить? Смысл Вашего вопроса какой?


Ну, раз ты не понял...
Маньяк Робокряк колесит по городу
Re[4]: Имя истинного врага - миссионеры.
От: alpha21264 СССР  
Дата: 11.08.25 10:31
Оценка: :)
Здравствуйте, so5team, Вы писали:


A>>Пищу для размышлений я дал, а дальше сами.


S>Тупой наброс теперь так называется? Ну OK.


Похоже, что Вы сам немного...

Когда я написал про illegal instruction, я написал что :
1) Новый gcc вставляет в код illegal instruction, о чём его никто не просил.
2) Полезные сообщения тонут в тоннах бесполезных.
И что к этому нужно быть готовым.
Далее на эту тему можно рассуждать до бесконечности.

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

Вот что я дальше должен обсуждать?

A>>Вот в Вашем напримере какого рода ответ Вы ожидаете получить?


S>Честный желательно. Используете ли вы в своем коде классы?

S>Если используете, то есть ли в ваших классах const-методы?

Классы использую.
const-методы не использую, потому что не знаю, зачем они нужны.
У меня есть get-методы, но по моему это не одно и то же.

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

A>>Смысл Вашего вопроса какой?


S>Вы на вопросы сперва ответьте.


Ну вот ответил. Я думаю, что Вам не полегчало. Потому что мы существа из разных миров.

Течёт вода Кубань-реки куда велят большевики.
Re[4]: Имя истинного врага - миссионеры.
От: so5team https://stiffstream.com
Дата: 11.08.25 10:34
Оценка:
Здравствуйте, Marty, Вы писали:

M>Да вот ещё, терпеть тебя. Нам просто на тебя наплевать. Просто мы теперь многое о тебе узнали, как и о качестве твоего софта. Ну и стало ясно, что твоё мнение немногого стоит, ты можешь лютую дичь нести с важным видом.


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

Если программы по 10KLOC и кроме автора никто в них никогда не заглядывает, то и проблем никаких нет.
Re[5]: Имя истинного врага - миссионеры.
От: so5team https://stiffstream.com
Дата: 11.08.25 10:43
Оценка:
Здравствуйте, alpha21264, Вы писали:

A>Ваша точка зрения, которую Вы защищаете -


Внесем ясность: это не моя точка зрения, это то, что вы думаете про мою точку зрения.

A>давайте нам ещё больше тонн бесполезных варнингов.


Не-а, мне бы хотелось больше полезных варнингов.

A>Классы использую.

A>const-методы не использую, потому что не знаю, зачем они нужны.

Ну вот это я и хотел услышать.

A>Самое главное — я не понимаю, какое это имеет отношение к обсуждаемой теме.


Самое прямое.

const -- это контроль компилятора за тем, что вы делаете.

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

И при таком подхоже компилятор сам бьет меня по рукам если я пытаюсь по const-ссылке вызвать мутабельный метод.

Это такая помощь от компилятора, которую сложно переоценить.

A>У меня такое впечатление, что Вы слишком много внимания уделяете инструменту и слишком мало задаче.


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

A>Такое бывает, когда Вам не дают больших


Давайте конкретнее: "большие" -- это сколько в строках?

A>интересных задач.


Тут есть парадокс: чем интереснее задача, тем меньше шансов, что за нее заплатят

Из совсем свежего: версионированный контейнер для использования в многопоточном коде. Типа того, что если кто-то взял этот контейнер как "читатель", то он работает со старой версией содержимого и не видит изменений, которые в контейнер сейчас вносят "писатели".

Такая задача по вашей классификации пойдет как "интересная" или нет?

A>Ну вот ответил. Я думаю, что Вам не полегчало.


Напротив, стало понятнее.
Re[4]: Имя истинного врага - миссионеры.
От: alpha21264 СССР  
Дата: 11.08.25 10:59
Оценка:
Здравствуйте, Marty, Вы писали:

A>>Ну, у меня же и основная работа есть. Поэтому я могу забыть про дискуссию или потерять к ней интерес.


M>Ну да когда обосрамшись, то интерес действительно быстро теряется


Хамло. (тут мне нужен смайлик с воздушным поцелуем)

A>>Пищу для размышлений я дал, а дальше сами. Спор ради спора я вести не буду. Так что терпите.


M>Да вот ещё, терпеть тебя. Нам просто на тебя наплевать. Просто мы теперь многое о тебе узнали, как и о качестве твоего софта. Ну и стало ясно, что твоё мнение немногого стоит, ты можешь лютую дичь нести с важным видом.


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

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

Течёт вода Кубань-реки куда велят большевики.
Re: Имя истинного врага - миссионеры.
От: Быдлокодер  
Дата: 11.08.25 11:12
Оценка: +1
Интересно, а кто на практике использовал strongly typed domain modeling в реальном проекте? Какие результаты и выводы?
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.