В супервизирующих отношениях есть какая-то красота . Рассмотрим следующие примеры:
- Атомы состоят из субатомных частиц, молекулы состоят из атомов, клетки состоят из молекул, органы состоят из клеток, люди состоят из органов, общества состоят из людей.
- Сложные стратегии игры в Го основаны на необходимости создавать структуры с «двумя глазами», чтобы они выжили, однако в правилах никогда не говорится о «двух глазах» , но само по себе является эмерджентным свойством очень простых правил Go.
- Полнота Тьюринга Conway's_Game_of_Life может быть доказана с помощью планеров , орудий и космических кораблей , которые находятся в включить на основе концепции включения и выключения и очень простой набор правил .
Во всех случаях минимальный набор объектов и минимальный набор правил в конечном итоге приводят к очень сложной структуре.
Мой первый вопрос: Можно ли наметить небольшой и минималистичный набор программных "объектов" и "правил", которые можно использовать для построения языка ООП?
Теперь умный ученый , вероятно, укажет на полноту Тьюринга правила 110 и скажет, что это все, что вам нужно! Но это не совсем то, что я ищу. Скорее, рискуя поставить плохо определенные вопросы, какие самые простые, понятные человеку концепции могут быть встроены в объектно-ориентированный язык программирования?
Для плохого и неполного примера, который намекает на то, что я хочу, определите три концептуальных объекта: ссылка , функция и держатель информации . Затем (уровень 2?) Определите структуру , которая будет обладателем информации, которая содержит другую информацию посредством ссылок на другие информационные папки. Элементарный класс (уровень 3?) Будет дополнять структуры ссылками на функции, но необходимо будет создать дополнительную структуру для обработки концепций частных и публичных функций. В конечном итоге мы должны прийти к полнофункциональному языку ООП, который был построен исключительно на фундаментальных принципах, и нигде мы не сделали обман путем жесткого кодирования оптимизаций или синтаксической соли с машинным кодом. И в идеале конечный результат все равно будет привлекательным и читабельным кодом.
Мой второй вопрос: Существуют ли языки ООП, которые уже подходят к этому?