Илья Ермаков писал(а):
Сергей Губанов писал(а):
Языки со сборкой мусора дают не то что описал Спольски, а совсем другое -- невозможность запороть память (герметичность типов).
....
Короче, нет порчи памяти - и на этом уже большое спасибо, остальное всё по старинке в рукопашную.
Ну почему. Для прикладников, пишущих настольные приложения, дают, в общем-то, всё.
Ну а про остальное, конечно, нам понятно
Я таки дико извиняюсь, но я, как прикладник (потому как системный, т.е. инструментарный софт по работе не разрабатываю, не пишу компиляторов, не пишу операционных систем (и кстати, системный это не значит низкоуровневый, компиляторы пишутся вполне высокоуровнево) ) пишущий настольное приложение таки не могу не вмешаться.
Так вот, я лично нифига не вижу разницы между настольным и не очень приложением в контексте рассматриваемой проблемы. Везде важна производительность. Везде проблемы с утечками (о! для настольных приложений утечки случаются значительно чаще! да, именно со сборщиком мусора, ибо gui).
И, в плане производительности, настольные приложения не имеют такой лазейки как серверные -- масштабируемости. Если мы серверное решение спроектировали масштабируемо, то вместо того, чтобы допиливать производительность часто дешевле просто купить ещё один сервер. Однако для десктопного приложения так не выйдет, не скажешь же клиенту, мол для видеозвонка одного ноута вам не хватит, таскайте с собой два!
И да, приходится оптимизировать. В т.ч. не только повторное использование выделенных объектов (ака пулы), но, иногда, и совсем ручная, низкоуровневая работа с памятью. Да, в языке с GC.
Кстати, серверные приложения очень часто не зависят от всяких хитрых устройств. Т.е. они просто используют стандартный скажем tcp/ip стэк и всё. В десктопном так не выйдет. Тут нужен доступ к хитрым устройствам вроде видеокамеры, или звуковухи, к видеокарте. С отображением памяти и прочими прелестями. А тут и до порчи памяти недалеко. И ложится вся VM прекрасно. segmentation fault. core dumped и всё. Допрыгались.