Философские идеи, полученные из искусства программирования

Программирование — это философия сама по себе. Это структурная основа, которую мы используем для описания поведения программ. Удивительно, но программирование также может описывать поведение самих живых существ. На самом деле, знаем мы это или нет, мы, программисты, описываем свое мышление теми же терминами, которые используем для определения поведения программы. Управляющие структуры «если», «за» и «пока» обладают объяснительной силой, позволяющей изображать большинство наших действий как человеческих. Даже сейчас, когда я это записываю, я могу описать свое поведение как псевдокод.

пока я знаю, что писать дальше {
продолжайте печатать
}

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

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

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

Как только мы осознаем, что у нас есть язык, описывающий поведение самой жизни, мы склонны размышлять о механизмах, которые могли создать наш мир. Это также побудило некоторых из нас поверить в гипотезу о том, что мы все можем жить в «Матрице». Говоря более абстрактно, некоторые полагают, что создание этого мира и всей разумной жизни в нем является следствием самой разумной жизни. В связи с этим возникает вопрос, состоит ли наша судьба в том, чтобы самим породить разумную жизнь, и с какой целью будет продолжаться этот цикл.

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