LINUX.ORG.RU

Vim или Emacs? А LISP в 2021?

 , ,


1

3

https://www.youtube.com/watch?v=8Q9YjXgK38I&t=42s

Парень в определённых кругах, личность известная.
посмотрел я его ролик, стал ковыряться по истории:

А ведь Crashbandicoot была годной игрой…

Что выбрать? Vim или Emacs?
Изучать в 2021 году Lisp? Если изучать, какой? Практика?
А не засмеют сотрудики?

Времени в сутках маловато, на всё не хватает.


Ответ на: комментарий от korvin_

Э-м, не понял, где тут сложные конструкции:
do
print «Hello»
print «World»

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

Prelude> :{
Prelude| do
Prelude|   read  "Hello"
Prelude|   print "World"
Prelude| :}

<interactive>:37:3: error:
    * No instance for (Read (IO a0)) arising from a use of `read'
    * In a stmt of a 'do' block: read "Hello"
      In the expression:
        do read "Hello"
           print "World"
      In an equation for `it':
          it
            = do read "Hello"
                 print "World"

Какой «it»? Какой «IO a0»? Почему Read с большой буквы? Я же с маленькой писал? И это программа на три строчки. Для чуть более сложной программы на хаскеле получить выхлоп на целый экран — это абсолютно рутинная ситуация. И тогда чтобы разобраться в ошибке менее чем за час, нужно тренироваться хаскелю месяцами — до тех пор рядовой программист пишет программы со скоростью «8 строчек за 8 часов».

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

По этой причине на первый взгляд простая программа на хаскеле на самом деле ни разу не простая. Это похоже на езду на одноколесном велосипеде: меньше колес, меньше управления, элегантнее система, но мельчайшие воздействия приводят к большим изменениям в поведении — и вот уже лицо купившегося на «простоту» новичка размазано по асфальту.

byko3y ★★★ ()
Ответ на: комментарий от byko3y

Знал бы прикуп — жил бы в сочи. Вся проблема организации информации заключается в том, что ты никогда заранее не знаешь ее структуры. Ты оттегировал «панды, медведи», «панды, реактор» — а в реальности ищешь только по типа реакторов. Хорошо, оттэгировал по типам реакторов — но искать будет по регионам. И по итогу у тебя тэги содержат половину содержимого заметки. А когда ты настолько интенсивно тэгируешь всё подряд, то внезапно выясняется, что проблемой стал поиск по тэгам, поскольку где-то похожие тэги используются для совершенной разной информации, где-то похожа информация обозначена совершенно разными тэгами, например «медведи» и «гризли» (что потенциально опять-таки можно превратить в избыточное тэгирование: «гризли, медведи, животные, фауна, четырехногие, млекопитающие», что рискует превысить объем содержания заметки).

А теперь, можно тоже самое, только формально? Пока это выглядит как баттхерт, без намека на возможное решение проблемы.

И еще: мозг тебе никакой орг-мод не заменит. Если у тебя в тэгах срач, тут сорян.

Лично я использую org-rifle для поиска и мне норм, срать на весь этот zettelkeisten и прочие микрооптимизации.

anonymous ()
Ответ на: комментарий от byko3y

никакой grep не поможет такое найти

Так и скажи — не осилил нормально писать заметки и расставлять ключевые слова, и от этого печёт.

А еще заметки могут ссылаться друг на друга, и можно видеть как список прямых ссылок заметки (на которые она ссылается), так и список обратных ссылок (которые ссылаются на нее). И от медведей ты неминуемо за единицы шагов попадешь и к реакторам, и к медведям, строящим реакторы. Если, конечно, не забиваешь и на ссылки так же, как на ключевые слова.

Я думаю, именно в этом и состоит твоя проблема — вместо системы взаимосвязанных записей у тебя бессвязная куча говна, в которой вся королевская конница ни хрена не может найти.

И это не проблема метода zettelkasten или пакета org-roam %)

Nervous ★★★★★ ()
Последнее исправление: Nervous (всего исправлений: 1)
Ответ на: комментарий от anonymous

И еще: мозг тебе никакой орг-мод не заменит. Если у тебя в тэгах срач, тут сорян.
Лично я использую org-rifle для поиска и мне норм, срать на весь этот zettelkeisten и прочие микрооптимизации

