Есть такая книжка из жанра альтернативной истории "Миссионеры" (авторы Евгений и Любовь Лукины).
Сюжет про то, как могли бы индейцы подготовиться к приходу европейцев.
Там вместо приветствия используется фраза "Когда будет произнесено имя истинного врага".
Так вот про миссионеров.
Миссионеры бывают не только религиозные, миссионеры бывают так же и компьютерные.
И чаще всего они пропагандируют какую-нибудь дурь. (Я имею в виду не только христиан).
Ну вот например, они пропагандируют... ну например контроль типов.
Да, в своё время контроль типов произвёл революцию в программировании.
Если Вы раньше писали на Фортране, а потом перешли на Си, то должны помнить,
что Си требует описания переменных, а Фортран пытается угадать тип переменных по её имени.
И если вы очепятались в имени переменной, то можете несколько суток искать ошибку.
Да, раньше программировали на перфокартах, и прогон мог занимать много времени.
Вот и теперь некоторые несознательные граждане хотят быть святее папы римского,
и предлагают везде писать модификатор const и даже... делать разные типы для разных int,
"чтобы яблоки с апельсинами не складывать".
Да, конечно, хорошо бы чтобы компилятор подсказывал, когда ты пытаешься метры с килограммами сложить.
Но у всего есть цена. Так давайте посмотрим на цену.
Допустим у нас есть несколько (ну допустим пять) величин: метры, килограммы, секунды, ньютоны и джоули.
Да, их нельзя складывать с друг с другом. Но их можно(нужно) умножать и делить.
Таким образом, чтобы написать формулу, которая содержит три величины, нам нужно иметь 3*(5+1)*(5+1) типов данных.
То есть 36 типов для результатов умножения (килограмм*метр),
И 2*36 типов для деления килограмм/метр и метр/килограмм.
То есть, что-то около сотни типов. (Точная цифра =108)
И чтобы над всем этим великолепием можно было выполнять действия, нужно 100*100 — десять тысяч функций.
Ну... вот так одним лёгким движением Вы обеспечиваете себя работой до пенсии.
Конечно, какие-то операции будут бессмысленными, и не должны быть реализованными,
но и тех, что должны быть реализованы, Вам хватит, чтобы работа встала навсегда.
Миссионеры конечно скажут, что для таких ситуаций у них есть шаблоны,
на что я скажу, что я хочу ЭТО видеть. Как вы будете трахаться с шаблонами.
В этом месте миссионер скажет, а зато Вам компилятор подскажет, когда Вы вставите в формулу не ту переменную.
На что я отвечу, что да, раз в год я могу вставить в формулу не ту переменную.
Но я это делаю не чаще раза в год, и за пять минут найду такую ошибку.
А весь остальной год мне придётся бороться против компилятора,
и на этом будет потеряно гораздо, гораздо, ГОРАЗДО больше времени.
А зачем же тогда они это пропагандируют? На этот вопрос ответа нет.
Поэтому, я говорю: не слушайте миссионеров. Миссионеры — это враги.
В данном случае я опять не христиан имею в виду.
Ну, у меня же и основная работа есть. Поэтому я могу забыть про дискуссию или потерять к ней интерес.
Пищу для размышлений я дал, а дальше сами. Спор ради спора я вести не буду. Так что терпите.
Вот в Вашем напримере какого рода ответ Вы ожидаете получить? Смысл Вашего вопроса какой?
Здравствуйте, alpha21264, Вы писали:
A>Поэтому, я говорю: не слушайте миссионеров. Миссионеры — это враги. A>В данном случае я опять не христиан имею в виду.
Знаешь, что ты сейчас сказал?
Ты сказал, что если к вам придёт человек и научит вас варить сахар, то надо сварить его самого заживо в котле для сахара, потому что сахар-то он научил готовить, а торты — нет.
A>Да, конечно, хорошо бы чтобы компилятор подсказывал, когда ты пытаешься метры с килограммами сложить. A>Но у всего есть цена. Так давайте посмотрим на цену.
Давай.
У европейцев спутник "Ариан-5" упал когда-то, с типом данных не угадали. Стоит ли работы программиста?
Или сбой навигации у самолётов над Мёртвым морем, когда высота была отрицательной.
Есть области, где стоит платить такую цену.
A>Есть такая книжка из жанра альтернативной истории "Миссионеры" (авторы Евгений и Любовь Лукины). A>Сюжет про то, как могли бы индейцы подготовиться к приходу европейцев. A>Там вместо приветствия используется фраза "Когда будет произнесено имя истинного врага".
A>Так вот про миссионеров. A>Миссионеры бывают не только религиозные, миссионеры бывают так же и компьютерные. A>И чаще всего они пропагандируют какую-нибудь дурь. (Я имею в виду не только христиан).
Да разрабатывали как люди в машинных кодах, а потом пришли эти жертвы егэ т.е. миссионеры и все испортили.
Здравствуйте, Pzz, Вы писали:
A>>Поэтому, я говорю: не слушайте миссионеров. Миссионеры — это враги. A>>В данном случае я опять не христиан имею в виду.
Pzz>Знаешь, что ты сейчас сказал?
Pzz>Ты сказал, что если к вам придёт человек и научит вас варить сахар, то надо сварить его самого заживо в котле для сахара, потому что сахар-то он научил готовить, а торты — нет.
В данном случае будет уместно сказать "учу читать".
Если пользоваться твоей аналогией про сахар, то это будет звучать так:
сахара получается мало, а затрат на него много, в результате начинает не хватать на хлеб.
Здравствуйте, Nuzhny, Вы писали:
A>>Да, конечно, хорошо бы чтобы компилятор подсказывал, когда ты пытаешься метры с килограммами сложить. A>>Но у всего есть цена. Так давайте посмотрим на цену.
N>Давай. N>У европейцев спутник "Ариан-5" упал когда-то, с типом данных не угадали. Стоит ли работы программиста?
Ариан-5 упал не из-за этого.
Он упал как раз из-за избыточного контроля.
Ракета летела совершенно нормально.
Но кому-то почудилось, что величина вышла из диапазона.
Вот так из-за чьей-то паранойи ракета и грохнулась.
Здравствуйте, Qulac, Вы писали:
A>>Так вот про миссионеров. A>>Миссионеры бывают не только религиозные, миссионеры бывают так же и компьютерные. A>>И чаще всего они пропагандируют какую-нибудь дурь. (Я имею в виду не только христиан).
Q>Да разрабатывали как люди в машинных кодах, а потом пришли эти жертвы егэ т.е. миссионеры и все испортили.
Тебе не кажется, что твоя реплика похожа на кривляние?
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>В данном случае я опять не христиан имею в виду.
Были такие товарищи — луддиты. Вот ты на них очень похож
Здравствуйте, alpha21264, Вы писали:
A>Ракета летела совершенно нормально. A>Но кому-то почудилось, что величина вышла из диапазона. A>Вот так из-за чьей-то паранойи ракета и грохнулась.
Если мне не изменяет склероз, то на Ариан-5 переиспользовали часть кода из Ариан-4. И старый код не был расчитан на параметры взлета Ариан-5. Поэтому-то снимаемые телеметрией величины вышли за диапазон, на который был расчитан код Ариан-4. И смог бы переиспользованный из Ариан-4 код корректно обработать эти величины дальше, если бы не было жесткого контроля на уровне преобразований типов, это еще вопрос.
Так что это не из-за параноии, а из-за излишнего доверия к коду, который работает.
Здравствуйте, alpha21264, Вы писали:
A>Ну, у меня же и основная работа есть. Поэтому я могу забыть про дискуссию или потерять к ней интерес.
Ну да когда обосрамшись, то интерес действительно быстро теряется
A>Пищу для размышлений я дал, а дальше сами. Спор ради спора я вести не буду. Так что терпите.
Да вот ещё, терпеть тебя. Нам просто на тебя наплевать. Просто мы теперь многое о тебе узнали, как и о качестве твоего софта. Ну и стало ясно, что твоё мнение немногого стоит, ты можешь лютую дичь нести с важным видом.
A>Вот в Вашем напримере какого рода ответ Вы ожидаете получить? Смысл Вашего вопроса какой?
A>>Пищу для размышлений я дал, а дальше сами.
S>Тупой наброс теперь так называется? Ну OK.
Похоже, что Вы сам немного...
Когда я написал про illegal instruction, я написал что :
1) Новый gcc вставляет в код illegal instruction, о чём его никто не просил.
2) Полезные сообщения тонут в тоннах бесполезных.
И что к этому нужно быть готовым.
Далее на эту тему можно рассуждать до бесконечности.
Ваша точка зрения, которую Вы защищаете —
давайте нам ещё больше тонн бесполезных варнингов.
Вот что я дальше должен обсуждать?
A>>Вот в Вашем напримере какого рода ответ Вы ожидаете получить?
S>Честный желательно. Используете ли вы в своем коде классы? S>Если используете, то есть ли в ваших классах const-методы?
Классы использую.
const-методы не использую, потому что не знаю, зачем они нужны.
У меня есть get-методы, но по моему это не одно и то же.
Самое главное — я не понимаю, какое это имеет отношение к обсуждаемой теме.
У меня такое впечатление, что Вы слишком много внимания уделяете инструменту и слишком мало задаче.
Такое бывает, когда Вам не дают больших и интересных задач.
A>>Смысл Вашего вопроса какой?
S>Вы на вопросы сперва ответьте.
Ну вот ответил. Я думаю, что Вам не полегчало. Потому что мы существа из разных миров.
Здравствуйте, Marty, Вы писали:
M>Да вот ещё, терпеть тебя. Нам просто на тебя наплевать. Просто мы теперь многое о тебе узнали, как и о качестве твоего софта. Ну и стало ясно, что твоё мнение немногого стоит, ты можешь лютую дичь нести с важным видом.
Да ладно вам, может человек всю жизнь какую-то специфическую математику в какой-то узкой специфической области считает. Например, в области радиолокации или спутниковой связи.
Если программы по 10KLOC и кроме автора никто в них никогда не заглядывает, то и проблем никаких нет.
Здравствуйте, alpha21264, Вы писали:
A>Ваша точка зрения, которую Вы защищаете -
Внесем ясность: это не моя точка зрения, это то, что вы думаете про мою точку зрения.
A>давайте нам ещё больше тонн бесполезных варнингов.
Не-а, мне бы хотелось больше полезных варнингов.
A>Классы использую. A>const-методы не использую, потому что не знаю, зачем они нужны.
Ну вот это я и хотел услышать.
A>Самое главное — я не понимаю, какое это имеет отношение к обсуждаемой теме.
Самое прямое.
const -- это контроль компилятора за тем, что вы делаете.
Например, у меня в при программировании многопоточности часто используется принцип -- если в некий тред отдается const-ссылка на объект, то значит этот тред имеет возможность вызывать const-методы объекта в любой момент. Типа того, что "чтение всегда безопасно".
И при таком подхоже компилятор сам бьет меня по рукам если я пытаюсь по const-ссылке вызвать мутабельный метод.
Это такая помощь от компилятора, которую сложно переоценить.
A>У меня такое впечатление, что Вы слишком много внимания уделяете инструменту и слишком мало задаче.
У меня задачи специфические, похожие на задачи слесаря-инструментальщика на заводе. Делаю инструменты, которые затем позволяют другим людям проще и быстрее решать их задачи.
A>Такое бывает, когда Вам не дают больших
Давайте конкретнее: "большие" -- это сколько в строках?
A>интересных задач.
Тут есть парадокс: чем интереснее задача, тем меньше шансов, что за нее заплатят
Из совсем свежего: версионированный контейнер для использования в многопоточном коде. Типа того, что если кто-то взял этот контейнер как "читатель", то он работает со старой версией содержимого и не видит изменений, которые в контейнер сейчас вносят "писатели".
Такая задача по вашей классификации пойдет как "интересная" или нет?
A>Ну вот ответил. Я думаю, что Вам не полегчало.
Здравствуйте, Marty, Вы писали:
A>>Ну, у меня же и основная работа есть. Поэтому я могу забыть про дискуссию или потерять к ней интерес.
M>Ну да когда обосрамшись, то интерес действительно быстро теряется
Хамло. (тут мне нужен смайлик с воздушным поцелуем)
A>>Пищу для размышлений я дал, а дальше сами. Спор ради спора я вести не буду. Так что терпите.
M>Да вот ещё, терпеть тебя. Нам просто на тебя наплевать. Просто мы теперь многое о тебе узнали, как и о качестве твоего софта. Ну и стало ясно, что твоё мнение немногого стоит, ты можешь лютую дичь нести с важным видом.
И твой процессор и твоя материнка сделаны с помощью моих программ. Поэтому у меня длиннее. Ну вот так жизнь сложилась. Прими это.
PS модератору.
Мы во флейме, значит можем себе позволить некоторые вольности в выражениях братской любви. Прошу понимать без пошлости.