返回首页

能否用中文写代码?

85 2024-03-13 22:36 admin

一、能否用中文写代码?

这个我写过回答,可以参见以下两个链接,有详细论述。

一个是回答计算机编程领域和英语的关系的:

Tiger:为什么深入计算机科学领域(如编程)就绕不过英语呢?

一个是品谈一个不赞同中文编程答主的观点的:

編程語言可以被中文化嗎?

如果说科技是硬实力,那么文化就是软实力,半导体技术、操作系统开发这些核心高精尖技术我们落后于人,总是处于被动,先有中兴,后有华为,热点走进国民视野,国民才感觉到原来这东西那么重要啊,那么大的公司都要被搞死了……

而现在,国人对中文编程语言的关注和重视少的可怜,往小了说,知识水平问题,往大了说,文化趋同问题。是不是幼儿园已经开始学英语了?照这个趋势发展下去,英语要成为中国第二母语了吧,因为经济学大量使用英语,因为生物医学,还因为计算机科学,还有其他学科,早已习以为常,继续顺着这个惯性发展下去。哎,英语常用词3500,总词汇17万~100万单词,汉语常用字3500,总字数约10万(简体、异体、繁体、日韩借用汉字等),一个新概念出现,中文几乎九成是旧字组新词,英语造新词变化就大了,真不知道怎么说。中华文化挺优秀的,汉字也挺优秀的,但是汉字到信息时代就不受待见了,甚至差点被抛弃。当第一台计算机进入中国时,引起的文字信息化浪潮差点让汉字从它诞生发展五千年的故土上消失,变成拉丁字母的那种。五千年的文化竟不堪新时代产物的冲击,哈,也幸好历史没有走错路,也幸好没想出来将汉字体系与信息时代交融的脑子,同样没想出来拉丁字母替代汉字的方式,否则,文化之殇,世界之殇,若是那样的话,后世也不再有文明古国了,和前三个一样,消失在历史的长河之中,毕竟,没有「继往开来」,哪有文明延续呢?

我有在考虑怎么组织汉语的文字,应用于计算机编程这一方面,也有在考虑怎么定义编码方式优化中文输入问题。不要看到我这句话,就以为我是什么大神,现实却恰恰是,我是个菜鸟,现在连程序员都没当过,年纪也不小了,只有个普通本科水平。目前,也就在啃C++这块馒头,期待有一天能走到我想走的地方,我英语也差劲,数学大学以前还行,现在早已生疏不堪了,同样人也不够聪明,但我还想走走看。也许你会问,既然这样,那你说个卵,费这个劲还不如多努力努力其他方面,挣点钱早点财务自由。是的,那是另一种选择吧,但是国内真没多少人想搞这个(甭期待某某国外大神探索中文编程,正如你会产生「能否用中文写代码」的疑问一样,他们更喜欢自己的母语),英文对于国内搞编程的精英们不是障碍,反而用中文写代码对他们来说才是一种障碍,所以他们压根就不会去想开发一种中文编程语言;而对于菜鸟,他们又没有能力去开发。目前我所了解的中文编程语言似乎只有一种——易语言,但易语言只是一个开拓者,而不是一个(中文)编程语言生态里历经淘汰留下的佼佼者。

所以我觉得,所有觉得应该有一种优秀的中文编程语言诞生的人,不要去苦苦期待国内某某大神、某某公司致力于中文编程语言的开发与探索,如果你已经入门编程领域,若是极其渴望有这么一门编程语言,请自己扛起这份担子,将你的热爱与憧憬化为动力去实现它。你得告诉你自己:如果我也不做的话,恐怕没人会做了吧!这世上往往会有这样两种现象来摧毁你等待奇迹发生的幻想:

  1. 你苦苦等待他人做的事,往往不会被他人完成;
  2. 你认为理所当然会诞生的事物却未诞生才是理所当然的;

被英语文化浸润国内高级程序员的早已习惯英文编程,不会去遥望中文编程的上限,只有直接与英文对应的中文代码的形象,这种样子写出来往往不如英文代码美观易读,所以他们早已下了定论——中文可以写代码,但不适合。举个例子,他们思维当中,中文代码的样子——

#include "英文转换中文.h"
#include <iostream>
使用 命名空间 标准 
整数 一个整数 
整数 主函数  {
    输入 》》 一个整数 
    输出 《《 "你好,世界!" 《《 一个整数 《《 换行 
	整数  等于 0 
	循环  整数 计数 等于 1  计数 小于等于 100  计数 自增 
		 加等于 计数 
	输出 《《  
	系统 "pause" 
    返回 0 
}

作者:李汪洋
链接:https://www.zhihu.com/question/22694322/answer/38470199
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

引自https://www.zhihu.com/question/22694322/answer/38470199

当任何熟练掌握一种高级编程语言的人看到这样的代码都会不再期待中文编程了吧,这就是形象的重要性了,如果想让某人不喜欢另一个人,一定要把另一个人的下限给他看,让他升不起交往的念头。说那么多,如果没点实在的东西能证明中文编程语言也许不会比英文编程差,大家还是会停留在「中文可以编程,但不合适」的结论中吧。先放张图片

这是我对中文编程语法的探索,中文由于文化语系和英文差异过大,许多英文的范式不宜用「拿来主义」。比如:

  1. 英文中大量使用的空格,在设计中文编程的时候应尽可能少用。这样会对敲代码效率有所提升,也有利于中文代码美观的展现。你想象一下英文单词之间没空格行文会是什么样子,就知道英文中空格的必要性了,所以它们把空格键设计的比其他键大七八倍。但中文不是,过多的空格只会影响中文的美观。翻开中文文学作品和英文文学作品仔细对比一下,不难发现,中文几乎不需要使用空格,反而是首行缩进两个汉字长度,段与段之间既层次分明,又显得美观。而英文呢?单词之间必空格,段首顶格,段后空一行,这才显得美观,而中文缩进好了,空行都是不必要的。可是啊,也许就是英文敲惯了,外国人开发的软件照顾不到中文文化习惯,国内开发的程序也同样懒得思考中文的编排习惯。咱们用的许多带有文本编辑的产品,是不是都顶格打字的,完全没啥首行缩进概念,就算打空格,还是半角的,要打够两个汉字宽度的缩进,估计得敲四个,这样一搞,谁还会这么麻烦啊,一删一改,就对不齐了;你说Tab,哎,一样,除了有序无序列表这些可以利用其缩进,首行文字Tab等同空格,甚至连空白都不给你出。至于会删你空格的编辑器,那真是……
  2. 中英文标点编码不同,需要兼顾,恐怕不单单是只用一种标点就能决绝的了的。也许是历史遗留问题,先出现的是半角,后来中日韩等表义文字的国家大量应用计算机的时候,西方国家才承认全角字符的地位。这种现象会造成字符美观的重大问题,比如同样是圆括号,中文的和英文的就是不一样,你能咋地。但同处于拉丁字母中的#*%却在中英文中通用,字符编码一致,样子一样,又是需得头痛的玩意。代码跟文章不一样,机器翻译代码,是要对标点编码的,而人阅读一篇文章,注重言辞,标点是个间隔辅助的作用,形状不差就好,但机器翻译代码,必须确定字符编码是否有错。
  3. 英文字母的确简单,虽然他的排列组合并不一定简单,用的标点字符也和中文标点字符在数量有差异,比如中文的顿号、省略号(英式的省略号是三个实心句点敲出来的,区区三个而已,所以基本拉丁字母和拉丁字母补充里,英语国家并没有将省略号单独编码为一个字符,中文没有实心句点而是空心句点,就算有,位置也不一样不是,即便前俩一样了,还得敲6个不是?),还有中文的方括号之类。这些都不是用「拿来主义」就能造就一个优秀的中文编程语言的,需要我们结合具体情况细细思量,哪些用,哪些不用,哪些换个花样用?比如中文的破折号就很好么,可作为函数体、类体、复合语句体等块代码的前导符,吸收一下将缩进用于语法中的理念(即便英文代码,如果没有缩进,读起来也如狗屎),也有助于减少代码量(不要认为被强制使用缩进了就觉得不舒服,python也允许你一行写多条语句)。

另外直接抛出以下观点,省的我看那些回答中文编程相关问题的答主直接用「拿来主义」来怼那些提出「中文编程」相关问题的人。

  • 思维不要受限于美式键盘,它真不是一个优秀的产品,不要因为习惯而放弃好产品的尝试,就连西方国家自己都受不了美式键盘的渣布局,发明了形如「德沃夏克」「Neo」「Colemak」「Workman」等一些列键盘布局,台湾使用注音输入法也有自己的键盘样式,日本也是如此。如果你没有从源头思考改善问题,就不要轻易做出结论。
  • 符号的使用不要受限于汉字,你小学念不出来几句英文的时候,学数学用的都是「零一二三四五六七八九十」吗?你的代数方程都是写文章算的?说真的我恰恰就看到一些答主拿这样的代码来讽刺中文编程,与此形似的更不在少数,原文是这样的:
你指望老外那么写
打印(“你好,世界\转行”);
回到 0;
???????????????????
  • 如果以汉语文化为基础,重新设计键盘布局,将会更适合国人使用(当然,一开始的转变绝大部分人恐怕都适应不了,别忘了你是多久才会在键盘上盲打的,不要忽视这种适应)。以此为背景,中文输入法都有可能有新的发展方式,汉语编程也将更容易。

再附一张图,做个抛砖引玉的作用,希望有兴趣的开动脑筋,帮忙提提意见,虽然我不知道能不能设计出来一种语法良好的中文编程语言,但我觉得自己应该试试,多一份热爱,才多一份精彩!当然我也不知道要实现这样的目标,自己要到何时才有个心安的结果(我不聪明,非大神,英语不好,现在仍无程序员工作经验,所以定义不出来这个日期概念),但……没有但了,就这样吧


回答一下我示例程序中使用英文变量名的问题(又超字了,回复放到这里来)——

关于中文命名这一方面,其实本来就没有对这方面设限啊!对标识符命名原则上用任何符号都可以,只要不与语法保留字及相关符号重复就行。至于使用者是选择简体中文、繁体中文、象形文字、小篆、藏语、韩语、日语、包括汉语拼音以及现在流行的英语,从一开始不设限是留给使用者更多的选择自由,他们可以用自己喜欢的任何非语法符号——emjio图形、星座符号、动物图案甚至自己家人的图案,只要使得Unicode数据包含这些,具体使用什么样的符号形式作为标识符又有什么大不了的呢?何必一批又一批的程序员要把中文文档转换成英文命名呢,不过是习惯了英文编程语言的对其语言歧视没那么强的抵触心理罢了,宁愿活成他人希望的样子,也不愿费劲自己定义一切。

我的示例代码中为什么用字母,是因为我本来就不是两种极端对立论的任何一方支持者,从不认为这两者需要严肃的对立出来争个你死我活,从开始就留下足够大的选择空间,才会有更好的选择自由,正如东西南单单不提北,你想对你吃的瓜怎么命名,完全根据你群体的约定俗成而已。看起来符号使用乱七八糟,其实本质上最是统一的,无论是语法使用的符号,还是自定以的标识名称,最终都要转换成 0 1去执行,本质上只需要将这些符号区分成两种罢了,机器无需去具化概念某语言符号,某语系符号。它只需要知道你哪些符号用的是与编译器(或解释器之类)约定好的符号,哪些不是,了解这些就够了。

同样,这里没有使用中文变量名的背后原因是我也不排斥英文符号,正如小学数学、初高中数学都不会排斥使用字母一样,但它却能让我们不懂英语的孩子们建立良好的逻辑思维体系,让他们不因非必要的门槛而落后于先进科学。

理解我设计思想后,不难发现,我支持运算式像代数方程那样简洁,却能描述复杂的问题,甚至也有在设想能不能代码中直接解方程,毕竟数学的规律性、确定性、唯一性要比自然语言强了不知多少个数量级。这正和程序要求的准确、无二义是吻合的。 另一点,我这示例的是一个函数体,局部变量没必要严格用中文。一方面是在代码阅读背景中,工程上交流更多需要知道的是函数接口,而不会具体关注内部实现。同样,这些局部变量最后都随函数的调用而消失,一般来讲也不会允许主调函数随意使用被调函数的内部变量,两者有关联的完全是接口而已。至于你用「弄啥嘞」「干嘛呢」「搞什么」还是其他不同形式的俚语、甚至不同语系的名字作为接口,都由你自己决定!四川程序员开发的代码让北京人看,把自己的土味情话捎过去,不也是一种文化交流吗?大陆使用简体中文看那些使用繁体文字描述的代码,也没有质的难度跨度。重要的是让所处环境背景来形成你的接口背景,而不是强制规定使用哪种语系文字。

