Язык как интерфейс
Википедия определяет интерфейс как границу между двумя функциональными объектами, совокупность средств, методов и правил взаимодействия между объектами, как элементами системы.
Что ж, неплохо. В более узком, техническом смысле, интерфейс — это набор инструментов, позволяющих пользователю взаимодействовать с операционной системой компьютера, мобильного устройства или других видов техники.
То есть, интерфейс — это некая периферийная, пограничная часть объекта, приспособленная для взаимодействия с ним.
В ООП (объектно-ориентированном программировании) интерфейс — это синтаксическая структура, определяющая отношения между объектами, не только позволяющая объектам взаимодействовать, но и (это важно!) позволяющая им не взаимодействовать никак иначе. Тут проявляется важное свойство интерфейса — он не только открывает объект внешнему миру, но и делает это ограниченным образом, позволяя объекту не раскрываться полностью, тем самым сохранять свою целостность.
Это очень важное качество интерфейса, не только раскрывающее объект вовне, но и защищающее его от этого «вне», препятствующее любому другому, ненормативному взаимодействию.
Кроме того, интерфейс не просто устанавливает правила и стандарты взаимодействия, определяет границы взаимодействия, но и, отчасти, диктует внутреннюю структуру объектам, определяет их поведение при взаимодействии.
Это всё была присказка, лирическое отступление. Теперь кратко суть.
Я много уже писал о языке с самых разных сторон. Вот ещё одна.
Вам ведь приходилось изучать языки — и родной, и иностранные? А кто-то ещё потом и с концепцией ООП познакомился. И вот теперь, ретроспективно, у вас нет ощущения, что вы изучали не объект, а интерфейс? И тот факт, что интерфейс, это по сути абстрактный класс, как раз и определил все трудности изучения языка как объекта. Не будь этого, не было бы тех проблем, обычные объекты, даже сложные, мы гораздо легче изучаем.
Но главный вопрос, конечно — чей интерфейс? Интерфейс чего?
P.S. Следующий вопрос. Изучая, например, интерфейс «Метро», его меню, десктоп, «Магазин», настройки и даже файловую систему, вникаете ли вы в устройство OS Windows?
P.S2. Не знаю, надо ли уточнять, но я здесь как раз не о стандартном понимании языка как средства коммуникации между людьми, то есть не об интерфейсе, обеспечивающем межличностное взаимодействие.