Войти в систему

Home
    - Создать дневник
    - Написать в дневник
       - Подробный режим

LJ.Rossia.org
    - Новости сайта
    - Общие настройки
    - Sitemap
    - Оплата
    - ljr-fif

Редактировать...
    - Настройки
    - Список друзей
    - Дневник
    - Картинки
    - Пароль
    - Вид дневника

Сообщества

Настроить S2

Помощь
    - Забыли пароль?
    - FAQ
    - Тех. поддержка



Пишет dibr ([info]dibr)
@ 2012-07-28 20:53:00


Previous Entry  Add to memories!  Tell a Friend!  Next Entry
прогресс неумолим
     Когда-то давно, совсем дохрена лет назад, повадился я использовать GWBASIC как "калькулятор", типа вот так вот. А что - два на два умножить можно, программу "в одну строчку" можно выполнить прямо сразу, а если надо - то можно и не в одну строчку, язык же. И идеология эта "курсором можно свободно бегать по всему полю, «enter» выполняет строку" оч. удобной оказалась. Замечу, кстати, что последний копирайт на скриншоте датирован 1987 годом. "Динозавров видел, совсем недавно, да".
     Но прошли десятилетия, я поставил себе windows 7, и GWBASIC не то чтобы совсем перестал работать - он вполне работал под копией WinXP, запущенной в виртуальной машине - но, несмотря на весь прогресс технологий, я всё-таки немного стесняюсь запускать VM, под VM - операционку, а под ней - среду программирования, только чтобы посчитать 2*2. И я стал искать, чем можно заменить GWBASIC.
calc     Первым попробовал "блокнот-калькулятор" (см. скриншот справа). Симпатичный минималистичный интерфейс, "ничего лишнего но всё необходимое" - но полное непонимание экспоненциальной записи меня как-то... удивило, в-общем. Тем более, оно довольно часто нужно - ну там, подсчитать число ангелов на острие иголки, зная размер ангела в нанометрах, и диаметр острия в микрометрах. В-общем, "не склалось".
     chistacalcТогда попробовал "чиста калькулятор" (см. скриншот слева). Мощнейшая вещь, с кучей функций (90% которых я и не пытался понять), со встроенным языком, при этом "чисто посчитать" тоже умеет - в-общем, идеальное решение. Вот только... через некоторое время после запуска - перестаёт понимать десятичные дроби. И дело не в "точке или запятой" в системной локали - я пробовал и так и так, программа кириллическая, значит должна быть в курсе, да и по косвенным признакам он всё равно преобразует числа к единому виду перед разбором. Однако - не помогает.

     Так это я к чему вообще.
     Посоветуйте что-нибудь легковесное (маткады с матлабами не хочу), "блокнотоподобное" (чтобы бегать курсором куда хочу), и чтобы считать умело? Штатный виндовый calc, конечно, считает, но до гибкости GWBASIC там очень далеко...


(Читать комментарии) - (Добавить комментарий)


[info]dibr@lj
2012-07-29 10:07 (ссылка)
Упс. Оно, оказывается, пересчитывает не только по "энтеру", но и при любом уходе со строки, и пересчитывает не только текущую строку, но все строки.
А можно чтобы пересчёт делался только по "энтеру", и пересчитывалась только текущая строка? В исходнике я пока несколько запутался :-)

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]david_m@lj
2012-07-29 11:23 (ссылка)
Добавил "_".

Но ведь от текущей строки могут зависеть все последующие. Например, если там переменная вводится, ну или используется "_".

Или я не понимаю каких-то кейсов? В каком случае нужно, чтобы текущая строка пересчиталась, а все последующие — нет?

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]dibr@lj
2012-07-29 15:12 (ссылка)
"_" я комментом раньше сам добавил (в сохранённой на диск копии, естественно), это место в коде более-менее очевидно :-)

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

С другой стороны - я ведь не могу взаимодействовать из этого калькулятора с внешним миром (писать в файл, например)? А значит, "лишнее" выполнение того, что я выполнять не просил, мешать вроде бы не должно - только нервировать на уровне "ой, оно обновилось, а я его не просил". Тогда - у меня пока не получается придумать сценарий использования, где такой "автопересчёт" создавал бы реальные неудобства (вроде бы, если следующая формула зависима - её всё равно потом будут пересчитывать, а если нет - то и неудобств нет).
Но это не значит, что после какого-то времени использования я на такие неудобства не наткнусь :-)

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]david_m@lj
2012-07-29 15:20 (ссылка)
Просто странно же будет выглядеть:
a = 2
2
a + a
4

А потом:
a = 4
4
a + a
4

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]dibr@lj
2012-07-29 15:46 (ссылка)
Да легко. Могу такой скриншот из бейсика сделать :-) А "странно" или "не странно" - вопрос привычки :-)

(Ответить) (Уровень выше)


[info]david_m@lj
2012-07-29 15:21 (ссылка)
Мне как раз казалось, что смысл в том, чтобы сделать какой-то расчёт, потом пошевелить в начале программы какой-то параметр — и увидеть сразу, что получится. Иначе зачем править строки в начале?

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]dibr@lj
2012-07-29 15:50 (ссылка)
Повторюсь: мне это "непривычно" (оценочное суждение, основанное на личной предыстории), а логик поведения тут может быть две, какую выбрать - вопрос неоднозначный.

Ну, и - мне не удалось придумать вариант, когда привычное мне поведение (пересчёт только ручками) давало бы какой-то бонус, поэтому против варианта "всё пересчитывается само" аргументированно возразить не могу. Но - непривычно :-)

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]david_m@lj
2012-07-29 17:45 (ссылка)
Всё-таки что-то во мне противится убиранию полного пересчёта:) Не буду пока делать.

А вообще, может его и в самом деле допилить до какого-никакого продукта? Добавить загрузку/сохранение файлов, например…

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]dibr@lj
2012-07-29 18:13 (ссылка)
Из интереса проверил, а что у других-то. "Чиста калькулятор" не пересчитывает, "калькулятор-блокнот", оказывается, пересчитывает ("_" там нет, но переменные использовать можно). Ну, а если я только сейчас на это обратил внимание - значит, проблемы это не составляет :-)

Оно и так уже вполне продукт, только начальное заполнение строчек убрать, да какую-нибудь минимальную справку приделать (хотя бы двумя строчками - "это яваскрипт, значит можно всё что есть в яваскрипте" и "есть специальная переменная _, юзать так-то").
А насчёт файла я не очень понял. Яваскрипт вообще даёт доступ к файлам? Если да - то теоретически можно допилить до полноценного языка (пусть пользователь сможет программы писать и файлы читать-писать, в самом деле), но не факт что результат стоит усилий. Ну, или научить просто импортировать-экспортировать файлы данных - это проще, хотя и не факт что окажется востребованным (для обработки файлов интуитивно хочется использовать "что-нибудь посерьёзнее" чем скрипт в браузере).
А запоминать историю вычислений между запусками - можно и без файлов, в куках, например :-)

(Ответить) (Уровень выше)


(Читать комментарии) -