Безопасный код без GC - вы готовы?
От: s22  
Дата: 17.10.14 17:14
Оценка:
Почитал и понял, что мало кто готов на таком писать.....
Жутко как то....
может просто непривычно?

http://habrahabr.ru/post/240617/
Re: Безопасный код без GC - вы готовы?
От: Don Reba Канада https://stackoverflow.com/users/49329/don-reba
Дата: 17.10.14 17:24
Оценка:
Здравствуйте, s22, Вы писали:

s22>http://habrahabr.ru/post/240617/


В кои-то веки рад переводу, ибо оригинал ужасающе неграмотен.
Ce n'est que pour vous dire ce que je vous dis.
Re: Безопасный код без GC - вы готовы?
От: Sharowarsheg  
Дата: 17.10.14 17:31
Оценка: +7
Здравствуйте, s22, Вы писали:

А какая вообще связь между безопасностью и GC? GC имитирует систему с бесконечной памятью и больше ничего не делает. Возможны, теоретически, любые комбинации с GC/без GC и опасно/беозпасно.
Re[2]: Безопасный код без GC - вы готовы?
От: Cyberax Марс  
Дата: 17.10.14 17:39
Оценка:
Здравствуйте, Sharowarsheg, Вы писали:

S>А какая вообще связь между безопасностью и GC? GC имитирует систему с бесконечной памятью и больше ничего не делает. Возможны, теоретически, любые комбинации с GC/без GC и опасно/беозпасно.

Если нет GC, то память нужно освобождать руками (с той или иной степенью автоматизации). А это небезопасно в современных распространённых языках без GC.
Sapienti sat!
Re[2]: Безопасный код без GC - вы готовы?
От: dimgel Россия https://github.com/dimgel
Дата: 17.10.14 17:41
Оценка: 6 (1) -2
Здравствуйте, Sharowarsheg, Вы писали:

S>GC имитирует систему с бесконечной памятью и больше ничего не делает.


Как следствие, существенно упрощает прикладной код. А эти ребята ИМХО перемудрили. Я с бОльшим удовольствием к доброму старому C (без плюсов) вернулся бы. Ковырял как раз на днях сорцы кое-какие — и глядя на до байта и до такта вылизанный код, резко вспомнил всю попаболь, которую испытывал, переходя на всю эту managed-муть.
Re[2]: Безопасный код без GC - вы готовы?
От: c-smile Канада http://terrainformatica.com
Дата: 17.10.14 17:51
Оценка:
Здравствуйте, Sharowarsheg, Вы писали:

S>Здравствуйте, s22, Вы писали:


S>Возможны, теоретически, любые комбинации с GC/без GC и опасно/беозпасно.


+1

И за примерами ходить далеко не надо. D lang, C++ с тем же Boehm GC.
Re[3]: Безопасный код без GC - вы готовы?
От: Sharowarsheg  
Дата: 17.10.14 18:25
Оценка: +1
Здравствуйте, Cyberax, Вы писали:

S>>А какая вообще связь между безопасностью и GC? GC имитирует систему с бесконечной памятью и больше ничего не делает. Возможны, теоретически, любые комбинации с GC/без GC и опасно/беозпасно.

C>Если нет GC, то память нужно освобождать руками (с той или иной степенью автоматизации). А это небезопасно в современных распространённых языках без GC.

Не обязательно. Например, можно требовать, чтобы вся память была или статическая или в стеке. Или просто статическая. И типизированная. И тогда это будет совершенно безопасно — все переменные известны на этапе компиляции.
Re: Безопасный код без GC - вы готовы?
От: AlexRK  
Дата: 17.10.14 18:36
Оценка: +1
Здравствуйте, s22, Вы писали:

s22>Почитал и понял, что мало кто готов на таком писать.....


С чего вы взяли выделенное?
Re[2]: Безопасный код без GC - вы готовы?
От: dimgel Россия https://github.com/dimgel
Дата: 17.10.14 18:38
Оценка: :))) :)
Здравствуйте, AlexRK, Вы писали:

