Comments 21
Когда рассказываете давно всем очевидные и 1000 раз пережеванные всеми, кому не лень, вещи, рассказывайте хотя бы в контексте популярных и хайповых языков. Есть шанс, что хотя бы не заминусуют.
+2
Грамотное решение проблемы нулевых указателей — использование алгебраических типов данных.
Когда мы имеем вместо
Впервые оно появилось в заумных ML'ных языках, но сейчас оно дошло до мейнстрима и его можно использовать не взрывая себе мозг монадками.
Когда мы имеем вместо
void* func()
что-то вида fn func() -> Enum_Option
, то мы дальше предоставляем программисту простую возможность обработать 'Err' (кодирование которого и стало причиной появления NULL), и возможность безопасно вынуть значение из 'Ok' посредством исчерпывающего pattern matching'а.Впервые оно появилось в заумных ML'ных языках, но сейчас оно дошло до мейнстрима и его можно использовать не взрывая себе мозг монадками.
0
UFO just landed and posted this here
Напишите «что-то вида» на с\с++. Если уж сравнивать примеры кода то хотябы со схожими языками.
0
Ну, я его только учу, до реального кода пока далеко. Но мои эксперименты показали, что в работе с аллокатором он (Rust) существенно обгоняет Go и находится на одном и том же уровне с Сишным кодом (при использовании одинаковых структур данных, потому что наивный тест на сишном string.h прососал даже python'у из-за неэффективного strlen).
0
На плюсах вы можете возвращять не голый указатель а обертку, которая может защищать от обращения к нулевому указателю.
0
Главная проблема в том, что в С++ — МОЖНО. Можно почти всё. В том числе стрелять себе в ногу без предупреждения по модели С. В этом смысле совместимость с С — фатальна для языка, т.к. компилятор не имеет возможности защитить человека от ошибок, и уровень дисциплины что в С, что в С++ оказывается одинаковый.
0
UFO just landed and posted this here
Rust?
+1
Тоже об этом подумал. К тому же это явно более зрелый язык.
> избавились от ошибок управления памятью с помощью сборки мусора
Особенно смешно читать вот это.
> избавились от ошибок управления памятью с помощью сборки мусора
Особенно смешно читать вот это.
+2
Вот вот. Сборка мусора — отдельный источник проблем в совсем неожиданных местах
+1
UFO just landed and posted this here
Ну, например запуск сбора мусора в неподходящий момент или нехватка памяти, которая в нужный момент не была освобождена сборщиком. Счетчик ссылок, например как в Objective C мне кажется лучшим решением
0
UFO just landed and posted this here
>Счётчик ссылок не очень хорошо работает с циклами, приходится извращаться.
А чем плох счетчик ссылок с циклами?
>Запуск в неподходящий момент — это да. Другое дело, правда, что в случае счётчика ссылок вы >тоже не знаете, держите ли вы последнюю ссылку на объект или нет, и запустится ли, скажем, >тяжёлый деструктор вот прям у вас здесь и сейчас, когда вы отпустите потенциально последнюю >ссылку, или нет.
Но вы можете явно на это влиять, может не очень красиво, костыльно, но можно.
Вот кстати еще против аргумент сбора мусора: данные можно организовать так, что будет утечка памяти, сборщик мусора ее не освободит
А чем плох счетчик ссылок с циклами?
>Запуск в неподходящий момент — это да. Другое дело, правда, что в случае счётчика ссылок вы >тоже не знаете, держите ли вы последнюю ссылку на объект или нет, и запустится ли, скажем, >тяжёлый деструктор вот прям у вас здесь и сейчас, когда вы отпустите потенциально последнюю >ссылку, или нет.
Но вы можете явно на это влиять, может не очень красиво, костыльно, но можно.
Вот кстати еще против аргумент сбора мусора: данные можно организовать так, что будет утечка памяти, сборщик мусора ее не освободит
0
разыменование нулевого указателя — дефект, который справедливо считается «чумой» современного программирования
я что то не понял, это новое поление программистов выросло? эта фраза просто шедевр, для чего применять приемы пропоганды в чисто технической статье? кем хоть считается? мной например не считается. это просто обыденность сто раз разжеванная.
перегрузка фунции заслуженно считается холокостом современного программирования
ну а серьезно, ну не нравятся указатели, испльзуйте референсы.
+1
Sign up to leave a comment.
Разыменование нулевых указателей больше не проблема