diff --git a/app/src/main/assets/writing-about-it.html b/app/src/main/assets/writing-about-it.html new file mode 100644 index 0000000..d098642 --- /dev/null +++ b/app/src/main/assets/writing-about-it.html @@ -0,0 +1,155 @@ +

+ Однажды мы выпустили статью + “ + Децентрализованные сервисы против распределённых + ”, + где предприняли попытку подтолкнуть читателей к более обдуманному отношению к + терминам, таким как “централизованный”, “децентрализованный” и + “распределённый”. Это имеет значение не только с точки зрения теоретической + информатики и удобства практической деятельности по написанию программного обеспечения. Часто + такие термины используются спекулятивно с целью рекламного продвижения продуктов сомнительного + качества, таких как некоторые реализации децентрализованных финансов (DeFi; от англ. + decentralized finance), а то и вовсе мошеннических предложений. +

+ +

+ Мы не собирались развивать эту тему, так как любая попытка составления подробной классификации + обречена на провал. Технологии развиваются быстрее, чем успевают осмысляться, а их сложность не + даёт шансов охватить все тонкости. Единственное, что можно сделать – это посоветовать + подробнее изучать то, что собираетесь использовать. +

+ +

+ Закономерно, что отвечать на критику представленного нами наброска классификации мы тоже не + хотели, потому что она с большой вероятностью была бы справедлива. Любой выбор терминологии + имеет как преимущества, позволяя удобнее передавать мысли, так и недостатки, заковывая сознание + в слишком строгие рамки. В начале нашей статьи так и было сказано, что мы не ставим целью + создание идеальной классификации. +

+ +

+ Однако мы столкнулись, помимо прочего, с обвинениями в невежестве. Это может означать, что мы + слишком плохо объяснили нашу мотивацию. Мы хотим исправить эту ошибку, потому что проблемы + эпистемологии и языка довольно важны для нас, они касаются мышления о мире вообще, а не только о + технологиях. +

+ +
+
+ Та самая "неправильная" картинка. +
+ Та самая “неправильная” картинка. +
+
+
+ +

+ Что же не так с распространёнными вариантами использования упомянутых терминов? Начнём с + рассмотрения представленной выше картинки, альтернатива которой была показана в нашей статье. + Она часто используется для иллюстрации соответствующих терминов, причём не только в популярных + статьях, но и в научных публикациях. Так, в + + одной + + из рассмотренных нами публикаций децентрализованная система определяется в том числе как система + без единой точки отказа, и тут же приводится эта картинка. Если присмотреться к ней, то в + примере децентрализованной системы есть один узел, при удалении которого части системы больше не + будут связаны. Возможно, это не является противоречием при каком-то экзотическом определении + требований к системе, смысла узлов и связей между ними, но рассматриваемая публикация не + содержит ничего подобного. +

+ +

+ Рассматриваемая выше картинка ведёт своё происхождение из + + книги + + 1964 года “On Distributed Communications Networks” (автор Paul Baran). Там даётся + определение децентрализованной сети как такой, где отказ центрального узла не приводит к полной + потере связности между всеми узлами, а лишь некоторыми. Это было довольно актуально в то время, + поскольку количество информации, передаваемой между отдалёнными узлами больших сетей было + невелико, а связность внутри организаций могла быть гораздо важнее, чем между ними. Чего нельзя + сказать про наше время. Кроме того, автор рассматривает довольно узкий вопрос сетевых топологий, + то есть физической связности. У современных же систем есть множество других свойств, таких как + доверие между узлами или хранение данных на разных узлах. +

+ +
+
+ Классификация сетевых топологий. Возможно, тоже неправильная или неполная. +
+ Классификация сетевых топологий. Возможно, тоже неправильная или неполная. +
+
+
+ +

+ Попытка создать современную классификацию была предпринята, например, в + работе + 2020 года “Decentralized vs. Distributed Organization: Blockchain, Machine Learning and + the Future of the Digital Platform”. Там предлагается воспринимать децентрализацию как + рассеивание коммуникации, а распределённость как рассеивание принятия решений. Это интересная + работа с историческим обзором, собственным теоретическим аппаратом и масштабными выводами, в том + числе социально-политического характера. Однако её результаты противоречат устоявшейся + терминологии, а также являются слишком сложными, чтобы их можно было корректно применять. Так, в + добавок к существующим трём терминам там вводится ещё один – концентрированные системы. + Авторы текстов с тремя-то не справляются. +

+ +

+ Похожий подход предлагает и создатель криптовалюты Ethereum Виталик Бутерин в + + статье + + “The Meaning of Decentralization”. Он особенно подчёркивает, что каждая система + может классифицироваться тем или иным образом по каждому из трёх различных критериев: +

