“破晓”基于PowerShell的汉语编程语言 6


PowerShell中文编程语言“破晓”

PowerShell中文编程语言“破晓”

之前在QQ群中和朋友们讨论过,假如给PowerShell取一个汉语名字,群友们各显神通,什么“能量壳”,“动力火车”,“泡我雪儿”。最后尘埃落定至“破晓”。原因有二:第一它的发音和PowerShell的英文发音相似度高;第二,“破晓”的汉语意思引申为黎明,希望,富有诗意。所以我们尝试创建一个基于PowerShell代号为“破晓”的汉语自然语言编程语言。

为什么要这样做?

  • 对于一般人来讲,外语有点晦涩难懂,除非出于好奇,否则有什么理由去尝鲜呢?
  • 把它当作一门玩具语言吧。很多编程语言并没有提供给用户可以随意体验的娱乐场所。
  • 英语语法在编程语言中几乎一统江湖,很少有其它语言的编程语言。
  • 看看,能否激发中国人去扩展和完善它,让它成为主流的中文编程语言。
  • 看看能否激励其他人在非英语编程语言上取得进步。
  • 顺便提高下我的汉语,在计算机编程方面,我的汉语词汇很少,这样就会强迫我主动的学习。

为什么选择PowerShell?

  • 我对PowerShell稍微熟一点,这样可以给我节省大量的时间和精力。
  • PowerShell的脚本块功能可以非常方便的构建语法结构(悲哀的是它不支持操作符的扩展和函数嵌入)。
  • PowerShell对国标码支持很好,可以使用汉字来定义变量和函数名。
  • 它是建立在PowerShell之上的,也就包含了PowerShell的所有功能,比如和.NET framework强大的兼容性。
  • 因为PowerShell中的ETS,可以很方便的本地化一些.NET的方法和属性。
  • 借助PowerShell自动产生代理函数的功能,很容易把一些内容的命令名称和参数命数名称使用汉语来封装。
  • 使用PowerShell可以摆脱一些字符和和操作符。
  • PowerShell语法不仅可以使用ASCII 引号,还支持中文的引号。

看两个简单的例子

条件和循环

破晓 之 条件判断

破晓 之 条件判断

破晓 之 循环

破晓 之 循环

 汉语命令和汉语输出

破晓 之 measure-object

破晓 之 measure-object

主要的关注点

  •  覆盖所有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
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!

回复 Mooser Lee 取消回复

您的电子邮箱地址不会被公开。 必填项已用*标注

6 条评论 ““破晓”基于PowerShell的汉语编程语言

  • jailman

    这个……中文编程……呃……确实鸡肋……
    反正不太好使……中文没这么怪的逻辑……
    英文通用性强,所以有奇怪的逻辑也顺利成章,用中文编程就怕时间一长不会说普通话了……

  • jailman

    如果让我给这个中文编程语言起名的话,我就会叫它“迫击炮”,因为他把中文搞的支离破碎,成了碎片,而且作为一种自动化工具,批量处理任务杀伤力大!

  • iceboy2016

    老师,powerShell还支持中文编程的吗?就是上面你写的第一个例子:条件和循环
    我按照你的命令输入进去没有出来结果,一直在闪光标

  • itbj00

    个人意见,汉语编程就算了.我觉得简单的英语单词和语法,将来必定成为汉语的一部分. 或者说全球一体化. 只要显示和输入使用本民族的语言,至于处理过程吗,还是简单为好.