Мне было около восьми лет, когда я прочитал свою первую книгу о философии под названием Мир Софи. Просматривая эту книгу, мне стало достаточно любопытно, чтобы время от времени возвращаться к философии.

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

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

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

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

Объектно-ориентированное программирование (ООП) представляет собой сдвиг парадигмы от традиционных методологий модульного программирования, подобных той, которую я только что описал. Это чрезвычайно популярное видение того, как программист структурирует и выполняет программу.

Как существует связь между ООП и мыслительными процессами Платона? И подождите, кто такой Платон? Принесите себе исправление Платона здесь, но не обязательно разбираться в этом:

Платон называет формы абстрактными представлениями, которые являются шаблонами или шаблонами для объектов реального мира или их характеристик.

Хммм, давайте разберем это предложение.

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

Но вместо кошек Платон больше интересовался этикой,

«Что такое красота?».

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

Меня не существует или нет?

Если нет, то откуда взялась красота? Материальный мир не может этого открыть. Он может только представлять собой видимость, которая приводит нас только к формированию личного мнения о том, что это за идеи.

Итак, как теория Платона с таким пристальным вниманием к вопросам этики может быть соотнесена с информатикой? Давайте сделаем шаг вперед и вернемся к этой компании кошек. Ключевой идеей здесь является то, что

класс - это не сам объект.

Связывая теорию Платона и ООП, класс похож на проект, который сообщает нам, какие атрибуты содержатся в создаваемых им объектах. Классы служат шаблоном для создания кота. Определяет, что кошка имеет четыре ноги, тип шерсти, цвет шерсти ... Но класс Cat не будет сам по себе Cat, вам нужно «включить его» (чаще всего: создать его экземпляр), чтобы получить уникальный объект Cat. Из одного и того же класса вы можете создавать множество комбинаций, задавая разные атрибуты. Красота как идея проявляется только в том, что включает в себя, верно? И мы придаем ему некоторые из наших личных предпочтений (атрибутов).

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

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