海归网首页   海归宣言   导航   博客   广告位价格  
海归论坛首页 会员列表 
收 藏 夹 
论坛帮助 
登录 | 登录并检查站内短信 | 个人设置 论坛首页 |  排行榜  |  在线私聊 |  专题 | 版规 | 搜索  | RSS  | 注册 | 活动日历
主题: rationese语言----计算机语言的终结者,新文明的开端
回复主题   printer-friendly view    海归论坛首页 -> 海归商务 -> 项目找投资与合作           焦点讨论 | 精华区 | 嘉宾沙龙 | 白领丽人沙龙
  阅读上一个主题 :: 阅读下一个主题
作者 rationese语言----计算机语言的终结者,新文明的开端   
所跟贴 好像uda的头很痒,很渴望拍砖的样子,那我就来拍一个吧! -- Sarakawa - (521 Byte) 2010-12-18 周六, 00:43 (725 reads)
uda1341





头衔: 海归中尉
声望: 讲师

加入时间: 2009/09/01
文章: 110

海归分: 4371





文章标题: 唉,终于来了。 (677 reads)      时间: 2010-12-18 周六, 01:26   

作者:uda1341项目找投资与合作 发贴, 来自【海归网】 http://www.haiguinet.com

最高原则是:语言的表现力,抽象力,所有的设计都是围绕这个。

1 关于时态

中文时态描述能力弱但不等于中国人没有时态概念,这是中国人能学会英语的必要条件。我们在说话的时候虽然没有显式的用到时态表达,但我们可以从语义上知道事件和动作的时态。

关于为什么要有时态,很简单,看几个例子就知道了:

事件:鼠标划了一个圈 动作:刷新页面

鼠标划了一个圈是什么意思呢?意思是从过去某个时刻到当前时刻,鼠标消息为 mousedown n{mousemove} ,而且这些mousemove的参数符合一个圆形的模式。

好,在如今流行的程序语言中,只能访问当前值,所以,程序员必须把每个鼠标位置记录在一个数组中,然后进行判断。

有了时态概念的支持,这门语言就可以不需要任何显式的记录,而是直接访问过去的状态,并将其定义为一个事件就可以了,事件定义的方法是:取出过去数个时刻的状态,去匹配某个模式(这里的模式是一个圆),如果匹配成功,则事件响应被激活。

从这里可以看出,没有时态概念和记忆机制,我们根本无法表达延续性的事件(这个事件是从过去某个时刻开始发生,持续到现在某个时刻)


再举一个例子:

在游戏中,如果游戏者使用某件武器超过50次,这种武器的效果就减去10%。

使用现有语言怎么写呢?仍然要显式的记录。
而使用这门语言就不需要,它可以回忆历史上所发生的事件(对应于动作),写起来非常简单自然。更重要的是,如果这个功能是新加上去的需求,那么按照现有的语言,就得重构,增加数据结构。而如果使用这门语言,就根本不需要。

也许你会觉得记录所有历史状态代价过高,但有一种方法可以让这种代价几乎降为0,因为对于一段代码,如果你给定确定的输入,那么它在未来任何时候的状态,都是可以计算出来的,这也是语义分析的应用。


语义分析:
程序语义学方面,有Hoare的Hoare logic,还有Temporal logic,都在程序正确性证明和验证上取得了不少进展,要不Hoare也不会被挖到微软剑桥研究院。

但是他们在程序正确性证明上,啃的是最硬的那块骨头,也就是非确定输入时程序性质证明,难度几乎与数学定理的机器证明相当,而且面临计算复杂性的问题。而我关注的是表达和翻译,这块骨头就轻易的绕过去了。

引入时态逻辑进行语义分析的原因是,对于所谓的副作用,也就是状态迁移的过程,能够有一个公理化的描述体系,将其转换为逻辑问题来处理,这使得我们可以将不同范式(命令式,声明式)结合在一起。

自然语言也是这样的,再举一个例子:

某个物质的属性是易溶于水。

