|
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (23)
|
|
|---|---|
| 作者 | 正文 |
|
时间:2008-03-22
嘿嘿,谢谢楼上的,其实直接看SICP,虽然不可能很容易,但我想也不会太摸不着边际,以前还是学习过编译原理(那本龙书),虽然总的来说一知半解的,但一些DFA和LL(1)的程序也写过,算是有个大概的认识。我看了下SICP的目录,觉得更像一本编译原理方面的书籍。
|
|
| 返回顶楼 | |
|
时间:2008-04-08
simohayha 写道 上次看到一篇讲类型系统的短文,写的挺不错的,我刚好简要的翻译了一下,lz可以看下:
http://simohayha.javaeye.com/blog/151653 凑个热闹,对simohayha文章的评论: 很明显,structural subtyping能够解决目前困扰大多数人的OO建模时的分类问题。 可以这么看:structural是基于行为的建模,而之前的Nominal是基于名词的建模。 基于名词更加依赖人的主观判定,虽然这个判定也是基于对模型行为的分析,只不过是在建模的早期就要决定下来(随后写死到程序里面),而往往早期的决定都是不准确的,加上需求的不断深入,这就导致了后续的对模型结构上的改动,这对程序的影响是巨大的。究其原因就是把人的不成熟的主观判定放到了程序里面。 而如果是直接基于行为的类型系统就不会有这个问题了,人的主观判定还是会不断改变,但是不会体现在程序里面(可能更多地体现在文档里),程序里面都是真确的行为,语言环境本身根据行为进行判定。。。一个清净的世界形成了!!! 在我看来,java中的interface也是为了在nominal的类型系统中解决这个问题的,只不过由于本身的限制,没有structural来的彻底。。。 所以现在的动态类型脚本语言(往往是structural)比较受人欢迎, 但是这类语言本身也有问题,它更依赖代码人员的水平和编写单元测试(没有编译期的语法检查),如果做得不好,更容易出现大量低级bug(可怕的是如果测试人员不能100%覆盖,就无法发现)。。。两难阿。 |
|
| 返回顶楼 | |
|
时间:2008-04-08
引用 所以现在的动态类型脚本语言(往往是structural)比较受人欢迎,
但是这类语言本身也有问题,它更依赖代码人员的水平和编写单元测试(没有编译期的语法检查),如果做得不好,更容易出现大量低级bug(可怕的是如果测试人员不能100%覆盖,就无法发现)。。。两难阿。 stuctural未必就一定要是dynamic的,可以是static的并且是strong的,关键是要建立有一个好的类型系统.现在大部分流行的脚本语言,之所以是dynamic的,是因为强大的类型系统实在是太难编写了,type inference这种技术很是让人头疼. |
|
| 返回顶楼 | |
|
时间:2008-04-15
Trustno1 写道 引用 所以现在的动态类型脚本语言(往往是structural)比较受人欢迎,
但是这类语言本身也有问题,它更依赖代码人员的水平和编写单元测试(没有编译期的语法检查),如果做得不好,更容易出现大量低级bug(可怕的是如果测试人员不能100%覆盖,就无法发现)。。。两难阿。 stuctural未必就一定要是dynamic的,可以是static的并且是strong的,关键是要建立有一个好的类型系统.现在大部分流行的脚本语言,之所以是dynamic的,是因为强大的类型系统实在是太难编写了,type inference这种技术很是让人头疼. 弱问一下,如上所说的语言(基于属性/行为的类型系统,且支持编译/优化)现在有成熟可用的么? |
|
| 返回顶楼 | |





