Политика и компьютеры

Философия
Что вы думаете о философии? Согласно словарному определению, это деятельность по размышлению о жизни мира и фундаментальных вопросах и поиску ответов на них. Можно также дать определение через действие: это не решение задач с заранее известным ответом, а расширение мышления через одни и те же вопросы или непрерывную цепочку вопросов, порождающих новые, и обмен полученными ответами.
Ранее, во время обучения на программе бакалавриата, я прослушал курс, связанный с политической философией. На моем вводном занятии профессор сказал нечто похожее на фразу политическая философия и компьютерные науки являются дисциплинами, находящимися на противоположных вершинах философии. Я помню, что точно этих слов и предложения не было, но смысл, кажется, был примерно таким.
Компьютерные науки
Я считаю, что компьютерные науки являются фундаментальным исследованием для решения логических задач. Поэтому у разных людей, размышляющих над одной и той же проблемой, может получиться множество различных ответов. Самый показательный пример это сортировка. Существует множество способов упорядочить одни и те же данные: пузырьковая, вставками, выбором, слиянием, быстрая, пирамидальная, Timsort и другие. Разделяя их и сравнивая, можно получить более совершенные алгоритмы.
Кроме того, с локальной точки зрения можно сказать, что это создание и доказательство. Даже в приведенном выше примере сортировки постоянно создаются новые способы упорядочивания и доказывается корректность результатов. Разработчикам будет полезно воспринимать это на более близком примере: когда появляется проектный план, его реализуют и доказывают, что он работает без сбоев.
Политическая философия
Я считаю, что политическая философия является фундаментальным исследованием для решения социальных проблем. В каждую эпоху, опираясь на уже существующие, но различные проблемы, она многократно ставит вопросы, формулирует ответы и передает их настоящему и будущему. Она в основном занимается абстрактными ценностями, такими как справедливость, свобода, равенство и власть, которые интерпретируются по-разному в зависимости от времени и культуры. Четких границ добра и зла, правильных и неправильных ответов не установлено, и в этом состоит ее особенность.
Кроме того, с локальной точки зрения, как и в компьютерных науках, это можно назвать вопросом и размышлением. Она постоянно задает вопросы о возникших проблемах: почему все произошло именно так, какие существуют лучшие направления, и, размышляя, находит ответы. И здесь число ответов пропорционально числу мыслящих людей.
Почему нужно знать политику и компьютеры
Взаимный вызов связей
Два мира, кажется, исследуют разные области, но на самом деле они имеют во многом сходные черты и обладают большим количеством взаимных причин и следствий.
Приведу один пример.
- Если безопасно хранить персональные медицинские данные в облаке, то при необходимости каждая больница сможет быстро получить к ним доступ ⇒ это реализуется программно, безопасным и удобным для доступа образом, с использованием функций каждой области.
- Тогда чьи это данные? Мои? Ответственного за регистрацию? Или оператора? Разработчика? Государства? И тогда до каких пределов они смогут видеть мои данные? До какой степени и каким образом может быть гарантирована защита моих персональных данных? ⇒ Возникнет политический дискурс о позициях и противоречиях интересов различных сообществ и отдельных людей.
- После этого политический дискурс и программное проектирование и реализация будут время от времени сменять друг друга, повторяясь по цепочке.
Таким образом, компьютерные науки применяются для решения существующих социальных проблем, а затем политическая философия используется для осознания возникших проблем, постановки вопросов и решения следующих проблем. В современном информационном обществе это закономерное явление.
Похожи ли политика и компьютеры
На первый взгляд не похожи
Кроме того, два мира развивались в схожих формах. Однако их основа, как и в отношениях между социальной и natural философией, различается между неточным и точным выражением. В политической философии основой служат изменчивые и неопределенные определения, сформулированные на естественном языке, тогда как компьютерные науки опираются не на естественный язык, а на неизменные и точные утверждения, выраженные формулами.
Кроме того, направленность они выражают немного по-разному. Компьютерные науки считают, что оптимальное решение может существовать. А в политической философии речь идет о более убедительных аргументах, более обоснованных аргументах, более этичных аргументах, то есть о неопределенных понятиях. Однако, по моему мнению, направленность обоих миров почти одинакова: в конечном счете они стремятся к более совершенному следующему шагу. Например, даже в компьютерных науках есть множество направлений, но, в частности, в области медиасжатия, которое называют кодеками, предпринимаются усилия, чтобы добиться лучшей степени сжатия, производительности сжатия и снижения стоимости лицензий.
Что кажется похожим
Наиболее явно, что язык программирования и идеология управления по-разному воздействуют на людей. Я перечислю их ради забавы, хотя соотнести каждый язык с идеологией нельзя.
- Язык C (
разработчик знает, что он делает): Я хотел бы сравнить его с республиканизмом. Он похож на республику, которая исторически стала основой западной политической системы, и напоминает коммунитаризм, который ценит сознание каждого гражданина и усилия отдельных людей, стремящихся к лучшим идеалам. Кроме того, мне показалось, что, как и у прав, у него есть ответственность. - Java (
написав однажды, запускай где угодно): Не знаю. Есть сильный закон, и, следуя ему, живешь унифицированной жизнью, но это стабильно, и внутри этого можно быть свободным. А если заглянуть в Spring, там ждут различные социальные блага. Может, назовем это либерализмом? - C# (
гармония продуктивности разработчика и принципов инженерии программного обеспечения): Под сильным покровительством государства все хорошо спроектировано, и в рамках запланированного можно достигать предельной продуктивности и производительности. Подходит плановая экономика. То, что это не коммунизм, связано с тем, что средства производства открыты, и производители не ограничены. - Go (
отказываясь от сложности, выбираем практичность и эффективность): Похожего нет. Все раздают, поэтому ведите государство всеобщего благосостояния. - Rust (
безопасность без потери производительности): Владение и времена жизни в Rust управляются правителем, строгим компилятором. Это, чтобы предотвратить неравенство и риски, порождаемые свободной экономической деятельностью отдельных лиц, и чтобы сообщество управляло средствами производства, планировало и гарантировало стабильную жизнь, то есть, ограничивая свободу отдельных лиц, стремится к безопасности и равенству всей системы; поэтому я считаю это социализмом. - JavaScript (
гибкость и терпимость, а также вездесущность): Хотел бы сравнить с капитализмом. Этот язык предоставляет средства производства отдельным людям, и даже оборудование у каждого достаточно обильно. Благодаря этому появляется множество промышленных товаров, и через свободную конкуренцию каждый может стремиться к прибыли. Однако рынок без регулирования вскоре впал в хаос. - TypeScript (
расширяющийся JavaScript): Конечно, это модифицированный капитализм. Вера в капитализм рушится, и для преодоления нестабильности рынка государство в какой-то мере вмешивается. Прежняя полная свобода относительно отступила, но по-прежнему каждый может свободно выйти на рынок и конкурировать.
И немало разработчиков, словно ведя идеологическую войну в реальности, много спорят словами о языках. Сам язык и есть идеология, знакомая разработчикам, и одновременно идеал, к которому нужно стремиться.
Государство и архитектура
- Монолитная архитектура и централизованное государство: Весь код и все в одном бинарном файле находятся в одной огромной кодовой базе. Это напоминает унитарное государство с сильным центральным правительством или абсолютную монархию. Все функции государства контролируются одной системой власти.
- Преимущество в том, что государство легко сформировать и решения принимаются быстро. Это того же порядка, что и быстрый выпуск всего программного обеспечения. Поскольку все ресурсы и информация сосредоточены в одном месте, ими легко управлять.
- Однако чем больше государство, тем труднее реагировать на изменения, и даже чтобы изменить небольшой закон или институт, нужно проверить и применить всё целиком. Существует также риск, что проблема в одной сфере парализует все государство. Монолит также трудно адаптировать из-за большой кодовой базы и переплетенного кода: даже чтобы изменить одну строку, нужно оценить зону влияния, и проблема в одном модуле легко влияет на всю систему.
- Микросервисная архитектура (MSA) и федеративное государство: Каждая функция системы выделяется в самостоятельный сервис. Это имеет сходство с федеративным государством, в котором каждая часть состоит из множества независимых штатов. Кроме того, каждый сервис и штат имеют независимую инфраструктуру. Вмешательство центрального правительства остается слабым, и, как и в случае с независимостью или присоединением, никогда не известно, когда это произойдет.
- По сути, каждый независимый штат и сервис может самостоятельно вносить поправки в законы и писать код. Благодаря этому не нужно согласовывать темп друг с другом. Кроме того, даже если проблема возникает в одном месте, федерация в целом вряд ли парализуется. И можно выбрать подходящие институты (технологии) в соответствии с регионом или сферой.
- Однако согласовать взаимные договоренности или создать каналы связи трудно. Сложно проводить единую политику, что может вызывать хаос.
- EDA (Event Driven Architecture) и гражданское общество: Вместо прямых приказов центрального правительства или его представителей граждане сами инициативно и самостоятельно берут на себя решение возникающих социальных проблем. Это напоминает особенность EDA: когда возникает событие, один из подписчиков самостоятельно подхватывает его и обрабатывает.
- Каждый может легко участвовать. В EDA также новый сервис может легко стать новым подписчиком и участвовать в процессе.
- Однако есть недостаток: невозможно охватить весь поток. Трудно отследить, кто и как обработал событие, и неизвестно, какую цепную реакцию вызовет одно событие.
- Layered Architecture и феодализм: Феодализм представляет собой структуру, в которой каждый на своем уровне выполняет заданные роли и обязанности и несет обязательства перед вышестоящим уровнем. Они заключаются как своего рода договорные отношения и образуют строгую вертикальную иерархию власти, поэтому можно найти сходство со слоистой архитектурой.
Таких аналогий можно провести еще много, но главная суть этого текста заключается не в самой структуре, а в процессе ее создания.
Совпадают ли решения проблем в разработке и политике?
Если программная архитектура и государственное устройство похожи, то процесс их создания также удивительно параллелен. Разработка программного обеспечения фактически не отличается от политической деятельности, которая создает и развивает новый порядок в цифровом пространстве.
- Публичное обсуждение социальных проблем и анализ требований**:** Все начинается с вопроса «В чем проблема?». Подобно тому как страдания и неудобства гражданского общества становятся публичными и превращаются в политическую повестку, неудобства пользователей и их требования, пройдя анализ, становятся первой вехой разработки, то есть
спецификацией требований. - Конституционный дизайн и проектирование архитектуры**:** Какое государство мы создадим? Какую систему мы создадим? Подобно тому как политики, опираясь на идеологию и философию, закладывают основу конституции и законов, архитектор на основе технических убеждений создает чертеж архитектуры, которая станет фундаментом системы. Решения на этом этапе определяют судьбу системы.
- Исполнение политики и реализация программного обеспечения**:** Когда чертеж готов, разработчики пишут реальный код, а чиновники исполняют политику в соответствии с законами. Это процесс, в котором абстрактный план воплощается в конкретную сущность, работающую в реальном мире.
- Суд выборов и тестирование программного обеспечения**:** Политика получает оценку своей легитимности через выборы и общественное мнение. Программное обеспечение подтверждает свою ценность через тестирование командой QA и обратную связь пользователей. И то и другое, в конечном счете, может существовать только при получении согласия суверена (граждан, пользователей).
- Реформы институтов и сопровождение системы**:** Однажды созданные законы и системы не вечны. Подобно тому как устаревшие законы пересматриваются и институты реформируются в соответствии с изменениями времени, программное обеспечение, если прекратить
рефакторинг, который адаптирует его к меняющейся среде и устраняет внутреннюю неэффективность, превращается в мертвый код.
Так весь процесс, от определения проблемы через проектирование, реализацию и проверку до непрерывного улучшения, показывает, что два мира разделяют одно и то же дыхание решения проблем.
День новых законодателей
Информационное общество сделало расстояние между вершинами этих двух философий бессмысленным. Код больше не является простой логической схемой, а становится законом (Code is Law), который определяет отношения между людьми, распределяет власть и реализует социальные ценности. Если архитектура, которую мы проектируем, напоминает структуру управления государством, а процесс разработки, которому мы следуем, подобен политическому согласованию, то кто же мы, разработчики? И что должны делать политики?
Поэтому разработчик теперь должен размышлять не только о логике кода, но и об обществе, которое создаст этот код, а политик должен понимать не только логику голосов, но и логику технологий, движущих миром. Ведь та огромная власть, которой мы обладаем в своих мирах, сопряжена с соответствующей этической ответственностью.