green_fr: (Default)
green_fr ([personal profile] green_fr) wrote2020-05-18 09:12 am

Шутка про баян

Отличная шутка на bash.org, я давно так не хохотал, но только для программистов:

V: А ещё мне тут пришла в голову правильная аналогия про Vim
V: Это короче так: садишься ты в машину, а там вместо руля и педалей стоит БАЯН
V: И каждая кнопка что-то означает, типа: — вперёд 100 м — вперёд 1 км — вперёд до ближайшего светофора — вперёд до отделения полиции — обогнать впереди едущую машину
V: И ещё когда ты садишься, двери блокируются и надо тоже нажать последовательность кнопок на баяне, чтобы выйти
V: А если в движении случайно нажмёшь esc и выйдешь из режима движения, то вместо движения вперёд машина бибикает
V: И соответственно есть прокачанные баянисты, которые ездят по дорогам, играя мелодии. Быстро, эффективно ездят


Чтобы хотя бы что-то было понятно и остальным. Есть такой текстовый редактор, в котором работаешь не только без мышки, то и без комбинаций кнопок на клавиатуре. То есть, ты не можешь нажать Ctrl-C или Ctrl-V — редактор писали на случай ядерной войны так, чтобы он работал всегда, даже по сети, даже когда связь настолько плохая, что информация о нажатии одной кнопки может дойти, а про вторую — нет. И вам не нужно, чтобы вместо Ctrl-C у нас напечаталось C.

Соответственно, у редактора есть три режима:
1. Режим ввода. Когда каждая кнопка с буквой (символом) обозначает просто букву, и та печатается в редактируемом документе.
2. Режим навигации. Поскольку кнопки со стрелочками — это «сложные» кнопки, то они ведь тоже не работают. Вместо них в режиме навигации используются кнопки j / k / l / m — это влево / вниз / вверх / вправо соответственно. Помимо этих кнопок задействована вся остальная клавиатура, и в этом настоящее богатство vi — есть вариант «перепрыгнуть на одно слово» (аналог «Ctrl-стрелочки»), но есть и вариант «перепрыгнуть на 5 слов». Можно перейти в конец строки (аналог «Ctrl-End»), а можно перейти на третье с конца слово в пятом параграфе, начиная от текущего. Там же поиск — можно перейти на второе слово, в котором не менее четырёх гласных. И начала программирования для замены — найди слова из 4 букв, если первая из них «f», то замени вторую на «*». Вы не поверите, но это часто крайне удобно, экономит часы времени. Красивая иллюстрация того, как наложенные снаружи ограничения заставляют нам создавать шедевры.
3. Режим работы с системой. Здесь те же самые кнопки выполняют команды вроде «сохрани файл», «выйди меня отсюда».
Ну и отдельные кнопки в каждом из режимов, чтобы перейти в другой режим (упомянутый в анекдоте Esc).

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

[identity profile] green-fr.livejournal.com 2020-05-18 10:07 am (UTC)(link)
Нам на уроках рассказывали историю про разные пакеты, в которые могли попасть разные кнопки одной комбинации, и что порядок прибытия пакетов не гарантирован. Но твоя версия тоже вполне правдоподобна.

[identity profile] mikhailian.livejournal.com 2020-05-18 10:47 am (UTC)(link)
А ещё из приколов... Происхождение hjkl обусловленно наличием стрелочек (https://catonmat.net/why-vim-uses-hjkl-as-arrow-keys)на клавишах в терминале ADM-3A, которым пользовался Билл Джой, когда программировал vi.



[identity profile] green-fr.livejournal.com 2020-05-18 01:57 pm (UTC)(link)
Отлично! Из серии баек про ширину крупа лошади - и современные космические модули.

[identity profile] gianthare.livejournal.com 2020-05-18 11:34 am (UTC)(link)
Судя по тому, что большие буквы используются, а они вроде тоже кодируются сложно, версия про телетайп выглядит более убедительно

[identity profile] green-fr.livejournal.com 2020-05-18 02:39 pm (UTC)(link)
Да нет, вроде, большие буквы в ASCII занимают тот же один байт, что и маленькие.

[identity profile] gianthare.livejournal.com 2020-05-18 03:36 pm (UTC)(link)
В ASCII конечно, я имел в виду как их клавиатура шлет. но теперь понял, что это наверное не имеет значения, вряд ли ты имел в виду, что буквы от клавиатуры до компьютера не доходят.

[identity profile] green-fr.livejournal.com 2020-05-18 09:45 pm (UTC)(link)
Ой, да, я понял, о чём ты. Какое-то было прерывание с низкоуровневой обработкой клавиатуры. Но нет, эту часть я основательно забыл :-)))

[identity profile] grave--digger.livejournal.com 2020-05-19 01:40 pm (UTC)(link)
int 9h ;)
По крайней мере, у х86.

[identity profile] green-fr.livejournal.com 2020-05-20 09:06 am (UTC)(link)
Ну вот не хватало мне ещё другие архитектуры смотреть!
Я тебе не рассказывал, как пришёл к папе на ДМЗ, покопаться в их библиотеке, почитать что-то про ассемблер. Нашёл книжку Assembler IBM/360 - точно, думаю, у нас в школе IBM-совместимые какие-то машинки, это оно. Прочитал - и не мог понять, почему вообще вот ничего не похоже на то, что мне показывали пацаны в школе!