S>>Это ты в кучу смешал опять GC и гарантии. Не пиши unsafe — гарантии будут, но они будут независимо от того, есть ли GC или нет.
ИД>Нет, не независимо. Если в C коде
А почему именно C код? Возьми, скажем, бейсик-код, или фортран-код.
ИД>есть,скажем, free,
нету
ИД>то потенциально может возникнуть ситуация, когда ссылка будет указывать на мусор. С GC такое невозможно (ну, с ограничениями, что нет unsafe, и.т.д).
и с фортраном невозможно, с ограничением, что это F77.
ИД>>> Без GC утверждение превратится в "не освобождай память -- будут гарантии", что довольно сильно сужает тип решаемых задач.
S>>Сужает или нет, это совершенно второе дело.
ИД>Если это второе дело, то воробще непонятно, как можно обсуждать какие-либо свойства языков или платформ.
Ну как, тетрис написать достаточно и на луну слетать тоже можно без указателей.
Здравствуйте, -n1l-, Вы писали:
N>Здравствуйте, Don Reba, Вы писали:
DR>>В кои-то веки рад переводу, ибо оригинал ужасающе неграмотен.
N>Примеры неграмотности можно?
Style. "Pitfalls, of which the user should be aware."
> These aren’t problems with Rust but rather differences from what people are commonly familiar with, restrictions that may seem arduous at first but ultimately give you more power, at a small cost.
"From that, with which people are commonly familiar."
Unnecessary comma before "at a small cost."
Switch from third person to first person.
> The version of Rust latest confirmed to work for this post is Rust 0.12.
"The latest version of Rust."
> If anything has broken with it, please contact me.
"If anything is broken with it" or "if anything has become broken since then."
> You might write it like this which follows, for example, a way that works fine.
Missed comma before "which." Run-on sentence. Terrible phrasing.
"You might write it like the following example, which works fine."
Здравствуйте, Cyberax, Вы писали:
C>Здравствуйте, Sharowarsheg, Вы писали:
S>>А какая вообще связь между безопасностью и GC? GC имитирует систему с бесконечной памятью и больше ничего не делает. Возможны, теоретически, любые комбинации с GC/без GC и опасно/беозпасно. C>Если нет GC, то память нужно освобождать руками (с той или иной степенью автоматизации). А это небезопасно в современных распространённых языках без GC.
В C++, используя только смартпоинтеры+RAII (без обычных поинтеров, адресной арифметики и unsafe cast) можно получить гарантии, фактически без ручного управления памятью и фактически без GC.
Здравствуйте, gandjustas, Вы писали:
G>Здравствуйте, Cyberax, Вы писали:
C>>Здравствуйте, Sharowarsheg, Вы писали:
S>>>А какая вообще связь между безопасностью и GC? GC имитирует систему с бесконечной памятью и больше ничего не делает. Возможны, теоретически, любые комбинации с GC/без GC и опасно/беозпасно. C>>Если нет GC, то память нужно освобождать руками (с той или иной степенью автоматизации). А это небезопасно в современных распространённых языках без GC.
G>В C++, используя только смартпоинтеры+RAII (без обычных поинтеров, адресной арифметики и unsafe cast) можно получить гарантии, фактически без ручного управления памятью и фактически без GC.
Здравствуйте, Sharowarsheg, Вы писали:
S>И тогда это будет совершенно безопасно
Простите, что встреваю, но у меня уже глаз дергается от настолько вольного использования этого слова =/ Не будет "совершенно безопасно". Будет "типо-безопасно", в лучшем случае. До "совершенно" там еще как до луны
Здравствуйте, kochetkov.vladimir, Вы писали:
S>>И тогда это будет совершенно безопасно KV>Простите, что встреваю, но у меня уже глаз дергается от настолько вольного использования этого слова =/ Не будет "совершенно безопасно". Будет "типо-безопасно", в лучшем случае. До "совершенно" там еще как до луны
При формальной трактовке "совершенно безопасно" недоступно для любых языков полных по Тьюрингу
G>В C++, используя только смартпоинтеры+RAII (без обычных поинтеров, адресной арифметики и unsafe cast) можно получить гарантии, фактически без ручного управления памятью и фактически без GC.
Смарт-пойнтеры это простейший ref-counting GC. И, кстати, с ними можно нарваться на почти все недостатки GC.
Здравствуйте, kochetkov.vladimir, Вы писали:
KV>Я именно это и сказал. "Как до Луны" — это общепринятое сокращение от "как до Луны на тракторе", вообще-то.
Я лишь дополнил, что это относится в том числе и к "безопасным языкам с GC", а не только к C++ с верификатором обеспечивающим отсутствие растерла памяти.
Здравствуйте, kochetkov.vladimir, Вы писали:
KV>Здравствуйте, Sharowarsheg, Вы писали:
S>>И тогда это будет совершенно безопасно
KV>Простите, что встреваю, но у меня уже глаз дергается от настолько вольного использования этого слова =/ Не будет "совершенно безопасно". Будет "типо-безопасно", в лучшем случае. До "совершенно" там еще как до луны
Совершенно безопасно в смысле "если захочется, то можно сделать не хуже, чем в С#"
Здравствуйте, s22, Вы писали:
G>>В C++, используя только смартпоинтеры+RAII (без обычных поинтеров, адресной арифметики и unsafe cast) можно получить гарантии, фактически без ручного управления памятью и фактически без GC.
s22>В многопоточном режиме?
Да, стандартные смартпоинтеры потокобезопасны, как утверждает МСДН.
От состояния гонок в коде приложения ни смартпоинтеры, ни GC не спасает.
Здравствуйте, hi_octane, Вы писали:
G>>В C++, используя только смартпоинтеры+RAII (без обычных поинтеров, адресной арифметики и unsafe cast) можно получить гарантии, фактически без ручного управления памятью и фактически без GC. _>Смарт-пойнтеры это простейший ref-counting GC. И, кстати, с ними можно нарваться на почти все недостатки GC.
Это философский вопрос — считать смартпоинтеры GC или нет.
Но сути не меняет. Можно в языке C++ выделить safe подмножество, хотя в самом языке нет никакого GC.
И в других языка, без встроенного GC, можно выделить Safe подмножество с помощью конструкций, аналогичных смартпоинтерам.
Здравствуйте, gandjustas, Вы писали:
G>Это философский вопрос — считать смартпоинтеры GC или нет.
Страуструп, их отец, прямым текстом говорит, что это "a form of garbage collection".
G>Но сути не меняет. Можно в языке C++ выделить safe подмножество, хотя в самом языке нет никакого GC.
Однако что мозилловцы, что гуглохромовцы пришли к осознанию, что в реальности это не работает. Одни вон Rust стали изобретать, другие мигрировать на GC.
Здравствуйте, D. Mon, Вы писали:
DM>Однако что мозилловцы, что гуглохромовцы пришли к осознанию, что в реальности это не работает. Одни вон Rust стали изобретать, другие мигрировать на GC.
Здравствуйте, D. Mon, Вы писали:
G>>Но сути не меняет. Можно в языке C++ выделить safe подмножество, хотя в самом языке нет никакого GC. DM>Однако что мозилловцы, что гуглохромовцы пришли к осознанию, что в реальности это не работает. Одни вон Rust стали изобретать, другие мигрировать на GC.
В реальности куча других причин, кроме type-safety и memory-safety.
Здравствуйте, Evgeny.Panasyuk, Вы писали:
EP>Здравствуйте, D. Mon, Вы писали:
DM>>Однако что мозилловцы, что гуглохромовцы пришли к осознанию, что в реальности это не работает. Одни вон Rust стали изобретать, другие мигрировать на GC.
EP>Для каких задач? Случайно не interop?
Да по сути ни для каких. Потому что Firefox периодически падает, а для Windows каждый месяц закрывают уязвимости. Можно это, конечно, назвать "работает" (и по факту оно действительно бОльшую часть времени работает, вот сейчас я пишу из Firefox, например), но люди хотят идти дальше.