s22>>Почитал и понял, что мало кто готов на таком писать.....


ARK>С чего вы взяли выделенное?


Шо, ваще никто?!
Re[3]: Безопасный код без GC - вы готовы?
От: AlexRK  
Дата: 17.10.14 19:17
Оценка: +1
Здравствуйте, dimgel, Вы писали:

D>Здравствуйте, AlexRK, Вы писали:


s22>>>Почитал и понял, что мало кто готов на таком писать.....


ARK>>С чего вы взяли выделенное?


D>Шо, ваще никто?!


Много кто.
Re[2]: Безопасный код без GC - вы готовы?
От: Иван Дубров США  
Дата: 17.10.14 20:40
Оценка:
Здравствуйте, Sharowarsheg, Вы писали:

S>А какая вообще связь между безопасностью и GC? GC имитирует систему с бесконечной памятью и больше ничего не делает. Возможны, теоретически, любые комбинации с GC/без GC и опасно/беозпасно.


Ещё система с GC гарантирует отсутсвие ссылок на "освобождённые" куски памяти и на случайные объекты.
Re[3]: Безопасный код без GC - вы готовы?
От: Sharowarsheg  
Дата: 17.10.14 21:13
Оценка: +1
Здравствуйте, Иван Дубров, Вы писали:

S>>А какая вообще связь между безопасностью и GC? GC имитирует систему с бесконечной памятью и больше ничего не делает. Возможны, теоретически, любые комбинации с GC/без GC и опасно/беозпасно.


ИД>Ещё система с GC гарантирует отсутсвие ссылок на "освобождённые" куски памяти и на случайные объекты.


Да нет, в общем-то. Напиши unsafe() и гарантии кончаются.
Re[4]: Безопасный код без GC - вы готовы?
От: Иван Дубров США  
Дата: 17.10.14 21:57
Оценка: +1
Здравствуйте, Sharowarsheg, Вы писали:

ИД>>Ещё система с GC гарантирует отсутсвие ссылок на "освобождённые" куски памяти и на случайные объекты.


S>Да нет, в общем-то. Напиши unsafe() и гарантии кончаются.


Ну это никак не противоречит тому, что я сказал. Не пиши unsafe -- будут гарантии. Без GC утверждение превратится в "не освобождай память -- будут гарантии", что довольно сильно сужает тип решаемых задач.
Re[5]: Безопасный код без GC - вы готовы?
От: Sharowarsheg  
Дата: 17.10.14 22:48
Оценка:
Здравствуйте, Иван Дубров, Вы писали:

ИД>>>Ещё система с GC гарантирует отсутсвие ссылок на "освобождённые" куски памяти и на случайные объекты.

S>>Да нет, в общем-то. Напиши unsafe() и гарантии кончаются.

ИД>Ну это никак не противоречит тому, что я сказал. Не пиши unsafe -- будут гарантии.


Это ты в кучу смешал опять GC и гарантии. Не пиши unsafe — гарантии будут, но они будут независимо от того, есть ли GC или нет.
Равно как если GC есть, всё равно можно написать unsafe, и тогда будет GC, но без гарантий.

Система с GC гарантирует отсутствие ссылок на всякий мусор (это если unsafe не писать), но, скажем, система вообще без ссылок гарантрует отсутствие ссылок на всякий мусор уж точно не хуже. На фортране, кстати, я пару лет решал всякие задачки численные, и ссылками не пользовался вообще. Я даже не уверен до сих пор, есть ли в фортране вообще понятие указателя. Так вот, вполне естественно, ни разу ни одной проблемы с памятью — безо всякого GC.

ИД> Без GC утверждение превратится в "не освобождай память -- будут гарантии", что довольно сильно сужает тип решаемых задач.


