我真的需要一门编程语言吗?


发布者 ourjs  发布时间 1388307786000
关键字 大话编程 

翻译: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吗?





回复 (5)
  • #
  • #1 木可停 1388402763000
    那么循环、枚举和顺序执行、参数传递怎么样呢
  • #2 我没什么好懂的 1388412148000
    @木可停

    这玩意太难懂了,注定是小众语言……
  • #3 诛笑靥 1388418224000
    语言就是表达方式,没有表达方式,你怎么表达你的程序逻辑呢
  • #4 雅泽 1388452458000
    孩子,你用emacs用疯了吧
  • #5 执子念 1388452530000
    分享图片
微信扫码 立即评论