Сколько мегабайт у тебя заметок? Суммарный объем вообще всех моих постоянных заметок — 15 МБ. Еще несколько мегабайт висит во временных буферах Notepad++ (700 вкладочек, ага).

byko3y ★★★ ()
Ответ на: комментарий от Nervous

Так и скажи — не осилил нормально писать заметки и расставлять ключевые слова, и от этого печёт

Так и скажу — мне есть на что тратить свою жизнь, кроме бесконечной организации и реорганизации заметок.

А еще заметки могут ссылаться друг на друга, и можно видеть как список прямых ссылок заметки (на которые она ссылается), так и список обратных ссылок (которые ссылаются на нее). И от медведей ты неминуемо за единицы шагов попадешь к реакторам. Если, конечно, не забиваешь и на ссылки так же, как на ключевые слова

Да, ручной поиск пересматриванием информации. И зачем мне нужен этот гроб, который постоянно жужжит у моего стола?

byko3y ★★★ ()
Ответ на: комментарий от ugoday

Возможно вам будет интересно ознакомиться с How to Take Smart Notes

Print length ‏ : ‎ 178 pages

О господи, ну ты хоть бы по тезисам описал, за что книгу рекомендуешь, а то я даже не знаю, в каком году ее осилю, учитывая что я сейчас уже где-то середину Нормана уже читаю (370 страниц).

byko3y ★★★ ()
Ответ на: комментарий от byko3y

Там описывается как готовить zettelcasten, чтобы от него был толк и он не превращался в плохой аналог википедии.

ugoday ★★★★★ ()
Ответ на: комментарий от byko3y

3.6MB. Но отдельные файлы у меня друг с другом обычно мало связаны, стараюсь придерживаться принципа один проект - один файл. Да и вообще я заметки как-то больше пишу чем читаю, так уж выходит. Полезны они обычно для меня когда вспоминаю какую-то вещь и хочу опять ее пересмотреть, грепаю файл org райфлом и норм.

И да, я погорячился конечно, бэклинки могут играть свою роль, но зависит от подхода к заметкам.

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

anonymous ()
Ответ на: комментарий от byko3y

Какой «it»?

текущее вычисляемое выражение в REPL, вроде, не только в хаскеле видел.

При компиляции файла будет имя функции, например.

Какой «IO a0»? Почему Read с большой буквы? Я же с маленькой писал?

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

Для чуть более сложной программы на хаскеле получить выхлоп на целый экран — это абсолютно рутинная ситуация.

Бывает, да. Как и километровые стектрейсы от джавовских фреймворков, или шаблонов C++.

И тогда чтобы разобраться в ошибке менее чем за час, нужно тренироваться хаскелю месяцами

Да не, не нужно. Достаточно прочитать строчку

    • In a stmt of a 'do' block: read "Hello"

и понять, что проблема в применении функции read, а потом почитать доку к ней, примеры посмотреть.

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

Чего? Ни разу с таким не сталкивался. Вот — пробел после «Hello», никаких проблем. Конечно, это всего три простые строчки, но я не припомню ни одного случая, где пробел в конце строки мог бы играть хоть какую-то роль.

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

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

По этой причине на первый взгляд простая программа на хаскеле на самом деле ни разу не простая. Это похоже на езду на одноколесном велосипеде: меньше колес, меньше управления, элегантнее система, но мельчайшие воздействия приводят к большим изменениям в поведении — и вот уже лицо купившегося на «простоту» новичка размазано по асфальту.

Ой да ладно, многие также фрустрировали от синтаксически значимых отступов в Python.

korvin_ ★★★★★ ()
Последнее исправление: korvin_ (всего исправлений: 2)
Ответ на: комментарий от ugoday

Возможно вам будет интересно ознакомиться с How to Take Smart Notes

Я бегло посмотрел книгу. Вся книга про Slip-Box, то есть Zettelkasten, разбавленная ЧУДОВИЩНЫМ количеством воды и просто слабо относящегося к теме материала. Сразу видно, что автор практикует методику. За что я и не люблю таких «авторов» — 200 страниц для описания информации, которую можно было бы уместить на 2 страницы.

