1856_emacs_calc使用介绍与故事

2023-12-24 12:36

本文主要是介绍1856_emacs_calc使用介绍与故事,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Grey

全部学习内容汇总: GitHub - GreyZhang/g_org: my learning trip for org-mode

1856_emacs_calc使用介绍与故事

calc是emacs内置的一个计算器,可以提供多种计算表达方式并且可以支持org-mode中的表格功能。

主题由来介绍

我是因为想要了解org-mode的表格功能才来做calc的了解的,本来我的想法是简单浏览一下就过去。不过,一个简单的入门说明以及开发背后的信息故事让我觉得这段技术文档写得荡气回肠,因此还是把这部分信息做了一个整理。

资料整理过程说明

关于org-mode的表格相关文档链接: The Spreadsheet (The Org Manual)

上面这部分资料我还没有完全看完,因为calc是什么我还不是很熟悉,因此暂且还是先转头了解calc了。

GNU Emacs Calc Manual

上面这个链接是calc的手册,我这一次参考的主要是第一个章节的部分。

资料分析

  • 这个功能实现了HP-28、48系列计算器的很多功能。
  • 支持任意精度的浮点类型。
  • 支持符号运算
  • 支持调用GNUPLOT来绘制图形,这个软件如何用,后面可以做一个简单了解在判断是否需要掌握。
  • HP-28/48我并不熟悉,去查了一下其实是一种便携式的计算器。具体的一个效果如下:

  • hpcalc.org - HP Calculator Archive
  • HP的计算器所能够提供的,而是扩充了很多。别的不说,符号计算以及绘图的调用肯定是不在其中的。

    • 后面章节中的教程部分,有多达70多个例子。描述的风格是偏向于时间操作的。从掌握一个工具的角度考虑,这部分其实是值得研究理解的。首先看看calc可以做什么,哪些可以用于我自己的需求场景,针对可以用于我自己需要的部分做针对性的练习。之后,处理类似的问题应该就可以从容应对。
    • 至于参考手册,使用方式可以按照查询的方式来使用。不过,手册覆盖的内容应该是要有一定的了解。

  • 我为了能够有更好的文档阅读体验,通过自己的工具把html的信息转成了pdf以离线查看。其实,emacs的内部是有一个内置的calc文档的。可以通过C-x * t来打开教程的手册,也能够进行不同章节以及层级的跳转。
  • 在emacs的源代码中是有TEX的源代码的,可以通过源代码生成pdf文档。这个过程略微麻烦,倒不如我直接从html网页提取来的干脆了。

    • 这是calc支持的几种操作模式,主要是三种方式,第一种是照搬了惠普计算器的RPN模式;第二种是代数表达式的模式;第三种类似图形界面。
    • 关于什么是RPN,我还找了一份资料来看了下。其实就是惠普的计算器操作模式,逆向波兰标记方法。下面的链接中有介绍,也有一个可以在线体验的计算器。
    1. 链接: Reverse Polish Notation (RPN) Calculator

    1. Polish Notation (RPN) provides the quickest way to enter data in a calculator because it eliminates the need for parenthesis. It was made mainstream by HP when they implemented it in their famous programmable calculators. It is also very simple to code into a computer program. This is a simple online RPN calculator for you to try out. It's written in Javascript

How to use it

Unlike with a traditional calculator, you enter the parameters first, than the operator. For example, to calculate '20+50': type '20' -> Press Enter -> '50' -> Press '+'

  • The 'C' key deletes the input line.
  • The 'AC' key deletes the whole stack.
  • Use the 'POP' key to remove the last value entered and shift the stack down, and the 'SWAP' key to swap the last two elements.

    • calc提供了单位转换的功能
    • 还提供了日期计算的功能。
    • 关于这两个功能,感觉我大概率用不到。如果需要类似的功能,或许我大概率会使用python来处理一下。除非我是在org-mode中使用表格处理。不过,即使是使用表格处理,大概率也可能是直接使用 org-babel 的功能直接处理掉。

      • calc的标准接口模式其实就是RPN模式(可能用过HP计算器的会对此情有独钟,但是我觉得这种输入方式脱离了自然表达的流畅)

  • 如果退出之后,重新进入calc不会保持之前的对话模式。不过,也有对应的方法可以实现保存的效果。
  • 这里也额外提到了其他的calc的关闭方式。

  • 快速计算的模式可以提供比较直接的代数运算表达处理,我试了也支持符号运算。
  • 相比之下,我觉得这个可能会是一个比较实用的功能。其他的功能,由于操作的便捷性以及处理效率等方面,可能不会是我在自己工作流中的选择方案。

  • 这是前面提到的第三种接口模式,用文本的方式实现了一个类似图形的计算器,而且可以使用鼠标操作。
  • 这种方式足够新颖也足够神奇,但是想要快速融合到自己的工作流中肯定得费费心思。想来想去,总觉得不如临时切入到python之中处理。

  • 很多作品的设计驱动,最初其实都是来自于满足自我的需求。

  • 很多时候,软件设计的灵魂就是算法甚至说是数学理论。更不用说计算机设计本身,从这里看得出来作者这方面的功力深厚。

  • 这是让我觉得比较有意思的一段描述。很多时候,设计源自于生活。当然,也可能是生活中看到的其他人的设计。最初,我也搞不清为什么作者会考虑照搬一个HP的计算器,难道是他自己使用过这样的计算器用着很顺手?原来,这个创意来自于看到了朋友的计算器。

  • 一个好汉三个帮,calc的实现背后,也有数学高手的支持。

  • 在参考的资料中,出现了高德纳老爷子的TAOCP第二卷。看起来,这部巨著能够催生无限的力量,以后我也一定要把我自己买的翻一下。
  • 最后两部分的着色部分,让我有些吃惊。前面作者讲过,设计calc只是为了填补自己时间的空档期,希望能够占用两周的时间。而且,开发的时候他似乎对emacs lisp等并没有什么了解。看到前面的说明,我以为这个项目的开发肯定是时间巨长无比的。没想到,作者还是在两周内完成了这样的功能。而这里提到了一份emacs lisp的教程,并且还提到了RMS的emacs能够提供的帮助。然而,我终究还是怀疑。或许,这里两周完成的只是一个基本的操作版本,不然,需要耗费几百页来说明用法的一个工具,2周的时间做完那的确是神级的生产力了。

