Стваральнік C++ раскрытыкаваў навязванне бяспечных моў праграмавання

Б'ёрн Страуструп (Bjarne Stroustrup), стваральнік мовы C++, апублікаваў пярэчанні супраць высноў, зробленых у справаздачы АНБ, у якім арганізацыям было рэкамендавана адысці ад выкарыстання моў праграмавання, такіх як Сі і Сі++, якія перакладаюць кіраванне памяццю на распрацоўніка, на карысць моў, такіх як C#, Go, Java, Ruby, Rust і Swift, якія забяспечваюць аўтаматычнае кіраванне памяццю або якія выконваюць праверкі бяспечнай працы з памяццю падчас кампіляцыі.

На думку Страуструпа згаданыя ў справаздачы АНБ бяспечныя мовы на справе не пераўзыходзяць C++ у важных з яго пункту гледжання прымяненнях. У прыватнасці, якія развіваюцца апошнія гады базавыя рэкамендацыі па выкарыстанні C++ (C++ Core Guidelines) ахапляюць метады бяспечнага праграмаванне і загадваюць ужыванне сродкаў, якія гарантуюць бяспечную працу з тыпамі і рэсурсамі. Пры гэтым распрацоўнікам, якім не патрабуюцца падобныя строгія гарантыі бяспекі, пакідаецца магчымасць працягу выкарыстання старых метадаў распрацоўкі.

Страуструп лічыць, што добры статычны аналізатар, які адпавядае рэкамендацыям C++ Core Guidelines, можа забяспечыць неабходныя гарантыі бяспекі C++ кода, патрабуючы значна менш выдаткаў, чым пераход на новыя бяспечныя мовы праграмавання. Напрыклад, большасць рэкамендацый Core Guidelines ужо рэалізаваны ў статычным аналізатары і профілі бяспечнай працы з памяццю са складу Microsoft Visual Studio. Частка рэкамендацый таксама ўлічана ў статычным аналізатары Clang tidy.

Аб'ектам крытыкі таксама стала акцэнтаванне справаздачы АНБ толькі на праблемах працы з памяццю, пакідаючы без увагі многія іншыя праблемы моў праграмавання, якія ўплываюць на бяспеку і надзейнасць. Страуструп разглядае бяспеку як шырэйшае паняцце, розныя грані якога могуць быць дасягнуты камбінацыяй стылю напісання кода, бібліятэк і статычных аналізатараў. Для кіравання ўключэннем правіл, якія забяспечваюць бяспеку працы з тыпамі і рэсурсамі, прапануецца выкарыстоўваць анатацыі ў кодзе і опцыі кампілятараў.

У прыкладаннях, у якіх прадукцыйнасць важней бяспекі, падобны падыход дае магчымасць выбарачнага прымянення сродкаў, якія гарантуюць бяспеку толькі там, дзе гэта неабходна. Інструменты павышэння бяспекі таксама можна прымяняць часткова, напрыклад, спачатку абмежавацца правіламі праверкі дыяпазонаў і ініцыялізацыі, а затым паступова адаптаваць код для больш строгіх патрабаванняў.

Крыніца: opennet.ru

Дадаць каментар