Создание экземпляра класса занимает центральное место в объектно-ориентированном программировании. Класс — это план объектов, который создает экземпляры класса с определенными предопределенными характеристиками. Когда я узнал об этом процессе, я сразу же вспомнил свои курсы философии в средней школе и колледже, где я узнал о платоновском дуализме и платоновской теории форм.

Теория форм постулирует нефизическое царство, которое содержит идеальную форму каждого объекта, существующего в нашей физической реальности. Таким образом, каждое воплощение чашки или дерева, которое мы воспринимаем, на самом деле является отражением идеальной, совершенной версии той вещи, которую мы не можем воспринимать напрямую. Эта концепция реальности резюмируется в Аллегории Пещеры, обсуждаемой в Книге VII Республики:

покажу на рисунке, насколько наша природа просвещена или непросветлена: — Смотри! человеческие существа, живущие в подземном логове, у которого есть рот, открытый к свету и простирающийся по всему логову; здесь они были с детства, и их ноги и шеи скованы цепями, так что они не могут двигаться и могут только видеть перед собой, не давая цепям вращаться вокруг головы. Сзади и над ними вдалеке полыхает огонь, а между огнем и заключенными есть приподнятый ход; и вы увидите, если присмотритесь, невысокую стену, построенную вдоль пути, как ширму, которую ставят перед собой марионеточные игроки, поверх которой показывают марионеток. . . ... они видят только свои собственные тени или тени друг друга, которые огонь отбрасывает на противоположную стену пещеры?

Эта двойственность между тенями на стене пещеры — метафорой нашего обычного восприятия реальности и марионетками и марионетками — представляющими более абстрактный, но более правдивый мир форм, — отличный способ представить конкретизацию объекта по отношению к реальности. классы. Кроме того, он основан на идее, что одно из основных преимуществ ООП заключается в том, что оно позволяет нам моделировать реальность в нашем программировании.

Объектно-ориентированное программирование появилось в начале 1970-х как функция нескольких ранних языков программирования, в первую очередь Simula. Классы объектов в Simula использовались для имитации приложений реального мира, и, наоборот, объекты можно было сгруппировать в классы на основе общего поведения. Алан Кей — один из главных основоположников объектно-ориентированного программирования — и группа разработчиков, работающих вместе с ним в Xerox, воспользовались этими возможностями для создания Smalltalk, языка, использовавшегося для Dynabook, самого раннего персонального компьютера. Его операционная система включала в себя многие основные функции, связанные с объектно-ориентированным программированием, и, в частности, возможность группировать объекты в классы на основе общих функций. Появление объектно-ориентированного программирования значительно увеличило возможности разработчиков взаимодействовать с компьютерами и моделировать явления реального мира.

Наследие платонического дуализма западной мысли могло бы заполнить многие библиотеки. В самом деле, трудно представить себе западную философскую традицию, которая каким-то образом не опиралась бы на нее. Христианский дуализм между телом и душой, небом и адом в значительной степени основан на этом самом раннем дуализме. Концепция Декарта о разуме и теле — еще одна теория, которая явно обязана своей основой платоновскому дуализму. От «Властелина колец» до Канта большая часть интеллектуального дискурса нашего общества опирается на двоичную систему Платона.

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