LINUX.ORG.RU

Про статическую типизацию и безопасный доступ к памяти

 , , ,

Ответ на: комментарий от Aber

пользуйтесь новыми языками.

Ну да, с котлином жизнь приятнее. Но если есть выбор, добровольно лезть в дырявую инфраструктуру, поверх которой русские гении наворотили хитропопый компилятор несколько стремно. Есть там подводные камни и немало. Иногда приходится разбиратся с эффектами, порожденными в кишках JVM и натыкаться на архитектурные решения, продиктованные суровостью жизни.

q0tw4 ★★★ ()
Ответ на: комментарий от michey

Хаскель он как С++. Кучу всего в него запинали, сверху попрыгали, но всеравно фич не хватает. То то запрещено, то это компилятор не умеет. К использованию такого языка может побудить только специфика задачи, да и то альтернативы всегда будут пытаться отжать задачу.

q0tw4 ★★★ ()
Ответ на: комментарий от RazrFalcon

Ну тогда не пользуйся этими «опциям» рантайма: подсчет ссылок, списки, деревья, графы. Потому что это управление памятью в рантайме.

anonymous ()
Ответ на: комментарий от q0tw4

ее больше

Лучше чаще, но проще. А вот отладка сишки/плюсишки это для тонких ценителей. Кстати, тесты нужно писать везде, и в динамике опять же это проще. Вот автоматический рефакторинг, полноценная поддержка IDE, оптимизация это реально слабые места, и только ради этого суровый продакшн выбирает статику.

bread ()
Ответ на: комментарий от bread

Тут вопрос в том, что динамики обычно (забудем на минутку про PHP) следят за безопасностью доступа, следовательно самый противный источник ошибок там отсутствует. Давайте рассматривать хотя бы джаву в сравнении с динамикой и тогда сравнение получится более адекватным

q0tw4 ★★★ ()
Ответ на: комментарий от q0tw4

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

anonymous ()
Ответ на: комментарий от q0tw4

Это претензия к тому, что что-то может быть опционально, или «опции» надо сравнивать в равных условиях? А то, понимаешь ли, ява приложение можно запустить так, что так называемое «управление памятью» может не сработать за время жизни приложения.

anonymous ()
Ответ на: комментарий от anonymous

ОС будущего; хром тоже хейтили (да и сейчас хейтят) за памятеобжирание, но расширять оперативку экстенсивно нынче проще всего. Жаль только, банки вряд ли закотируют, им жабку подавай и хоть тресни.

Moondancer ()

Проблема тут в том что 1) микрософт годами в своем кривом апи провоцировала говнокодить; 2) микрософт компилятор жрет любой говнокодят который ты ему скормишь.

invy ★★★★★ ()
Последнее исправление: invy (всего исправлений: 1)
Ответ на: комментарий от invy

микрософт компилятор жрет любой говнокод

Я как-то попробовал врубить аналог -Wall -Werror в майкрософтном компиляторе на существующем проекте. И быстро вырубил обратно, так как сделать его компилируемым стало абсолютно невозможно.

q0tw4 ★★★ ()
Ответ на: комментарий от bread

Мне кажется, половина лора просто решила не сливаться в едином порыве экстаза от Раста вместе с РазрФальконом. Эх, тяжела и неказиста жизнь растопрограммиста.

goto-vlad ()
Ответ на: комментарий от Harald

Это всё потому, что у вендузятников valgrind-а нет.

Intel Inspector, Parasoft Insure++, Dr.Memory, AppVerifier.

В моём линуксе мои программы на C после valgrind-а работают с памятью правильно, а волосы гладкие и шелковистые

Иногда замедление в 20x раз ломает взаимные задержки так, что баги просачиваются. AddressSanitizer не спасает, потому что не всегда всё можно пересобрать им. Ну и задержки он тоже двигает туда-сюда.

i-rinat ★★★★★ ()

Ваш праздник станет еще ярче, если вы посмотрите презенташку, откуда и были взяты цифры про 70%: https://github.com/Microsoft/MSRC-Security-Research/blob/master/presentations...

Там в качестве одной из стратегий борьбы с уязвимостями называют использование Rust и С#.

eao197 ★★★★★ ()

38% багов в Airbnb из-за динамической типизации

А его конкурент, разработанный на кошерном статическом ЯП, просто не появился на свет. Но повод бросить какашку в огород популярной технологии, конечно, имеется.

seiken ★★★★ ()
Ответ на: комментарий от RazrFalcon

Вы-то сами пробовали его использовать, или только слышали звон?

А что там такого особенного? Оно и для компилируемых используется. Например, для тестирования протоколов, когда данные поступают извне, и никакой статический чекер на принимающем конце по определению ничего не может контролировать в генерации передаваемых данных.

seiken ★★★★ ()
Ответ на: комментарий от seiken

Особенность в том, что фаззер будет генерировать «мусор». Он ничего не знает о конкретном формате. Поэтому никакие сложные ситуации он спровоцировать в принципе не может.

RazrFalcon ★★★★★ ()
Ответ на: комментарий от RazrFalcon

Особенность в том, что фаззер будет генерировать «мусор». Он ничего не знает о конкретном формате. Поэтому никакие сложные ситуации он спровоцировать в принципе не может.

У тебя очень далекое представление о том, что из себя представляет фаззинг.

Впрочем, как обычно.

jollheef ★★★★★ ()