byko3y ★★★ ()
Ответ на: комментарий от byko3y

Вот именно по этому я и не стал пытаться чего-нибудь вам объяснять.

ugoday ★★★★★ ()
Ответ на: комментарий от vM

ну хз. того же locate в базовом пакете арча, который по идее GNU base packages, нет. на серваках в 80% ubuntu или дебиан (2 к 1) либо CentOS (10-15%), вот в сентоси как раз и нет nano

tz4678 ★★ ()
Ответ на: комментарий от monk

А так может текущая реализация макроса для JSON?

(begin
  (defvar foo 100500)
  (#J{ foo, bar: (+ 10 20) }))

Если нет то получаем типичную проблему таких решений, их делают по быстрому и для конкретной ситуации.

А пример действительно хороший. Я бы тоже такой давал.

MOPKOBKA ()
Последнее исправление: MOPKOBKA (всего исправлений: 5)

Vim есть везде из коробки, не только в дистрах, но и в кастомных прошивках на телефонах точнее его папа vi, в прошивках роутерах, даже twrp, поэтому для меня выбор очевиден

Как ide то Вим отстает в этом плане, пока кто запилит плагин ты уже используешь, да и настройки ну прям не сахар особено когда тебе нужно использовать lsp редкого языка, поэтому сори vim консольный редактор, пытаються из него сделать ide но пока слишком убого и не удобно

SPRATAY ()
Ответ на: комментарий от anonymous

Я знаю как они выполняются. Не, не про это. А конкретно про текущую реализацию #J.

MOPKOBKA ()
Ответ на: комментарий от korvin_

Ну знаешь, если ты решил даже базовую справку по языку не читать, а сразу начать что-то писать, странно жаловаться, что ты чего-то не понимаешь

Еще раз повторяю — это программа на три строчки. Выхлоп GHCi в два раза большей всей программы. У меня где-то валяется короткая прожка на MTL строчек так на десять, которая выдает абсолютно мозгоразрывающий выхлоп с «двусмысленным типом» на целый экран — я так и не осилил понять смысл написанного там.

Для чуть более сложной программы на хаскеле получить выхлоп на целый экран — это абсолютно рутинная ситуация.

Бывает, да. Как и километровые стектрейсы от джавовских фреймворков, или шаблонов C++

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

и понять, что проблема в применении функции read, а потом почитать доку к ней, примеры посмотреть

Да, читаешь доку, ищешь примеры — и через полгода ты уже способный хаскелист, готовый для написания и отладки Hello World:

https://hackage.haskell.org/package/base-4.15.0.0/docs/Prelude.html

Ни разу с таким не сталкивался. Вот — пробел после «Hello», никаких проблем. Конечно, это всего три простые строчки, но я не припомню ни одного случая, где пробел в конце строки мог бы играть хоть какую-то роль

Скорее всего что-то связанное с этим чудом:

https://www.haskell.org/onlinereport/lexemes.html

«Informally stated, the braces and semicolons are inserted as follows. The layout (or „off-side“) rule takes effect whenever the open brace is omitted after the keyword where, let, do, or of. When this happens, the indentation of the next lexeme (whether or not on a new line) is remembered and the omitted open brace is inserted (the whitespace preceding the lexeme may include comments). For each subsequent line, if it contains only whitespace or is indented more, then the previous item is continued (nothing is inserted); if it is indented the same amount, then a new item begins (a semicolon is inserted); and if it is indented less, then the layout list ends (a close brace is inserted). If the indentation of the non-brace lexeme immediately following a where, let, do or of is less than or equal to the current indentation level, then instead of starting a layout, an empty list »{}" is inserted, and layout processing occurs for the current level (i.e. insert a semicolon or close brace)."

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

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

Хаскель отличается тем, что на его начальное освоение нужно раз в десять больше времени по сравнению с какой-нибудь жавой или кложей. Какой-нибудь JavaScript я вообще не заметил, например, я просто внезапно начал на нём писать.

Ой да ладно, многие также фрустрировали от синтаксически значимых отступов в Python

В питоне нет begin/end или {/}, потому отступы являются фундаментальным механизмов разделения блоков кода и осваиваются сразу — логика работы отступов там очень простая и понятная.

byko3y ★★★ ()
Ответ на: комментарий от anonymous

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

Надо выкинуть устаревшие инструменты из 80-х годов, и начать использовать что-то более современное, хотя бы из 90-х. Создатели Org-roam уже уперлись в тот факт, что база знаний в текстовом формате имеет совершенно недопустимо низкую производительность работы — потому присобачили SQLite к системе. А чтобы сделать нечеткий полнотекстовый поиск (даже без семантики) — нужна еще одна внешняя софтина. И по итогу мы имеем кашу из топора, которая сварена только для того, чтобы сохранить совместимость для лучшего инструмента для форматирования заметок — Org-mode.

byko3y ★★★ ()
Ответ на: комментарий от peregrine

майнтест сырой, имеет кучу багов

Как там в 2012-м, всё платформы под себя строите перед выходом?

и игры в него так и не завезли

Каждый сервер со своим набором модов и есть уникальная игра. И пердолиться с их установкой на клиент не нужно, что для тупой аудитории есть неоценимый плюс.

mertvoprog ()
Ответ на: комментарий от peregrine

Да

ССЗБ. Ещё и, небось, на LWin и RWin разные, при том, что на многих клавиатурах RWin тупо нету? :P

Давайте ещё за кривые игори покопротивляйтесь, которым надо батником грохать перед запуском explorer.exe и потом восстанавливать, это ж б-жественная винда и б-жественные AAA, им можно, не то что ваши прыщеподелия.

mertvoprog ()
Ответ на: комментарий от tz4678

а остальное время читать документацию

Из браузера с Vim-управлением, да.

потому как на линукс вменяемых редакторов для такого нет

Если тут нету, то где есть? o_O Вы из секты TeXmacs, что ли?

mertvoprog ()
Ответ на: комментарий от no-such-file

Открой в своей IDE 300-400 вкладок, тогда узнаешь что такое тормоз.

А часто такое приходится тебе делать? Если да, то что-то явно не так. То ли с тобой, то ли с твоими проектами.

Oberstserj ★★ ()
Ответ на: комментарий от ugoday

А есть книжка «How to Take Notes for Dummies» перед этой? А то Мы как разучились в детстве заметки делать — так до сих пор и страдаем. Не понимаем, что записывать, в каком формате (ибо бюрократия головного мозга, ага), и зачем. А ещё хронически страдаем когнитивным искажением, что если помним сейчас, то будем помнить и через несколько дней, и записывать вообще ничего не нужно.

mertvoprog ()
Ответ на: комментарий от mertvoprog

Как там в 2012-м, всё платформы под себя строите перед выходом?

Что? Какие платформы? В майнтесте видел как ночь наступает?

peregrine ★★★★★ ()
Ответ на: комментарий от Oberstserj

Если с проектами что-то не так — это ещё не значит, что их дозволено рефакторить :P Да и рефакторить тоже кому-то как-то чем-то надо.

mertvoprog ()

И почему только треды о workflow в целом и текстовых редакторах в частности всегда собирают столько поехавших?

anonymous ()
Ответ на: комментарий от peregrine

А что с ночью не так? Соляры мезеконовые моргать начинают, это да ;D И утром, и вечером. Надо им конденсатор какой-то придумать.

mertvoprog ()
Ответ на: комментарий от fernandos

Мне кажется, что вы делаете что-то не так.

Херню морозит, например?

Oberstserj ★★ ()
Ответ на: комментарий от anonymous

Потому что текстовые редакторы — это сектанство, очевидно же. Только визуальное программирование и запрет физических клавиатур спасут от этих религиозных войн и мракобесия! :->

mertvoprog ()
Ответ на: комментарий от Oberstserj

Чел над фичами работает! Над несколькими! Штук 20 за раз делает!

MOPKOBKA ()
Ответ на: комментарий от byko3y

В итоге основные твои претензии сводятся к тому что

  1. разрабы решили не писать велосипеды

начать использовать что-то более современное, хотя бы из 90-х

«Да ты не умничай, ты пальцем покажи».

семантики

А вот этого да, не хватает. Объяснять не буду, мне лень. Но в этом емакс виноват, а не орг мод. Другое дело, что в других редакторах на это даже надеятся не приходится…

anonymous ()
Ответ на: комментарий от no-such-file

Я говорил о грамотных программистах. Не знаешь ЛИСП – ты неграмотен как программист.

Чем категоричнее человек делает заявления, тем меньше стоит его слушать.

Oberstserj ★★ ()
Ответ на: комментарий от mertvoprog

Да нет, и не сектанство же. Емакс очевидно лучше всех остальных «редакторов», как вы этого всё не поймете-то?

И все равно куча поехавших.

anonymous ()
Ответ на: комментарий от Oberstserj

Открой в своей IDE 300-400 вкладок, тогда узнаешь что такое тормоз

А часто такое приходится тебе делать? Если да, то что-то явно не так. То ли с тобой, то ли с твоими проектами

С современными технологиями вообще нет смысла в понятии «открытая вкладка». IDE может запоминать состояние всех вкладок и их ассоциации, навеки-веков. Ручное управление панелью вкладок должно остаться в прошлом веке — их должны заменить опции «показывать файлы со связанными символами», «показывать файлы, ссылающиеся на текущий файл», «показывать часто открываемые вместе с текущим файлом файлы», «показывать файлы в хронологическом порядке их открытия», «показывать файлы по каталогам». А если и редактировать руками вкладочки — то хотя бы дать возможность сохранять-загружать плод этой работы, а то у меня часто возникает необходимость работать над разными модулями и держать совершенно разные наборы вкладок для каждого модуля.

Сейчас для решения этой задачи я просто держу кучу вкладок в VS Code в разных половинах прокручиваемой панели вкладок — к счастью, VS Code открывает новые вкладки рядом с текущей, так что такой подход прокатывает. Для отображения «по каталогам» у VS Code есть отдельная панелька. Вот более умных инструментов отображения вкладочек в VS Code нету, к сожалению — а они могли бы полностью вытеснить ручную организацию.

byko3y ★★★ ()
Ответ на: комментарий от mertvoprog

А есть книжка «How to Take Notes for Dummies» перед этой? А то Мы как разучились в детстве заметки делать — так до сих пор и страдаем. Не понимаем, что записывать, в каком формате (ибо бюрократия головного мозга, ага), и зачем. А ещё хронически страдаем когнитивным искажением, что если помним сейчас, то будем помнить и через несколько дней, и записывать вообще ничего не нужно

Ты описываешь достаточно естественную ситуацию: с появлением интернета информации стало чудовищно много, и даже при желании ее организация займет уйму времени. Так что записывать получается только самое главное, а что из всего главное — не всегда получается угадать.

byko3y ★★★ ()
Ответ на: комментарий от byko3y

Так выходит, что заметки в 2$21-м бесполезны и неофитам не стоит об этом и париться?

mertvoprog ()
Ответ на: комментарий от mertvoprog

Майнкрафт, до продажи Майкрософту(~2014), раскрутился сам по себе, без единого цента на рекламу. Он уже тогда был самой продаваемой игрой.

BceM_IIpuBeT ★★★☆☆ ()
Ответ на: комментарий от BceM_IIpuBeT

Мало раскрутиться, надо годами держаться на плаву, этим мало что вообще похвастаться может. Мойндрафт не теряет популярности уже десятилетие.

mertvoprog ()
Ответ на: комментарий от Oberstserj

В смысле часто? Emacs запускается первым делом при начале работы в системе и выключается … а никогда не выключается. Вот как у хомячков всегда браузер запущен, так у нас всегда работает emacs. В процессе работы постепенно открываются новые файлы их количество растёт-копится, ну и дорастает.

ugoday ★★★★★ ()
Ответ на: комментарий от anonymous

семантики

А вот этого да, не хватает. Объяснять не буду, мне лень. Но в этом емакс виноват, а не орг мод. Другое дело, что в других редакторах на это даже надеятся не приходится

Пф-ф-ф, я сам уже выше по треду два раза объяснил, как и зачем нужен поиск с семантикой. И про убогость форматирования Org-mode выше по треду тоже было, и Obsidian предлагали.

byko3y ★★★ ()
Ответ на: комментарий от BceM_IIpuBeT

А что потом сделали?

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

mertvoprog ()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)