0%

单元测试框架是一种工具或库,用于帮助开发人员创建、组织、运行和报告代码的单元测试。
单元测试是指对软件系统中最小的可测试单元(通常是一个函数或方法)进行的验证测试。

阅读全文 »

一 宏展开期和运行期

编写宏就是在编写那些将被编译器用来生成代码并随后编译的程序,只有当所有宏都被完全展开并且产生的代码被编译后,程序才可以实际运行。宏运行的时期被称为宏展开期(macro expansion time),这和运行期(runtime)是不同的,宏展开期无法访问运行期的数据。

阅读全文 »

其余自Lisp的许多编程思想,从条件表达式到垃圾收集,都已经被吸取进其他语言,但Lisp的宏系统却始终使它保持了在语言风格上的独特性。Lisp的宏和大多数其他语言中的也叫宏的东西是完全不一样的,要完全认识Lisp中的宏系统,就需要重新看待它。

阅读全文 »

uiop:run-program 是 Common Lisp 中 UIOP (Utilities for Implementation- and OS- Portability) 库的一部分,用于在 Lisp 环境中执行外部程序和命令。这个函数提供了一个强大的接口来启动外部进程,并可以处理进程的输入、输出和退出状态。以下是一个关于如何使用 uiop:run-program 的入门教程:

阅读全文 »

Common Lisp 支持两种类型的变量:词法变量(lexical)和动态变量(dynamic)

一 变量的基础知识

和常见的编程语言一样,Common Lisp中的变量是一些可以保存值的具名位置,但在Common Lisp 中,变量并不像在C++或Java那样带有确定的类型,一个变量可以保存任何类型的值,并且这些变量带有可用于运行期类型检查的类型信息。因此,Common Lisp是动态类型的,如果将某个并非数字的对象传给了+函数,那么Common Lisp将会报类型错误。

阅读全文 »

The Rust Slice Type

Slice is a kind of data structure that store heap memory, it contains two fields, one representing the memory address and the other representing the length. Our most common string literal is a kind of slice.

Slice let us reference a contiguous sequence of elements in a collection rather than the whole collection. A slice is a kind of reference, so it does not have ownership. And the slice ensures that the data it references is always valid.

String Slices

A string slice is a reference to part of a String, and it looks like this:

1
2
let s = String::from("hello world");
let world = &s[6..11];
阅读全文 »

导读

学习程序语言根本大法是一回事;学习如何以某种语言设计并实现高效程序则是令一会事。

一组明智选择并精心设计的 classes,functions 和 templates 可使程序编写容易,直观,高效,并且远离错误。

1 explicit

default 构造函数:一个可被调用而不带任何实参的函数,这样的构造函数要不没有参数,要不就是每个参数都有缺省值。

阅读全文 »

移位指令是一组经常使用的指令,它包括移位指令(含算术移位指令,逻辑移位指令),循环移位指令(含带进位循环移位指令),其作用就是将目的操作数的所有位按操作符规定的方式移动指定的位数。

ARM 中的移位指令如下:ASR, LSR, LSL, ROR和 RRX,直接写入目标寄存器中。

阅读全文 »

第一次认识 Lisp 是通过《黑客与画家》这本书,书中对 Lisp 赞不绝口,声称现在编程语言的发展也只是赶上了 1958 年的 Lisp 语言的水平。很多人就有疑问了,一个诞生于 1958 年的语言,计算机技术不是日新月异吗,为什么 Lisp 还没有过时?书中是这样说的,Lisp 是数学,数学是不会过时的。在书的作者 Paul Graham 的力荐下,对 Lisp 充满了浓厚的兴趣,就开始了 Lisp 的学习之旅。由于之前学习的繁忙,加上 Lisp 在”主流编程界” 好像并不受待见,我也没有一直持续学习,而是学习更加受欢迎的 C,Python 等语言,毕竟以后是要吃饭的嘛。在大学生涯的最后一段时间里,计算机基础知识学的越多,越发觉得编程语言的有趣之处,也明白了所有编程语言其实都是图灵等价的,即一个功能可以用任何编程语言实现,只不过是实现方式不一样。编程语言学的越多,越来越感受到 Lisp 本身设计的优雅,怀着一份好奇心,我又重新走进了 Lisp 的世界。

阅读全文 »

思路

本题是考察栈和队列的常见问题。要解答本题必须知道栈的队列的基本原理。

栈:一种后进先出的数据结构,想象一个单车道,汽车一辆接一辆往里开,最先进入的在最里面,最后进入的在最外面,当需要出去的时候,最后进入的先出,最先进入的最后出去。符合类似进出原则的数据结构就叫做栈。 往栈中存入数据也叫压栈,取出数据也叫弹栈。

队列:先进先出的数据结构。顾名思义,就像排队一样,最先进入在队头,后进入在队尾,队头先出队,队尾后出队。往队列中存入数据叫入队,往队列中取数据叫出队。

阅读全文 »