Atitit.编程语言and 自然语言的比较and 编程语言未来的发展

Atitit.编程语言and 自然语言的比较and 编程语言未来的发展

1. 单词的间隔靠空格,编程的单词的间隔靠分界符..1

2. 语句分界符:自然语言使用逗号,编程语言使用分号1

3. 换行1

4. 段落and  fun method2

5. 上下文相关2

6. 操作泛型化2

7. 动词和名词之间的互换性2

8. 词类的判断3

8.1.1. 词类划分的形式标志3

8.1.2. 自然语言中的指代词(你、我、他、它等等)好比编程语言中的“指针(point)”。4

8.2. 这类疑问句似乎在编程语言 是包括函数在内的“表达式”。4

8.3. 语句分析的“终极”在哪里?4

9. 词法检查4

10. 句法检查5

11. 一个类型系统。  自然语言中常用’token‘,编程语言常用‘instance’。5

12. ref6

1. 单词的间隔靠空格,编程的单词的间隔靠分界符..

括号 逗号  stop 句号

2. 语句分界符:自然语言使用逗号,编程语言使用分号

3. 换行

自然语言很少的中间做..编程语言很多中个..

作者:: 绰号:老哇的爪子 ( 全名::Attilax Akbar Al Rapanui 阿提拉克斯 阿克巴 阿尔 拉帕努伊 ) 汉字名:艾龙,  EMAIL:[email protected]

转载请注明来源: http://www.cnblogs.com/attilax/

4. 段落and  fun method

编程靠fun method来定义段落..

5. 上下文相关

编程语言跟个自然语言都是上下文相关的..业务角度...

技术上的ast绝大部分还是上下文无相关的.

6. 操作泛型化

自然语言中存在一些“ 泛义动词 ” ,例如汉语中的“打” , “搞” , “干”„„, 英语中的“ get ” , “ take ”等。它们的进一步的具体含义要由这些动词所涉及 的对象来确定。例如: “打毛衣”中的“打”应理解为“编织” ,   “打篮球” 中的“打”应理解为“玩” ,   “打开水”中的“打”应理解为“取得” ,等 等。

l

在面向对

在面向对象的编程语言中,也有类似的“动态绑定(Dynamic Binding)”机 制:一个函数名或者子程序名字的具体含义要在“运行时”依据所涉及对象在当时的指的类型来决定

数据:常数、变量名。它们对应于自然语言中的名词。

l 其他:起连接作用、用来表述token 之间的关系的符号,例如if, then等等。 它们对应于自然语言中的连接词、感叹词等等

7. 动词和名词之间的互换性

在自然语言中,有一个引人瞩目的现象,那就是“名词和动词之间的呼唤性”。这是因为,“词”或者token是用来表达“概念”的,而一个概念往往有多种侧面。所以自然语言中常常出现用同一个“符号”来表达不同的侧面的现象。举例来说:  “钉”本来是名词,但是可以转化,作为动词来使用:我把画钉在墙上

函数十编程走十中个.不个fun trans as data..

8. 词类的判断

从语法分析的角度看,对词或 token 进行分类的依据是它的语法功能。从语言使用者的角度看,则是他们的使用方式。因此如何对词或 token所属类别进行判断乃是一件至关重要的事情。

不管在自然语言中,还是在编程语言中,判断一个词或者 token 的类别的办法基本上是两种:词典 和 词本身所携带的形态标志。

词典中提供的信息

在编程语言中,为判断一个 token 的类别而提供的“词典”有两种:

1. 一种是语言中“先验地”规定好了的外部词典。例如关键字和一些保留字。

2. 另外一种是编程人员(用户)临时定义的内部词典,这就是程序中的 declaration.

8.1.1. 词类划分的形式标志

如果能够从词或 token的外形(形式上的)特征就能判断出他是属于哪一类,那么无论从“书写者撰写”的角度,还是从“阅读者理解”的角度,都能够大大减少出错的机会。

在某些编程语言(例如Visual Basic)中,如果一个变量没有在任何地方加以声明,也可以从变量名字的外形上看出它的类型。例如:名字以%结尾的变量是?整数?, 名字以&结尾的变量是?字符串?,名字以&结尾的变量是?浮点数?等等。

英语中,在某种程度上也有类似的机制,例如:以tion, ing 结尾的基本上是名词。以-lize 结尾的基本上是名词。以-ful 结尾的基本上是形容词。以-ly 结尾的大概是副词。