另一方面,对于中文编程的领域探索的先驱者,往往走了一个误区,以为中文编程就应该除了数字其他全部使用中文,甚至开发了符合文言文语法的编程语言(足够中式了吧,有兴趣可以搜搜)。而实际上我们不认为a b c d e f α β之流是障碍,毕竟从小学起就开始用他们,能够形成障碍的是他们的序位关系,数量多少,字母选用,正如我让你记住0~9十个阿拉伯数字达到认识零~一亿甚至更大的数,和让你记住10个人的联系号码,这完全不是一回事!英语这种线性的排列组合复杂度是26^n,相较于超算计算机也难以计算的复杂度为O(2^n)算法来说,前者是后者的爷爷也不为过。

如果我这里确定并协调好了函数定义语法与类型之间的协调性,也就会把函数名称及相关标识符写出来了。比如值交换函数,写的差不多就是「值交换」之类的名字,而不是「valueSwap」之类的了,从关键字为中文就可以看出这一点,我是从中文角度出发的。有的尝试中文编程语言,想着想着就跌入「这里都用汉字描述不太好要不借用英文原有的把,或者中文和英文保留字都支持」的陷阱,对此我也有体会。这样妥协下去,只会使得接下去的语法设计偏向英文编程的翻译!若是也有探索中文编程的,产生了这种感觉,而转向两种语系都支持,或仅支持中文的选择倾向,不妨再拿本小学数学书看看,感受一下当初的我们以及当下不会英语的这些孩子是怎么理解这些字符符号的。把握住这一点,设计方向都不会呈现「左倾」「右倾」的现象!

当然,你也可以改成这样,随你喜欢

二、listentomusic用中文怎么写?

listen to music是听音乐的意思。例如:What users do: write blogs, share photos, listen to music 用途:写博客,分享照片,听音乐。

i like listen to music 我喜欢听音乐。

isten是个动词,意思是“听”,多用于祈使句,表示叫别人仔细听。但listen是个不及物动词,就是说它后面不能接宾语。如果listen后面要接宾语怎么办,比如说“听音乐”“听老师说”,这时候就要在listen后面加个介词to了。

下面给几个例子你区分一下:听!他们正在唱歌。Listen! They are singing.听,隔壁房间有钢琴声。Listen. there comes the piano song next door.她正在听音乐。She is listening to the music.学生们很认真地听老师讲课。The students listen to the teacher carefully.

三、showmearuad用中文怎么写?

书写有误吧?应该是 “ show me around". 英语根据不同的情景环境来翻译。直译的话就是”带我四处看看“。根据语言环境也可以翻译为”给我简单介绍一下“

四、1用中文怎么写?

不能确定你要的是英文还是中文(担心有笔误而已),所以两种都提供:中文:一、壹英文:one

五、ok用中文怎么写?

ok(okay),就是“好”的意思啊 表示同意的意思。

没问题,好的,可以,行 等等 很多词都是这意思

六、welcome用中文怎么写?

welcome的中文翻译是:欢迎。不过,有时固定的句子意思就不同了,例如: you are welcom.不客气。

七、toy car用中文怎么写?

toy在中文里是“玩具”的意思,而car我们通常翻译成“小汽车”。所以一般来说我们会把toy car翻译成为“玩具小汽车”。也就是男孩子在小时候很喜欢玩的玩具小汽车。希望我的答案能够帮助到你!૧(●´৺`●)૭

八、outlook写邮件无法用中文?

因为语言被设置成了英文,需要设置回中文,操作方法如下:

1.登陆网页邮箱。

2.打开右上角有个选项——选择查看所有选项。4.在语言和时间栏位下的语言区域中,选择中文(中国)。5、最后点击保存即可。

九、shitizen怎么读音用中文写?

公民,英文是citizen;屁民,翻译为shitizen。另,有说法称英文中已经有shitizen一词,指的是对政府行为不满而又懒得去行使投票权利的人。这和国内所指的“屁民”有着本质的区别。从词型可以看出,这是由shit和citizen的后半部分组成,用这种组合形式来创造新词在西方是很常见的。读音用中文可读作:“希提森(浊音)”或“希特森(浊音)”,当然不完全一致,听得出来就行了。

十、简谱1234用中文怎么写?

在简谱唱名里音符1234的中文写法是:1(哆),2(唻),3(咪),4(发),,这是借用汉字发音的方式解读曲谱旋律走向的一种手法,需要注意的是在简谱里除了最低音的1(哆)发平声外,其余音符的读法都是二声,唱音符不准时可以利用乐器(最好是间盘乐器如钢琴)弹奏来校正发音的准确度。

顶一下
(0)
0%
踩一下
(0)
0%
相关评论
我要评论
用户名: 验证码:点击我更换图片
热点提要