Политика и компьютеры
Что такое философия?
Что, по Вашему мнению, является философией? Согласно словарному определению, это "деятельность, направленная на осмысление жизни и фундаментальных вопросов мира и поиск ответов на них". Можно также дать поведенческое определение, согласно которому это не решение задач с заранее заданным ответом, а расширение мышления посредством одних и тех же вопросов или серии последовательных вопросов, а также обмен этими ответами.
В прошлом, обучаясь на бакалавриате, я посещал курс, связанный с политической философией. Я помню, как во время моего представления профессор сказал что-то вроде: "Политическая философия и Computer Science — это дисциплины, находящиеся на вершине разных философий". Это были не совсем те слова и не та фраза, но смысл, кажется, был примерно таков.
Computer Science
Я считаю, что Computer Science — это "фундаментальное исследование для решения логических проблем". Поэтому для каждой проблемы может быть несколько ответов в зависимости от человека, который над ней размышляет. Наиболее типичным примером является сортировка. Даже в исследовании способов упорядочивания одних и тех же перечисленных данных существует множество методов: Bubble, Insertion, Selection, Merge, Quick, Heap, Tim и т.д. И, разделяя их, можно получить более совершенные алгоритмы.
Кроме того, если рассматривать это локально, можно сказать, что это "создание и доказательство". Вышеупомянутая сортировка также постоянно создает и доказывает результаты того, как она будет сортироваться. Для разработчиков более близким примером будет то, что, когда появляется план проекта, его следует рассматривать как реализацию и доказательство того, что он работает правильно.
Политическая философия
Я считаю, что политическая философия — это "фундаментальное исследование для решения социальных проблем". Она постоянно задает вопросы о существующих проблемах, которые различаются в каждую эпоху, производит ответы и делится ими в настоящем и будущем. Она в основном имеет дело с абстрактными ценностями, такими как справедливость, свобода, равенство, власть, которые по-разному интерпретируются в зависимости от эпохи и культуры, и не имеет четко определенных добра и зла, правильного и неправильного, а также характеризуется тем, что они не определены.
Кроме того, если рассматривать это локально, как и Computer Science, можно сказать, что это "вопросы и размышления". Она постоянно задает вопросы о возникшей проблеме, размышляет о том, почему это произошло, какие есть лучшие направления, и дает ответы. Здесь также появляется множество ответов, пропорционально количеству мыслящих людей.
Почему мы должны знать о политике/компьютерах?
Отношения взаимного вызова
Эти два мира, казалось бы, исследуют разные области, но на самом деле имеют много общего и множество точек, где они являются причиной и следствием друг для друга.
Приведу один пример:
- Если безопасно хранить личные медицинские данные в облаке, то при необходимости к ним можно будет быстро получить доступ из любой больницы ⇒ Реализуется программированием, используя функции каждой области для обеспечения безопасности и доступности.
- Тогда кому принадлежат эти данные? Мне? Ответственному лицу, которое их зарегистрировало? Или организатору? Разработчику? Государству? Тогда до какой степени они могут видеть мои данные? До какой степени и как я могу быть уверен в защите моей личной информации? ⇒ Будет происходить политический дискурс относительно позиций и различий в интересах различных сообществ и отдельных лиц.
- Впоследствии, время от времени, этот политический дискурс и программное проектирование и реализация будут повторяться, следуя друг за другом.
Таким образом, Computer Science используется для решения существующих социальных проблем, и затем политическая философия используется для постановки вопросов, осознания и решения проблем, возникающих здесь, и для решения следующих проблем. В современном информационном обществе это естественное явление.
Похожи ли политика и компьютеры?
Точки, где они не кажутся похожими
Эти два мира также развивались схожим образом. Однако их основы, как и отношения между социальной философией и натурфилософией, имеют различие между расплывчатым и четким выражением. Если политическая философия основывается на изменчивых и расплывчатых определениях, состоящих из естественного языка, то Computer Science основывается на неизменных и четких утверждениях, состоящих из математических выражений, а не естественного языка.
Кроме того, направление выражается тонко по-разному. Computer Science считает, что оптимальное решение может существовать. А в политической философии речь идет о расплывчатых понятиях, таких как более убедительные аргументы, более обоснованные аргументы, более этичные аргументы. Однако, на мой взгляд, направление обоих почти идентично. В конце концов, кажется, что они стремятся к "лучшему следующему". Хотя Computer Science имеет различные области, например, в отношении медиа-сжатия, называемого кодеком, она стремится показать лучшую степень сжатия, производительность сжатия и лицензионные расходы.
Точки, которые кажутся похожими
В частности, языки программирования и идеологии управления, кажется, применяются к человеку схожим образом. Хотя нельзя сопоставить каждый язык и идеологию, я перечислю их для интереса.
- C ( "Разработчик знает, что он делает" ): Я бы сравнил его с республиканизмом. Исторически он похож на республику, которая стала основой западных политических систем, и я считаю, что он также похож на коммунитаризм, который ценит сознание каждого гражданина и индивидуальные усилия, направленные на достижение лучшего идеала. Кроме того, я чувствую, что сходство заключается в том, что права сопровождаются ответственностью.
- Java ( "Напиши один раз, запускай где угодно" ): Не знаю. Существует сильный закон, и люди живут однообразной жизнью, следуя ему, но это стабильно, и в этом есть свобода. И когда вы переходите к Spring, вас ждут различные блага. Может, либерализм?
- C# ( "Гармония производительности разработчика и принципов Software Engineering" ): Под покровительством сильного правительства все хорошо спроектировано, и в рамках того, что запланировано, можно максимально увеличить производительность и эффективность. Плановая экономика подходит. Отличие от коммунизма в том, что средства производства были распространены, и производители не ограничены.
- Go ( "Отбросьте сложность, выберите практичность и эффективность" ): Ничего похожего нет. Раздайте все, это государство всеобщего благосостояния.
- Rust ( "Безопасность без снижения производительности" ): Владение и время жизни Rust управляются правителем — строгим компилятором. Это похоже на то, что сообщество управляет и планирует средства производства, чтобы предотвратить неравенство и риски, вызванные свободной экономической деятельностью индивидов, обеспечивая стабильную жизнь, что, по-видимому, преследует безопасность и равенство всей системы за счет частичного ограничения свободы индивида, поэтому я считаю это социализмом.
- JavaScript ( "Гибкость и терпимость, и повсеместное присутствие" ): Я бы сравнил его с капитализмом. В этом языке индивиды владеют средствами производства, и даже оборудованием индивиды владеют в избытке. Благодаря этому появляются различные промышленные товары, и каждый может стремиться к прибыли через свободную конкуренцию. Однако рынок без регулирования вскоре погрузился в хаос.
- TypeScript ( "Расширенный JavaScript" ): Конечно, это модифицированный капитализм. Вера в капитализм разрушена, и правительство в некоторой степени вмешивается, чтобы преодолеть нестабильность рынка. Хотя существующая полная свобода относительно деградировала, каждый по-прежнему свободно выходит на рынок и конкурирует.
И, как ни странно, немало разработчиков часто ссорятся из-за языков, как будто они ведут идеологическую войну в реальной жизни. Сам язык является для разработчика знакомой идеологией и идеалом, к которому следует стремиться.
Государство и архитектура
- Монолитная архитектура и централизованное государство: Вся система содержится в одной огромной кодовой базе и одном бинарном файле. Это похоже на унитарное государство с сильным центральным правительством или абсолютную монархию. Все функции государства контролируются единой властной структурой.
- Преимуществом является простота формирования государства и быстрое принятие решений. Это аналогично преимуществу быстрого выпуска всего программного обеспечения. Поскольку все ресурсы и информация сосредоточены в одном месте, управление становится ясным.
- Однако по мере роста государства становится сложнее адаптироваться к изменениям, и даже для изменения небольшого закона или системы требуется проверка и применение ко всей системе. Существует также риск того, что проблема в одной области парализует все государство. Монолитная архитектура также затрудняет адаптацию к изменениям из-за большой кодовой базы и связанных кодов, и даже для изменения одной строки кода требуется оценка области воздействия, а проблема, возникшая в одном модуле, легко влияет на всю систему.
- MSA и федеративное государство: Каждая функция системы разделена на независимые сервисы. Это имеет сходство с федеративным государством, где каждая часть страны состоит из нескольких независимых штатов. Кроме того, каждый сервис и штат имеют независимую инфраструктуру. Вмешательство центрального правительства является слабым, и также похоже, что независимость и присоединение могут произойти в любой момент.
- В основном, каждый независимый штат и сервис могут независимо изменять законы/писать код. Это устраняет необходимость согласовывать темп друг с другом. Кроме того, даже если в одном месте возникнет проблема, всей федерации будет трудно быть парализованной. И можно выбрать подходящие системы (технологии) в зависимости от региона или области.
- Однако согласование между собой или создание каналов связи является сложной задачей. Может быть трудно проводить последовательную политику, что может вызвать путаницу.
- EDA (Event-Driven Architecture) и гражданское общество: Вместо того чтобы центральное правительство или агенты непосредственно отдавали приказы, индивиды активно и автономно берут на себя решение социальных проблем, которые возникают. Это похоже на особенность EDA, когда при возникновении события кто-то из подписчиков автономно берет его на себя и обрабатывает.
- Каждый может легко участвовать. EDA также позволяет новым сервисам легко становиться новыми подписчиками и участвовать в процессе.
- Однако есть недостаток в том, что невозможно понять весь поток. Трудно отследить, кто и как обработал, и невозможно узнать, какую цепную реакцию вызовет одно событие.
- Layered Architecture и феодализм: Феодализм — это структура, в которой каждый уровень выполняет свою заданную роль и обязанности, выполняя обязательства перед вышестоящим уровнем. Они связаны своего рода договорными отношениями и образуют строгую вертикальную иерархию, что позволяет найти сходство с многослойной архитектурой.
Хотя возможно больше таких аналогий, суть этой статьи заключается не столько в самой структуре, сколько в процессе ее создания.
Может ли решение проблем в разработке и политике быть одинаковым?
Если Software Architecture и государственная система похожи, то и процесс их создания удивительно параллелен. Процесс разработки программного обеспечения по сути ничем не отличается от политического акта по созданию и развитию нового порядка в цифровом пространстве.
- Публичное обсуждение социальных проблем и анализ требований: Все начинается с вопроса "В чем проблема?". Подобно тому, как страдания и неудобства гражданского общества становятся предметом публичного обсуждения и политической повестки дня, неудобства и требования пользователей анализируются и становятся первым этапом разработки — "спецификацией требований".
- Разработка конституции и архитектурный дизайн: Какое государство мы хотим создать? Какую систему мы хотим создать? Подобно тому, как политики, основываясь на идеологии и философии, закладывают основы конституции и законов, архитекторы, основываясь на технических убеждениях, рисуют проект архитектуры, которая станет основой системы. Решения, принятые на этом этапе, определяют судьбу системы.
- Осуществление политики и реализация программного обеспечения: После завершения проектирования разработчики пишут реальный код, а административные чиновники осуществляют политику в соответствии с законами. Это процесс, в котором абстрактный план превращается в конкретную сущность, действующую в реальном мире.
- Суждение через выборы и тестирование программного обеспечения: Политика подвергается суждению о своей легитимности через выборы и общественное мнение. Программное обеспечение проверяется на свою ценность через тестирование командой QA и отзывы пользователей. И то, и другое в конечном итоге может выжить только с согласия суверена (граждан, пользователей).
- Реформа институтов и обслуживание системы: Созданные однажды законы и системы не вечны. Подобно тому, как устаревшие законы пересматриваются, а институты реформируются в соответствии с изменениями времени, программное обеспечение также становится "мертвым кодом" в тот момент, когда оно перестает адаптироваться к изменяющейся среде и улучшать внутреннюю неэффективность путем "рефакторинга".
Таким образом, весь процесс, от определения проблемы до проектирования, реализации, проверки и постоянного улучшения, показывает, что эти два мира разделяют один и тот же подход к решению проблем.
День новых законодателей
Информационное общество сделало расстояние между вершинами этих двух философий бессмысленным. Код — это уже не просто логическая схема, а "закон (Code is Law)", который регулирует отношения между людьми, распределяет власть и реализует социальные ценности. Если разрабатываемая нами архитектура похожа на структуру управления государством, а используемый нами процесс разработки похож на процесс политического согласия, то кто же мы, разработчики? И что должны делать политики? Поэтому разработчики теперь должны размышлять не только о логике кода, но и о том обществе, которое этот код создает, а политики должны понимать не только логику голосов, но и логику технологий, которые движут миром. Потому что эта огромная власть, которой мы обладаем в каждом из наших миров, влечет за собой соответствующую этическую ответственность.