Fork me on GitHub

楚权的世界

Seek the wonder of life.

从异步与并发编程兴起以来,学术界与工业界提出了非常多的解决方案,本文将要介绍的 Future 和 Promise 正是其中的两种解决方案。Future 和 Promise 的实现理念非常相似,两者在发展过程中相互借鉴,相互融合。目前,很多流行的语言和框架都引入了 Future 和 Promise 的概念,如:JavaScript、Node.js、Scala、Java、C++ 等。

阅读全文 »

最近希望在业务中实现一套基于 AOP 的埋点方案,调研过程中,我花了些时间阅读了一下 Aspects 的源码,对于 Aspects 设计有了一些更深入的理解。因此,通过本文记录我在阅读源码后的一些收获和思考,以供后续进行回顾。

阅读全文 »

在传统的基于 闭包 的异步编程中,经常会出现 地狱嵌套 的问题,这使得高度异步的代码几乎无法阅读。Promise 则是解决这个问题的众多方案之一。

阅读全文 »

概述

通过第 1 章至第 6 章,我们实现了一门简单的函数式编程语言。在这个过程中,我们学习了解析器相关的技术,如何构建并表示 AST,如何构建 LLVM IR,如何对生成代码进行优化,如何使用 JIT 进行编译等等。

阅读全文 »

概述

在前 4 章中,我们介绍了 Kaleidoscope 语言的实现,包括支持 LLVM IR 代码生成、优化器、JIT 编译器等。然而,目前我们设计的 Kaleidoscope 的功能非常简单,除了函数调用和返回外,甚至不包含控制流的能力。这意味着我们在代码中无法使用条件分支,因此极大地限制了编程语言的能力。本章,我们将对 Kaleidoscope 进行扩展,使其支持 if/then/else 语句和 for 语句。

阅读全文 »

Kaleidoscope

本教程我们将从零开始设计一门玩具版编程语言——Kaleidoscope。Kaleidoscope 支持函数定义、条件语句、数学运算等。在教程的各个章节中,我们将对 Kaleidoscope 的语言特性进行扩展,支持 if/then/else 语句、for 循环、自定义操作符、JIT 编译、调试信息等。

阅读全文 »

前言

最近一直在学习编译原理,为了加深对于理论的理解,期间参考 LLVM 官方的相关教程进行实践,设计并实现一款简易的编译器。

阅读全文 »

在编译过程中,词法分析器的主要作用是将代码文件的文本内容 token 化(又称扫描),token 化后再通过语法分析器进行语法分析,构造语法树,从而完成后续的一系列操作。

阅读全文 »
0%