跳转至

科协文章

Vim 使用

Vim 是一个开源自由的、基于终端的文本编辑器(text editor)。

这是 Vim 系列的第一篇,在本文中我们会专注 Vim 的使用

C++内存模型和原子类型操作

聊聊C++并发编程中比较高级的无锁编程。

内存模型基础

对象和内存位置

  1. 每一个变量都是一个对象,包括作为其成员变量的对象。
  2. 每个对象至少占有一个内存位置。
  3. 基本类型都有确定的内存位置(无论类型大小如何,即使他们是相邻的,或是数组的一部分)。
  4. 相邻位域是相同内存中的一部分。

SFINAE 的发展史

说到 C++ 的模板技术,有一个术语不得不提:SFINAE (读作 Sfee-nay,Substitution Failure is Not An Error )。这个技术使得 C++ 这样的静态语言在一定程度上可以实现类似反射的功能 (可以根据类型的特征,表现出不同的行为)。在 C++20 标准概念库发布之后,许多运用到 SFINAE 技术的场景都可以被概念取代,这一古老的技术也许也将退出历史舞台。

当然,这不是一件值得悲伤的事情,这说明标准委员会在积极地寻求摆脱历史的包袱的途径。

这篇文章旨在向想要了解 SFINAE 的读者介绍这一技术的发展历史。

Lisp 入门指北

原子,列表和求值

在 Lisp 中,所有的以空格或是括号分隔的,都是一种叫做原子(atom)的元素(element),当然,原子也是可被分类的,确切的说,原子可被分为符号,这两种东西在 Lisp 的解释器里是不同的。符号是一个词法上的概念,可以类比设想一门自然语言中的名词。而值则是确切存在的自然客属物。一个符号可以指代值,值也就被符号指代,这些我们将会在稍后详细讲解。