Skip to content

Commit 100a4e9

Browse files
committed
2017 文章, 新评论
1 parent 967da70 commit 100a4e9

File tree

4 files changed

+44
-2
lines changed

4 files changed

+44
-2
lines changed
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
https://zhuanlan.zhihu.com/p/25210915
2+
3+
至今为止的编程语言都与自然语言相去甚远, 感觉是因为历史原因和惯性思维. 如果反过来, 从自然语言出发, 渐进地增加对各种语法的支持, 应该可以减少学习代价和语言演化的成本.
4+
5+
随便一搜, 就发现十七年前已有了国人的研究: [自然语言和计算机编程语言的比较](https://blog.csdn.net/mentat/article/details/27838) (链接失效,原文为论文)
6+
7+
其中就说到了为使自然语言理解成为可能, 尝试对汉语语法进行规范. 个人认为, 这种自上而下的行为很难在保证汉语表达性和自由度的前提下, 进行大规模的推广. 从另一角度看, 假设这种规范能够实施, 这种可被计算机理解的自然语言子集就可以作为编程语言了. 但即使实现了, 在其他编程语言功能已完善的当下,这类规范很难推行, 因为业界很难有长远视野/资本. 随着市场接近于饱和, 急功近利的习惯将会愈发严重, 吃螃蟹的代价将越来越高.
8+
9+
回到头里, 一种可能的自下而上的演化方式是: 不对语法和用法进行任何限制和规范, 通过一个允许语法扩展和在歧义存在时人工选择语义的开发框架, 在逐渐完善自然语言分析的过程中, 演化出一套对通用编程常用和好用的自然语言子集.
10+
11+
接下来的问题是, 什么领域最适合于开展自然语言编程的实验. 现在看来, 是写测试和创建原型. 已经有Cucumber框架用一个很小的自然语言子集编写测试用例(Cucumber入门1 - 传统流程下的使用). 创建原型现在多数方案(Mockplus, gomockingbird, balsamiq等)都是用控件拖放的方式快速开发, 而加入交互还需要额外处理(虽然[成本不大](https://my.oschina.net/u/2008098/blog/780549)(失效)). 用自然语言编程直接生成原型的好处是, 可以直接从设计文档生成, 而省去了定制控件的人工成本.
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
https://www.zhihu.com/question/65482839/answer/260503277
2+
3+
个人认为,国人创造英文编程语言几乎不可能推广达到主流的程度。即使有首创的其他语言都不具备的强大特性,也多半会被现有语言借鉴吸收而失去竞争力。而在那之前很难聚集足够社区支持自身发展。
4+
5+
最有突破可能的就是创造中文语法的开源的编程语言和IDE,迭代开发几个周期总会有合适的设计脱颖而出。
6+
7+
相关: [讨论: 适合中文用户的编程语言和IDE, 侧重于现有语言/IDE不具备的特性](https://github.com/program-in-chinese/overview/issues/11)
8+
9+
---- 刚才用手机不方便 ----
10+
11+
有两个问题:
12+
13+
- 国人多数自创的还是英文编程语言.
14+
- 所有自创语言都是用英文代码实现的.
15+
16+
第一个问题, 有多方面原因导致很难跻身主流. 首先, 因为母语不是英语, 所以语法设计很难比国外的类自然语言语法的语言更被外国开发者接受. 而如果不是类自然语言语法, 那么和现有的语言又不会有一目而然的区别. 其次, 接下来就是拼语言特性和运行效率, 而主流语言发展到今日, 这两者要么均衡, 要么有特长, 后发者很难有压倒性优势. 另外, 还有一个开发者参与的问题. [对在代码中使用中文命名的质疑与回应](https://zhuanlan.zhihu.com/p/30529835) 中这一段在这里也适用:
17+
18+
> 现状是, 中文开发者主创的开源库/框架, 绝大多数的贡献者也都是中文开发者, 即使非常流行和国际化的框架如vuejs也是如此. 原因肯定是多方面的. 能够想到的有:
19+
> 1. 有类似功能的国外开源项目. 作为外国程序员首选参与的肯定是那些
20+
> 2. 如果是和中文本身相关的库, 如结巴分词, 主要的用户也是中文开发者, 自然维护的也是
21+
22+
紧接着的就是第二个问题. 用英文代码来实现语言在一开始就自加了负担. 不仅不利于长期维护,而且直接影响参与度. 而中文代码在有很多依赖库/框架不支持中文导致的难以大规模推广的问题, 在创造实现新编程语言时恰恰是相对最没有威胁的, 因为外部依赖相对较少.
23+
24+
话说回来, 个人完全不反对创造英文编程语言, 和现有语言直接竞争和交流. 只是个人认为这条路比创造中文编程语言更难也对国内开发者效用较小.
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
2+
[选择编程语言的思考](https://mark24code.github.io/%E7%A8%8B%E5%BA%8F%E6%80%9D%E8%80%83/2024/05/29/%E9%80%89%E6%8B%A9%E7%BC%96%E7%A8%8B%E8%AF%AD%E8%A8%80%E7%9A%84%E6%80%9D%E8%80%83.html)
3+
4+
> 最后选择一个喜欢的,能让你在三分钟热度内搞定的。
5+
6+
《一站式 IDE》—— 需求描述
7+
8+
《使用自然语言进行编程》—— 测试相对业务丰富且术语范围和语义相对有限
9+

_posts/草稿/2024-05-23-评论.md

Lines changed: 0 additions & 2 deletions
This file was deleted.

0 commit comments

Comments
 (0)