Jorge Ortiz: Pimp My Lock: A case study in Scala API design – статья, в которой показывается, как используя возможности языка Scala создать интерфейс Lock, более удобный в использовании, чем аналогичный ему интерфейс из Java. (Для понимания статьи желательно иметь общие представления о языке Scala.)
После ее прочтения у меня в сухом остатке оказались три вещи:
1. В статье показано, как в языке с лямбда-функциями (блоками кода) можно обходиться без идиомы RAII. Не могу сказать, что отсутствие RAII – это хорошо. Но уж если его в языке нет, но есть удобная возможность оформления блоков кода (как в Scala и Ruby), то можно жить и вот так.
2. На мой взгляд, статья демонстрирует, что чем богаче язык, тем сложнее приходиться в проектировании общеупотребительных библиотек. Проблема “богатства выбора” и все такое :)
3. Гибкость языка и богатые выразительные способности все-таки усложняют восприятие кода. Вот, например, смотрит человек с посредственными знаниями Scala на фрагмент:
lock.attemptFor(10.minutes) {
// blocking (with timeout) attempt at access
// to shared resources
} getOrElse {
// code to execute if attempt fails
}
и пытается понять, что же такое getOrElse и к чему он относится. Насколько быстро ему это удастся?
Комментариев нет:
Отправить комментарий