本文目录
之前在QQ群中和朋友们讨论过,假如给PowerShell取一个汉语名字,群友们各显神通,什么“能量壳”,“动力火车”,“泡我雪儿”。最后尘埃落定至“破晓”。原因有二:第一它的发音和PowerShell的英文发音相似度高;第二,“破晓”的汉语意思引申为黎明,希望,富有诗意。所以我们尝试创建一个基于PowerShell代号为“破晓”的汉语自然语言编程语言。
为什么要这样做?
- 对于一般人来讲,外语有点晦涩难懂,除非出于好奇,否则有什么理由去尝鲜呢?
- 把它当作一门玩具语言吧。很多编程语言并没有提供给用户可以随意体验的娱乐场所。
- 英语语法在编程语言中几乎一统江湖,很少有其它语言的编程语言。
- 看看,能否激发中国人去扩展和完善它,让它成为主流的中文编程语言。
- 看看能否激励其他人在非英语编程语言上取得进步。
- 顺便提高下我的汉语,在计算机编程方面,我的汉语词汇很少,这样就会强迫我主动的学习。
为什么选择PowerShell?
- 我对PowerShell稍微熟一点,这样可以给我节省大量的时间和精力。
- PowerShell的脚本块功能可以非常方便的构建语法结构(悲哀的是它不支持操作符的扩展和函数嵌入)。
- PowerShell对国标码支持很好,可以使用汉字来定义变量和函数名。
- 它是建立在PowerShell之上的,也就包含了PowerShell的所有功能,比如和.NET framework强大的兼容性。
- 因为PowerShell中的ETS,可以很方便的本地化一些.NET的方法和属性。
- 借助PowerShell自动产生代理函数的功能,很容易把一些内容的命令名称和参数命数名称使用汉语来封装。
- 使用PowerShell可以摆脱一些字符和和操作符。
- PowerShell语法不仅可以使用ASCII 引号,还支持中文的引号。
看两个简单的例子
条件和循环
汉语命令和汉语输出
主要的关注点
- 覆盖所有PowerShell内置的语法结构和关键字。但是由于PowerShell的限制不能替换这些内置的关键字,所以,我们可以尝试使用自定义的函数来做这件事。像我在实现IF/Then 结构时那样,可以换个思路。
- 以管道为中心。
- 借助代理函数,使用中文版本的名称,参数和输出来覆盖一些重要的PowerShell内置命名比如(where-object, group-object, sort-object, select-object)。
- 在翻译PowerShell的默认动词时,尽量使用中文自然语言。如果一个动词在PowerShell中存在多义性,可以使用不同的动词来处理。
- 提供一些中文语言的字符串常量。
- 覆盖操作符和比较符。
- 如果有别名就更好了。
- 类型加速器,或者能提供一些类型的别名。
- 支持中文和英文的帮助文档。
- 也可以扩展Tab键的智能提示。
- 能以ISE插件的方式提供英文->中文的快捷键。
- 在动词和名词之间使用短杠。这样更接近自然语言。
荔非苔注:我不得不敬佩老外的多管闲事,理智一点来讲,英文语言编程输入方便,通用性强这是它为什么能雄霸天下,而中文稍显鸡肋。但是如果我们能够出于兴趣,学习Karl的思路去思考问题,动手解决问题,比如完成“破晓”这个项目,且不论功德一件,至少对PowerShell的理解上升一个层次。
“破晓”的代码托管在:DayBreak-ChinesePowerShell
本文核心思想引用自Karl 的博客:Introducing DayBreak. A Chinese language “DSL” on top of PowerShell
本文链接: https://www.pstips.net/introducing-daybreak
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!
这个……中文编程……呃……确实鸡肋……
反正不太好使……中文没这么怪的逻辑……
英文通用性强,所以有奇怪的逻辑也顺利成章,用中文编程就怕时间一长不会说普通话了……
表示非常同意,尤其在开始尝试的时候,就发现各种问题了。
如果让我给这个中文编程语言起名的话,我就会叫它“迫击炮”,因为他把中文搞的支离破碎,成了碎片,而且作为一种自动化工具,批量处理任务杀伤力大!
老师,powerShell还支持中文编程的吗?就是上面你写的第一个例子:条件和循环
我按照你的命令输入进去没有出来结果,一直在闪光标
个人意见,汉语编程就算了.我觉得简单的英语单词和语法,将来必定成为汉语的一部分. 或者说全球一体化. 只要显示和输入使用本民族的语言,至于处理过程吗,还是简单为好.
同意,所以后来就没在那个项目上浪费时间,主要是输入不方便