Сужает или нет, это совершенно второе дело.
Отредактировано 17.10.2014 22:49 Sharowarsheg . Предыдущая версия .
Re[4]: Безопасный код без GC - вы готовы?
От: Cyberax Марс  
Дата: 17.10.14 23:22
Оценка: +2
Здравствуйте, Sharowarsheg, Вы писали:

S>Не обязательно. Например, можно требовать, чтобы вся память была или статическая или в стеке. Или просто статическая. И типизированная. И тогда это будет совершенно безопасно — все переменные известны на этапе компиляции.

Можно, но ничего сильно интересного написать так не получится.
Sapienti sat!
Re[3]: Безопасный код без GC - вы готовы?
От: Cyberax Марс  
Дата: 17.10.14 23:30
Оценка: 6 (2)
Здравствуйте, dimgel, Вы писали:

S>>GC имитирует систему с бесконечной памятью и больше ничего не делает.

D>Как следствие, существенно упрощает прикладной код. А эти ребята ИМХО перемудрили.
Нет, в Rust как раз оптимум. Я недавно переписал свой проект с С++ на Rust — получилось очень красиво.
Sapienti sat!
Re[6]: Безопасный код без GC - вы готовы?
От: Иван Дубров США  
Дата: 18.10.14 00:34
Оценка:
Здравствуйте, Sharowarsheg, Вы писали:

ИД>>Ну это никак не противоречит тому, что я сказал. Не пиши unsafe -- будут гарантии.


S>Это ты в кучу смешал опять GC и гарантии. Не пиши unsafe — гарантии будут, но они будут независимо от того, есть ли GC или нет.


Нет, не независимо. Если в C коде есть, скажем, free, то потенциально может возникнуть ситуация, когда ссылка будет указывать на мусор. С GC такое невозможно (ну, с ограничениями, что нет unsafe, и.т.д).

S>Равно как если GC есть, всё равно можно написать unsafe, и тогда будет GC, но без гарантий.


Это да.

S>Система с GC гарантирует отсутствие ссылок на всякий мусор (это если unsafe не писать), но, скажем, система вообще без ссылок гарантрует отсутствие ссылок на всякий мусор уж точно не хуже.


Да, но опять же, класс решаемых задач сильно сужается (или стоимость растёт).

ИД>> Без GC утверждение превратится в "не освобождай память -- будут гарантии", что довольно сильно сужает тип решаемых задач.


S>Сужает или нет, это совершенно второе дело.


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


Короче, я не очень понимаю, с чем тут можно спорить. Грубо говоря, с позиции математики, для некоторого класса задач для систем с GC можно статически доказать, что не будет обращений по битым указателям, без GC, в общем случае, -- нельзя.
Re[5]: Безопасный код без GC - вы готовы?
От: Sharowarsheg  
Дата: 18.10.14 05:05
Оценка:
Здравствуйте, Cyberax, Вы писали:

S>>Не обязательно. Например, можно требовать, чтобы вся память была или статическая или в стеке. Или просто статическая. И типизированная. И тогда это будет совершенно безопасно — все переменные известны на этапе компиляции.

C>Можно, но ничего сильно интересного написать так не получится.

Ну, фортран 77 был не так уж плох. Этюдов, конечно, не попишешь, но для работы хватало.
Re[3]: Безопасный код без GC - вы готовы?
От: Слава  
Дата: 18.10.14 06:01
Оценка:
Здравствуйте, dimgel, Вы писали:

D>Я с бОльшим удовольствием к доброму старому C (без плюсов) вернулся бы. Ковырял как раз на днях сорцы кое-какие — и глядя на до байта и до такта вылизанный код,


Heartbleed и прочее байтогрызиков ничему не учит, я смотрю...
Re[2]: Безопасный код без GC - вы готовы?
От: -n1l-  
Дата: 18.10.14 06:23
Оценка:
Здравствуйте, Don Reba, Вы писали:

DR>В кои-то веки рад переводу, ибо оригинал ужасающе неграмотен.


Примеры неграмотности можно?
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.