学习编程语言和学习自然语言哪个更难?为什么?

8回答·559阅读
IT人刘俊明

2018年08月04日·中国科学院大学计算机专业教师

作为一名从事互联网行业多年的老程序员,我来说说我对这个问题的看法。

从语言本身能承载的内容来说,编程语言的难度要远远小于自然语言。为什么这么说呢?原因有三点:

第一,计算机目前还无法准确理解自然语言复杂的表达方式和上下文语境,所以从设计的角度来说,编程语言在复杂度上一定是远远小于自然语言的。

第二,计算机编程语言本身的指令局限于计算机能完成的功能,目前计算机能完成的功能虽然很多,但是总的来说还是有限的。所以,计算机编程语言在表达能力上远远小于自然语言。

第三,计算机编程语言在设计上越来越简单且易于理解。随着编程语言的应用越来越普及,目前编程语言的设计趋势就是越来越简单,毕竟没有人喜欢复杂。

既然计算机编程语言没有自然语言复杂,那么为什么大部分人普遍认为编程语言难度高和复杂呢?主要原因不在于语言本身,而在于编程语言的使用过程。自然语言的主要功能是交流,而计算机编程语言的主要功能是完成各种任务,而这些任务的背后往往关联着诸多算法,因为编程问题说到底就是数学问题,所以给大部分人的感觉是编程语言比较复杂。

未来,随着大数据、人工智能的不断发展,编程语言将是大部分人需要掌握的一个交流工具,所以有时间可以学习一下目前比较流行的编程语言,给大家推荐一门编程语言:Python,Python语言简单易学且使用广泛,无论有没有计算机基础都完全可以自学。

我使用Java、C和Python语言时间比较久,我在头条上也陆续写了一些关于学习编程语言的科普文章,感兴趣的朋友可以关注我的头条号,相信一定会有所收获。

如果有编程方面的问题,也可以咨询我。

谢谢!

唐不嘚

2018年11月06日

编程语言和自然语言的区别在于一个是面对计算机,一个是面对人。

以下为一家之言,不喜勿喷。

计算机只能理解零和一,编程语言与其说是一种语言不如说是一种指令,学会编程语言和计算机交流,不,这里并不是交流,而且信息单方的传输。我们使用编程语言得到的反馈是可以预知的,可控的。

再看看自然语言,面对不同的人说同样的话得到的反馈是不一样的,计算机也不一样,相同的JAVA和python 代码运行在不同的电脑(环境相同或系统相同)得到的结果一定是一样的。

那么这么看来的话,自然语言和编程语言的难度对比也就更加清晰,要学会一种自然语言,要深入了解语言的文化,历史和使用人群的风俗习惯等,这些需要耗费大量的时间,而对于编程语言而言,一年的时间就足以学会所有的关键字,语法等。

(图片来自互联网)

何况,会多种编程语言的程序员很多,精通多种自然语言的则少之又少。

以上。

怎会甘心

2018年08月03日

无论是编程语言还是自然语言,只知道语句和语法,是无法掌握一门语言的。因为语言不仅有基本语句和语法,更重要的是有技巧。比如自然语言,有的人说话就生动、逻辑性强、易懂,有的人的表达就不够确切、精准,往往词不达意。大多数人刚学外语时都有此体会。编程语言也一样,多多练习,不断积累,总结出一些编程技巧之后,就会感到游刃有余了。刚入门的时候,才学用刀,刀比较钝,所以感觉到是个瓶颈,这和刚学外语时是一样的,多练习练习自然就好了。

zhangyiant

2018年11月07日

当然是自然语言,自然语言的不精确性,歧义,语言环境的影响,就算是人脑都处理不过来,何况电脑。

城东百姓

2018年11月07日

我的思想受蒙太古语义学的影响较大,我相信自然语言的语义是可以被形式化的,从这个意义上说,自然语言同编程语言并没有本质区别。不过,有很多语言学家认为这个观点过分强调了自然语言和人工符号语言的相似性,忽略了二者的区别。不管怎么说,自然语言处理(NLP)和程序语言的改善都是把蒙太古语义学作为基础理论展开的。目前,自然语言的结构要比编程语言复杂很多,表达的语义也要比编程语言丰富得多。从这个意义上说,自然语言的难度远超编程语言。下面我就从词汇,语法和语义这三个方面说明一下这个问题。

词汇的PK

从语义学上看,语言中最重要的词汇是量词。比如,所有人都喜欢编程和有人喜欢编程。这两句话使用了不同的量词(所有,有的)从而意思上区别很大。自然语言中这类量词的数量很大,而很大部分编程语言中量词极为有限。第四代编程语言如Java中就找不到能表达这两种数量的关键字,程序中基本要靠穷举法作复杂逻辑分枝才能实现。这个问题在第五代语言SQL中得到了改善。SQL使用了ALL,HAS,Exists这些关键字比较好的表达了所有和有的的意思。还有更为复杂的情况,比如,喜欢电脑的人也喜欢编程。这里没有确定的量词,数量是用上下文确定的。这对SQL文来说也不是问题。不过,自然语言中还有很多表示程度的量词,编程语言是无法一一对应的,但是,使用一些逻辑表达式,基本上能表达出来。尽管有些武断,我觉得可以粗略地认为在词汇上,自然语言和编程语言打了个平手。因为,接下来的两场PK,编程语言毫无胜算的机会。

语法的PK

所谓语法是指句子结构上的规则。自然语言是非结构化的,它的规则十分复杂。尽可能地将自然语言结构化成了自然语言处理(NLP)的主要课题。反观编程语言,它的规则就简单多了。毕竟,编程语言是根据逻辑原理创造出来的结构化的语言。编程语言中最重要的语法逻辑是三段论,也就是,if…then。除此之外,几乎没有能和自然语言进行关联的逻辑结构了。语法结构上,编程语言要比自然语言简单太多了。

语义的PK

说到语义自然语言就更加丰富了。从门派上,就能分出哲学语义,历史语义,结构语义,语法语义,逻辑语义(孟德斯鸠语义)。其中,只有逻辑语义能和编程语言扯上一点关系。编程语言的语义更多的体现在程序设计上,比如,面向对象的思想。还有设计语言,如ER,UML之类。编程语言本身完全体现不出语义的成分。论难度,编程语言完败。

没有更多内容了