Есть проблема:
- найден полезный способ описания процессов формирования и преобразования алгоритмов,
- сформирован теоретический базис этого способа
- публикация в чисто-теоретическом виде (без сопровождения объяснениями и примерами) будет доступна только труженикам науки,
- формирование примеров — это большой объем работы, которую целесообразно выполнять постепенно,
- времени для занятия этой темой мало, совершенно не хватает двух рук, а из доступной техники — пока только смартфон,
- а способ красив.
Под катом попытка решения проблемы с использованием странных на первый взгляд инструментов: Android-смартфон, markdown, Epsilon Notes, динамическая книга, Termux, git, bitbucket, Хабр.
Да, современные телефоны уже не просто связь. Весь свой опыт использования этих обрастающих возможностями гаджетов делю на две части: до первого написанного для себя приложения на телефон и после. А после стало лучше.
Но даже после этого момента не перестаю удивляться. Таким удивлением стало применение Android-смартфона для решения поставленной в этой статье задачи. Вернемся к ней.
Задача "Опубликовать теорию". В привычном формате для этого пишется книга. Публикуется и ждет своего читателя. Но мир меняется. Почему бы не попробовать поменять и этот привычный процесс.
Стал разбивать задачу на подзадачи:
- Во-первых, для написания большого количества текста со сложной структурой нужна спец. программка. И таких программ теперь очень много, но, как всегда, нужна особенная.
- Во-вторых, для резервирования выполненной работы хорошо бы кидать созданное на сервер. Ведь сервер, я надеюсь, понадежнее тонкого телефончика.
- В-третьих, есть задача обсуждать книгу с читателем и понимать какие моменты следует уточнить.
- В-четвертых, есть желание динамически дополнять книгу.
Последнее желание возникло из оценки своих возможностей и понимания, что даже уже написанная часть может быть многим полезна. А когда оставшиеся части в кропотливом труде будут закончены, то можно и книжку напечатать.
Начинаем решать задачи.
Markdown (Epsilon Notes)
Требованием к программе редактирования текста было простым. Текст необходимо публиковать в инете. А какой формат держит нами любимый Хабр? Правильно Markdown.
И если первую статью Хабра я набирал на ПК, где уже давно нет проблем с этим форматом. То в текущий момент ПК поблизости нет.
Открытием стало, что и на Android появились программы с полным набором требуемого функционала. И авторам этих программ позвольте здесь высказать уважение. Впервые на моем опыте приложение Android так полезно, что без колебаний перечислил скромную плату за труд автора в обмен на про-версию. Но сейчас не об этом.
Не обязательно абсолютно универсальный вариант, но почти всем меня устраивающий — это программа Epsilon Notes.
С её помощью стал после работы ночами набивать буквы. Перед этим разбил книгу на две части: теоретические выкладки и пояснения с примерами использования. Структура двух книжек и оглавление одинаковы, а содержание разное.
Книжка теоретическая:
![image](https://habrastorage.org/getpro/habr/post_images/4fc/bc8/21b/4fcbc821b966730ec8fbd53446705b15.jpg)
Там же печатаю ее в pdf:
![image](https://habrastorage.org/getpro/habr/post_images/aee/84c/c46/aee84cc46a5cfbfbc6b508ccdb5beed0.jpg)
Книжка практическая. На каждую главу планируется несколько статей на Хабре в виде примеров.
![image](https://habrastorage.org/getpro/habr/post_images/f1c/578/3c0/f1c5783c0e55a661f686176ea013c604.jpg)
Подготовка текущей статьи:
![image](https://habrastorage.org/getpro/habr/post_images/030/2b0/123/0302b0123a5dad17fe6f15f28d6f5b8e.jpg)
Git (Termux, bitbucket)
Для реализации резервирования, обсуждения и дополнения решил использовать bitbucket. У меня там было парочку приватных репозиториев. Зарегал новый. Впервые языком разработки выбрал Markdown.
Осталось найти git-клиент на Android. На самом деле на тот момент он у меня уже был. Но процесс его поиска все равно состоялся, но чуть раньше. В этой области специализированные приложения из google play market пока не дают требуемого набора возможностей. Оно и не удивительно: клиент git важен всей своей средой (всеми своими командными утилитками), а дублировать поведение такой сложной коммандной системы в кнопочках и окошках — дело нелегкое. Я уже было — расстроился.
Но в Android уже есть отличные эмуляторы терминала и среды Linux. Например, Termux. А в этом эмуляторе преотлично грузится, родной уже, командный клиент git.
![image](https://habrastorage.org/getpro/habr/post_images/3a2/3c6/13d/3a23c613da4e7c5742a2dd19a50b04b2.jpg)
Voi la, мы зарезервированы и синхронизованы, а так же, благодаря Issues от bitbucket, появилась обратная связь с читателем.
Хранилище bitbucket для книжечки:
![image](https://habrastorage.org/getpro/habr/post_images/3fa/960/d5f/3fa960d5f9df901fcf16f65ab3842174.jpg)
История изменения книги в распечатанных pdf:
![image](https://habrastorage.org/getpro/habr/post_images/087/4c1/c21/0874c1c2155cd50f4ccb64697b569570.jpg)
Обратная связь с читателем:
![image](https://habrastorage.org/getpro/habr/post_images/36b/c37/ad6/36bc37ad6bb1ddcbd7f8bf3be9b345c8.jpg)
Местечко для черновиков и опубликованных статей для Хабра
![image](https://habrastorage.org/getpro/habr/post_images/85d/95f/a7b/85d95fa7bc6eb1b17fb7ba471fb05955.jpg)
Итого
Поставленные задачи решены в полном объеме. Ну, а решению глобальной проблемы поможет только труд и время.
Спасибо за внимание.
Простите за опечатки, если найдутся. Доберусь до ПК — опечатки поправлю.
В качестве небольшого аперитива к статьям, которые планируются к написанию, приведу текущий вариант введения из книжки. Вдруг кого заинтересует.
Введение в книгу
Сформулируем цель работы над этой книгой. Причем работы не только моей, но и работы читателя.
Целью является ввести определения, основанные на простых аксиомах, для понятий Сознание и Жизнь.
Звучит амбициозно, но только без хорошего инструмента. Таким инструментом станет "Общая теория алгоритмов", уже частично проработанная в процессе написания этой книги.
Теория еще слаба в научном плане, и мало количество примеров её практического использования. Под спойлером далее её стартовые понятия, которые привел здесь с одной лишь целью: найти собеседника для отдельного обсуждения книги с последующим включением всех собеседников в соавторы. Подобно разработке программных проектов с открытым исходными кодом.
Если кому это интересно — буду рад.
Очень важным для появления этой теории стало введение определения алгоритма, которое, будучи определено указанным далее способом, позволило разобрать склад накопленных человеком знаний по аккуратным "полочкам".
Итак. Знакомьтесь.
Алгоритм — это характеристика пространства, представляющая собой значимый (контролируемый, результативный, повторимый) способ его преобразования.
К этому определению нужно немного привыкнуть, потому что с ним предстоит много работы.
Но здесь во введении необходимо не отпугнуть работой, а привлечь внимание. Поэтому сделаю анонс обозреваемого на текущий момент понятийного горизонта.
Сознание — это способность с использованием языка быстро синтезировать новый алгоритм преобразованием уже имеющегося алгоритма.
Жизнь — это самопроизвольное накопление алгоритмов пространства в структурных объектах этого пространства.
Язык — комплексная система, состоящая из:
- коммуникационной группы эвольверов ("носителей языка"), обеспечивающей процедуру сохранения и развития макро-сигналов и обрабатывающих их цепочек,
- процедуры создания в процессе коммуникации виртуальных символов,
- процедуры получения опыта (т.е. построения полезных цепочек) посредством использования коммуникации. То есть процедура виртуализации накопления опыта.
Сознание — это процесс использования языка без привлечения второго эвольвера. То есть один эвольвер в процессе коммуникации сам формирует макро-сигнал и затем его сам принимает.
Стоит так же сказать, что работа с этими и другими понятиями, приведенными далее в книге, оказалась полезным не только ради факта появления этих определений. В процессе анализа было найдено несколько очень полезных закономерностей нашего пространства, которые неявно используются во всех отраслях современной науки и при проектировании и развитии архитектуры больших систем. Формальная запись этих закономерностей может повысить эффективность труда в обозначенных и многих других областях.
Еще раз перечитываю введение.
Слишком амбициозно.
Но ведь хорошо сказано: "Дорогу осилит идущий".
Приступим.
И теперь уж точно. Спасибо за внимание.
Вики практической книги (Проект перенесён с bitbucket на GitLab): Общая теория алгоритмов (gitlab.com)
Система отслеживания ошибок: Issues (gitlab.com)
Отзывы
Спасибо большое за отзывы. Разговор с Вами мне очень полезен.
Если это не затруднит, можно Вас попросить перенести обсуждение книги на предложенную в статье платформу (Issues). Не планировал загружать любимый Хабр теоретическими обсуждениями, хотел оставить здесь только практику. Еще раз заранее спасибо.
Спасибо за критику. Действительно, статья на Хабре не место для поиска знакомств и проверяющих чужой теории.
В следующих статьях, если сообщество позволит положительной кармой мне их опубликовать, не будет теоретических выкладок. Только полезное практическое применение указанной теории.
Жду отдельных критических отзывов по представленной технологии (проект открытой разработки теории). Слово "Общая" в названии теории использовано, чтобы подчеркнуть факт использования этой технологии.
С уважением.