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

相关文章

vue使用docxtemplater导出word

《vue使用docxtemplater导出word》docxtemplater是一种邮件合并工具,以编程方式使用并处理条件、循环,并且可以扩展以插入任何内容,下面我们来看看如何使用docxtempl... 目录docxtemplatervue使用docxtemplater导出word安装常用语法 封装导出方

Linux换行符的使用方法详解

《Linux换行符的使用方法详解》本文介绍了Linux中常用的换行符LF及其在文件中的表示,展示了如何使用sed命令替换换行符,并列举了与换行符处理相关的Linux命令,通过代码讲解的非常详细,需要的... 目录简介检测文件中的换行符使用 cat -A 查看换行符使用 od -c 检查字符换行符格式转换将

使用Jackson进行JSON生成与解析的新手指南

《使用Jackson进行JSON生成与解析的新手指南》这篇文章主要为大家详细介绍了如何使用Jackson进行JSON生成与解析处理,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 核心依赖2. 基础用法2.1 对象转 jsON(序列化)2.2 JSON 转对象(反序列化)3.

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.

Elasticsearch 在 Java 中的使用教程

《Elasticsearch在Java中的使用教程》Elasticsearch是一个分布式搜索和分析引擎,基于ApacheLucene构建,能够实现实时数据的存储、搜索、和分析,它广泛应用于全文... 目录1. Elasticsearch 简介2. 环境准备2.1 安装 Elasticsearch2.2 J

使用C#代码在PDF文档中添加、删除和替换图片

《使用C#代码在PDF文档中添加、删除和替换图片》在当今数字化文档处理场景中,动态操作PDF文档中的图像已成为企业级应用开发的核心需求之一,本文将介绍如何在.NET平台使用C#代码在PDF文档中添加、... 目录引言用C#添加图片到PDF文档用C#删除PDF文档中的图片用C#替换PDF文档中的图片引言在当

Java中List的contains()方法的使用小结

《Java中List的contains()方法的使用小结》List的contains()方法用于检查列表中是否包含指定的元素,借助equals()方法进行判断,下面就来介绍Java中List的c... 目录详细展开1. 方法签名2. 工作原理3. 使用示例4. 注意事项总结结论:List 的 contain

C#使用SQLite进行大数据量高效处理的代码示例

《C#使用SQLite进行大数据量高效处理的代码示例》在软件开发中,高效处理大数据量是一个常见且具有挑战性的任务,SQLite因其零配置、嵌入式、跨平台的特性,成为许多开发者的首选数据库,本文将深入探... 目录前言准备工作数据实体核心技术批量插入:从乌龟到猎豹的蜕变分页查询:加载百万数据异步处理:拒绝界面

Android中Dialog的使用详解

《Android中Dialog的使用详解》Dialog(对话框)是Android中常用的UI组件,用于临时显示重要信息或获取用户输入,本文给大家介绍Android中Dialog的使用,感兴趣的朋友一起... 目录android中Dialog的使用详解1. 基本Dialog类型1.1 AlertDialog(

Python使用自带的base64库进行base64编码和解码

《Python使用自带的base64库进行base64编码和解码》在Python中,处理数据的编码和解码是数据传输和存储中非常普遍的需求,其中,Base64是一种常用的编码方案,本文我将详细介绍如何使... 目录引言使用python的base64库进行编码和解码编码函数解码函数Base64编码的应用场景注意