> 3) Всяких GC и прочего треша убивающего перфоманс и предсказуемость быть не обязано.Вернитесь в реальность. Вот вам видео, которое заставит о ней задуматься:
https://www.youtube.com/watch?v=qbKGw8MQ0i8
Если нет 50 минут времени спойлер: видео про то, что никакие операции delete и никакие системные вызовы не бесплатны (даже если у вас rust). Видео про то, что если сделать так, что ваша программа работает быстро на Windows, то она начнет работать быстрее и на Linux.
От себя дополню, что в любом реальном приложении, работающем с большим количеством файлов, сокетов и с базами операция удаления данных может стать жутко медленной. Причем особенно сильно это кусает тех, кто пишет на С++. Вот есть у вас небольшая абстракция:
1. Интерфейс / абстрактный класс
2. Наследник, выделяющий динамическую память в конструкторе и удаляющий в виртуальном деструкторе
3. Наследник наследника, выделяющий динамическую память в конструкторе и удаляющий в деструкторе
Удаление из памяти большой коллекции таких объектов обычной операцией delete приведет к фризу приложения, если объектов слишком много (грид загрузили из базы, например, отобразили и потом решили закрыть форму и удалить объекты из памяти)
Чтобы такое правильно удалить нужно:
- Создать "отложенный таск", то есть задачу на удаление в отдельных тредах
- Создать функционал, который позволит передать объекты на удаление и удалить их чуть позже
- Считать ссылки, чтобы не удалить случайно те объекты, которые использует что-то еще
Если вам нужно "лениво" подгружать данные из источника и что-то кэшировать, то эта штука станет еще сложнее.
И вот после того как вы всё это сделали, я вас лично поздравляю! Вы переизобрели собственный GC имени собственного приложения. У меня 2 вопроса:
- Вы точно-точно хорошо провели время изобретая собственный велосипед?
- Какова квадратность колёс вашего велосипеда?
То что при разработке модулей ядра и драйверов никакой стандартный GC никогда не подойдёт это очевидно. Но то что он не нужен и убивает производительность - это ложь. Java с её несколькими GC под разные случаи жизни и .NET не лезут в системное программирование, но те языки, которые вовсе не имеют GC на самом деле заставляют программиста переизобретать свой GC, когда задача сложнее Hello World. И да, в видео выше показано просто простое скачивание и разархивирование файликов, которое привело к тому, что оптимизация потребовала начать создавать GC.
> Надеюсь это объясняет почему ява и дотнет на этом фоне выглядят как легаси, а их носители - как динозавры на пешеходном переходе. Каковыми и являются. Им это нечем крыть. Вообще совсем.
Также выступающий жалуется на получение "nastygrams". Хамство, зависть и ничем не обоснованное чувство собственного превосходство - это большие проблемы среди невежественных членов так называемого "сообщества". Лекарством от этого является только повышение квалификации и расширение кругозора за счет образования и решения большего количества разных задач.