翻译:myownghost 作者:ayudasystems
我的老板希望我在产品中添加一个季节性回扣的功能。作为一名NB的黑客,我准备用C写需要用到的逻辑:
if (price > 100) { return 10; } else { return 5; }
等等,我们的IT部门不允许我使用如此底层的语言。我最终选择用Visual Basic .NET去写
If price > 100 Then Return 10 Else Return 5 End If
不过写这样的代码简直是对我智商的侮辱,我明白这两种语言都只是做了一个中间的过程。真正的目标还是让它们变成可执行文件。
因此语言的解释器会分析我所写代码的关键字,C编绎器会以大括号来分析代码段,VB.NET编绎器会通过关键字Then来检索。
这些标记会被编译成语义逻辑树去代表需要执行的逻辑:
( if ) / | \ / | \ ( > ) ( 10 ) ( 5 ) / \ / \ ( price ) ( 100 )
然后我想说:这个逻辑就是我刚开始想表达的东西。而且我并不是很关心我使用的是哪种语言,最终结果都会生成一颗同样的语义树。那么我真的需要一门编程语言吗?也许我可以简单把这颗树用代码写出来,然后避免使用语言带来的问题,只需要把这棍颗树整理成几行代码……
方法是,父节点定为P1,然后它的两个子节点为C1和C2,这样的他们的代码就像(P1 C1 C2),这种方法可以递归实现。
然后我们的树就被写成了:
(if (> price 100) 10 5)
然后我明白了,这玩意不就是LISP吗?
这玩意太难懂了,注定是小众语言……