`

СПЕЦІАЛЬНІ
ПАРТНЕРИ
ПРОЕКТУ

Чи використовує ваша компанія ChatGPT в роботі?

BEST CIO

Определение наиболее профессиональных ИТ-управленцев, лидеров и экспертов в своих отраслях

Человек года

Кто внес наибольший вклад в развитие украинского ИТ-рынка.

Продукт года

Награды «Продукт года» еженедельника «Компьютерное обозрение» за наиболее выдающиеся ИТ-товары

 

Stack корректирует ошибки компиляторов

0 
 
Stack корректирует ошибки компиляторов

Компиляторы, это компьютерные программы, которые преобразуют высокоуровневые команды, написанные на удобных для чтения языках, таких как Java или C, в низкоуровневые, которые могут исполняться машинами.

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

На Симпозиуме ACM по принципам операционных систем в ноябре этого года, исследователи из MIT представят свою новую систему Stack, которая автоматически анализирует код программ и выявляет те строки, которые компиляторы могут игнорировать, но которые, фактически, важны для функционирования ПО. Несмотря на то, что сама статья пока недоступна, коммерческие программисты уже начали тестирование Stack, предоставленной для загрузки онлайн. Первые их отзывы вполне благожелательны.

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

«В спецификациях языка С существует множество тонких моментов и возможностей, используемых программистами несмотря на то, что они недокументированны», — отмечает Франс Кашоек (Frans Kaashoek), профессор факультета электротехники и компьютерной науки MIT.

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

Cоздатели Stack постарались учесть все недокументированные возможности С и то, как программист мог бы их использовать. Фактически, Stack компилирует программы дважды. В первый раз она ищет удаляемый мертвый код, а во второй — мертвый код и недокументированное поведение. Затем она идентифицирует весь код, удаленный только на втором этапе и предупреждает программиста о возможных проблемах, связанных с ним.

Ready, set, buy! Посібник для початківців - як придбати Copilot для Microsoft 365

0 
 

Напечатать Отправить другу

Читайте также

 

Ukraine

 

  •  Home  •  Ринок  •  IТ-директор  •  CloudComputing  •  Hard  •  Soft  •  Мережі  •  Безпека  •  Наука  •  IoT