GoSuda

Политика и компютри

By snowmerak views ...

Философия

Какво мислите, че е философията? Според речниковото значение тя е дейност, при която се размишлява върху основните въпроси за живота и света и се търсят отговори. Може да се зададе и поведенческа дефиниция: тя не е решаване на задачи с предварително определен отговор, а разширяване на мисленето чрез същия въпрос или чрез непрекъсната верига от въпроси, както и споделяне на тези отговори.

В миналото, докато завършвах бакалавърската си степен, записах курс, свързан с политическа философия. Тогава, по време на самопредставянето ми, преподавателят каза нещо подобно на политическата философия и компютърните науки са дисциплини, които стоят на върховете на различни философии. Не помня точно тези думи и изречение, но смисълът беше приблизително такъв.

Компютърни науки

Според мен компютърните науки са фундаментално изследване за решаване на логически проблеми. Затова хората, които мислят за даден проблем, могат да стигнат до различни отговори. Най-типичният пример е сортирането. За методите за подреждане на една и съща последователност от данни в ред съществуват множество подходи: мехурчеста, вмъкваща, избираща, сливаща, бърза, пирамидална, Тим сортиране и други. Именно чрез разделяне и сравняване на тези подходи възникват по-добри алгоритми.

Освен това, от локална гледна точка, може да се каже, че те създават и доказват. Дори горното сортиране непрекъснато се създава по начин, по който да бъде сортирано, и резултатът му се доказва. За хората, които са разработчици, по-близък пример е следният: когато възникне проектна идея, тя се реализира и се доказва, че работи безпроблемно.

Политическа философия

Според мен политическата философия е фундаментално изследване за решаване на обществени проблеми. В различните епохи тя многократно поставя под въпрос вече съществуващи проблеми, които са различни за всяка епоха, получава отговори и ги споделя с настоящето и бъдещето. Тя се занимава основно с абстрактни ценности като справедливост, свобода, равенство и власт, които се тълкуват по различен начин в зависимост от времето и културата. Няма ясно определени граници между добро и зло, нито между верен и неверен отговор, и именно това е нейната характерна особеност.

От локална гледна точка, подобно на компютърните науки, може да се каже, че тя задава въпроси и размишлява. Тя непрекъснато поставя въпроси за възникналите проблеми: защо е станало така, какви са по-добрите посоки, и размишлява, за да даде отговори. И тук броят на отговорите е пропорционален на броя на мислещите хора.

Защо трябва да познаваме политиката и компютрите

Взаимно обуславяне

Двата свята изглеждат така, сякаш изследват различни области, но всъщност споделят доста сходства и мнogo от причините и последиците им се пораждат взаимно.

Ще дам един пример.

  1. Ако личните здравни данни се съхраняват сигурно в облака, то при нужда всяка болница ще може бързо да получи достъп до тях ⇒ чрез програмиране функцията се реализира по безопасен и удобен за достъп начин, използвайки възможностите на всяка област.
  2. Тогава чии са тези данни? Мои? На служителя, който ги е регистрирал? Или на оператора? На разработчика? На държавата? А до каква степен те могат да виждат моите данни? До каква степен и по какъв начин може да се гарантира, че личната ми информация е защитена? ⇒ Ще се водят политически дебати за интересите и различията в становищата на различните общности и на отделните хора.
  3. След това понякога политическият дебат и програмното проектиране и реализиране ще се повтарят в непрекъсната верига.

По този начин компютърните науки се използват за решаване на съществуващи обществени проблеми, а политическата философия се използва за осъзнаване и решаване на проблемите, възникнали в резултат, като се повдигат въпроси и се търсят следващите решения. В информационното общество на днешно време това е естествено явление.

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

Това, което не изглежда така

Двата свята също са се развили в сходни форми. Но в основата им има разлика между неясно и точно изразяване, подобна на връзката между социалната и естествената философия. Политическата философия се основава на променливи и неясни дефиниции, формулирани на естествен език, докато компютърните науки се основават на неизменни и точни твърдения, изразени по-скоро с формули, отколкото с естествен език.