汉语使用方块字,没有办法添加尾缀,所以没有这样的形态标志。因此大家认为,这一现象给汉语的计算机处理增加了困难。不过话不能说得太绝对。在某些情况下,汉语还是有“形态标志”的。例如,在名词的前面加“很”“还”之类一般用来修饰形容词的副词,就是在“形态”上指出:后面的这个名词已经转化为“形容词”了。例子如:“同学们说我穿这条裙子很青春。”,“我们排演的这套节目还是很生活的。”,

8.1.2. 自然语言中的指代词(你、我、他、它等等)好比编程语言中的“指针(point)”。

但是自然语言中从不明显地交待:从现在起,“他”表示“张三”,直到遇见新的声明为止。每一个具体的代词指向何方要根据句子域句子之间的前后语义来联系来判断

8.1. 这类疑问句似乎在编程语言 是包括函数在内的“表达式”。

8.2. 语句分析的“终极”在哪里?

计算机语言的编译器在分析计算机程序中的语句时,最终总是要分析到语法规则中所规定的“终极符(terminator)”为止。

9. 词法检查

从词法的角度,语素和语素合成单词是有一定规则的。例如中文的‘碧’字,作为一个语素,和其它语素结合成单词时有一个限制条件,必须是单音语素。如:碧空,碧蓝,碧绿;但是,碧天空,碧宝蓝等就不合法了。程序设计语言的单词(称作identifier,标识词)也有着类似的严格规定。例如,任何identifier必须以字母或下划线开头,像 bilan、 _blian等就是合法的identifier,而23bilan、@bilan就属于非法的。任何一个identifier中间不能有空格,否则非法

10. 句法检查

从句法的角度,有类似自然语言的条从句:if x < y then print x +y;
意思是,如果两个identifier所代表的数不相等且x小于y,那么,将x所代表的数和y所代表的数相加,然后将结果打印出来。

从语义的角度,任何一个identifier都可以定义为不同的类型。例如 name可以代表‘张三’,age可以代表25
String name = ‘张三’;

程序设计语言中关于语法和语义的定义是非常严格、明确的,不能模棱两可。例如,单复数的定义,
在汉语中,根本就是残缺的,只有在指人类实体是可以‘可选地’用‘们’,而且用法非常复杂。英语简单一些,用加s的方式表达。但有些单词单复数一样,如equipment,有些单词只有复数没有单数,如alms。无法只从形态上判断是单复数。
而程序设计语言就没有这样的问题:
任何定义了品词的identifier都是单数名词。而复数名词则需要一个特定的词类,通常叫做数组,或者叫做’表‘。例如

11. 一个类型系统。  自然语言中常用’token‘,编程语言常用‘instance’。

这些只是编程语言和自然语言的表面的异同。更本质的共通点,我觉得是二者之间都有一个类型系统。
谈到类型,就要引入另一个术语,自然语言中常用’token‘,编程语言常用‘instance’。我们经常重复已经说过的话

当然,我们有时需要区分类型和实例。自然语言的办法是加限定词。你的朋友刚想拿一块糖,你说,不是叫你吃这块糖,而是那块(当然在这种情景下必须有身体语言辅助:你得指着某一特定的糖块)。‘这’和‘那’还是很模糊,一定要明确,恐怕就要加更多的限定、形容

12. ref

自然语言与机器语言的比较 南京廖华.htm

自然语言和程序设计语言的某些共通点.htm

时间: 2024-12-25 07:49:27

Atitit.编程语言and 自然语言的比较and 编程语言未来的发展的相关文章

学习游戏要学习编程语言吗?十大主流编程语言解析

计算机的发展,促使了一个新的职业的出现,程序员是近些年出现的并且得到了广泛关注的一个职业,相信这也是很多莘莘学子的职业梦想.但程序员也有很多种,并不是每一个程序员能够精通所有的编程语言.所谓术业有专攻,如果将来志在编程世界的网友就要注意了,今天给大家推荐一下2014年最流行的编程语言,他们可以说是未来程序员们生存的工具. 1.JavaScript JavaScript在Web应用上有着非常大的需求,JavaScript主要用于实现为Web浏览器,以提供增强的用户界面和动态网站. 直到google

RUST叫系统编程语言,而GO是网络编程语言