+ + + +

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

+ +

+ Главным возражением на нашу статью было противоречие (только кажущееся) нашего определения + распределённой системы наиболее распространённому, согласно которому это коллекция узлов, + которая выглядит для пользователей как единая когерентная система. Это определение даёт сам + Эндрю Таненбаум в книге “Distributed Systems: Principles and Paradigms”. Наше + определение, возможно, более широкое, но оно точно полностью включает указанное. Есть, например, + распределённые базы данных, управление которыми осуществляет одна инстанция, принимающие + некоторые административные решения. Однако необходимость наличия администратора в случае баз + данных не вызывает никаких сомнений и при обсуждении может не упоминаться. Большую же часть + времени они работают автономно, без какого-либо единого центра принятия решений, и принятие + решений действительно осуществляется всей сетью с помощью алгоритмов распределённого консенсуса, + таких как Paxos или Raft. +

+ +

+ Таким образом, удобство классификаций и определений сильно зависит от того, какие задачи + необходимо решать. Как мы уже писали в статье + “ + Почему слово Интернет пишется с прописной буквы? + ”, + мы не указываем вам, как и что говорить, лишь помогаем думать эффективнее и не попадаться в + ментальные ловушки, расставленные теми, кто на самом деле хочет вас контролировать. Это + непростая задача в столь быстро меняющеся мире, но благодаря вашей поддержке и обратной связи мы + сможем выполнять её более эффективно. +

