-
2024-11-28 #lan
Scheme是一种Lisp方言,在Scheme中可以采用
continuation
来实现非常强大的程序流控制,而且代码异常简洁优雅,下面介绍并讲解一种有栈协程的实现。先贴代码(改编自The Scheme Programming Language, 4th Edition p.64):
(define lwp-list '()) (define lwp (lambda (thunk)
-
2024-11-09 #lan
译者按:这是一篇通俗易懂的Lisp入门小品文,原文刊于《科学美国人》,你可以在这里找到原文的副本,以下为此文的中文翻译(LLM+人工细修)
在80年代中期,当我翻阅室友收藏的一系列《科学美国人》旧刊时,我遇到了道格拉斯·霍夫斯塔特写的这篇介绍Lisp的文章。当时我觉得它非常迷人,并且在这里(稍微非法地)提供给新一代Lisper以启发他们。
为了证明了Lisp的永恒性,如果您安装了以下别名,您仍
-
2024-06-04 #lan
理论
- 并行和串行:是否有执行次序
- 一个内核启动一个网格,一个网格由多个线程块组成,同一线程块内包含多个线程,同一网格中共享相同的全局内存空间,同一线程块内的线程可以通过同步和共享内存实现协作,不同线程块内的线程不能协作。
- CPU是MIMD,而GPU是SIMT
- SM(流多处理器)相当于一个CPU核,但每次同时计算多个任务
- 任务执行:锁步思想
lock-step
,一个SM中的N个SP核,每个SP输入
-
2024-05-08 #lan
做rCore时的随手备忘 施工中🚧
Rust
所有权
- 堆上的变量才需要考虑所有权,因为栈上的变量直接深拷贝了。
- 可变引用
&mut
同时只能存在一个 - 可变引用与不可变引用不能同时存在
fn main() { let mut s = String::from("hello world"); let word = first_word(&s);
-
2024-02-16 #lan
为了开发Steam VR平台上面的东西,不得不在Windows系统上使用Visual Studio进行开发。Visual Studio上面很多配置都是需要去层层菜单里面找,用鼠标去点UI来配置(除非你还想直接碰xml这种玩意儿),这对于习惯了Linux上使用代码,CLI等等配置环境的我来说,感到非常不适应,踩了很多坑,在此总结一下这种 ~~UI操作构建系统~~ 的要点。
下面具体的菜单操作都是以
V
-
2024-01-16 #lan
新基础类型
- 虽然随着C99加入了
long long
类型而且编译器很早便支持了这个类型,但是直到C++11才正式加入标准 UTF-8
是一种可变长度的编码方法,一般直接用char
类型处理(C++20加入了char8_t
以和普通字符区分). 而UTF-16
和UTF-32
编码则分别对应char16_t
和char32_t
.
命名空间
- 可以内联命名空间,
inline namespace V2
,利用此特
- 虽然随着C99加入了
-
2023-12-24 #lan
- Tour of Scala,中文版
- Scala Online Playground
- A Compact Benchmark in C++, Java, Go, and Scala from Google(PDF)
Basic
// Types // Any is the supertype of all types, Nothing is the subtype of all types /
-
Types
Data
is the root of the Chisel type system.UInt
andSInt
extendBits
虽然chisel能够自动推断宽度,但是最好还是指定一下宽度(如
4.W
)UInt () UInt (8.W) 3.U(4.W) // An 4-bit constant of 3
We will need Scala vars to write
-
又是一个没写多少代码,但是却花了半个晚上思考程序OOP结构的夜晚,我发现这是在浪费时间,而且会让你的大脑很累,感觉昏昏沉沉的.所以我痛定思痛,写下下面的一些感悟总结. 不一定对,而且随着时间变化,一些观点也会改变吧.
- OOP不是必要: 当需要实例化多个相同类型的对象时,使用OOP来组织程序是很好的,但当整个程序中只存在一个实例(单例)的时候,面向对象设计得到的收益并不是很大.
- C++不是必要: