中文编程
文章平均质量分 74
中文编程
这个作者很懒,什么都没留下…
展开
-
从“零”开始设计中文编程语言——SQL领域演示
续 之前的小结,将回退点用栈结构管理、将分词失败的回退修正之后,成功通过了更多测试。更新后的按语法分词流程如下:当前最复杂的一个测试用例中有六条语法规则(隔天已上升到十一条),编写时发现一个语法规则错误。本文将调试过程整理一下,顺便演示当前分词算法、以及调试手段。例程为:创建读者表,编号为整数,出生年为文本一开始时为此设计的语法规则如下(摘自测试用例源码):@分析器母机.语法规则("建表 : 表声明 各列声明")@分析器母机.语法规则("各列声明 : 列声明")@分析器母机.语法规则("各原创 2021-09-23 14:10:36 · 361 阅读 · 0 评论 -
木兰编程语言一岁了!
测试覆盖的、重现了的部分木兰语法演示。用 VS Code 插件高亮,调用了草蟒库:为木兰语言编写的在线开发环境原型的后端也用木兰编写,使用 Python 框架 tornado:部分报错信息中文化:用木兰改写了 Python 入门书籍的文字冒险游戏例程:借助 Pygame 编写的小游戏:以上代码可用 pip install ulang 安装木兰后运行。项目开源在 Gitee:https://gitee.com/MulanRevive/mulan-rework一年前的万元悬赏仍在。.原创 2021-02-06 14:10:29 · 936 阅读 · 0 评论 -
【随笔】业余项目用中文命名的舒适
早先答过《如何看待国内开源项目的不可持续性?》。最近做的木兰重现项目和参与的中文代码补全插件都基本使用了中文命名,一些个人体会如下。基本是用碎片时间做开发维护,少则几分钟,多则一两小时。可以尽量充分利用碎片时间的一个重要因素就是项目使用母语命名。中文代码补全插件主要参与了代码互评和部分测试、文档等等维护工作。如果用的是英文命名,双方会花更多时间精力才能充分领会,还要花更多时间保证可读性。木兰项目基本仍是单人进行。Python 代码主要是参考木兰逆向代码并沿用设计,新加的主要是部分重构和测试相关代码。木原创 2020-12-02 11:37:50 · 275 阅读 · 0 评论 -
用中文 API 让正则表达式更易读写?
木兰语言重现项目中用到了不少正则表达式,其中不乏不那么一目了然的(Python实现):标识符:r'\$?[_a-zA-Z\u4e00-\u9fa5][_a-zA-Z0-9\u4e00-\u9fa5]*' 双引号字符串: r'(\")((?<!\\)\\\1|.)*?\1'字符串插值相关:r'\\\(([^\\\)]*)\\\)|`([^`]*)`'由此想到是否有 API 能够构建正则表达式。找到 PythonVerbalExpressions,它首页上一个示例如下:verbal_ex原创 2020-12-02 11:25:25 · 185 阅读 · 0 评论 -
木兰编程语言重现:匿名函数,lambda表达式初步
所有相关源码在码云之前实现了基本的函数功能,本周支持了如下的 lambda 表达式:边长 -> 边长 * 边长用->似乎符合数学中“映射”的表示(下摘自 wiki “Lambda calculus”页):可以在 map、filter 中使用:print(list(map(边长 -> 边长 * 边长, [1, 2, 3])))=> [1, 4, 9]也可以在块中包含多个语句:print(list(map(边长 -> { 面积 = 边长 * 边长原创 2020-09-23 15:22:48 · 178 阅读 · 0 评论 -
木兰编程语言重现——无参数函数、字典基本功能,语法设计的取舍有感
所有相关源码在码云当函数没有形参时,定义和调用时都可以省去括号,比如:func 问好 { print('吃了么')}问好感觉这个设计挺合理,但不知这种情况是否会多见。本周还实现了字典类型的基本功能,与 Python 的基本一致:电话 = { : }电话['小明'] = 1357电话 = {'小明': 1234, '小红': 4321}值得一提的是,初始化空字典时 Python 的方式是d = {},而木兰的的空字典是这样表示:{:}。因为{}在木兰中是内容为空的“代码块”,比如原创 2020-09-23 15:13:24 · 176 阅读 · 0 评论 -
木兰编程语言重现——范围语法“下限..上限 by 间隔”,重构
在支持 Python 的 range 之外,木兰还支持如下的等价语法。个人感觉这样的语法更直观易读一些:闭区间for 数 in 0..2 { println(数)}输出:012左闭右开区间:for 数 in 0..<2 { println(数)}输出:01对应的带间隔取数:这是本周重现的语法。for 数 in 4..-1 by -2 { println(数)}输出:420左闭右开区间:for 数 in 0..<4 by 2 {原创 2020-09-23 15:10:11 · 196 阅读 · 0 评论 -
甲方爸爸们请看过来:代码用中文命名,真香!
刚看到的几位乙方的心得,不敢独享:仅仅是变量名,库名,类名,文档使用中文,在国内跟其他公司,特别是非程序公司进行项目交付,相对英文,节省了巨量精力用中文做变量名包名api名让我文档直接单刀直入省了巨量精力业务员甲方拿到文档和代码bb次数少了很多,交流很快,业务进度快,这就叫精力,和金钱因为文档,需求,业务代码解释上来回扯皮 反复修改和教导解释。毕竟甲方是爸爸。 而代码是公司积累的,基础部分可以重复使用(现在也用中文重写了一边),再根据每个客户写不少的 业务代码 。中文输入,现在输原创 2020-09-23 15:07:36 · 556 阅读 · 0 评论 -
以史为鉴:初代程序员自述七十五年前的编程心得(完)
为避免开坑太多,赶紧看完。书接上文。The data descriptions in that case weren’t informal. We had forms, and you entered the data description in it. … I like the formalized things much better because I love filling in squares in answering questionnaires and things.按格式填空好过原创 2020-09-02 14:04:37 · 304 阅读 · 0 评论 -
以史为鉴:初代程序员自述七十五年前的编程心得(二)
书接上文。That December 1953 report proposed to management that mathematical programs should be written in mathematical notation, data processing programs should be written in English statements, … I was promptly told that I could not do that. And this time t原创 2020-09-02 14:01:53 · 225 阅读 · 0 评论 -
以史为鉴:初代程序员自述七十五年前的编程心得(一)
在 1978 年 ACM 举办的“编程语言历史”会议上,Grace Hopper 海军上校作了开场讲演。作为初代程序员,加上她的特殊背景,她的自述现在看来仍有现实意义。这里对自己特别有兴趣的部分作些摘记。有理解错谬请不吝指教:You’re all “Establishment”. And I think I spent 20 years fighting the “Establishment”. In the early years of programming languages, the most原创 2020-09-02 14:00:05 · 410 阅读 · 0 评论 -
明捧中文暗贬中文编程——看《英文字母已成现代中文一部分,争论汉字编程还是英文编程已无意义》
在国内,信息技术业是英文地位最高的行业之一。再加上该行业在网络的非凡影响,各种唱衰中文编程的网文可谓数十年如滔滔江水连绵不绝。在近几年中文编程尤其是中文命名初现燎原之势时,自然也招来更多嗡嗡声。前两天又看到一篇,不仅集成了常见的论调还有些新意。此文重点在分析对手、知己知彼,并不对具体内容作一一驳斥。头条号 @猴军集 的文章《英文字母已成现代中文一部分,争论汉字编程还是英文编程已无意义》与之前见到的一些网文不同,题目中并未明确倾向性。注意“汉字编程”,而非“中文编程”、“汉语编程”。开头挺别致,也基原创 2020-07-05 07:50:04 · 618 阅读 · 2 评论 -
敢问中科院计算所副研究员刘俊明:为何看不到中文编程的需求和优势?
刚看到 @IT人刘俊明 的头条文章《为何国内IT行业没有广泛采用中文编程语言》(不知为何知乎号未发此文)。作者身为中科院沈阳计算技术研究所副研究员,是如何用寥寥数百字来阐述这个大题目呢?重点:“国际化”生态难构建重点:没有新的应用场景,难以产生新的编程语言行业领域巨头才能够整合资源开发编程语言首先,虽说题目的主语是“国内IT业”,此文几乎丝毫未从国内 IT 业的角度分析需求,而是将唯一一点中文编程语言“缺乏”的特性——“国际化”拿出来作为中文编程语言不符需求的佐证。且不论公司或项原创 2020-07-03 15:48:12 · 1360 阅读 · 0 评论 -
今天你用中文命名变量了吗?
昨天又在某程序员论坛看到,有人问是否有实际项目中用中文业务术语命名变量。显而易见的——当然,早有了。就在同一个论坛,几个月前就有人发帖“第一次觉得变量名为中文可以接受”分享这样的代码:更早的“大家对于中文变量名是如何看待的?”:而且从回复中也可见共鸣者甚众,也有证言看到日本德国公司中使用母语命名的代码。中文命名在业务相关代码中的优势正被越来越多开发者亲身体验并口口相传。自然而然地,为更方便地使用中文命名,也催生了VSC 中文代码快速补全插件这样的 IDE 辅助功能,俩月不到安装数已破 500。在原创 2020-07-02 16:35:55 · 1187 阅读 · 0 评论 -
木兰编程语言重现——支持列表操作,演示编辑器高亮
通过添加列表操作等功能,已可编写经典排序算法。另外,作为代码编辑器的第一步,用 Python 实现了带基本语法高亮的编辑器原型,用于显示木兰源码。功能编辑器功能用 tkinter 的 Text 实现了如下的木兰源码高亮效果:语言功能添加了列表操作、多项赋值等等基本功能,编写经典算法已经可行。比如快速排序:func 分区(数列, 下界, 上界) { 中值 = 数列[上界] // 中值可以取任意一个位置的 前位 = 下界 for 后位 in 下界..上界 { if 数列[后位]原创 2020-06-21 02:23:54 · 316 阅读 · 0 评论 -
木兰编程语言重现——功能初具雏形,添加中文报错信息
自原型搭建已过去两个多月,现在实现了木兰编程语言一些基本的功能。正值刚搬家到 OSChina,作一阶段小结。功能以下示例都选自测试用例。调用现有 Python 库如草蟒:using * in 海龟颜色("黄色", "红色")开始填充()for 拐数 in 0..4 { 前进(200) 右转(144)}结束填充()主循环()类型:type Animal { func getName() { return 1 }}type Person :原创 2020-06-14 02:42:51 · 368 阅读 · 0 评论 -
木兰编程语言写的猜数字,有点意思~
运行:原创 2020-06-05 15:19:57 · 265 阅读 · 0 评论 -
木兰编程语言体验版更新:中文交互环境、调用 Python 库
好长一周,进展不少。可调用 Python 库,比如草蟒项目的中文库“图快”(基于 tkinter):运行源码文件有错时反馈中文信息:在交互开发环境使用中文命令:顺便用快速排序算法练手:更多详情见“木兰编程语言” VS Code 插件。上图都在 Mac 下截取。2020 年 5 月 30 日...原创 2020-05-31 13:33:38 · 347 阅读 · 0 评论 -
木兰编程语言体验版更新,附带 VS Code 支持插件
一眨眼过了四个月,多少有点进展。VSC 插件提供最基本的词法高亮,演示如下:同时,更新了发布在 PyPI 的木兰编程语言体验版。比如上面的木兰代码,保存在累计.ul。通过pip install mulang安装后在命令行下运行ulang 累计.ul(注意,PyPI 项目名是 mulang,命令行运行是 ulang)得输出 10。更多示例请见基于原 exe 的用户手册编写过程中积累的测试用例, 与原型搭建过程中积累至今的测试。...原创 2020-05-24 07:53:40 · 320 阅读 · 0 评论 -
在 PyPI 发布 Python 纯文字游戏试水——猜数字
PyPI 链接。运行pip install demo-game-guess-number安装后,在命令行下运行猜数字即进入交互游戏:$ 猜数字我想了个 100 之内的数,猜猜是几?请猜吧: 40太大了!请猜吧: 20太大了!请猜吧: 5太大了!请猜吧: 1中了!主要代码蛮简单,就是个命令行,完整代码在此:class 猜数字(cmd.Cmd): intro = "我想了个 100 之内的数,猜猜是几?" 想的 = random.randrange(100)原创 2020-05-18 14:48:29 · 272 阅读 · 0 评论 -
中文代码快速补全 VS Code 插件尝鲜
在现有编程语言中用中文命名标识符(变量、方法、类名等等)的一个常被鞭策的短板,是需要时常切换中英文。即使有“中文输入下使用英文标点”这样的输入法选项,代码中仍有相当比例的英文关键字和 API,短期内难以完全避免。趟路的多了,自然有能人开始把坑坑洼洼给填上。前不久刚发现的这个 VSC 插件就可以省去不少中英切换的麻烦。功能尝鲜一个源码文件中,有不少重复出现的标识符。安装这个插件后,只需要在首次...原创 2020-05-08 03:14:51 · 1250 阅读 · 0 评论 -
重现木兰编程语言(三)——一探特别的除
简单回顾下。本项目是为了重现「木兰」编程语言编译器,刚开始原型搭建,与原始版本一样,用 Python3 和 RPly 实现,照例使用中文命名标识符。之前实现了加法和打印输出。此文实现整数的減、乘、除,其中“除”的语义与 Python3 不同。比如print(2+3*4/5)在「木兰」中输出 4,而不是像 Python3 中输出的 4.4。设计分析可以想见,「木兰」的除法中,如果俩数是整数,...原创 2020-04-21 14:48:39 · 212 阅读 · 0 评论 -
乐见 VS Code 翻译插件衍生出中文 API
有幸碰到同样在探索中文 API 的同行,参考了之前插件中标识符翻译的部分,实现并在 pypi 发布了包含相似功能的 Python API:en2cn在 Mac 的 Python 控制台下试用的几个 API 都没有问题,顺便发现 tab 还是可以出补全的。插件已有一段时间没有改进。像之前的翻译质量改进只是刚开了头,牵涉到机器翻译,可以说是个无底洞,各种改进可以吃掉很多功夫,更不用说还有不少硬 ...原创 2020-04-18 14:20:21 · 368 阅读 · 0 评论 -
在 npm 发布中文 API 初体验——中国历代纪元
发布细节参考中文代码演示——创建 Node.js 模块过程,没什么意外。数据来源是新华字典第 11 版附录"我国历代纪元简表",以后慢慢细化,先做个草稿。现在只有一个接口:var 演示 = require('chinese-dynasties')console.log(演示.历代())输出:[ { '名': '夏', '起': -2070, '止': -1600 }, { '...原创 2020-04-08 08:03:13 · 218 阅读 · 0 评论 -
那些忍了很久的话——少儿编程的走向堪忧
全民编程是好事。但,少儿编程不一定是。为什么要把在高中、大学、甚至成人后(只要有小学学历)能在一个月甚至几周内完成的教学,占用几年义务教育的宝贵时间呢?我绝不反对对少儿进行”编程思维“的教育,但不应绑定在任何一门编程语言上。换言之,如果没有搞清楚”编程思维“是什么,也就是到底什么是编程所需的基本素质,就不该轻易在义务教育阶段加入编程教学。在我看来,”编程思维“完全不需要依赖编程甚至不用碰电脑...原创 2020-03-27 02:16:34 · 497 阅读 · 0 评论 -
基于「木兰」编译器,八行代码实现 "对于...中的"语法
早先讨论过如何汉化编程语言中的for...in关键字, 虽然有了方案,但终归受限于原英文语法的语序。之前用很少代码实现了一个新关键字,这里试试实现对于...中的语法,仅作演示之用。 与原语法比较效果如下(由于逆向工程的问题,只能用这个用例测试。欢迎参与解决该问题!详见文末):> print(n) 对于 0..2 中的 n012> print(n) for n in 0..201...原创 2020-03-04 03:33:12 · 175 阅读 · 0 评论 -
创建安卓键盘演示——改为 XML 布局
续前文:创建安卓键盘演示——“好不”因为一些 UI 元素的属性似乎只有在 XML 中才能设置,于是先摸索一下如何使用 XML 布局代替原本在 Java 代码中初始化 UI。xml/keyboard.xml:<Row> <Key android:codes="1" android:keyLabel="好" /> <...原创 2020-02-27 03:23:10 · 364 阅读 · 0 评论 -
创建安卓键盘演示——“好不”
此项目仅为演示如何创建一个最简单的安卓键盘.四年多前, 有过一次无果而终的头脑风暴. 其中的一个副产品是一个安卓键盘, 功能很简单, 只能输入 yes 或者 no.这里借用此想法, 原型实现比想象中的更简单.实现开发环境: Android Studio 3.5.3, JRE 1.8.0_202, SDK API 28.创建项目, 选择"Phone and Tablet -> Add...原创 2020-02-24 06:22:48 · 134 阅读 · 0 评论 -
基于「木兰」编译器,加十行代码实现 ∈ (属于集合)语法
因为上文有位在评论中提到想实现∈语法。虽然不在 悬赏万元,重现「木兰」编程语言编译器 的范畴中,但感觉可以很方便地通过『木兰』的语法定制机制实现。于是对逆向工程的 ulang 下的代码作了以下修改(未提交到 git,因为很容易修改)。parser/lexer.py先在 RULES 中加了 '∈',接着在分词器母机中加了对应词:lg.add('∈', '∈')parser/core.py对分...原创 2020-02-24 05:59:33 · 239 阅读 · 0 评论 -
RPLY 入门例程中文化
为对「木兰」的 1400 多行用 rply 实现的语法规则相关代码进行分析,学习了 rply 的入门文档。详见:【悬赏】对原始可执行文件的功能进行测试 · Issue #4 · MulanRevive/bountygithub.com用于解析简单加减法,只需下面的代码:from rply import LexerGenerator分词器母机 = LexerGenerator()分...原创 2020-02-22 02:01:20 · 680 阅读 · 0 评论 -
跳出编程语言本身看中文编程语言设计
一些个人建议,仅为有志于设计和实现中文编程语言的开发者作参考。编程语言,是开发者为了实现某个具体功能,使用的工具。因此它应该将目标开发者群体的用户体验放在首位。JetBrains 首先是开发了 IDE,在过程中发现 Java 的各种不便才设计了 Kotlin。个人认为,编程语言设计不应只单纯考虑编程语言本身而已,而是应该将开发者体验、生态建设、甚至软件工程综合考虑之后,得出的一整套设计。...原创 2020-02-22 01:48:42 · 346 阅读 · 0 评论 -
为「木兰」编程语言添加对中文命名标识符的支持
基于 @肖剑 的逆向工程(如很多人已经知道的, 当然是 Python 代码, 很不错, 嗯).开始对「木兰」编程语言进行分析。首先打算摸索它的基本功能。前文戳破针对「木兰」编程语言的拙劣谣言已经进行了少量代码测试.但, 可惜木兰尚未支持中文命名标识符, 打算先改进一下, 以便编写更易维护的测试代码. 测试代码打算先在逆向工程中运行(主力机器是 Mac),待基本确定范围后,再在 exe 中确认一...原创 2020-02-19 07:56:21 · 201 阅读 · 0 评论 -
中文编程开发工具的生存模式探讨
从专栏建立不久,就有些对中文编程发展可能性的设想。此篇更加关注于“如何养活自己”的问题。由于本人完全没有相关商业化经验,本文基本属于基于公开资料的调研。希望有相关经验者不吝分享心得。背景经济大环境决定了,国内各行业都在承担压力。中文编程的机遇和挑战并存自不用多说。中文命名标识符作为风险相对较小,收益相对立竿见影的手段,已经在被逐渐接受。另一方面,原创的中文编程开发工具相对门槛较高,但一直不乏有...原创 2020-01-18 05:56:35 · 248 阅读 · 0 评论 -
一种改进中文 API 可读性的方法:参数不限于在末尾
前两天才想到(起),常见英文编程语言的方法命名都将参数全部置于方法名末尾,猜测历史上是沿用自数理函数的表示(题外话:记不清当时学数学/物理时有什么英文/中文命名了,似乎都是 x,y,z,abc? 这么想来,代码可读性的根还要往理科教学挖?),现在觉得应该也与英文特性有关。因为英文命名本身已经去掉了空格,如果拆分成几段的话就会比较别扭。以假想中的方法为例作中英对比(暂不讨论 API 设计和语言实现...原创 2020-01-16 08:10:10 · 292 阅读 · 0 评论 -
草蟒 Python 中文 API 与 IDE 支持尝鲜
祝贺新中文 API 发布到 Python 库平台 pypi。它是一个Python3 汉化版——草蟒(作者为 @buddy hello)的一部分,其中的第三方库对 Python3 英文版也适用。下面节选自 pypi 简介:英文版 python 用户能够充分体验中文编程的 模块有<海龟 (turtle)>、<随机数 (random)>和<图快 (tkinter)>...原创 2020-01-15 13:31:42 · 954 阅读 · 1 评论 -
编程术语成系统中文化的意义
源自:如何理解「中国是发达国家的粉碎机」这一说法?高赞回答似乎都集中在“硬“的方面。本人四千赞回答”为什么有很多人执着于中文编程?“下有位分享:关于中文变量名,在国内金融行业有一定的市场,因为直接用英文很多专业词汇没学这个专业即使专八也不一定知道,即使是美国人也很少直接用这些专业词汇,几年前我们对接过一个石油银行结汇的系统,软件是IBM的“承包商”提供,里面的专业词汇变量都类似LR_0001...原创 2020-01-13 07:05:48 · 241 阅读 · 0 评论 -
国内开源项目的不可持续性之我见
源自:如何看待国内开源项目的不可持续性? 虽不是唯一、但是往往被忽视的一个重要因素。先做个小实验:写一段 50 字左右的中文随笔,再用英文写一遍同样的内容。懒的话,下面是我刚写的:首先,你先看了哪段?这就是第一个大问题:第二语言写就的内容,不如母语写的看着吸引人。说什么自然语言和代码完全不搭噶的,请自己去了解”代码可读性“。换言之,写出的英文代码往往更没有拥有感。国外有个很常见的说法,“t...原创 2020-01-12 16:21:24 · 309 阅读 · 0 评论 -
编程也可以走中国风
源自之前回答:怎么将中国风与编程结合在一起?教程中实践过:"西游记"主题Python入门示例尝试-数据结构 5.1-5.1.2还有Python官方入门教程的这段新手看来不知所谓的:中国风的就可以这样:def 妖精(能耐, 名字='白骨精', 降服者='孙悟空', 原形='骷髅'): print("尽管善于" + 能耐 + ", " + 名字 + "仍被" + 降...原创 2020-01-12 02:18:08 · 537 阅读 · 0 评论 -
”为什么有这么多人执着于中文编程?”第二春:新评论的一并回应
貌似又来了一波流量,类似前文:”为什么有这么多人执着于中文编程?”回答两千赞留念及回应,继续统一回应。首先,由于我的回答只提到了标识符和 API 使用中文命名,似乎有答者误会我对中文编程语言的态度。从两年多前创建本专栏开始,就一直坚信中文编程语言的必要性和优势:国人创造中文编程语言的优势对中文语法的编程语言的质疑与回应最近对入手点的一些思考:既然开发新中文编程语言离不开API, 何不从开...原创 2020-01-11 15:26:43 · 292 阅读 · 0 评论 -
拿什么拯救你,长英文命名——用中文(也许标点也可以)试试
前文在代码中进行中文命名(类/变量/方法等)的优势已小结了一些,此文是因为某回复说用全中文命名不一定比中英混合短,于是用那个回答下的例子作了下比较:注:此文并不仅针对此回复,仅用此例作引findBy客户编号And交易账号And基金代码OrderBy发生日期Asc // 这是原例程(非本人作者)通过客户编号交易账号和基金代码查找并按发生日期升序排列 // 源自该回复fin...原创 2020-01-11 15:04:09 · 347 阅读 · 0 评论