问题：﻿为什么编程语言语法的设计不往缩小与自然语言的差别的方向发展，或者说在这个方向发展的这么慢呢？ NA
话题：﻿设计、编程语言、自然语言处理、计算机科学
回答：﻿编程语言至少要满足以下三个原则：noambiguity（没有歧义）你说出来的话只有一种解释，如果有两种解释编译器就没法执行。有回答已经解释过为什么有歧义我就不解释了。由于ai的自然语言处理这一块还没达到猜透人心想法消除歧义。所以带自然语言处理的编译器一时半会儿还出不来，即便号称能做出来也绝对不好用，比不上现有编译器。consistent（一致性）这是数学范畴内的一个概念。就是里面的运算需要一致你不能让计算机做一些逻辑上不可能的事情。有些计算机一般不会处理这个概念，发生不一致的情况就报个错。比如你说“打开一个不存在的网页”编译器就算是有了强AI的智力也不能帮你完成一个逻辑上不可能完成的事情。很多人说话的时候是不讲逻辑的，前面说的话和后面说的话有矛盾，强词夺理，还一副理直气壮的样子。编译器不是舔狗，没办法哄你开心。如果你要编译器哄你开心请明确的用逻辑语句表示“舔”这个动作的具体步骤。Turingcomplete（图灵完整性）自然语言这一块倒是很不错。不过算法能不能执行，报不报错，自然语言都可以表示。相反这是传统数学所欠缺的，传统的数学概念里是没有if条件和goto语句。所以传统的数学有一些问题不能解决。所以不仅是自然语言不适合编程，数学语言也不适合编程，比如数学说＝，到底是想赋值一个变量，还是看看左边等不等于右边，还是想定义一个什么概念？以上几个是基本原则，还有一些现实性难题。比如：“编一个赚钱的软件，编译器你自己想办法”，业界顶级程序员也不知道你到底想编啥。“编一个Google一样的搜索引擎”，首先现在的编译器即使搭载最先进的nlp技术也很难自己编搜索引擎。假如编译器十分智能，可能会说“这可能需要几百亿美金，光有程序还不够你还要搭建服务器”“内存越小越好，速度越快越好”，这里有两个变量。内存和运行速度一定程度上是可以相互转化的。你只能有一个变量，通常的做法是给两个变量设个权值，加权相加成一个变量。如果你只是想要if变成“如果”，else变成“否则”，＋变成“加”或者“xx和xx的和”变量名是“苹果个数”列的定义是“生成一个有xx个格子的容器”这样开发效率极低，而且不是做不到而是早就有了，你想要的话只要给钱就能让程序员帮你开发一个你自己的易语言。价钱绝对很便宜，轻量级的编译器也就几万行代码有经验的程序员估计一个星期就帮你撸出来了。偷懒的可能一个pythonregex＋字典就帮你搓一个字符串替换器。Python和Java也可以用中文做函数名，类名。对于英文使用者来说，这两个语言已经非常接近自然语言了，这也是为啥这两个语言这么多人用。英文虽然比中文更加适合编程，但是还是非常不科学，原因就是很多常用的单词太长了比如initialize，delete，memory，string，intger，vector，program，dictionary，subtract，multiplication，address。学计算机的通常会比较懒，也很会偷懒。所以一般这样表示以上单词，init，del，mem，str，int，vec，prog，dict，sub，mul，addr。我写过一遍文章详细的论证问什么英文单词没必要这么长。文章连接：https://zhuanlan.zhihu.com/p/50393671自然语言编译器早就有了，有个比较酷炫的编译器叫莎士比亚计算机语言看看这个语言的"HelloWorld"怎么写的吧：Romeo,ayoungmanwitharemarkablepatience.
Juliet,alikewiseyoungwomanofremarkablegrace.
Ophelia,aremarkablewomanmuchindisputewithHamlet.
Hamlet,theflattererofAndersenInsultingA/S.

ActI:Hamlet'sinsultsandflattery.
SceneI:TheinsultingofRomeo.
[EnterHamletandRomeo]
Hamlet:
Youlyingstupidfatherlessbigsmellyhalf-wittedcoward!Youareas
stupidasthedifferencebetweenahandsomerichbraveheroandthyself!
Speakyourmind!
Youareasbraveasthesumofyourfatlittlestuffedmisuseddusty
oldrottencodpieceandabeautifulfairwarmpeacefulsunnysummer's
day.Youareashealthyasthedifferencebetweenthesumofthe
sweetestreddestroseandmyfatherandyourself!Speakyourmind!
Youareascowardlyasthesumofyourselfandthedifference
betweenabigmightyproudkingdomandahorse.Speakyourmind.
Speakyourmind!
[ExitRomeo]
SceneII:ThepraisingofJuliet.
[EnterJuliet]
Hamlet:
ThouartassweetasthesumofthesumofRomeoandhishorseandhis
blackcat!Speakthymind!
[ExitJuliet]
SceneIII:ThepraisingofOphelia.
[EnterOphelia]
Hamlet:
Thouartaslovelyastheproductofalargeruraltownandmyamazing
bottomlessembroideredpurse.Speakthymind!
Thouartaslovingastheproductofthebluestclearestsweetestsky
andthesumofasquirrelandawhitehorse.Thouartasbeautifulas
thedifferencebetweenJulietandthyself.Speakthymind!
[ExeuntOpheliaandHamlet]

ActII:BehindHamlet'sback.
SceneI:RomeoandJuliet'sconversation.
[EnterRomeoandJuliet]
Romeo:
Speakyourmind.Youareasworriedasthesumofyourselfandthe
differencebetweenmysmallsmoothhamsterandmynose.Speakyour
mind!
Juliet:
SpeakYOURmind!YouareasbadasHamlet!Youareassmallasthe
differencebetweenthesquareofthedifferencebetweenmylittlepony
andyourbighairyhoundandthecubeofyoursorrylittle
codpiece.Speakyourmind!
[ExitRomeo]
SceneII:JulietandOphelia'sconversation.
[EnterOphelia]
Juliet:
ThouartasgoodasthequotientbetweenRomeoandthesumofasmall
furryanimalandaleech.Speakyourmind!
Ophelia:
ThouartasdisgustingasthequotientbetweenRomeoandtwicethe
differencebetweenamistletoeandanoozinginfectedblister!Speak
yourmind!
[Exeunt]下面是Wiki链接的具体介绍https://en.m.wikipedia.org/wiki/Shakespeare_Programming_Languageps：这个问题需要再加一个标签：naturallanguageprocessing自然语言处理。感觉这个问题和nlp技术有关系。我不是nlp专家，相信这个专业的人会更加有深度的回答nlp编译器技术的难点。