🔥

Тред (Глеб Лукьянец)


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

В плане взаимодействия, есть два наиболее важных аспекта: униформность и ортогональность

Униформность: применимость фичи не должна содержать краевых случаев. Если я могу сделать публичным класс, то должен мочь сделать стракт и инам.

Ортогональность: одновременное применение двух фич не должно вводить краевой случай. Если я могу сделать класс public, а могу final, то я должен мочь сделать его public final и должно это вести себя как public + final.

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