Часто, когда я обсуждаю дизайн Rust на RFCs
или на internals-форуме с другими пользователями,
я замечаю характерные высказывания насчёт явности.
Обычно что-то в духе:
Мне не нравится <дизайн возможности X>
, потому что он менее явный.
Всякая магия уместна в <другом языке Y>
, а Rust — это явный язык,
так что следует использовать <дизайн возможности Z>
.
Подобные комментарии жутко меня раздражают,
потому что дают очень мало полезной обратной связи.
Они лишь утверждают, что «явное лучше неявного»
(при этом предполагается, что это бесспорное утверждение),
и что какой-то дизайн менее явный, чем альтернатива
(хотя часто даже не приводится объяснений, почему
именно критикуемый дизайн менее явный),
из чего следует, что их подход предпочтительнее.
В своей опубликованной ранее в этом году заметке
Аарон пытался докопаться до сути вопроса явности,
обсуждая размер контекста (reasoning footprint).
Он попытался разбить понятия «явность» и «неявность» на составные части,
чтобы подготовить почву для суждения о явности дизайна
той или иной возможности.
Я же хочу изложить немного другой взгляд на проблему и попытаюсь очертить
в общих словах, что мы подразумеваем под словом «явный».
Английский — довольно нечёткий язык, в котором прилагательные
имеют множества контекстно-зависимых значений, например, как используется
слово «нечёткий» (fuzzy) в предыдущем предложении.
Слово «явный» тоже многозначно, так что я не могу утверждать наверняка,
что кто-то неправильно использует это слово.
Однако я предлагаю выражать свои мысли при обсуждении «явности» более чётко,
чтобы все лучше понимали, о чем именно идёт речь.