用GO你必须要搞清楚一点,GO不是面向CPU密集计算的,而是面向IO密集计算的!!!RUST才是面向CPU密集计算的语言,所以RUST叫系统编程语言,而GO是网络编程语言.GO跟JAVA的Spring是一个层面上的东西.对于那些无法同时操纵高级语言Python Ruby ...和系统语言比如C C++的中间类型的人,才会用JAVA GO. 但是别以为你用JAVA GO就能写出速度更快的IO,IO的速度跟语言的编译速度根本就没有多少影响.现在最快速的IO基本是多路复用而不是多线程.对于多路复用,语

TIOBE Index for January 2016(TIOBE 2016年1月编程语言排行榜 Java拿下2015年度编程语言)

Java has won the TIOBE Index programming language award of the year. This is because Java has the largest increase in popularity in one year time (+5.94%). Java leaves runner ups Visual Basic.NET (+1.51%) and Python (+1.24%) far behind. At first sigh

Atitit attilax在自然语言处理领域的成果

1.1. 完整的自然语言架构方案(词汇,语法,文字的选型与搭配)1 1.2. 中文分词1 1.3. 全文检索1 1.4. 中文 阿拉伯文 英文的简化方案1 1.5. 自动摘要2 1.6. 文本分类 聚类2 1.7. 自然语言 语义解析2 1.8. 问答系统 问答与对话系统2 1.9. 翻译系统2 1.10. 输入法系统2 1.11. 关键词抽取.知识图谱2 1.12. 文本 与半结构化数据抽取2 1.13. Pdf office 文档信息抽取 图谱ocr信息抽取2 1.14. 垃圾文档的识别与同

Atitit 编程语言原理与概论attilax总结

1. 语言的分类1 2. 语言评价标准1 3. 编程语言原理(第10版) 目录: 2 4. 代码之髓:编程语言核心概念2 5. <编程语言实现模式>是Terence Parr3 6. 为什么有些语言采用等号冒号来赋值3 1. 语言的分类 标记语言(如HTML语言 1.5  程序设计语言的分类 程序设计语言通常可以分为4类:命令式语言.函数式语言.逻辑语言和面向对象的语言.然 逻辑程序设计语言是一种基于规则的语言.在命令式语言中,算法要有详细的说明,必须包含指令或语句的特定执行顺序.但是在基于规

编程语言-jul2014

1.C     * C语言是一种面向过程的计算机程序设计语言; 2.Java                            *Java是由Sun Microsystems公司于1995年5月推出的Java程序设计语言,他是一种面向对象的跨平台语言,可以在多种平台上运行.支持开源. 大量的类库.大量的开源项目.是一种非常强大的编程语言! 3.Objective-C                  *Objective-C通常写作ObjC和较少用的 Objective C 或 Obj-C

编程语言,一路走来

人类发明了编程语言,本是为了能控制机器.计算机越来越强大,编程语言也不断革新.于是我大胆地认为,编程语言的意义将超越对机器的控制,它或许是一种文明的出发点--机器人文明.为了能更好地展望编程语言,让我们先来回顾一下它的发展历程. 1 程序设计语言的发展经历了五代: 第一代语言:机器语言 第二代语言:汇编语言(亦称符号语言) 第三代语言:高级语言 |__       面向过程(如C.BASIC.Pascal) |__       面向对象(如C++.java.C#) 第四代语言:数据库编程语言(也

所有计算机编程语言的一句话概括

A+:阵列编程语言,由摩根·斯坦利公司在1980年代在APL的基础上开发起来的,现在使用GPL授权. Ada:是一种表现能力很强的通用程序设计语言,它能大大改善软件系统的清晰性, 可靠性, 有效性, 可维护性. Assembly language(汇编语言):是用于电子计算机.微处理器.微控制器或其他可编程器件的低级语言,又为符号语言. B语言:是贝尔实验室开发的一种通用的程序设计语言. BF:Brainfuck(BF)是一种极小化的计算机语言,因为f*ck在英语中是脏话,这种语言有时被称为br

如何创造一门编程语言?

编程语言,作为人与计算机沟通的桥梁,有着重要和深远的意义.有过计算机编程经验的人,多少学习或掌握过一到多种编程语言.计算机专业领域的编程语言成百上千种,主流的编程语言也有数十种之多.每种编程语言面向的领域和特性都不尽相同,不过归根结底是为了解决人与计算机之间沟通的效率问题,提高计算机的生产力.想必有不少人对那些主流编程语言的创造者十分倾佩,也相信有不少人会好奇一门编程语言是如何诞生的.那么如何创造一门编程语言呢? 总的来看,创造一门编程语言需要有以下几个过程: (1)设计语言的特性. (2)定义