「翻译」复式记账法 (The Double-Entry Counting Method)

翻译自 The Double-Entry Counting Method 介绍 本文是一份关于复式记账的简要介绍,从计算机科学家的角度撰写。它试图以尽可能简单的方法解释基础记账,简化会计中通常涉及到的某些特殊性。它也代表了 Beancount 的工作方式,并且对所有使用纯文本记账的用户都应该适用。 请注意,我不是会计师,在编写此文档过程中,我可能使用与传统会计培训教授略有不同或不常见的术语。我给自己授权创造一些新的、甚至是不寻常的东西,以便将这些想法尽可能简单明了地解释给那些对它们不熟悉的人。 我认为每个高中生都应该在高中阶段学习复式记账法,因为这是一项极其有用的组织技能,并且我希望这篇文章可以帮助将其知识传播到专业圈以外的领域。 复式记账的基础 复式记账法只是一种简单的计数方法,只有一些简单的规则。 让我们从定义账户的概念开始。账户是一种可以容纳物品的东西,就像一个袋子。它用于计算和累积物品。让我们画一条水平箭头来直观地表示随着时间推移账户中不断变化的内容: 左侧,是描述过去,而右侧则是不断增长的时间:现在、未来等。 现在,让我们假设账户只能包含一种东西,例如美元。所有的账户都以零美元的空内容开始。我们将称账户中单位数量为账户的 余额 (Balance)。请注意,它代表了特定时间点上其内容的情况。我会使用一个数字在帐户时间轴上方绘制余额: 账户的内容会随着时间而变化。为了改变账户的内容,我们必须向其添加一些东西。我们将这个添加称为对账户的记账,我会在该账户的时间轴上画一个带圈数字来表示这种变化,例如:向该账户中添加 100 美元: 现在,我们可以在记账后绘制更新后的账户余额,并在其后面加上另一个小数字: 账户加上 100 美元后,余额现在为 100 美元。 我们也可以从账户中减去一定金额。例如,我们可以减去 25 美元,这样账户余额就变成了 75 美元: 如果我们减去的金额超过账户余额,账户余额也可能变为负数。例如,如果我们从该账户中取出 200 美元,则余额现在变为 -125 美元: 账户中包含负数是完全正常的。请记住,我们所做的只是计数。很快我们会看到,有些账户在它们的时间轴上将保持负余额。 报表 (Statement) 值得注意的是,我在前一节中写下的时间线记账与机构为每个客户维护并通常通过邮件发送的纸质账户报表类似: 时间 描述 金额 余额 2016-10-02 … 100.00 1100.00 2016-10-05 .. -25.00 1075.00 2016-10-06 .. -200.00 875.00 最终结余 875.00 有时候金额栏会被分成两个,一个显示正数,另一个显示负数: ...

七月 4, 2023 · 4 分钟 · Lex Cao

Reactive Streams 规范翻译

翻译自 Reactive Streams Reactive Streams 注:Reactive Streams 直译为响应式流,这里保留英文原词。 Reactive Streams 是一项提议,旨在为具有无阻塞背压的异步处理流提供标准。这包括针对运行环境(JVM 和 JavaScript)以及网络协议的努力。 Reactive Streams 是为了提供一个无阻塞背压异步流式处理的标准的一个提议。 JDK9 java.util.concurrent.Flow 在 JDK 9 的 java.util.concurrent.Flow 中可用的接口,分别为 1 :1 语义上各自对应于 Reactive Streams。这意味着将会有一个迁移期,库(Libraries)将采用 JDK 中的新类型,但是由于库的完全语义等效以及 Reactive Streams <-> Flow 适配器库和直接与 JDK Flow 类型兼容的 TCK,因此这个迁移期预计会很短。 如果你有兴趣了解有关 JVM Reactive Streams,请阅读此 文章 问题 在异步系统中,处理流数据(尤其是数量未先确定的的“实时”数据)需要特别注意。最突出的问题是,需要控制资源消耗,这样快速数据源不会压垮流目的地。为了在并行网络主机或一台多核机器上并行地使用计算资源,需要异步。 Reactive Streams 的主要目标是管理跨异步边界的流数据交换(考虑将元素传递到另一个线程或线程池),同时确保接收方不强制缓存任意数量的数据。换句话说,背压是此模型中不可或缺的一部分,以使在线程之间进行调节的队列收到限制。如果背压的通信是同步的,则异步处理的好处将被抵消(另请看 Reactive Manifesto),因此必须注意对 Reactive Streams 实现的所有方面进行完全无阻塞和异步行为授权。 本说明书旨在允许创建许多符合要求的实现,这些实现通过遵守规则将能够平滑地互相操作,并在流应用程序的整个处理图中保留上述好处和特性。 范围 Reactive Streams 的范围是找接口、方法和协议的最小集,这些接口、方法和协议将描述实现目标——无阻塞背压的异步处理流,所需要的操作和实体。 端用户 DSLs(领域特定语言)或者协议绑定 API(应用编程接口)有目的地被排除在范围之外,以鼓励和支持可能使用不同编程语言的不同实现,以尽可能地遵循其平台的习惯用法。 我们预计,接受这个 Reactive Streams 规范以及它的实现经验将共同导向广泛的集成,例如,包括将来 JDK 版本中的 Java 平台支持或者在将来的网页浏览器中网络协议的支持。 工作组 基本含义 基本含义定义了如何通过背压来调节流中元素的传输。元素的传输方式,传输过程中的表现形式或者背压的信号发送方式均不属于本规范的一部分。 ...

十一月 17, 2019 · 1 分钟 · Lex Cao