Обновить
-4

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

0,1
Рейтинг
1
Подписчики
Отправить сообщение

Гугола это google? который купил, а потом закрыл (ну тут вернул)

интересно было бы посмотреть на ваш язык.

Для if(x>0) y; else z; возвращаемый тип это тип-сумма typeof(y) + typeof(z)

кстати, тоже об этом подумал пока читал статью, но сейчас задумался - а бывает ли необходимость в типее произведении typeof(y) * typeof(z)? И что этот тип вообще из себя представляет… Сумма то понятно, уже много где есть, а вот произведение или другие операции нигде не видел чтобы применяли в системе типов.

Но статья не о том, что шаблоны опасны сами по себе, но что вывод типов через шаблон меняет, как читается const T& и разработчик перестаёт держать в голове вопрос “а что мне реально прилетело”.

мне кажется или как раз с const& шаблон ничего не меняет? Тут мне всегда прилетает константная ссылка. А что там в объекте за mutable и const_cast - это его проблемы. Он должен сам свои инварианты соблюдать.

А вот с T& вы правы. Не совсем очевидно что тут может прилететь константная ссылка. Но, с другой стороны, - это имеет какое-то значение? Кроме как для чтения кода. Ведь если кто-то передаст const int&, то код просто не скомпилируется (если и правда обращается к неконстантным методам).

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

Кажется тут просто логическая ошибка. Переведем на людей:

  • любая человек никогда не будет знать все об окружающем мире

  • Без этого никогда не будет экспертности в проекте или части кода

=> вывод: не существует людей с окспертностью в проекте… Вывод, очевидно ложный. В реальности это неправда.

по-моему вы упускаете тот же самый момент что и автор статьи:

Проблема всё равно остаётся: откуда берётся эта точная спецификация

Во-первых, спецификация и есть по сути код.

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

Т.е., то что вы упускаете - почему этим “современным разработчиком” должен быть человек? Что мешает следующему или N-ому клоду быть достаточно сообразительным чтобы заниматься этим? Правильно - ничего.

P.S. хотя похоже иммено это и пытается сказать @amazingname, пусть и в не очень сдержанной манере.

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

знаем мы эту профессиональную лень. Через 5 лет этих разработчиков уже и след простыл, а тебе разгребать.

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

Но если ivan попробует прочитать файл – получит Permission denied. Почему? Ядро проверило: EUID процесса совпадает с UID файла – совпадение на шаге 2. Применило биты owner – —. Остановилось. Биты group rwx даже не рассматривались. ivan является владельцем, но у владельца нет прав. Группа имеет полный доступ – но до неё проверка не дошла.

Решение – дать владельцу права явно:

какое ж это решение…

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

Оказывается все не так просто… Было бы интересно узнать какое решение правильное. Либо для чего нужны группы тогда…

так и не понял, что мешает появиться в нашей вселенной разуму, но на планете которая вообще не попадает на ось зла…

почему? разве пересечение оси зла с солнечной системой это обязательное условие для зарождение жизни там?

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

О том, что результат операции над float нельзя сравнивать с целым, включая 0, мне рассказывали на лекции в году эдак 2003-ем

и, к сожалению, лгали. Сравнивать float с целыми числами вполне можно. Вот, даже статейку недавно постили неплохую - https://news.ycombinator.com/item?id=47767398

P.S. каюсь, увидел что написано “результат операции”. Но статейка все равно полезная)

не знаю почему вы не можете услышать мою мысль…

  • С чего вы взяли что подсознательно это работает через оценку обоих вредов и сравнение?

  • зачем это сравнение формализовывать? Мой первый же коммент про то что необязателльно это специфицировать/формализовывать чтобы оно работало. Думаете кто-то в моей голове это формализовал? пока я спал, разве что)

не думаю что это была причина такого дизайна. Скорее тогда не придумали ничего лучше. Были тогда уже языки, которые делали вывод через форматную строку вроде print(“Hello, {}!”, “World”) ? - не уверен.

Думаю тут ещё сыграло то что тогда не было возможностей для compile-time разбора форматной строки. Предложу что главной целью стримов было уйти от printf чтобы обеспечить безопасный вывод.

причем здесь сравнение количества вреда…

я не сравниваю в голове количество когда думаю про химиотерапию или нападающего с ножом - чаще всего на уровне интуицию понимаю правильный ответ.

не понимаю вас, изложите ваши мысли яснее, пожалуйста.

Я, как человек (надеюсь), легко могу ответить что на ваши что на вопросы @konst90 выше. И для этого мне все еще не нужна спецификация ни вреда ни человека

Не понимаю к чему тут ваши примеры.

Если бы люди считали химиотерапию вредом, то использовали бы ее повсеместно?

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

зависимости это не часть приложения.

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

Зависимости являются частью приложения только если их нет)

Весь азимов - это то, как три простых правила совершенно никак не помогают. В частности потому, что нельзя оценить и специфицировать такие части этих правил, как “что такое вред” и “что такое человек”.

Эти понятия необязателльно специфицировать, чтобы они начали работать. Я вот с трудом дам определение этим терминами (и ему найдется куча контрпримеров), но зато могу отлично оценивать на примере кто/что является человеком и что является вредом, а что нет.

Допускаю что такую особенность возможно реализовать не только в человеком мозге. Вон, LLM и сейчас неплохо это делают. И не нужна им никакая “спецификация”

Так что вывод единый: у робота крови нет — значит, формально нет и души

не знаю как надо было это читать, чтобы сделать такой вывод… по-моему там очевидна метафора души как крови, а не прямое сопоставление

не пойму, что именно там “ради C++”.

То же могу сказать и про относительно свежие range.

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

1
23 ...

Информация

В рейтинге
3 777-й
Зарегистрирован
Активность