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使用FastAPI实现大文件分片上传与断点续传功能

《Python使用FastAPI实现大文件分片上传与断点续传功能》大文件直传常遇到超时、网络抖动失败、失败后只能重传的问题,分片上传+断点续传可以把大文件拆成若干小块逐个上传,并在中断后从已完成分片继... 目录一、接口设计二、服务端实现(FastAPI)2.1 运行环境2.2 目录结构建议2.3 serv

Spring Security简介、使用与最佳实践

《SpringSecurity简介、使用与最佳实践》SpringSecurity是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架,本文给大家介绍SpringSec... 目录一、如何理解 Spring Security?—— 核心思想二、如何在 Java 项目中使用?——

springboot中使用okhttp3的小结

《springboot中使用okhttp3的小结》OkHttp3是一个JavaHTTP客户端,可以处理各种请求类型,比如GET、POST、PUT等,并且支持高效的HTTP连接池、请求和响应缓存、以及异... 在 Spring Boot 项目中使用 OkHttp3 进行 HTTP 请求是一个高效且流行的方式。

Java使用Javassist动态生成HelloWorld类

《Java使用Javassist动态生成HelloWorld类》Javassist是一个非常强大的字节码操作和定义库,它允许开发者在运行时创建新的类或者修改现有的类,本文将简单介绍如何使用Javass... 目录1. Javassist简介2. 环境准备3. 动态生成HelloWorld类3.1 创建CtC

使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解

《使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解》本文详细介绍了如何使用Python通过ncmdump工具批量将.ncm音频转换为.mp3的步骤,包括安装、配置ffmpeg环... 目录1. 前言2. 安装 ncmdump3. 实现 .ncm 转 .mp34. 执行过程5. 执行结

Java使用jar命令配置服务器端口的完整指南

《Java使用jar命令配置服务器端口的完整指南》本文将详细介绍如何使用java-jar命令启动应用,并重点讲解如何配置服务器端口,同时提供一个实用的Web工具来简化这一过程,希望对大家有所帮助... 目录1. Java Jar文件简介1.1 什么是Jar文件1.2 创建可执行Jar文件2. 使用java

C#使用Spire.Doc for .NET实现HTML转Word的高效方案

《C#使用Spire.Docfor.NET实现HTML转Word的高效方案》在Web开发中,HTML内容的生成与处理是高频需求,然而,当用户需要将HTML页面或动态生成的HTML字符串转换为Wor... 目录引言一、html转Word的典型场景与挑战二、用 Spire.Doc 实现 HTML 转 Word1

Java中的抽象类与abstract 关键字使用详解

《Java中的抽象类与abstract关键字使用详解》:本文主要介绍Java中的抽象类与abstract关键字使用详解,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录一、抽象类的概念二、使用 abstract2.1 修饰类 => 抽象类2.2 修饰方法 => 抽象方法,没有

MyBatis ParameterHandler的具体使用

《MyBatisParameterHandler的具体使用》本文主要介绍了MyBatisParameterHandler的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录一、概述二、源码1 关键属性2.setParameters3.TypeHandler1.TypeHa

Spring 中的切面与事务结合使用完整示例

《Spring中的切面与事务结合使用完整示例》本文给大家介绍Spring中的切面与事务结合使用完整示例,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考... 目录 一、前置知识:Spring AOP 与 事务的关系 事务本质上就是一个“切面”二、核心组件三、完