小结

以上就是对于calc初步的认识,设计的过程以及背后的故事十分有趣。本以为对calc的了解会是一看即过的,但是这种有趣的事情以及功能,还是值得整理到自己的笔记系统之中的。

这篇关于1856_emacs_calc使用介绍与故事的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/531796

相关文章

使用Python和OpenCV库实现实时颜色识别系统

《使用Python和OpenCV库实现实时颜色识别系统》:本文主要介绍使用Python和OpenCV库实现的实时颜色识别系统,这个系统能够通过摄像头捕捉视频流,并在视频中指定区域内识别主要颜色(红... 目录一、引言二、系统概述三、代码解析1. 导入库2. 颜色识别函数3. 主程序循环四、HSV色彩空间详解

Windows下C++使用SQLitede的操作过程

《Windows下C++使用SQLitede的操作过程》本文介绍了Windows下C++使用SQLite的安装配置、CppSQLite库封装优势、核心功能(如数据库连接、事务管理)、跨平台支持及性能优... 目录Windows下C++使用SQLite1、安装2、代码示例CppSQLite:C++轻松操作SQ

Python常用命令提示符使用方法详解

《Python常用命令提示符使用方法详解》在学习python的过程中,我们需要用到命令提示符(CMD)进行环境的配置,:本文主要介绍Python常用命令提示符使用方法的相关资料,文中通过代码介绍的... 目录一、python环境基础命令【Windows】1、检查Python是否安装2、 查看Python的安

Python并行处理实战之如何使用ProcessPoolExecutor加速计算

《Python并行处理实战之如何使用ProcessPoolExecutor加速计算》Python提供了多种并行处理的方式,其中concurrent.futures模块的ProcessPoolExecu... 目录简介完整代码示例代码解释1. 导入必要的模块2. 定义处理函数3. 主函数4. 生成数字列表5.

Python中help()和dir()函数的使用

《Python中help()和dir()函数的使用》我们经常需要查看某个对象(如模块、类、函数等)的属性和方法,Python提供了两个内置函数help()和dir(),它们可以帮助我们快速了解代... 目录1. 引言2. help() 函数2.1 作用2.2 使用方法2.3 示例(1) 查看内置函数的帮助(

Linux脚本(shell)的使用方式

《Linux脚本(shell)的使用方式》:本文主要介绍Linux脚本(shell)的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录概述语法详解数学运算表达式Shell变量变量分类环境变量Shell内部变量自定义变量:定义、赋值自定义变量:引用、修改、删

Java使用HttpClient实现图片下载与本地保存功能

《Java使用HttpClient实现图片下载与本地保存功能》在当今数字化时代,网络资源的获取与处理已成为软件开发中的常见需求,其中,图片作为网络上最常见的资源之一,其下载与保存功能在许多应用场景中都... 目录引言一、Apache HttpClient简介二、技术栈与环境准备三、实现图片下载与保存功能1.

Python中使用uv创建环境及原理举例详解

《Python中使用uv创建环境及原理举例详解》uv是Astral团队开发的高性能Python工具,整合包管理、虚拟环境、Python版本控制等功能,:本文主要介绍Python中使用uv创建环境及... 目录一、uv工具简介核心特点:二、安装uv1. 通过pip安装2. 通过脚本安装验证安装:配置镜像源(可

LiteFlow轻量级工作流引擎使用示例详解

《LiteFlow轻量级工作流引擎使用示例详解》:本文主要介绍LiteFlow是一个灵活、简洁且轻量的工作流引擎,适合用于中小型项目和微服务架构中的流程编排,本文给大家介绍LiteFlow轻量级工... 目录1. LiteFlow 主要特点2. 工作流定义方式3. LiteFlow 流程示例4. LiteF

使用Python开发一个现代化屏幕取色器

《使用Python开发一个现代化屏幕取色器》在UI设计、网页开发等场景中,颜色拾取是高频需求,:本文主要介绍如何使用Python开发一个现代化屏幕取色器,有需要的小伙伴可以参考一下... 目录一、项目概述二、核心功能解析2.1 实时颜色追踪2.2 智能颜色显示三、效果展示四、实现步骤详解4.1 环境配置4.