header1.png

Безопасность языков программирования

Просмотров: 509Комментарии: 0
Программирование
Безопасность языков программирования

В этой статье будут рассмотрены способы обеспечения безопасности сохранности данных у языков программирования.

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

Системы типов языков могут быть динамическими либо статическими. Если система имеет динамическую систему типов, то алгоритм в ней предусматривает привязку типа к переменной не во время создания, а в момент объявления. В тех или иных участках программного кода идентичная переменная может быть привязана к отличным друг от друга типам, что приводит к созданию дополнительных значений, которые подчинены к первой созданной такой же переменной с зависимостью от всех изменений первой величины. Однако такой подход позволит найти ошибки только при полностью написанной строке кода и при написании объёмных сложных программ списка своих собственных действий не происходит, то есть дополнительной описи связанных типов не ведётся.

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

Например, статическая типовая система может быть полиморфной, то есть обладать свойством, позволяющим описывать значения разных типов одинаково, то есть выполнять одну и ту же команду для разных типов. Таким путём одна и та же конструкция используется во многих местах и существенно сокращаются трудозатраты для разработки самых сложных систем. Этот вид подразделяется на явные и неявные подвиды, где первые требуют ручной описи всех объектов в написании, а вторые статически присваивают типы самостоятельно.

В обоих видах систем типизации имеются сильные и слабые представители, всё зависит от выбранного языка. Слабая система типов может перенаправлять типы с уже указанных переменных, что замедляет процесс компиляции. Сильные системы не меняют привязанных типов, а также допускают меньше ошибок в своей собственной деятельности.

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

В целом, программный язык может считаться безопасным, если программный контент, написанный на нём, не выйдет за рамки своих команд. Программа, не имеющая логических ошибок, представляется как программа с «хорошим поведением». Даже если у программы с хорошим поведением есть баги (программные ошибки), она не нарушит общей целостности данных и не способна, как говорят программисты, обрушиться.

Оставьте комментарий!

grin LOL cheese smile wink smirk rolleyes confused surprised big surprise tongue laugh tongue rolleye tongue wink raspberry blank stare long face ohh grrr gulp oh oh downer red face sick shut eye hmmm mad angry zipper kiss shock cool smile cool smirk cool grin cool hmm cool mad cool cheese vampire snake excaim question

Комментарий будет опубликован после проверки

Вы можете войти под своим логином или зарегистрироваться на сайте.

(обязательно)