自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(270)
  • 资源 (1)
  • 问答 (2)
  • 收藏
  • 关注

原创 木兰编程语言一岁了!

测试覆盖的、重现了的部分木兰语法演示。用 VS Code 插件高亮,调用了草蟒库:为木兰语言编写的在线开发环境原型的后端也用木兰编写,使用 Python 框架 tornado:部分报错信息中文化:用木兰改写了 Python 入门书籍的文字冒险游戏例程:借助 Pygame 编写的小游戏:以上代码可用 pip install ulang 安装木兰后运行。项目开源在 Gitee:https://gitee.com/MulanRevive/mulan-rework一年前的万元悬赏仍在。.

2021-02-06 14:10:29 936

原创 明捧中文暗贬中文编程——看《英文字母已成现代中文一部分,争论汉字编程还是英文编程已无意义》

在国内,信息技术业是英文地位最高的行业之一。再加上该行业在网络的非凡影响,各种唱衰中文编程的网文可谓数十年如滔滔江水连绵不绝。在近几年中文编程尤其是中文命名初现燎原之势时,自然也招来更多嗡嗡声。前两天又看到一篇,不仅集成了常见的论调还有些新意。此文重点在分析对手、知己知彼,并不对具体内容作一一驳斥。头条号 @猴军集 的文章《英文字母已成现代中文一部分,争论汉字编程还是英文编程已无意义》与之前见到的一些网文不同,题目中并未明确倾向性。注意“汉字编程”,而非“中文编程”、“汉语编程”。开头挺别致,也基

2020-07-05 07:50:04 618 2

原创 商业项目中改用中文命名标识符实例分析

2020 年注定难过,说起来并不是改用中文命名的最好时机,因为在压力之下会更倾向于减小风险,包括用老的英文命名方式。另一角度说,如果过渡顺利,在这关键时刻,中文命名标识符这一看似不起眼的技术也许会决定企业命运。这里看到的“工期缩短到1/10”也许是个特例,但,综合风险和技术门槛,对比带来的竞争力提升,它仍是值得尝试的。因此,虽然此文迟来了些,但仍希望能有所助益,为已经巨大的压力減些负。此文主要...

2020-04-18 08:24:28 285

原创 悬赏万元,重现「木兰」编程语言编译器

重金悬赏,重现「木兰」编程语言编译器下面内容不一定及时更新。最近更新见github源repo:重金悬赏,重现「木兰」编程语言编译器本人特此声明:任何人,可以借助于任何现有开源技术,包括 Python 编译器本身。只要实现一个解释器或编译器,能够完成 ulang-0.2.2.exe 的功能,与它的编程语言语法和结果一致(1 月 26 日补:项目目标),并且将代码公开开源,以证明实现的原创性,本...

2020-02-21 18:54:58 229

原创 戳破针对「木兰」编程语言的拙劣谣言

谣言一:「木兰」就是 Python 换了个名字在各色媒体的含沙射影和误导下,恐怕现在大部分公众都误认为「木兰」编程语言就是完完全全的 Python 语言换个名头而已。一个某问答网站的高赞回答中就有这样的“证言”:然而,谎言重复千遍也不能成为真理!这些口诛笔伐和流言中,没有任何一个敢于贴出「木兰」实际的运行截图。为什么?难道是不会运行 exe 文件?还是因为,只要运行出来就会让大众看到,它...

2020-02-19 07:53:06 267

原创 草蟒 Python 中文 API 与 IDE 支持尝鲜

祝贺新中文 API 发布到 Python 库平台 pypi。它是一个Python3 汉化版——草蟒(作者为 @buddy hello)的一部分,其中的第三方库对 Python3 英文版也适用。下面节选自 pypi 简介:英文版 python 用户能够充分体验中文编程的 模块有<海龟 (turtle)>、<随机数 (random)>和<图快 (tkinter)&gt...

2020-01-15 13:31:42 954 1

原创 “中文编程”知乎专栏两岁了——山雨欲来风满楼

白驹过隙,恍若隔世。下图两边都来自V2EX论坛。左:十天前,一个中文命名变量代码截图(作者非本人)帖的评论区。右:325天前,本人一篇中英命名代码对比截图的评论区。冰火两重天。从2018年7月末开始,开始更加专注于中文命名标识符的实践与推广(原因详见那段时间专栏文章),也是在那时注册了V2EX。在那之后的半年间,发起了数个上百回复的讨论,免不了各种激烈对峙,也有幸领到了降权、限制访问等...

