免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: asuka2001
打印 上一主题 下一主题

命名难,难于上青天 [复制链接]

论坛徽章:
0
161 [报告]
发表于 2012-02-16 18:19 |只看该作者
回复 152# OwnWaterloo


    这个就不用说出来了,大家都懂

论坛徽章:
0
162 [报告]
发表于 2012-02-16 18:24 |只看该作者
回复 153# OwnWaterloo


    html只是一种,现在有很多这种可嵌入语言,但是这些只是我说的第一种形式。还有一种形式是调用相应的编译器生成native代码,直接在环境中执行。甚至可以提供一种所有语言的中间代码,定义一个通用标准,让各种语言都能转换成其形式而执行(类似java的字节码,python可以编译成java字节码在jvm里执行)总之如此等等,我想法可能也不太成熟,没有去仔细想过。

论坛徽章:
0
163 [报告]
发表于 2012-02-16 18:33 |只看该作者
本帖最后由 walleeee 于 2012-02-16 18:34 编辑

回复 155# OwnWaterloo


    哈哈,看了楼下sw说的,我给你推荐一个文章,绝对是lisp以及程序设计语言最经典的文章之一(耐心看完)

ps.
这个就是lisp的设计原理了。

recursive.pdf

214.42 KB, 下载次数: 10

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
164 [报告]
发表于 2012-02-16 18:37 |只看该作者
starwing83 发表于 2012-02-16 08:00
你说的很对,f(x)和(f x)差不多。
问题是,C++里,
{
   ....
   int i;
   ...
}

似乎和lisp里的:

(begin
    ....
    (let ((i 0))
        ....
    )
)

差很多吧?(后者有一半代码被多缩进了一层)。

lisp的算术运算那个样子,我忍了,可是控制结构包括变量声明反正所有结构话的东西不管是啥全部需要添加一层括号我受不了哇。


卫生宏与人肉编译你以前经常,逮住机会就吐槽……
先说一些小问题。

1. 这至少不会比C89更差,对不?
完全可以let一堆空值,下面在set嘛……
只用let,不用let*是有好处的: http://www.scheme.com/tspl3/start.html#./start:h9
不过我认为这又是在人肉编译了……

2. 顶层缩进
无论let导致的缩进有什么好,或者不好,对我来说反正已经被C89给蹂躏过了…… 习惯了……
我受不了的是这种:

  1. (eval-when-compile
  2.   (definline ...)
  3.   (defmacro ...) )
复制代码
但反正缩进又不是强制的,这种就没缩进了。
cl与clojure的module机制也不会要求嵌套了……
再想想C++的namespace,你是怎么处理的?

3. unwind-protect才是真让人想死……

4. 所以这些问题不都正在想办法解决么?
block+C++式的随处丢变量声明,C++式的随处注册回滚函数,末尾许多反括号,还有html/tex那种按名字匹配……
只要维持语言由语言内建的数据表现这一基本原则,其他都是可以改的……

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
165 [报告]
发表于 2012-02-16 18:41 |只看该作者
starwing83 发表于 2012-02-16 08:00
回到lisp,其实元编程和实际编程有一个相同的地方:都是计算。而lisp仅有一种计算:apply,因此自然可以结合在一起。而其他的语言,比如C,至少就有算术计算啦,指针计算啊,神马乱七八糟的各种计算,这就很不好办了。比如编译时肯定是没有指针的——有指针也是肯定不会让你改的,不然你写个C代码,编译的时候就能hack你的系统= =


就现在我就有好几种方法让C编译器挂掉。
lisp的read-macro也是很乱七八糟的。
你还是那种思维:无论它用对了会不会带来很好的效果,只要它用错了会导致很糟糕的效果,就要避免。

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
166 [报告]
发表于 2012-02-16 18:43 |只看该作者
starwing83 发表于 2012-02-16 08:00
如果C语言不再有if语句,while语句,for语句,而是if函数while函数for函数,这世界上估计没多少人受得了。这就是“表现形式”,不同的语法语义采用不同的表现形式恰恰是尊重程序员时间的表现。lisp只有一种表现形式(调用),最终的结果就是,苦逼的程序员们被迷失在一堆括号里了……


反问一句?为什么那些东西必须是语句?为什么要区分语句与表达式? 是因为C(Fortran)这样设计了? 有习惯之外的理由么?
这问题我们私下其实已经讨论过了。

if函数中枪的不仅仅是lisp,至少haskell也中枪了。

PS:大约在09年,那时候是你支持将if弄成函数,而我不支持。现在怎么反过来了。

论坛徽章:
0
167 [报告]
发表于 2012-02-16 18:44 |只看该作者
回复 156# starwing83


   

论坛徽章:
0
168 [报告]
发表于 2012-02-16 18:45 |只看该作者
starwing83 发表于 2012-02-16 08:00
可怜的孩子,这两个都不是我想吐槽的部分……

我先整理一下:


这个的确很蛋疼

论坛徽章:
0
169 [报告]
发表于 2012-02-16 18:47 |只看该作者
回复 157# 幻の上帝


    lisp就像一个逆波兰计算器。

论坛徽章:
0
170 [报告]
发表于 2012-02-16 18:52 |只看该作者
回复 156# starwing83


    貌似以前有人设计直接支持lisp的处理器,不知道这个算不算是你说的底层。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP