Очень субъективная статья.
Наличие unsafe в c# можно преподнести как фича для экспертов (чем и является), а различного рода иньекции являются не следствием используемого языка, а необученности или безответственности программиста.
Логичнее было бы сравнивать с таким же безопасным кодом на c# и сделать вывод о том, что Nemerle, благодаря макросам, позволяет писать безопасный код гораздо лаконичнее и читабельнее.
Здравствуйте, shakirov.ruslan, Вы писали:
SR>Очень субъективная статья.
SR>Наличие unsafe в c# можно преподнести как фича для экспертов (чем и является)
А можно, как фичу, позволяющую внести в свой продукт уязвимости, нехарактерные для управляемых сред (чем она точно также является)
Вопрос только в том, пессимист или оптимист будет ее преподносить.
SR>, а различного рода иньекции являются не следствием используемого языка, а необученности или безответственности программиста.
Нет. Они являются следствием И используемого языка И действий разработчика (но не его квалификации). Именно поэтому, кто-либо здесь, вряд ли сможет продемонстрировать к примеру Lisp-код, приводящий к переполнению буфера. Используемый язык является техническим фактором, которым мы можем управлять почти с математической точностью. Действия разработчика (а чаще, команды разработчиков), являются человеческим фактором и управлению поддаются крайне тяжело. Ошибку переполнения вполне может допустить и квалифицированный программист по той простой причине, что он человек, которому свойственно иногда быть невнимательным, невыспавшимся, спешащим, не умеющим объять необъятное и т.п.
SR>Логичнее было бы сравнивать с таким же безопасным кодом на c#
Во всех остальных разделах именно такое сравнение и приводится. Пример же с unsafe демонстрирует, что принимая на поддержку или security-ревью проект на C#, вы не можете быть уверены в том, что там отсутствует довольно широкий класс уязвимостей. Вы должны будете убедиться в этом, что несколько расширяет рамки поддержки и увеличивает план проведения ревью. В случае с Nemerle кодом, это не так, если в проекте нет компонентов, реализованных на неуправлямых языках, взаимодействие с которыми Nemerle-кода осуществляется через механизмы интеропа.
SR>и сделать вывод о том, что Nemerle, благодаря макросам, позволяет писать безопасный код гораздо лаконичнее и читабельнее.
Вообще-то, именно этому выводу и посвящена вся заметка, если что