Също така посоката им се изразява по леко различен начин. Компютърните науки смятат, че може да съществува оптимално решение. А в политическата философия се говори за неясни понятия като по-убедителен аргумент, по-обоснован аргумент или по-етичен аргумент. Но според мен посоката на двете е почти еднаква: и в двете се стремим към следващо по-добро. Дори в компютърните науки има различни области, но най-типичният пример е компресията на медии, наречена кодек, където се полагат усилия за постигане на по-добра степен на компресия, по-добра производителност и по-ниски лицензионни разходи.

Това, което може да изглежда сходно

Най-типичното сходство е, че програмните езици и управленските идеологии изглеждат приложими към хората по подобен начин. Не мога да съпоставя директно всеки език с всяка идеология, но ще ги изброя за забавление.

  • Език C (разработчикът знае какво прави): Бих го сравнил с републиканизма. Той е исторически подобен на републиканската държава, която е в основата на западната политическа система, а също така прилича на комунитаризма, който цени съзнанието на всеки гражданин и усилията на отделните хора да вървят към по-добър идеал. Освен това ми се струва, че правата са съпроводени със задължения.
  • Java (напиши веднъж, изпълнява се навсякъде): Не знам. Има силен закон, спазва се и живее се в унифициран живот, но той е стабилен и в рамките му има свобода. А ако навлезете в Spring, там ви очакват различни социални облаги. Да кажем ли либерализъм?
  • C# (хармония между производителност на разработчика и принципите на софтуерното инженерство): Под силната закрила на държавата всичко е добре проектирано и в рамките на планираното може да се постигне максимална производителност и ефективност. Подхожда ми планова икономика. Не е комунизъм, защото средствата за производство са освободени и производителите не са ограничени.
  • Go (отказ от сложността, избор на практичност и ефективност): Няма нищо подобно. Раздава всичко, затова нека бъде социална държава.
  • Rust (безопасност без загуба на производителност): Собствеността и живота на променливите в Rust се управляват от строг компилатор като управник. Смятам, че това е социализъм, защото за да се предотвратят неравенството и рисковете, породени от свободната икономическа дейност на индивидите, общността управлява и планира средствата за производство и гарантира стабилен живот, като ограничава отчасти личната свобода с цел безопасност и равенство на цялата система.
  • JavaScript (гъвкавост и толерантност, както и присъствие навсякъде): Бих го сравнил с капитализма. Този език позволява на отделните хора да притежават средствата за производство, а дори и съоръженията са в достатъчни количества за отделните хора. Благодарение на това се появяват разнообразни промишлени продукти и чрез свободната конкуренция всеки може да се стреми към печалба. Но пазарът без регулация скоро изпадна в хаос.
  • TypeScript (разширеният JavaScript): Разбира се, това е регулиран капитализъм. Вярата в капитализма се пропуква и за да се преодолее нестабилността на пазара, държавата се намесва в известна степен. Пълната свобода сравнително отстъпи, но все още всеки може свободно да навлезе на пазара и да се конкурира.

Освен това не са малко разработчиците, които, сякаш в реалния живот водят идеологическа война, често се карат чрез езиците. Самият език е познатата за разработчиците идеология и същевременно идеал, към който трябва да се стремят.

Държава и архитектура

  • Монолитна архитектура и централизирана държава: Всичко се съдържа в една огромна кодова база и един бинарен файл. Това има структура, подобна на единната държава със силно централно правителство или на абсолютната монархия. Всички функции на държавата се контролират от една система на властта.
    • Предимството е, че държавата е най-лесна за изграждане и решенията се вземат бързо. Това е в същата логика като бързото излизане на целия софтуер. Тъй като всички ресурси и информация са съсредоточени на едно място, управлението е ясно.
    • Но колкото по-голяма е държавата, толкова по-трудно е да се реагира на промени; дори и за промяна на малък закон или институция трябва да се преразгледа и приложи цялата система. Съществува и опасност проблем в един сектор да парализира цялата държава. Монолитът също е трудно адаптивен поради голямата кодова база и преплетения код: дори за промяна на един ред трябва да се оцени обхватът на въздействие, а проблем в един модул лесно засяга цялата система.
  • MSA и федеративна държава: Всяка функция на системата се отделя като независима услуга. Това има сходство с федеративна държава, в която отделните части се състоят от множество независими щати. Освен това всяка услуга и всеки щат имат собствена инфраструктура. Централното правителство се намесва слабо и не е известно кога може да настъпи отделяне или присъединяване, което също е сходно.
    • По принцип всеки независим щат и услуга могат самостоятелно да изменят законите или да пишат код. Поради това не е необходимо да се съгласуват темпата. Освен това проблем на едно място трудно парализира цялата федерация. Също така може да се избере подходяща институция (технология) според региона или областта.
    • Но постигането на взаимно съгласие и създаването на комуникационни канали е трудно. Трудно е да се води последователна политика, което може да породи хаос.
  • EDA (Event Driven Architecture) и гражданско общество: Вместо централното правителство или негов представител да дава директни заповеди, отделните хора поемат инициативата и самостоятелно се заемат с решаването на възникналите обществени проблеми. Това прилича на характерната за EDA черта, при която при възникване на събитие някой от абонатите самостоятелно го поема и обработва.
    • Всеки може лесно да участва. И в EDA нова услуга лесно може да стане нов абонат и да се включи в процеса.
    • Но има недостатък, че не може да се види цялостният поток. Трудно е да се проследи кой и как е обработил нещо, и не може да се знае каква верига от реакции ще предизвика едно събитие.
  • Layered Architecture и феодализъм: Феодализмът е структура, в която всеки изпълнява определените му роли и отговорности в своя слой и изпълнява задълженията си към по-висшия слой. Те се установяват като своеобразни договорни отношения и с това, че образуват строго вертикално управление, може да се намерят прилики с многослойната архитектура.