diff --git a/app/src/main/java/com/causa_arcana/ArticleFragment.kt b/app/src/main/java/com/causa_arcana/ArticleFragment.kt index bc827f6..f6b1ad4 100644 --- a/app/src/main/java/com/causa_arcana/ArticleFragment.kt +++ b/app/src/main/java/com/causa_arcana/ArticleFragment.kt @@ -24,145 +24,6 @@ class ArticleFragment : Fragment() { val customWebViewClient = CustomWebViewClient(requireContext()) articleWebView.webViewClient = customWebViewClient - val htmlGenerator = HtmlGenerator( - "Почему сложно писать о передовых информационных технологиях?", - contentHtml, - ) - - articleWebView.loadDataWithBaseURL("https://causa-arcana.com", htmlGenerator.fullHtml(), - "text/html", "utf-8", "") - } - - companion object { - private const val contentHtml = """ -

Однажды мы выпустили статью - “Децентрализованные сервисы против распределённых”, - где предприняли попытку подтолкнуть читателей к более обдуманному отношению к - терминам, таким как “централизованный”, “децентрализованный” и “распределённый”. - Это имеет значение не только с точки зрения теоретической информатики и удобства - практической деятельности по написанию программного обеспечения. Часто такие - термины используются спекулятивно с целью рекламного продвижения продуктов - сомнительного качества, таких как некоторые реализации децентрализованных - финансов (DeFi; от англ. decentralized finance), а то и вовсе мошеннических - предложений.

- -

Мы не собирались развивать эту тему, так как любая попытка составления подробной - классификации обречена на провал. Технологии развиваются быстрее, чем успевают - осмысляться, а их сложность не даёт шансов охватить все тонкости. Единственное, - что можно сделать – это посоветовать подробнее изучать то, что собираетесь - использовать.

- -

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

- -

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

- -
-
- Та самая "неправильная" картинка. -
- Та самая “неправильная” картинка. -
-
-
- -

Что же не так с распространёнными вариантами использования упомянутых терминов? - Начнём с рассмотрения представленной выше картинки, альтернатива которой была - показана в нашей статье. Она часто используется для иллюстрации соответствующих - терминов, причём не только в популярных статьях, но и в научных публикациях. - Так, в - одной - из рассмотренных нами публикаций децентрализованная система определяется в том - числе как система без единой точки отказа, и тут же приводится эта картинка. - Если присмотреться к ней, то в примере децентрализованной системы есть один - узел, при удалении которого части системы больше не будут связаны. Возможно, это - не является противоречием при каком-то экзотическом определении требований к - системе, смысла узлов и связей между ними, но рассматриваемая публикация не - содержит ничего подобного.

- -

Рассматриваемая выше картинка ведёт своё происхождение из - книги - 1964 года “On Distributed Communications Networks” (автор Paul Baran). Там - даётся определение децентрализованной сети как такой, где отказ центрального - узла не приводит к полной потере связности между всеми узлами, а лишь - некоторыми. Это было довольно актуально в то время, поскольку количество - информации, передаваемой между отдалёнными узлами больших сетей было невелико, а - связность внутри организаций могла быть гораздо важнее, чем между ними. Чего - нельзя сказать про наше время. Кроме того, автор рассматривает довольно узкий - вопрос сетевых топологий, то есть физической связности. У современных же систем - есть множество других свойств, таких как доверие между узлами или хранение - данных на разных узлах.

- -
-
- Классификация сетевых топологий. Возможно, тоже неправильная или неполная. -
- Классификация сетевых топологий. Возможно, тоже неправильная или неполная. -
-
-
- -

Попытка создать современную классификацию была предпринята, например, в - работе 2020 - года “Decentralized vs. Distributed Organization: Blockchain, Machine Learning - and the Future of the Digital Platform”. Там предлагается воспринимать - децентрализацию как рассеивание коммуникации, а распределённость как рассеивание - принятия решений. Это интересная работа с историческим обзором, собственным - теоретическим аппаратом и масштабными выводами, в том числе - социально-политического характера. Однако её результаты противоречат устоявшейся - терминологии, а также являются слишком сложными, чтобы их можно было корректно - применять. Так, в добавок к существующим трём терминам там вводится ещё один – - концентрированные системы. Авторы текстов с тремя-то не справляются.

- -

Похожий подход предлагает и создатель криптовалюты Ethereum Виталик Бутерин в - статье - “The Meaning of Decentralization”. Он особенно подчёркивает, что каждая система - может классифицироваться тем или иным образом по каждому из трёх различных - критериев:

- - - -

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

- -

Главным возражением на нашу статью было противоречие (только кажущееся) нашего - определения распределённой системы наиболее распространённому, согласно которому - это коллекция узлов, которая выглядит для пользователей как единая когерентная - система. Это определение даёт сам Эндрю Таненбаум в книге “Distributed Systems: - Principles and Paradigms”. Наше определение, возможно, более широкое, но оно - точно полностью включает указанное. Есть, например, распределённые базы данных, - управление которыми осуществляет одна инстанция, принимающие некоторые - административные решения. Однако необходимость наличия администратора в случае - баз данных не вызывает никаких сомнений и при обсуждении может не упоминаться. - Большую же часть времени они работают автономно, без какого-либо единого центра - принятия решений, и принятие решений действительно осуществляется всей сетью с - помощью алгоритмов распределённого консенсуса, таких как Paxos или Raft.

- -

Таким образом, удобство классификаций и определений сильно зависит от того, - какие задачи необходимо решать. Как мы уже писали в статье - “Почему слово Интернет пишется с прописной буквы?”, - мы не указываем вам, как и что говорить, лишь помогаем думать эффективнее и не - попадаться в ментальные ловушки, расставленные теми, кто на самом деле хочет вас - контролировать. Это непростая задача в столь быстро меняющеся мире, но благодаря - вашей поддержке и обратной связи мы сможем выполнять её более эффективно.

- """ + articleWebView.loadUrl("https://causa-arcana.com/blog/2021/08/06/writing-about-it.html") } } diff --git a/app/src/main/java/com/causa_arcana/CustomWebViewClient.kt b/app/src/main/java/com/causa_arcana/CustomWebViewClient.kt index a8fdd2c..68fd656 100644 --- a/app/src/main/java/com/causa_arcana/CustomWebViewClient.kt +++ b/app/src/main/java/com/causa_arcana/CustomWebViewClient.kt @@ -23,6 +23,10 @@ class CustomWebViewClient(private val context: Context) : WebViewClient() { if (!validComponents(request)) return teapotResponse() return when (request.url.path) { + "/blog/2021/08/06/writing-about-it.html" -> generatedHtmlResponse( + "Почему сложно писать о передовых информационных технологиях?", + "writing-about-it.html", + ) "/assets/images/blog/decentralized-vs-distributed-wrong.png" -> assetResponse("image/png", "decentralized-vs-distributed-wrong.png") @@ -51,6 +55,15 @@ class CustomWebViewClient(private val context: Context) : WebViewClient() { ) } + private fun generatedHtmlResponse(title: String, assetFileName: String): + WebResourceResponse { + val inputStream = context.assets.open(assetFileName) + val contentHtml = inputStream.bufferedReader().use { it.readText() } + val htmlGenerator = HtmlGenerator(title, contentHtml) + val data = htmlGenerator.fullHtml().byteInputStream() + return WebResourceResponse("text/html", "utf-8", data) + } + private fun assetResponse(mimeType: String, assetFileName: String): WebResourceResponse { return WebResourceResponse(mimeType, "utf-8", context.assets.open(assetFileName))