Anatoly Levenchuk (ailev) wrote,
Anatoly Levenchuk
ailev

Category:

Мышление кодированием в IDE, мышление письмом в IWE

Для "мышления кодированием" в программировании сейчас активно развиваются IDE (integrated development environment). Совсем недавно верхом совершенства там была добавка к обычным функциям редактирования текста и вызова компилятора бесшовной стыковки с самым популярным протоколом ведения версий (Git). Но потом появилась и настраиваемая на язык поддержка дополнительных функций -- появился LSP, language server protocol для внешнего софта, работающего с конкретными языками. А ещё там был относительно тупой автокомплит.

Сегодня от этих IDE ожидается стык с программами анализа кода (там не всё так радужно в части использования AI, но работа уже кипит -- https://medium.com/pvs-studio/machine-learning-in-static-analysis-of-program-source-code-21bdc7e8ce6d). Но вот автокомплит уже совсем не тупой, и справляется даже с динамическими языками, https://marketplace.visualstudio.com/items?itemName=VisualStudioExptTeam.vscodeintellicode, https://venturebeat.com/2020/04/27/codota-raises-12-million-for-ai-that-suggests-and-autocompletes-code/. Главное тут -- помочь писать код так, чтобы потом не было его дебага: According to a study published by the University of Cambridge’s Judge Business School, programmers spend 50.1% of their work time not programming; half of their time spent programming is spent debugging. А замах идёт и на то, чтобы IDE вообще сами дописывали программу (так, успех переписывания с естественного языка на SQL нейросетками достигается уже в 61.9% запросов, и этот процент быстро растёт -- https://yale-lily.github.io/spider).

Примерно всё то же самое происходит и в программах моделирования (только моделеры, IME/integrated modeling environment стоят существенно подороже IDE -- более узкий класс софта с узким промышленным применением. Поинтересуйтесь каким-нибудь навороченным MagicDraw или Visual Paradigm, тут я даже ссылок не привожу. И это всё, конечно, дико неудобное графическое моделирование, что объясняет дороговизну и узкое распространение). Так что не будем тут подробно писать про мышление моделированием и перейдём сразу к мышлению письмом обычных текстов.

Для IWE (integrated writing environment) дебаг текста такая же проблема, как дебаг кода. Толстой писал свои три тома "Войны и мира" шесть лет, затем восемь раз переписывал, а некоторые сцены (например, бал Наташи Ростовой) до 25 раз. Я сам пишу половину времени, половину переписываю (чаще всего не весь текст, а абзац -- и по многу раз).

Спеллчекеры тут самый нижний уровень автоматизации дебага, дальше идёт работа со стилем для публикации широкой публике (https://glvrd.ru/), простановка библиографической информации (хотя бы URL -- обратите внимание, сколько URL у меня в этом посте. Их много и в других постах, это ж и есть "библиографические ссылки"). А дальше будет использование AI для самых разных новых функций. В IWE как и в IDE появляются для этого специальные интерфейсы, например TEASPN: Framework and Protocol for Integrated Writing Assistance Environments (https://arxiv.org/abs/1909.02621, а гнездо у них https://www.teaspn.org/ -- TEASPN, Text Editing Assistance Smartness Protocol for Natural Language). Что даёт помощь со стороны AI? Вот пример сервиса дописывания грамотных полных предложений по черновым намёткам фраз (при этом дан датасет для обучения AI, объявлено соревнование по улучшению качества дописывания, понимаемого как "перевод с чернового кривого языка на литературный грамотный" -- сразу понятны критерии оценки качество, это "качество перевода текста", а ещё предъявлена baseline реализация): https://arxiv.org/abs/1910.09180. Такого много, и будет предлагаться ещё больше. Протокол TEASPN тут отражает общую тенденцию, только успевай теперь отслеживать новинки.

Тут я хотел бы выделить несколько разных, хотя и существенно пересекающихся до полной неразличимости типов IWE:
-- редакторы, "проект-ориентированные", их задача обеспечить на выходе три томика "Войны и мира" в приличной вёрстке. Это Word, Scrivener (пользовался обоими, Word таки выиграл), редакторы для киносценариев и театральных пьес, для научных статей (LaTeX). Тут помощь не столько писателю (она, как ни странно, минимальна), сколько читателю: всё для выстраивания нарратива и его вёрстки, всё для читателя! И тут же объявляется, что эти системы могут помочь и в ведении заметок (тот же Scrivener, хотя не рекомендую пользоваться -- ну очень тормозной софт, больших объёмов он совсем не тянет).
-- zettelkasten/slip-box/wiki, "жизнь-ориентированные", где выходная форма публикации не главное, а главное -- knowledge management, отращивание себе и команде экзокортекса. Задача этих систем поддерживать персональное и командное "мышление письмом" с гипертекстом в основе (помощь не внешнему читателю, а автору, см. мой текст 2003 года "гиперкниготекст" для понимания противоречия в требованиях: читателю требуется линейное представление всего текста, а автору удобно писать кусочками гипертекста -- https://ailev.livejournal.com/103692.html).

При этом я не отношу к IWE разные authoring software, где в основе там инфографика, а текст только иллюстрации (это не книжки, а "детские книжки с картинками", "диафильмы", только для взрослых), тоже для личной и коллективной работы: PowerPoint и Keynote тут бесспорные короли, но дальше идут кучи специализированных версий типа Articulate для презентаций в e-learning (https://articulate.com/), Aha! для roadmap со специфическими шаблонами (https://www.aha.io/). Ещё один класс, который близко к IWE, но по факту далёк -- это редакторы таблиц с уходом в базу данных, типа Airtable (https://airtable.com/), хотя этот класс и пересекается частично с notion.so и coda.io, но там не тексты в основе, это не письмо/writing, это что-то другое.

Но вот всякая поддержка Notebooks от программистов (из систем типа Mathematica или Jupyter) -- это ход на literacy programming (помните эту идею Кнута? Погуглите!), учебники с исполняемыми фрагментами кода, методички с инженерными вычислениями (лично консультировал создание таких для конструкторов в КБ) тут застревает в текстовой части как IWE, а в программной части как IDE. И тут тоже идёт более чем бурное развитие. Вот типичный ход в этом направлении (JupyterLab с плагином LSP, Language Server Protocol. Сейчас поддерживает code navigation, hover suggestions, linters, autocomplete and rename): https://towardsdatascience.com/jupyterlab-2-0-edd4155ab897

Меня сейчас больше интересуют не "редакторы" (мне и Ворда хватает), но IWE для поддержки мышления, реализующие экзокортекс -- сначала персональный, а там и командный, с пониманием, как разделить частное и общественное. Это понимание условной границы между личным и общественным потихоньку отрабатывается даже не в корпоративных системах, а в социальных сетях: "не видно никому кроме меня", "видно френдам, и никому больше", "видно френдам френдов", "видно всем". Ну, и групповые политики по редактированию.

Конечно, любой блог в социальной сетке тут IWE -- с минимальными функциями по собственно редактированию, но максимальному облегчению публикации коротких заметок. Эдакий публичный блокнот для заметок. Его, конечно, можно использовать и как публичный zettelkasten, я вот свой блог в ЖЖ именно так и использую, равно как https://vk.com/buffdance использую для заметок по системному мышлению в танцах. Книги же готовлю сначала в виде слайдоментов (графики там не так много, хотя и есть. Слайдомент получается как легко демонстрируемый на всяких встречах аутлайнер -- каждый слайд просто список каких-то пунктов, по идее на пункт, а слайды легко тасовать), затем пробую рассказывать как лекцию и смотрю, как это работает с живыми людьми, а потом пишу рассказ в виде книги уже в Word, какие-то черновики при этом храня в Evernote (чтобы не в публичном пространстве. В блоге у меня нет закрытых от публики записей, всё публично). Это я к тому, что полноценная книга из личного гипертекста вполне может делаться не одним, а самыми разными инструментами, даже необязательно используемыми прямо по их первичному назначению. IWE может быть собрано из зоопарка самого разного софта.

Если же брать специализированный софт для ведения собственного экзокортекса/slip-box/zettelkasten/картотеки/персональной вики/системы управления своими знаниями/персональных заметок/журнала-дневника/много имён и все про одно и тоже, то сходу в голову приходит wiki как основа.

Wiki представляет собой гипертекст, совмещённый с системой ведения версий (возможность откатить любую страницу к её предыдущим состояниям -- это ж оно и есть!). Смягчая это требование откатки версий отдельных заметок и командную работу, мы как раз получим простейшие виды софта: "системы ведения заметок".

В MS Office это OneNote, популярным был также Evernote с его лозунгом "доступен со всех устройств". Ещё до них всех популярным для "ведения базы знаний" был TheBrain (я тоже был владельцем платной лицензии, лет двадцать назад, https://www.thebrain.com/). Сюда же можно отнести всякие самоделки персональных wiki на базе IDE (https://knowledgeconf.ru/2019/abstracts/4431).

Отдельный класс тут варианты slip-box для метода Luhmann (популяризированного книжкой Ahrens -- https://ailev.livejournal.com/1513051.html, их десяток разных, и какое-то обсуждение используемого софта активно идёт в https://forum.zettelkasten.de/). Современный вариант персональной (но уже объявлено о грядущем переходе и к командной работе) wiki для zettelkasten есть у Roam research (https://roamresearch.com/), и он стремительно набирает популярность.

Более сложные командные инструменты объединяют тексты, таблицы и другие форматы (те же слайды с инфографикой) для командной работы. Это прежде всего notion.so (https://www.notion.so/) и аналогичный ему сервис coda.io (https://coda.io/).

Возможности всех этих систем разные, и люди мигрируют постоянно с одной такой системы на другие -- кому какое удобство более интересно. Поэтому на упомянутом форуме zettelcasten.de одна из последних тем на 48 комментов, например, Switching from Notion to RoamResearch, https://forum.zettelkasten.de/discussion/898/switching-from-notion-to-roamresearch.

Вот пример, как статью Dr.Jordan Peterson "10 Step Guide to Clearer Thinking Through Essay Writing" засовывали в zettelkasten на основе Roam (https://eugeneyan.com/2020/04/05/note-taking-zettelkasten):


Это не слишком похоже по стилю на "просто текст", это больше похоже на слайд из слайдомента. Но если приглядеться, то ещё больше это похоже на какой-то псевдокод (ср. с системным псевдокодом, который предложил Антон Меркулов для текстового описания архитектуры предприятия и который он реализовал тоже через плагин к MS Visual Code, https://www.youtube.com/watch?v=6EWUpa-5lSo). Такие краткие заметки у меня тоже бывают, но они у меня самого временные, и сдыхают где-то в недрах Evernote (их примерно 1700 штук). А постоянные? Постоянную заметку вы читаете прямо сейчас: это мои записи в блоге, и "временная заметка" просто остаётся как заготовка текста в Semagic и пухнет до того момента, пока я не напишу пост. Я их пишу посты так, чтобы лет через десять самому их читать как чужой текст -- и писать не сверхкратко при этом очень помогает, помогает вспомнить через десяток лет какие-то детали того, что было в момент написания. И этих постов много больше, вот это будет 5832 (ср. с 1700 заметок в Evernote), но объём поста получается большой и не выдерживается правило "одна мысль на карточку". С другой стороны, на эти тексты я только в ЖЖ сделал 27117 (это без фейсбука и чатов), смело можно считать многие из этих комментов отдельными "карточками", они вполне содержательны.

У меня самого, конечно, не прямая реализация методики Luhmann и её популяризации от Ahrens и других последователей традиции zettelkasten/slip-box. Но я и не не Luhmann!

Вот подсказанный Марком Акоевым ещё один пример "без Luhmann", описывается начало 50-х годов в СССР, zettelkasten на бумажных карточках -- https://jlm-taurus.livejournal.com/104538.html (читайте от выделенных жирным слов "Милица Васильевна" до "крупными событиями в эти годы стали зарубежные поездки"). Так что следование какой-то чёткой процедуре необязательно, важно соблюдать дух "мышления письмом", а не форму.

В 21 веке граница в ведении заметок для себя и блога для публики в части "просто текста", псевдокода и даже кода во всех их смесях стремительно размывается. Помним о публикации самых разных Jupiter Notebooks -- там текст плюс код. В этих смесях даже копирайт разных частей этого текста-с-кодом различается (вот, например, только что опубликованы Notebooks от fast.ai -- почитайте там про разные копирайты в одной публикации: https://towardsdatascience.com/deep-learning-course-notebooks-worth-2-000-are-now-open-source-7d6bc759ef47.

Что вообще должно быть в современной IWE? Примерно столько же, сколько в IDE, если учесть, что публикация по факту -- это commit во внешнюю систему. Но всегда можно трактовать IWE расширительно, доводя до полного обеспечения работы, включая интеграцию с issue tracker и всем остальным софтом, нужным сегодня для работы. Например (это отнюдь не полный список):
-- возможность ведения архива провязанных друг с другом заметок с поиском в нём (навороченная мультиформатная wiki, основная функция)
-- внешняя публикация заметок (блог), с внешним комментированием
-- ведение библиографической информации (reference management software, типа https://www.zotero.org/)
-- подготовка нарративов (длинных текстов) типа книг, статей -- аутлайн с хотя бы примитивной вёрсткой
-- если это код, то поддержка и кода тоже (интеграция с IDE)
-- поддержка GTD (todo lists в простейшем случае, и полный протокол с inbox и всем подобным в более сложном варианте -- вот тут их 19 бесплатных, https://www.lifehack.org/articles/technology/19-free-gtd-apps-for-windows-mac-linux.html), выход на полноценный issue tracker для себя и даже команды. И тут же тогда и календарь! Ибо где писательство, там и его планирование.
-- мессенджер (как в телеграм или whatsapp: каждый чат это проект), ибо командная же работа! Тут заметим, что MS Teams некоторыми людьми из Майкрософта рассматривается как просто коммуникативный интерфейс к SharePoint, то есть класс системы тот же: zettelkasten/wiki с комментами (то есть не чат, а форум) и накоплением материала, только структурированного под проекты. Впрочем, и IDE тоже можно рассматривать как интерфейс редактирования к системе ведения версий. Всё про одно и то же, накопление тщательно согласованных между собой знаний разного уровня формальности. Но тут ещё и аспект увода устной коммуникации в письменную (см. про то как асинхрон сжирает устный синхрон -- https://ailev.livejournal.com/1511183.html): знания накапливаются опять таки в тексте. Никакой "озвучки мнений", вместо неё "запись мнений", "запись откликов". Жизнь поменялась.
-- интеллектуальный по возможности (с синонимией, контекстом, уточнениями и т.д.) поиск
-- всяческая автоматизация и внешние интерфейсы (и всякие виртуальные ассистенты -- тут).
-- ... много всего разного, ибо границы этой зыбкой предметной области очень широки.

Можете сравнить эти функции с функциями древних так и не взлетевших гипертекстовых систем (все эти Dynabook, Xanadu и т.д.) времён до взлёта WWW.

Центральная же функция IWE получается -- wiki/zettelkasten, и она предназначена для усиления человеческого интеллекта. Продавать инструментарий для отращивания себе экзокортекса трудно, это же "скрипка Энгельбарта" (https://ailev.livejournal.com/1158826.html)! Продукты поэтому получаются крайне нишевые, продаются в них больше инфраструктурные (Evernote: доступ к заметкам с любого девайса) или менеджерские функции для команды (project management, issue tracking, roadmap drafting, presentations и т.д.). Софт этот не подаётся как инструментарий именно для "мышления письмом".

Если попытаться описать идеальный IWE, то всё сразу выглядит как потенциальный "ниасилил" для заумных нердов -- эдакий "суперЖЖ" с закрытой (чтобы уж все заметки там хранить) частью, френдовой-для-проектов и публичной блог-частями, а также каким-то в целом похожим на IDE редактором в части подготовки текста. "Под ключ" такой системы поэтому сейчас нет, в связи с эффектом "скрипки Энгельбарта" стартапов на эту тему тоже особо не просматривается, так что все просто регулярно переползают со своим архивом с одних IWE на другие, а с разным другим софтом работы с текстами стыкуются через cut/paste.

Но какое-то число людей на глобусе всё-таки понимает, что их интеллект может быть усилен эээ... механически, подключением экзокортекса в форме IWE с архивом перевязанных гиперссылками заметок и вывода части их знаний на внешний носитель. Так что они используют весь этот зоопарк продуктов из текущего поста, и становятся ощутимо умнее. Спросите тех людей, которые в вашем окружении кажутся вам явно поумней других -- и вы обнаружите, что они в качестве своего экзокортекса активно используют довольно много упомянутого софта (или другого софта, эмулируя zettelkasten/wiki на чём-нибудь -- вот как я на ЖЖ). И существенная часть их интеллекта -- это прихваченная от этого симбиоза. Они думают письмом, буквально живут в IWE, как программисты буквально живут в IDE.

UPDATE: обсуждение в фейсбуке -- https://www.facebook.com/ailevenchuk/posts/10218255222066023, в чате блога с https://t.me/ailev_blog_discussion/2556
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

  • 5 comments