2019-11-12 14:18:06 329

原创 对在代码中使用中文命名标识符的质疑与回应

对在代码中使用中文命名的质疑与回应没有好处不利于非中文编程者贡献芬兰人Linus,使用英语而非自己的母语来编写Linux代码附上中文注释就够了绝大多数API, 包括标准库都是英文的如果关键词还是英文, 用中文命名就没有意义编程语言本身和英文语法无关中文输入太慢, 降低开发效率会有各种汉字编码问题导致乱码看多了中文程序会影响英文学习,以及程序员前程中英混用的问题没有先例中文比英文更难以理解&amp;quot;我们在用...

2018-12-17 15:47:27 752 1

原创 从“零”开始设计中文编程语言——SQL领域演示

续 之前的小结,将回退点用栈结构管理、将分词失败的回退修正之后,成功通过了更多测试。更新后的按语法分词流程如下:当前最复杂的一个测试用例中有六条语法规则(隔天已上升到十一条),编写时发现一个语法规则错误。本文将调试过程整理一下,顺便演示当前分词算法、以及调试手段。例程为:创建读者表,编号为整数,出生年为文本一开始时为此设计的语法规则如下(摘自测试用例源码):@分析器母机.语法规则("建表 : 表声明 各列声明")@分析器母机.语法规则("各列声明 : 列声明")@分析器母机.语法规则("各

2021-09-23 14:10:36 361

原创 【随笔】业余项目用中文命名的舒适

早先答过《如何看待国内开源项目的不可持续性?》。最近做的木兰重现项目和参与的中文代码补全插件都基本使用了中文命名,一些个人体会如下。基本是用碎片时间做开发维护,少则几分钟,多则一两小时。可以尽量充分利用碎片时间的一个重要因素就是项目使用母语命名。中文代码补全插件主要参与了代码互评和部分测试、文档等等维护工作。如果用的是英文命名,双方会花更多时间精力才能充分领会,还要花更多时间保证可读性。木兰项目基本仍是单人进行。Python 代码主要是参考木兰逆向代码并沿用设计,新加的主要是部分重构和测试相关代码。木

2020-12-02 11:37:50 275

原创 用中文 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

原创 木兰编程语言重生:PyPI 发布版本 0.0.14.1

号外!木兰重现项目首次在 pypi 发布:ulang 0.0.14.1安装方法:pip install ulang,使用方法与例程请见 pypi 项目首页(源于码云首页)。已在 Mac 和 Win7 安装运行成功。注意!必须先安装 python 3.7版本号的来由之前基于逆向工程的体验版打包在 mulang,而现在这个版本是木兰重现项目生成的。mulang 的版本号到了 0.0.13,为避免版本降低导致的困惑,选择了继续增加版本号到 0.0.14。至于末尾加更小版本,主要考虑原始可执行文件版本为

2020-10-16 16:41:42 284

原创 木兰编程语言重现:通过玩三岁游戏完善语言功能

某个号称三岁以上就可以玩的桌游,抽象之后的基本问题就是在一个区域中如何摆放三种形状(朝向随意)。比如区域:三种形状(短折,长折,一字),各种朝向如下:这是迄今为止用木兰语言编写的最复杂的实用代码,包括一个递归搜索,长约 150 行,测试约 70 行。其中一个类如下:细节和算法有很大改进空间,欢迎指教。期间根据需要复现了木兰语言的如下功能:== 操作符重载type 点 { func $点(横, 纵) { self.横, self.纵 = 横, 纵 }

2020-10-15 23:46:10 187

原创 木兰编程语言重现:完善函数功能,常用字拆分数据处理实例

注:项目目标见码云代码库为方便使用 Python 的标准库与第三方库,支持了函数调用时指定形参名的方式,比如下面代码第一行打开文件的encoding="utf-8":与之相关,定义函数时可以指定形参默认值,也一并添加。这段代码是为了获取常用汉字的拆字数据。源数据包括了几万汉字的信息比如:U+4FC7 俇 ⿰亻狂U+4FC8 俈 ⿰亻告U+4FC9 俉 ⿰亻吾U+4FCA 俊 ⿰亻夋首先写了个简单的常用字库,用以判断一个字是否属于常用的 2500 字(详见源码)。上图的代码是过滤了源数据

2020-10-15 23:43:43 192

原创 重温初见木兰的那个战场

印象里,那是一段阳光灿烂但漫长的时日。但细看日历,不过区区一周多而已。在记忆被冲淡扭曲太多之前,重温那场战斗。1 月 16 日 不急太平洋时间 1 月 15 号下午,刷头条瞄到中国青年报新闻《我国自主开发的编程语言“木兰”正式发布》一文,兴奋不已,想着”难道 2020 年会成为国产编程语言元年么?“,没搜到官网和文档,就在知乎发了问题《「木兰」编程语言有什么特色?》。那是北京时间 16 日早上,与木兰的邂逅是愉悦的。当天就看到不少回复,有位还找到了官网的可执行文件 ulang-0.2.2.exe 下载

2020-10-12 16:01:46 176

原创 木兰编程语言重现:匿名函数,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

原创 木兰编程语言重现——无参数函数、字典基本功能,语法设计的取舍有感

所有相关源码在码云当函数没有形参时,定义和调用时都可以省去括号,比如:func 问好 { print('吃了么')}问好感觉这个设计挺合理,但不知这种情况是否会多见。本周还实现了字典类型的基本功能,与 Python 的基本一致:电话 = { : }电话['小明'] = 1357电话 = {'小明': 1234, '小红': 4321}值得一提的是,初始化空字典时 Python 的方式是d = {},而木兰的的空字典是这样表示:{:}。因为{}在木兰中是内容为空的“代码块”,比如

2020-09-23 15:13:24 176

原创 木兰编程语言重现——范围语法“下限..上限 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

原创 甲方爸爸们请看过来:代码用中文命名,真香!

刚看到的几位乙方的心得,不敢独享:仅仅是变量名,库名,类名,文档使用中文,在国内跟其他公司,特别是非程序公司进行项目交付,相对英文,节省了巨量精力用中文做变量名包名api名让我文档直接单刀直入省了巨量精力业务员甲方拿到文档和代码bb次数少了很多,交流很快,业务进度快,这就叫精力,和金钱因为文档,需求,业务代码解释上来回扯皮 反复修改和教导解释。毕竟甲方是爸爸。 而代码是公司积累的,基础部分可以重复使用(现在也用中文重写了一边),再根据每个客户写不少的 业务代码 。中文输入,现在输

2020-09-23 15:07:36 557

原创 以史为鉴:初代程序员自述七十五年前的编程心得(完)

为避免开坑太多,赶紧看完。书接上文。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

原创 以史为鉴:初代程序员自述七十五年前的编程心得(二)

书接上文。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

原创 以史为鉴:初代程序员自述七十五年前的编程心得(一)

在 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 411

原创 敢问中科院计算所副研究员刘俊明:为何看不到中文编程的需求和优势?

刚看到 @IT人刘俊明 的头条文章《为何国内IT行业没有广泛采用中文编程语言》(不知为何知乎号未发此文)。作者身为中科院沈阳计算技术研究所副研究员,是如何用寥寥数百字来阐述这个大题目呢?重点:“国际化”生态难构建重点:没有新的应用场景,难以产生新的编程语言行业领域巨头才能够整合资源开发编程语言首先,虽说题目的主语是“国内IT业”,此文几乎丝毫未从国内 IT 业的角度分析需求,而是将唯一一点中文编程语言“缺乏”的特性——“国际化”拿出来作为中文编程语言不符需求的佐证。且不论公司或项

2020-07-03 15:48:12 1360

原创 今天你用中文命名变量了吗?

昨天又在某程序员论坛看到,有人问是否有实际项目中用中文业务术语命名变量。显而易见的——当然,早有了。就在同一个论坛,几个月前就有人发帖“第一次觉得变量名为中文可以接受”分享这样的代码:更早的“大家对于中文变量名是如何看待的?”:而且从回复中也可见共鸣者甚众,也有证言看到日本德国公司中使用母语命名的代码。中文命名在业务相关代码中的优势正被越来越多开发者亲身体验并口口相传。自然而然地,为更方便地使用中文命名,也催生了VSC 中文代码快速补全插件这样的 IDE 辅助功能,俩月不到安装数已破 500。在

2020-07-02 16:35:55 1187

原创 木兰编程语言重现——儿歌查询实例,引用模块、字符串列表操作

实现了最基本的对木兰模块的引用功能,正好想做一个儿歌查询,方便找适合小孩唱的歌,就用这个实例进行功能验证。过程中发现缺了一些字符串和列表的基本功能,于是按需添加。功能这是儿歌数据模块的木兰源码:下面的搜索部分引用了数据模块(开头using):其中的 map、filter、list 功能与 Python3 相同。不支持用in判断是否为子字符串,于是用find代替。代码统计下面是几个主要部分的代码行数统计,+的为相对上周的增量。测试木兰测试用例:601 + 299 = 900测试.py

2020-06-27 16:50:28 239

原创 木兰编程语言重现——支持列表操作,演示编辑器高亮

通过添加列表操作等功能,已可编写经典排序算法。另外,作为代码编辑器的第一步,用 Python 实现了带基本语法高亮的编辑器原型,用于显示木兰源码。功能编辑器功能用 tkinter 的 Text 实现了如下的木兰源码高亮效果:语言功能添加了列表操作、多项赋值等等基本功能,编写经典算法已经可行。比如快速排序:func 分区(数列, 下界, 上界) { 中值 = 数列[上界] // 中值可以取任意一个位置的 前位 = 下界 for 后位 in 下界..上界 { if 数列[后位]

2020-06-21 02:23:54 316

原创 木兰编程语言重现——功能初具雏形,添加中文报错信息

自原型搭建已过去两个多月,现在实现了木兰编程语言一些基本的功能。正值刚搬家到 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

原创 木兰编程语言写的猜数字,有点意思~

运行:

2020-06-05 15:19:57 265

原创 木兰编程语言体验版更新:中文交互环境、调用 Python 库

好长一周,进展不少。可调用 Python 库,比如草蟒项目的中文库“图快”(基于 tkinter):运行源码文件有错时反馈中文信息:在交互开发环境使用中文命令:顺便用快速排序算法练手:更多详情见“木兰编程语言” VS Code 插件。上图都在 Mac 下截取。2020 年 5 月 30 日...

2020-05-31 13:33:38 347

原创 木兰编程语言体验版更新,附带 VS Code 支持插件

一眨眼过了四个月,多少有点进展。VSC 插件提供最基本的词法高亮,演示如下:同时,更新了发布在 PyPI 的木兰编程语言体验版。比如上面的木兰代码,保存在累计.ul。通过pip install mulang安装后在命令行下运行ulang 累计.ul(注意,PyPI 项目名是 mulang,命令行运行是 ulang)得输出 10。更多示例请见基于原 exe 的用户手册编写过程中积累的测试用例, 与原型搭建过程中积累至今的测试。...

2020-05-24 07:53:40 321

原创 在 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

原创 中文代码快速补全 VS Code 插件尝鲜

在现有编程语言中用中文命名标识符(变量、方法、类名等等)的一个常被鞭策的短板,是需要时常切换中英文。即使有“中文输入下使用英文标点”这样的输入法选项,代码中仍有相当比例的英文关键字和 API,短期内难以完全避免。趟路的多了,自然有能人开始把坑坑洼洼给填上。前不久刚发现的这个 VSC 插件就可以省去不少中英切换的麻烦。功能尝鲜一个源码文件中,有不少重复出现的标识符。安装这个插件后,只需要在首次...

2020-05-08 03:14:51 1250

原创 重现木兰编程语言(三)——一探特别的除

简单回顾下。本项目是为了重现「木兰」编程语言编译器,刚开始原型搭建,与原始版本一样,用 Python3 和 RPly 实现,照例使用中文命名标识符。之前实现了加法和打印输出。此文实现整数的減、乘、除,其中“除”的语义与 Python3 不同。比如print(2+3*4/5)在「木兰」中输出 4,而不是像 Python3 中输出的 4.4。设计分析可以想见,「木兰」的除法中,如果俩数是整数,...

2020-04-21 14:48:39 213

原创 乐见 VS Code 翻译插件衍生出中文 API

有幸碰到同样在探索中文 API 的同行,参考了之前插件中标识符翻译的部分,实现并在 pypi 发布了包含相似功能的 Python API:en2cn​在 Mac 的 Python 控制台下试用的几个 API 都没有问题,顺便发现 tab 还是可以出补全的。插件已有一段时间没有改进。像之前的翻译质量改进只是刚开了头,牵涉到机器翻译,可以说是个无底洞,各种改进可以吃掉很多功夫,更不用说还有不少硬 ...

2020-04-18 14:20:21 368

原创 在 npm 发布中文 API 初体验——中国历代纪元

发布细节参考中文代码演示——创建 Node.js 模块过程,没什么意外。数据来源是新华字典第 11 版附录"我国历代纪元简表",以后慢慢细化,先做个草稿。现在只有一个接口:var 演示 = require('chinese-dynasties')console.log(演示.历代())输出:[ { '名': '夏', '起': -2070, '止': -1600 }, { '...

2020-04-08 08:03:13 219

原创 那些忍了很久的话——木兰编程语言的热度也要蹭?AI 是个筐,啥都能往里装?

之前关于木兰的大众媒体文章中,这篇是最让我如鲠在喉的:《木兰”套壳,科研打假不妨引入人工智能》此文发布在 1 月 21 日,「木兰」编程语言尚在专家评审中。其中将「木兰」和 AI 牵扯起来的唯一一句是:而以“木兰”为例,虽不是学术文章而是一种编程语言,但它在多大程度上照搬了Python语言,对于AI来说应非难事。就凭这一句,明眼人就可以看出,作者不仅对 AI 完全是门外汉,对编程语言...

2020-03-27 02:19:49 325

原创 那些忍了很久的话——少儿编程的走向堪忧

全民编程是好事。但,少儿编程不一定是。为什么要把在高中、大学、甚至成人后(只要有小学学历)能在一个月甚至几周内完成的教学,占用几年义务教育的宝贵时间呢?我绝不反对对少儿进行”编程思维“的教育,但不应绑定在任何一门编程语言上。换言之,如果没有搞清楚”编程思维“是什么,也就是到底什么是编程所需的基本素质,就不该轻易在义务教育阶段加入编程教学。在我看来,”编程思维“完全不需要依赖编程甚至不用碰电脑...

2020-03-27 02:16:34 497

原创 那些忍了很久的话——人工智能盲目跟风该休了

在知乎有段时间了,一直以来,都专注于中文编程相关技术,不愿对其他技术进行指摘。但现在时局动荡,有些话,现在不说,不知还有没有机会说了。(背景介绍:我 2008 年来美国之前,对人工智能有着巨大的憧憬,当时的自我感觉是,发现了一条迅速实现人工智能的蹊径。后来硕士阶段也学习了一些相关知识,最后妄图用一个脑洞来做申请博士的材料,但无果而终。)最近这波人工智能的风潮已经有好几年,当然是有收获的,比如...

2020-03-27 01:55:48 263

原创 AI 诊断准确率 96%,剩下的 4% 误诊谁来负责?

在推出一个多月后,阿里的此项“新冠肺炎 AI 诊断技术”已经开始向全球医院推广。广告原文如下:准确率达 96% 以上这里先不细究 96% 的准确率从何而来。做过 AI 的都知道统计数据的水有多深,想要好看数据有的是办法。也不讨论到底能省去多少医生负担,甚至说在某些情况下是否会反而增加医生负担。这里只讨论责任问题。毕竟这是医疗,责任重大,更不用说是新冠肺炎这一传染性极大的疾病。想象一个...

2020-03-20 07:15:02 520

原创 木兰编程语言入门教程之五——数据结构

本教程不求全面,各个方面点到即止。目标是尽快对木兰编程语言的功能有基本的了解。所有内容在此验证过。欢迎反馈/提交PR。之前的章节:一、浅介二、控制走向三、函数和类型四、模块五、数据结构5.1 列表列表操作,包括计数、搜索、倒序、添加、排序,等等。> fruits = ['橙子', '苹果', '梨子', '香蕉', '猕猴桃', '苹果', '香蕉']> fru...

2020-03-15 04:21:21 340

代码翻译 (英汉词典) - Visual Studio Code插件

批量翻译适用于Java,Python,PHP等代码。 本地77万词条英汉词典,不依赖任何在线翻译API,无查询次数限制。可翻译驼峰和下划线命名,及对整个文件中的标识符批量翻译。Translate a selected identifier, or all the recognized identifiers in one source file.

2019-05-16

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除