Найти тему
Енот-математик

На чëм пишет Енот-математик?

Оглавление

То и дело в комментариях возникает вопрос: в какой программе автор генерирует картинки, иллюстрирующие статьи? Я решил поделиться своим подходом к организации рабочего процесса, помогающим мне писать книги, статьи и получать при этом удовольствие.

* * *

Когда я преподавал в школе математику, то своим ученикам я рано или поздно задавал вопрос: зачем вы в школе учите родную речь? Сначала идут стандартные ответы:

  • Чтобы писать без ошибок.
  • Чтобы знать, как говорить и читать.
  • Чтобы не нахватать двоек.
  • Чтобы развивать мозги.

Наводящие вопросы (говорить мы и так умеем, а зачем писать без ошибок, если и так всё понятно?) постепенно приводят ребят к более глубокому ответу:

Чтобы быть понятым другими и понимать других.

Этот вопрос не только грамотности, но и точности, выразительности, наконец, привлекательности речи, не важно, письменной или устной. А поскольку мы глубоко социальные существа, вопрос понимания чрезвычайно важен для каждого из нас.

Взаимопонимание тоебуется и в "общении" с неживым миром: реальным физическим, или моделируемым мысленно, либо с помощью ЭВМ. Тут тоже важно, чтобы система нас "слушалась" и правильно понимала, а мы, в свою очередь, понимали что она нам "говорит" или показывает. Так встаёт вопрос о языке общения с миром, как вербальном, так и невербальном.

Во всём, что касается работы с машинами, я предпочитаю явное выражение своих мыслей в виде текста, понятного как мне, так и машине.

Операционная система

Уже 20 лет, как я покинул общепринятый мир MS Windows и обитаю в операционных системах семейства Linux. За это время я перебрал много вариантов. Дольше всего пользовался Arch Linux, а семь лет назад окончательно перебрался на NixOS, как на наиболее подходящую систему для моего образа мысли и работы.

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

Язык nix строго типизированный, компилируемый и декларативный. Поэтому противоречивую нерабочую конфигурацию системы, не пропустит компилятор. За что ему большое спасибо!

Рабочий ноутбук, надо сказать, у меня тоже особый, специально произведённый для Linux, так что всё, что надо внутри него радостно жужжит и летает.

Среда рабочего стола и оконный менеджер

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

Тем, что я вижу на экране управляет тайлинговый менеджер Xmonad и шустрый Xfce. Они помогают мне располагать окна, экономя рабочее пространство, а я явно "говорю" им чего хочу, с клавиатуры. При таком подходе, переключение между одновременно открытыми 10-20 окнами приложений в 10 рабочих столах происходит мгновенно и "спинным мозгом".

Редактор и среда разработки

-3

Пробовал VSCode, Atom, vim, но всегда, рано или поздно, я обнаруживал себя с растопыренными пальцами в Emacs.

Языки программирования

-4

Я не зарабатываю программированием. Я педагог, руководитель музея, вулканолог, писатель и популяризатор науки. Для меня, программирование — язык общения с компьютером и с математикой, поэтому мои языки очень математичны: Julia, Haskell, LISP, Wolfram, Maxima, LaTeX.

Кроме Julia, они декларативны, странноваты и все очень мне нравятся уже много-много лет.

Haskell стоит особняком. Я его очень люблю, неплохо знаю и даже написал для репозитория hackage пару библиотек. Он мне нужен, чтобы в чëм-то глубоко разобраться. Наряду с LISP это самый выразительный язык из тех, что я знаю. С его помощью я объясняю новые для меня концепции самому глупому, но чрезвычайно старательному ученику — машине. И если мне это удаётся, то я понимаю, что разобрался с темой достаточно хорошо. А современные подходы к тестированию и верификации программ типа QuickCheck позволяют проверять корректность моих объяснений.

При написании статей для Дзена я пользуюсь самодельной связкой LaTeX+zsh+ghostscript, которая позволяет написав формулу в ТеX через секунду получить её в виде картинки в формате png, нужного размера, пригодного для вставки в Дзен. Анимированные гифки тоже делаются связками между разными программами, не требующими визуального управления.

В общем, всё что можно, делается через явно написанный текст. А мышка нужна только если что-то надо подправить в Inkscape. Так я написал диссертацию, учебник и книгу, а сейчас делюсь с вами тем, что знаю на Дзене и Хабре.