HeadlinesBriefing favicon HeadlinesBriefing.com

Ворчун пробует языковой сервер

Hacker News •
×

Я пишу код примерно так же, как десять лет назад: вношу правки в текстовом редакторе, переключаюсь на терминал и запускаю команду для компиляции и выполнения. Смотрю на результат, затем возвращаюсь в редактор. Если не уверен, добавляю трассировочные принты или перезапускаю в отладчике. Если исключение роняет мою программу, я исправляю и перезапускаю.

Я завидую тому, что делают программисты на Lisp. Разработка на Lisp происходит путем ввода кода непосредственно в repl для добавления, удаления и замены частей живой, работающей системы. Программисту на Lisp не нужно "переключаться", потому что он уже внутри процесса своей программы. Он никогда не "компилирует и выполняет", потому что код уже работает, и он редактирует путем горячей замены. Он не перезапускает в отладчике, потому что может проверить что угодно. Он не перезапускает при исключениях, потому что система условий позволяет возобновить работу из любого места.

Следствие: в начале проекта на Lisp может не быть исходного кода; развивающееся определение существует только в образе памяти. Это похоже на то, как люди относятся к реляционным базам данных в начале—схема существует только в работающей базе данных. В конце концов, она выгружается в файл под контролем версий.

Я не разработчик Lisp, поэтому останусь завистливым. Но я понял, что не пытался приблизиться. В Haskell есть частичные победы: система типов уменьшает исключения, а языковой сервер Haskell (hls) с Eglot от Emacs дает лучшую интроспекцию. ghcid следит за изменениями и быстро перекомпилирует.