关于服务
翻译我在 OCaml 中创建快速且正确的系统,并且正是因为在负载下重要的因素而选择这门语言:严格的静态类型、详尽的模式匹配和接近 C 的性能。当编译器接受我的代码时,整个错误类别已经被消除,传递给用户的逻辑是我实际思考过的,而不是一堆乐观的假设。我从事编译器和语言工具、金融引擎(舍入错误不可接受)以及必须在周围一切变化时保持活力的后端工作。
我通过使无效状态无法表达来处理大多数任务。我用变体类型和记录建模问题领域,以便数据结构本身强制执行规则,模式匹配覆盖编译器已知的每种情况。这种习惯将模糊的需求转化为一种设计,使错误难以发生,并在功能数量增加时保持代码的诚实。我也认真对待性能:可预测的内存分配、紧凑的数据结构,以及在优化之前进行性能分析,以便在测量的地方改善数字,而不是在感觉缓慢的地方。
你将获得可读且文档齐全的模块、一组准确测试复杂路径的测试,以及一个同事可以在没有一周部落知识的情况下启动的构建。与现有 C 代码接口、将服务嵌入大型堆栈或从空仓库从头开始部署项目我都很自如。说出让你担忧的约束,我会首先围绕它设计系统。
— 编译器、解析器、领域特定语言和静态分析
— 低延迟金融和交易后端
— 通过类型和重构进行领域建模
— 与 C 接口、性能分析和调优
我通过使无效状态无法表达来处理大多数任务。我用变体类型和记录建模问题领域,以便数据结构本身强制执行规则,模式匹配覆盖编译器已知的每种情况。这种习惯将模糊的需求转化为一种设计,使错误难以发生,并在功能数量增加时保持代码的诚实。我也认真对待性能:可预测的内存分配、紧凑的数据结构,以及在优化之前进行性能分析,以便在测量的地方改善数字,而不是在感觉缓慢的地方。
你将获得可读且文档齐全的模块、一组准确测试复杂路径的测试,以及一个同事可以在没有一周部落知识的情况下启动的构建。与现有 C 代码接口、将服务嵌入大型堆栈或从空仓库从头开始部署项目我都很自如。说出让你担忧的约束,我会首先围绕它设计系统。
— 编译器、解析器、领域特定语言和静态分析
— 低延迟金融和交易后端
— 通过类型和重构进行领域建模
— 与 C 接口、性能分析和调优