易溶于水被当做一个属性,但这个短语却包含一个完整的实验过程。在传统的语言中,例如面向对象,往往就弄一个状态标志就完了,这实在是太简陋了,它的问题是把这么简单的一句话所表达的概念,分散到了程序的多个环节,这造成了写代码和维护代码的困难。

如果将命令式和声明式结合在一起,我们就可以在代码中写出几乎一摸一样的语句,将程序语言的表现力和抽象力几乎提高到了自然语言的水平,同时而没有失去精确性。

事实上,我认为这种语言的表现力其实比自然语言更高,更通顺,更容易阅读,最重要的,它是活的,你可以对一个段落进行查询,给定输入,检查输出。


补充一个回答:
为什么语义分析会结束语言的分裂局面?

因为不同的语言虽然语法各异,范式不同,但语义上是可以相互沟通的,理解这一点很简单,你可以看一段c语言,然后知道了这段c语言要干什么,然后用java语言写出来一个功能一模一样的程序来。

有了语义分析,就可以将不同语言中的各种语法结构,在语义的层次上互相翻译,甚至混合使用。

至于上面用人肉翻译的例子,是不是说明翻译的难度很高?其实不然,翻译有两种方法,一种是整体功能一样,但实现方法不同,这个就很难做。另一种方法是逐个将语法结构对照翻译,要是c语言中的某个语法结构java语言没有,那就用java语言模拟出一个来,继续对照翻译。

所以,我们只要给出一个对照表,机器就可以不需要任何智能算法,直接用对照的方法将一门语言翻译为另一门语言,如果翻译的目标语言干脆就是某个平台上的机器码,那么这就是一个编译过程。如果源语言和目标语言是不同平台上的机器码,那么这就实现了不同机器平台上的二进制代码互翻。

当然,对照翻译不是翻译单词那么简单,不同语言中的相同语法结构也都有细微的差别,你需要有一种语言去描述这种差别,细节方面就很多了。

作者:uda1341项目找投资与合作 发贴, 来自【海归网】 http://www.haiguinet.com






上一次由uda1341于2010-12-18 周六, 02:01修改,总共修改了2次





相关主题
北京intel总部英文文档工程师职位(熟练翻译中英文计算机术语) IT 2012-11-16 周五, 23:59
北京intel总部英文文档工程师职位(熟练翻译中英文计算机术语) 外语翻译 2012-11-16 周五, 23:57
[原创]中国信息大学招骋英语、计算机教师--北京 海归职场 2007-12-26 周三, 09:30
电子计算机、机器人与人类最伟大的宇宙精神/罗国正 艺术鉴赏 2016-4-21 周四, 12:01
[转帖][教学]为维护国家安全 中国限制出口无人机和高性能计算机 项目找投资与合作 2015-8-04 周二, 22:19
三星通信研究院招聘计算机视觉与模式识别算法工程师 海归招聘 2015-1-12 周一, 11:18
[转帖] 中央机关采购计算机禁装Win8 海归主坛 2014-5-20 周二, 14:33
帮朋友晒个项目 给给归坛子捧捧场 >> 乳腺计算机辅助诊断系统... 海归主坛 2014-4-26 周六, 11:21

返回顶端
阅读会员资料 uda1341离线  发送站内短信 发送电子邮件
显示文章:     
回复主题   printer-friendly view    海归论坛首页 -> 海归商务 -> 项目找投资与合作           焦点讨论 | 精华区 | 嘉宾沙龙 | 白领丽人沙龙 所有的时间均为 北京时间


 
论坛转跳:   
不能在本论坛发表新主题, 不能回复主题, 不能编辑自己的文章, 不能删除自己的文章, 不能发表投票, 您 不可以 发表活动帖子在本论坛, 不能添加附件可以下载文件, 
   热门标签 更多...
   论坛精华荟萃 更多...
   博客热门文章 更多...


海归网二次开发,based on phpbb
Copyright © 2005-2024 Haiguinet.com. All rights reserved.