Наверное, это одна из самых отвратительных структур данных для современных процессоров. Основная проблема здесь — cache locality: элементы списка могут лежать в памяти где угодно, поэтому процессору приходится постоянно прыгать по адресам вместо того, чтобы эффективно читать данные последовательно.
так и не понял в чем принцип вашего решения и почему OBS так не может… Было бы неплохо разобраться в этом, раз уж пишете об этом статью. А так получается просто самореклама какая-то.
А по скринам и не скажешь что ваша программа особо лучше. Хоть я бы не стал так прямо доверять цифрам в task manager, но там разница в 2 раза примерно.
Это хорошо, но не особо помогает слабым пк. Потому что те же игры на них сжирают скорее всего 90% и тут уже неважно хочет OBS 50% или ваша 30%. Так и так не хватит.
Возможно, проблема в том, что разработчики любят чрезмерно экспериментировать, мечтая придумать что‑то лучшее. […]
Каким должен быть идеальный язык? В моем представлении идеальный системный язык должен быть классическим и простым. Чтобы потом не возникало сожалений о каких‑то сомнительных решений. И конечно же, чтобы каждый мог за час разобраться в нем.
Мне кажется или вы в своем дизайне сделали все да наоборот? И поэксперементировали и ушли от классики и простоты.
Вот если бы вы сделали точь в точь Си, но поправили ошибки, которые описали вначале. Вот тогда это было бы “классически” и “просто” и: каждый мог за час разобраться в нем
Для 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 является владельцем, но у владельца нет прав. Группа имеет полный доступ – но до неё проверка не дошла.
Решение – дать владельцу права явно:
какое ж это решение…
В целом было бы хорошо объяснить зачем и почему и для чего нужны группы. В моем (чисто интуитивном) представлении это нужно чтобы давать какой-то группе пользователей определенные права - например доступ к файлам. Ведь намного проще добавить пользователя в группу/удалить из группы чем менять права везде.
Оказывается все не так просто… Было бы интересно узнать какое решение правильное. Либо для чего нужны группы тогда…
С чего вы взяли что подсознательно это работает через оценку обоих вредов и сравнение?
зачем это сравнение формализовывать? Мой первый же коммент про то что необязателльно это специфицировать/формализовывать чтобы оно работало. Думаете кто-то в моей голове это формализовал? пока я спал, разве что)
не думаю что это была причина такого дизайна. Скорее тогда не придумали ничего лучше. Были тогда уже языки, которые делали вывод через форматную строку вроде print(“Hello, {}!”, “World”) ? - не уверен.
Думаю тут ещё сыграло то что тогда не было возможностей для compile-time разбора форматной строки. Предложу что главной целью стримов было уйти от printf чтобы обеспечить безопасный вывод.
не понимаю вас, изложите ваши мысли яснее, пожалуйста.
Я, как человек (надеюсь), легко могу ответить что на ваши что на вопросы @konst90 выше. И для этого мне все еще не нужна спецификация ни вреда ни человека
🫡
так и не понял в чем принцип вашего решения и почему OBS так не может… Было бы неплохо разобраться в этом, раз уж пишете об этом статью. А так получается просто самореклама какая-то.
А по скринам и не скажешь что ваша программа особо лучше. Хоть я бы не стал так прямо доверять цифрам в task manager, но там разница в 2 раза примерно.
Это хорошо, но не особо помогает слабым пк. Потому что те же игры на них сжирают скорее всего 90% и тут уже неважно хочет OBS 50% или ваша 30%. Так и так не хватит.
кто же они?
а если не хочется чтобы вы использовали почту для рекламных сообщений, то что?)
Мне кажется или вы в своем дизайне сделали все да наоборот? И поэксперементировали и ушли от классики и простоты.
Вот если бы вы сделали точь в точь Си, но поправили ошибки, которые описали вначале. Вот тогда это было бы “классически” и “просто” и: каждый мог за час разобраться в нем
Гугола это google? который купил, а потом закрыл (ну тут вернул)
интересно было бы посмотреть на ваш язык.
кстати, тоже об этом подумал пока читал статью, но сейчас задумался - а бывает ли необходимость в типее произведении typeof(y) * typeof(z)? И что этот тип вообще из себя представляет… Сумма то понятно, уже много где есть, а вот произведение или другие операции нигде не видел чтобы применяли в системе типов.
мне кажется или как раз с
const&шаблон ничего не меняет? Тут мне всегда прилетает константная ссылка. А что там в объекте заmutableиconst_cast- это его проблемы. Он должен сам свои инварианты соблюдать.А вот с
T&вы правы. Не совсем очевидно что тут может прилететь константная ссылка. Но, с другой стороны, - это имеет какое-то значение? Кроме как для чтения кода. Ведь если кто-то передастconst int&, то код просто не скомпилируется (если и правда обращается к неконстантным методам).Кажется тут просто логическая ошибка. Переведем на людей:
любая человек никогда не будет знать все об окружающем мире
Без этого никогда не будет экспертности в проекте или части кода
=> вывод: не существует людей с окспертностью в проекте… Вывод, очевидно ложный. В реальности это неправда.
по-моему вы упускаете тот же самый момент что и автор статьи:
Во-первых, спецификация и есть по сути код.
Во-вторых - а откуда она берется сейчас? Правильно, постановщик задачи дает его представление о требуемом результате, а задача современного разработчика это представление привести к спецификации. Для этого есть разные способы - логические заключения, уточняющие вопросы и тд.
Т.е., то что вы упускаете - почему этим “современным разработчиком” должен быть человек? Что мешает следующему или N-ому клоду быть достаточно сообразительным чтобы заниматься этим? Правильно - ничего.
P.S. хотя похоже иммено это и пытается сказать @amazingname, пусть и в не очень сдержанной манере.
знаем мы эту профессиональную лень. Через 5 лет этих разработчиков уже и след простыл, а тебе разгребать.
Важное уточнение - вместе с навыком профессиональной лени идет навык профессиональная бдительность. Важно не проморгать момент, когда эта “упрощенная” модель, которая работала тогда, начинает расти во что-то серьезное, чтобы успеть переписать еще пока небольшую систему в что-то сносное и расширяемое, чтобы не получился монстр…
какое ж это решение…
В целом было бы хорошо объяснить зачем и почему и для чего нужны группы. В моем (чисто интуитивном) представлении это нужно чтобы давать какой-то группе пользователей определенные права - например доступ к файлам. Ведь намного проще добавить пользователя в группу/удалить из группы чем менять права везде.
Оказывается все не так просто… Было бы интересно узнать какое решение правильное. Либо для чего нужны группы тогда…
так и не понял, что мешает появиться в нашей вселенной разуму, но на планете которая вообще не попадает на ось зла…
почему? разве пересечение оси зла с солнечной системой это обязательное условие для зарождение жизни там?
а что из этого следует? насколько я понял, шанс этого явление крайне мал. Прочерчена или нет, вы считаете это случайностью?
и, к сожалению, лгали. Сравнивать float с целыми числами вполне можно. Вот, даже статейку недавно постили неплохую - https://news.ycombinator.com/item?id=47767398
P.S. каюсь, увидел что написано “результат операции”. Но статейка все равно полезная)
не знаю почему вы не можете услышать мою мысль…
С чего вы взяли что подсознательно это работает через оценку обоих вредов и сравнение?
зачем это сравнение формализовывать? Мой первый же коммент про то что необязателльно это специфицировать/формализовывать чтобы оно работало. Думаете кто-то в моей голове это формализовал? пока я спал, разве что)
не думаю что это была причина такого дизайна. Скорее тогда не придумали ничего лучше. Были тогда уже языки, которые делали вывод через форматную строку вроде print(“Hello, {}!”, “World”) ? - не уверен.
Думаю тут ещё сыграло то что тогда не было возможностей для compile-time разбора форматной строки. Предложу что главной целью стримов было уйти от printf чтобы обеспечить безопасный вывод.
причем здесь сравнение количества вреда…
я не сравниваю в голове количество когда думаю про химиотерапию или нападающего с ножом - чаще всего на уровне интуицию понимаю правильный ответ.
не понимаю вас, изложите ваши мысли яснее, пожалуйста.
Я, как человек (надеюсь), легко могу ответить что на ваши что на вопросы @konst90 выше. И для этого мне все еще не нужна спецификация ни вреда ни человека