Что: d65882c3c5decb9e2216d7a8de98c1d422c2c42d
Когда: 2020-09-22 13:14:00+03:00
Темы: tip zsh
Наконец-то удобный RPN калькулятор https://en.wikipedia.org/wiki/Dc_(computer_program) Со школы хотел считать на калькуляторах с обратной польской нотацией, ибо уж больно нравится она мне своей простотой и удобством для компьютеров. Но так руки и не доходили (значит и не так уж больно то сильно и хотел :-)). В качестве калькулятора (не RPN) я долгое время использовал python, но это мне не нравилось ибо его запуска приходится ждать, а что-нибудь да посчитать регулярно бывает надо. Потом я для себя открыл встроенный zcalc в zsh, который долгое время и использовал, ибо запускается мгновенно (и так на zsh написан), умеет дробные числа и квадратный корень. Недавно обнаружил что в zcalc есть RPN режим. Но... в нём после каждого expression нужно нажимать enter. То есть 2<CR>2<CR>+<CR>. Судя по рассылке zsh, сделать "2 2 +<CR>" уже совсем не тривиально становится. Могу понять почему. Но это не отменяет что часто хочется полностью отредактировать всю строку ввода (всю формулу), что-то в середине поменяв. Сегодня пытался вспомнить а чем мне dc не угодил? Та самая программа, которая, как гласит Кен Томпсон, была первой написана на PDP-11. У неё неудобный интерфейс: нет возможности редактирования строки, нет истории. Хотя возможностями вроде бы полностью удовлетворяет. И тут меня осенило: есть же rlwrap утилита! И действительно с ней dc автоматом заимел readline командную строку с историей и (благодаря настроенному .inputrc) vi-режим сразу же. Похоже что идеальный RPN калькулятор, можно сказать из коробки (dc вроде везде есть), появился. Более того, мне нередко нужно узнать длину строки и dc это умеет делать. Вот только с кириллицей он покажет 12 для "привет", так что тут придётся запускать или python или wc -m. Плюс в dc можно удобно задавать точность после точки, что для человека очень удобно. Плюс можно задавать в каком виде вводить/выводить числа (hex, octal, и т.д.), что тоже бывает нужно. В общем, UNIX-way и подход с rlwrap-ом, до которого я годами раньше не догадался, отлично работает!
Сгенерирован: SGBlog 0.34.0