Както е видно, възможни са още много сравнения, но основната идея на този текст е не толкова самата структура, колкото процесът, по който тя се изгражда.

Дали решаването на проблеми в разработката и политиката е едно и също?

Ако софтуерната архитектура и държавното устройство си приличат, то процесът на изграждането им също се развива паралелно по удивителен начин. Разработката на софтуер всъщност не се различава от политическа дейност, която създава и развива нов ред в цифровото пространство.

  1. Обществен дебат и анализ на изискванията за решаване на обществени проблеми: Всичко започва с въпроса „Какъв е проблемът?“. Както болката и неудобството на гражданското общество се превръщат в политическа тема, така неудобствата и изискванията на потребителите, след анализ, стават първата веха в разработката, наречена „спецификация на изискванията“.
  2. Проектиране на конституцията и архитектурен дизайн: Каква държава да създадем? Каква система да създадем? Както политиците полагат основите на конституцията и законите въз основа на идеологии и философии, така архитектът въз основа на техническите убеждения очертава чертежа на архитектурата, която ще бъде основа на системата. Решенията на този етап определят съдбата на системата.
  3. Изпълнение на политиките и софтуерна имплементация: Когато проектът е завършен, разработчиците пишат реалния код, а служителите в администрацията изпълняват политиките съгласно законите. Това е процесът, при който абстрактният план се превръща в конкретна реалност, която работи в действителния свят.
  4. Съдене чрез избори и тестване на софтуера: Политиките се съдят за легитимността си чрез избори и обществено мнение. Софтуерът доказва стойността си чрез тестовете на QA екипа и обратната връзка от потребителите. И двете в крайна сметка могат да оцелеят само ако получат съгласието на суверена (гражданите, потребителите).
  5. Реформи на институциите и поддръжка на системата: Веднъж създадените закони и системи не са вечни. Както старите закони се изменят и институциите се реформират в съответствие с промените във времето, така и софтуерът, ако престане да се променя към околната среда и да подобрява вътрешните неефективности чрез „рефакторинг“, става мъртъв код.

По този начин целият процес, от дефиницията на проблема през проектирането, изпълнението и проверката до непрекъснатото подобряване, показва, че двата свята споделят един и същ ритъм на решаване на проблеми.

Денят на новите законодатели

Информационното общество направи разстоянието между върховете на двете философии безсмислено. Кодът вече не е просто логическа схема, а се е превърнал в „закон (Code is Law)“, който определя връзките между хората, разпределя властта и реализира обществените ценности. Ако архитектурите, които проектираме, приличат на управленческата структура на държавата, а процесите на разработка, които следваме, са като политически консенсус, то кои сме ние, разработчиците? И какво трябва да прави политикът? Затова разработчикът вече трябва да размишлява не само върху логиката на кода, но и върху обществото, което този код ще създаде, а политикът трябва да разбира не само логиката на гласовете, но и логиката на технологиите, които движат света. Защото огромната власт, която упражняваме във всеки от нашите светове, е свързана със същата степен на етична отговорност.