Существует приложение для iOS — Tydlig, которое буквально переосмысливает калькулятор, и делает его потрясающе удобным. Попользовавшись один раз этим приложением, остаешься его любителем.
Однако для бытового использования на десктопе ничего удобнее, чем консоль браузера, по моему мнению, нет. В консоли можно использовать переменные, функции, работать с выражениями как с текстом — выделять, копировать и вставлять. Это удобно, и многие годы консоль верно заменяла мне калькулятор даже для самых простых операций.
Ввиду специфики работы, проводить различные вычисления приходится часто, и со временем появилось ощущение, что в консоли чего-то не хватает. Не хватает того самого динамического обновления значений, как в Tydlig.
Поиск чего-то похожего на Tydlig ничего не дал, и было принято решение писать свое приложение.
Что из этой затеи получилось:
Откуда идея? Идея не моя. Впервые подобное я увидел в LightTable. Затем отображение промежуточных результатов вычислений появилось в инструментах для разработчика Google Chrome.
Я лишь взял идею, нашел подходящую математическую библиотеку (Math.js), и написал удобный интерфейс.
Работает все следующий образом:
Весь интерфейс — текстарея с прозрачным фоном, под которой находится контейнер с результатами.
При каждом изменении текстареи происходит пересчет всех строк с помощью математической библиотеки, и обновление текстовых подсказок, которые подгоняются в нужное место с помощью переносов строк и пробелов.
Буду рад, если приложение окажется полезным не только мне. Спасибо!
Попробовать в живую: http://grimalschi.github.io/calque/index.html
Ссылка на ГитХаб: https://github.com/grimalschi/calque/
UPDATE: Добавлена возможность копировать результаты.
Комментарии (86)
eyeless_watcher
05.08.2015 20:06+6Эх, JS-кишки лезут наружу. Попробуйте назвать переменную constructor :)
ruikarikun
05.08.2015 20:59+1Это особенно обидно на фоне того, что можно назвать переменную «if» или «return». То есть классических запретов нет, а специфические — есть.
kalmarius
05.08.2015 20:11+5Вы изобрели Mathcad:)
vintage
05.08.2015 20:20+1А лучше бы Mathematica :-)
mikhailian
05.08.2015 22:00По-моему, он пока что изобрёл bc. Ну или максимум bc с подключёнными библиотеками, т.е. bc -l.
Jban
06.08.2015 00:11+3Были вещи и древнее маткада)
Свежий скрин с телефона
Последняя выпущенная версия 6.10 (2004 год), отлично бегает под Win7, ценю за скорость запуска, и минимализм в целом.
esudnik
05.08.2015 20:23+3Реально круто! Огромное спасибо за инфо. Я уже несколько лет пользуюсь Soulver (программа для Mac OS). Но всегда хотел платформанезависимый аналог этого приложения.
kornerz
05.08.2015 20:48+3Отличная вещь.
PS: имперская система мер конечно вещь запутанная, но не настолько же:
Mirn
05.08.2015 20:50+1Это просто погрешность плавающей запятой, а вывод честный без украшательтв.
kornerz
05.08.2015 22:24+1В «железных» калькуляторах это обходится довольно просто — вычисления производятся с большей точностью, чем отображение на экран.
В итоге при выводе последний разряд округляется, и получаем адекватный результат.standy
05.08.2015 22:54В консоли можно включить вычисления с произвольной точностью
math.config({ number: 'bignumber', precision: 64 });
правда пропадает фича с единицами измерения
Abyasov
05.08.2015 20:58+1Волшебно!
Ещё добавить какой-нибудь способ делиться листом с расчётами (например, по урлу с хешем) — цены бы ему не было!Goodkat
05.08.2015 21:26+2Можно сделать довольно просто: упаковывать всё содержимое textarea в base64, например, и подвешивать к урлу — для не очень длинных вычислений пойдёт, потом ещё через какой-нибудь сокращатель ссылок прогонять, чтобы в твит влезало :)
Goodkat
06.08.2015 03:48+2Теперь и с юникодом работает, если вдруг кому понадобится в калькулятора юникод :)
Форк тут: calcu.github.ioGeorg
06.08.2015 18:22+2Не работает же
Goodkat
06.08.2015 18:30Работает же, смотрите в адресной строке — можете скопировать URL, вставить его в другом браузере, и там откроется тот же самый текст.
В первой версии юникод не «сохранялся» в адресной строке, так как btoa() работает только с ASCII.
Если без юникода, то URL будет короче.
А что юникодные имена переменных выдают ошибку в вычислениях, это претензии к автору оригинальной программы или Math.js, мопед не мой, я только возможность шаринга через URL прикрутил :)
ruikarikun
05.08.2015 21:03Добавьте в примеры логические операторы, а то первым делом хочется "&&" и "||" попробовать, а они не работают.
nightrain912
05.08.2015 21:49+1Офигенная вещь. Особенно, чтобы показывать небольшие расчеты в команде.
Жаль, в sublime text такого нет, не хотите и туда плагин добавить?
И вспоминая sublime — очень не хватает автодополнения названий переменных
roodz
05.08.2015 23:11+4Было бы здорово, если бы можно было выделять мышью не только выражение, но и результат, чтобы скопировать в буфер обмена.
Levsha128
06.08.2015 01:06+5Идея отличная, набросал плюсики/минусики для изменения чисел. Если завтра руки дойдут доведу до нормального состояния и запушу
grimalschi
06.08.2015 12:11+4Было бы круто вместо плюсиков-минусиков повсюду сделать возможность выделять числа и увеличивать их значения стрелочками вверх и вниз.
damat
07.08.2015 04:21причем я бы сразу предложил делать как в Nuke: там стрелочка меняет цифру _справа_ от курсора. Т.е. можно накрутить себе стрелками хоть тысячные, хоть десятки тысяч.
Bronx
06.08.2015 08:32+1Классная штука, «джва года ждал». Ещё бы многострочные выражения поддерживать (например по Shift-Enter), чтобы матрицы можно было построчно вводить. И прямую сылку на документацию по функциям math.js
ainu
06.08.2015 09:11+3А почему результат скопировать нельзя?
grimalschi
06.08.2015 12:05+1Теперь можно!
ainu
06.08.2015 13:00grimalschi.github.io/calque/index.html — вот тут по прежнему нельзя. Или изменения в коде?
sabio
06.08.2015 10:00+2Ещё можно добавить сокращённую запись: ln(x) = log(x, e) и lg(x) = log(x, 10)
И поддержку конвертации «составных» величин: m/s to km/h
А ещё было бы здорово — календарную арифметику: 2015-08-06 — 2015-08-03 и 18:00 — 204 m
silvansky
06.08.2015 10:07+1Осталось обернуть в MacGap и нарисовать иконку — будет клёвый десктопный калькулятор. Ну и копирование результата сделать…
gen4
06.08.2015 10:57очень круто!
но
Это намеренно, или баг?grimalschi
06.08.2015 11:06Намеренно. Вот полное описание синтаксиса: mathjs.org/docs/expressions/syntax.html
c4boomb
06.08.2015 16:15Копировать результат к сожалению нельзя из-за перекрытия textarea
grimalschi
06.08.2015 16:16Текстовые блоки с результатом можно выделять мышкой.
Удобно делать тройной клик по результату, чтобы он выделился.
Woodroof
06.08.2015 17:04fn(x) = x * fn(0) + 1
fn(2) // RangeError: Maximum call stack size exceeded
Увы :)
Vyazovoi
06.08.2015 19:36Попользовавшись один раз этим приложением, остаешься его любителем.
Спорное утверждение, я удалил Tydlig и оставил Soulver. Посмотрите ещё Calca, может больше понравится.
FreeMind2000
06.08.2015 21:06+1Порылся на оф.сайте — там есть тоже проект с удобным интерфейсом «Math Notepad»
Можно ссылки расшаривать, графики строить и т.д…
mathnotepad.com
По моему для студентов самое оно — и бесплатно! И дорабатывать/улучшать самим можно!!!
А тут на хабре постоянно рекламируют wolfram математику (платную), даже в ВУЗ ее закупили (недавно как раз обсуждали habrahabr.ru/company/wolfram/blog/262317)
Shablonarium
07.08.2015 10:11Я обычно для такого использую эксель, но для яваскриптеров наверное подойдет, хотя у них и так консоль есть. Я чего-то не понимаю.
Guria
11.08.2015 10:27в консоли нет реактивности. а тут меняешь первую строку — всё пересчитывается
Shablonarium
18.08.2015 14:09может, тогда консоль должна быть реактивной?
StreetStrider
19.08.2015 00:40+3Неожиданные реактивные выполнения команд, которые имеют побочные эффекты (например, удаляют какой-то файл на диске) — это последнее, что вы хотите от своей консоли.
antoo
08.08.2015 04:12А есть ли аналог Tydlig для Android? Данный сервис хороший, но печатать с телефона всё-таки не так удобно, как с клавиатуры.
serso
19.08.2015 13:55Вот, пожалуйста: Duktig
Использует math.js и умеет всё, что умеет math.js. Дополнительно можно писать комментарии (//) и заголовки (# и ##).
Для удобства ввода использовал кнопки из Калькулятора++, т.е. для ввода символа нужно тянуть кнопку вверх, вниз или вбок.
Пользуйтесь на здоровье.
Olegi4
19.08.2015 23:16Писал когда то для себя, для того чтобы расписывать небольшие бюдежты — составляющие стоимости. Может кому тоже полезно будет: aroup.com/stringcalculator
E_STRICT
Хорошо бы к операторам автоматически пробелы добавлять чтобы они с цифрами не слипались.