QB64 搜索技巧 核手提箱 文字记录 海洋云增白 开源地图 Bliss AI 搜索答案 深海沉船 自由职业 policy 小团队 颈挂空调 Chumby 个人电脑 极端主义 团队 世界 PostgreSQL AI工具 证券 DirectX 防溢 DrawingPics Zulip 儿童读物 化学 连续滚动 代码审查 三菱电机 更多

软件依赖的基本法则 (matklad.github.io)

文章指出,软件的规范源码应该包含所有依赖项内容的校验和,并列举了几个例子:源码管理应该使用类似Git的内容寻址版本控制系统;第三方库的依赖关系应该使用包含校验和的锁文件管理;编译器的哈希值也应该包含在锁文件中,以便验证编译器的可靠性。作者认为,校验和本身并不重要,重要的是获取校验和的过程能够促使开发者明确依赖项、自动化下载依赖项、确保依赖项构建的可重复性以及隔离项目依赖项,最终使得软件开发变得更容易。

Rust 的丑陋语法 (matklad.github.io)

这篇文章探讨了Rust语法,作者认为人们对Rust语法的抱怨实际上是对其语义的反对。文章以一个读取文件的Rust函数为例,展示了其语法复杂性,并尝试用其他语言风格改写,以期找到更简洁的表达方式。作者进一步探讨了简化Rust语义的可能性,例如移除泛型、借用和错误处理机制,最终得到了一个更简洁但牺牲了性能和安全性的版本。

面向程序员的原始递归函数 (matklad.github.io)

本文讨论了图灵完备性的概念,并指出在实践中,非图灵完备性并不像人们通常认为的那样重要。作者通过介绍有限状态机、图灵机和原始递归函数,证明了任何在图灵机上运行并在原始递归函数时间内终止的算法都可以用原始递归函数实现。文章还探讨了良好配置语言的特性,包括确定性、定义明确、纯洁性、安全性、沙盒化和简单性,并指出非图灵完备性本身并不能保证这些特性。

我是如何使用 Git 工作树的 (matklad.github.io)

文章介绍了作者如何利用 Git 工作树来管理并发任务,而不是将其作为分支的替代品。作者创建了五个工作树,分别用于查看原始代码、编写代码、审查代码、运行模糊测试以及处理其他临时任务。这种方法提高了作者的编码效率,并能更好地管理并发任务。

如何正确地测试并发数据结构 (matklad.github.io)

文章介绍了一种测试并发数据结构的方法,通过模拟并控制线程的执行顺序,实现了对并发操作的精细化测试。作者首先解释了传统并发测试的不足,然后逐步推导了一种基于“管理线程”的测试方法,并用一个简单的计数器示例演示了如何使用该方法发现并最小化并发错误。文章最后还探讨了如何将该方法扩展到更复杂的场景,例如模拟弱内存模型和穷举所有可能的交错执行路径。

正则、递归、受限 (matklad.github.io)

本文探讨了如何使用一种称为“递归受限正则表达式”的新形式来描述算术表达式。作者首先指出现有语法(如上下文无关文法和解析表达式文法)在描述表达式优先级和结合性方面的局限性。然后,作者提出了一种使用正则表达式来定义树形结构的方法,并通过添加约束规则来消除歧义。最后,作者提出了一个问题:是否存在一种算法可以判定任意递归受限正则表达式是否具有歧义性。