Category: 算法
逻辑测试系列 – 一种只有4种语句的编程语言 – (1) 这种只有4条语句的语言能做什么呢? 今天我们来定义一个DECR函数, 该函数就是把 变量 X 减一. DECR(X) { } 要求填写函数体, 使用 INCR, LOOP, ZERO, 和 ASGN 仅有的4个语句. 我们不妨想一下, 已知变量 X 是非负整数, 那么我们只需要 循环 X-1次, …
一般大公司都会有类似逻辑测试或者IQ测试题, 这些题考的并不是你对某种技能(编程语言)的掌握情况, 相反, 这是为了过滤掉比较笨的人, 因为……我觉得太笨的人写不了程序. 所以, 你选任何一种语言都是带有偏见的, 碰巧, 这里有一种语言, 只有4条指令, 处理所有的都是非负整数. 在这种语言里, 变量不需要定义, 但是使用前需要像 PYTHON一样赋值(或者清空), 这种语言好理解, 也能拿来当面试题. 清空变量 用 ZERO(X) 来把X变量清空, 比如以下 相当于 X=0 ZERO(X) 赋值 用 ASGN(X, Y) …
现在的编译器已经非常强大, 在大多数情况下, 开发者无需手动进行底层代码优化. 正如计算机科学家 Donald Knuth 所说: “过早优化是万恶之源”. Pre-optimisation is the root of evil. 过早关注细节优化, 反而可能导致代码复杂度增加, 降低可读性和可维护性. 与其过度纠结于微小的性能提升, 不如专注于编写清晰/可扩展的代码, 并在真正的性能瓶颈显现后, 基于数据进行针对性的优化. 现代软件开发更强调架构设计/算法选择和合理的数据结构, 这些往往比局部优化更能带来实质性的性能提升. 以下测试是基于: Benchmark. 计算PI的程序在这里能找到 源代码. 测试机器的性能配置如下: 16GB …