-
Notifications
You must be signed in to change notification settings - Fork 34
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
讨论: 适合中文用户的编程语言和IDE, 侧重于现有语言/IDE不具备的特性 #11
Comments
2000年的论文: 自然语言和计算机编程语言的比较. 自然语言是以中文为主要分析对象的. |
I think there should be some IntelliJ IDEA Chinese language patch. I've seen that once. |
这个补丁是汉化IDEA界面还是有支持中文代码开发的功能? |
汉化界面啊。。 |
恩 开发环境有中文界面是一个必需特性. |
@lightrabbit 有兴趣的话方便在首页添加个TypeScript的中文代码例程吗?
这个好像和"内置适合编程的中文输入法"的想法有点交集. 话说看你的示例里好像没有用额外的输入法? 是visual studio已经能够识别拼音了吗? |
感觉题目有些误导, 修正了一下. 之后会随着讨论进行而更新特性列表. |
@nobodxbodon 这个就是上面的插件提供的功能,只是因为VSCode修改了代码中的匹配算法,和菜单面板里的不同了,所以那个插件对于新版的VSCode,暂时不能提供代码中用拼音匹配中文标识符的功能。 |
Emacs 或者 Vi 呢?我想一个中文合适也不需要用老鼠的IDE。石涛
2017-08-07 9:43 GMT+08:00 lightrabbit <[email protected]>:
… @nobodxbodon <https://github.com/nobodxbodon> 这个就是上面的插件提供的功能,
只是因为VSCode修改了代码中的匹配算法,和菜单面板里的不同了,所以那个插件对于新版的VSCode,暂时不能提供代码中用拼音匹配中文标识符的功能。
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
<#11 (comment)>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/AJoUCSMEaqJ94jzKPxEmGJqjNkfZGMlDks5sVmvLgaJpZM4OqSsO>
.
|
@lightrabbit 哦! 真难得, @cleverdango 是这个插件的作者吧, 有幸ta也在组里. 像这种专门针对中文用户的项目感觉最适合用中文编程了. 确实, 插件就是受制于IDE. 像Firefox插件在火狐决定放弃xul支持之后社区一片怨声载道. @taostein 惭愧, 在下对这两个编辑器仅限于在linux里看看log文件的使用程度. 请问这些非图形界面的IDE在支持中文编程方面有什么特殊需要吗? 比如输入法和自动补全, 和图形界面的IDE相比有什么不同吗? |
@nobodxbodon 这个坑就是 @lightrabbit 挖的,部分代码也是他写的当时因为有些别的原因所以没有分开commit |
你们可以把 @lightrabbit 拉到组里讨论,他比我更懂些技术细节 |
请帖已经发给 @lightrabbit . 不知是否收到. |
@nobodxbodon 插件受制于IDE这个,也是我选择VSCode的原因。因为VSCode是开源的,你可以直接看它的源码并且修改它的源码。而那个vscode-pinyin的本质其实也是对vscode的源码进行修改,让它支持拼音匹配。然后插件所做的事情其实是把原版的vscode中负责匹配的部分替换成修改后的vscode。 |
关于这个问题,我认为用code block 加载汉语编程语言的编译器就行了,有很多现成的IDE可以用。 |
@qwas982 个人觉得, 现有IDE加上中文语言编译器是一个基础. 有些功能是有中文特色而且现有IDE默认不自带的. 比如上面 @lightrabbit 和 @cleverdango 开发的在自动补全中支持拼音输入. 还有一些在顶楼的列表中. 其中个人比较看重的是第二条:
可以想象成, 开发环境和类似github的代码版本管理系统再加上类似Maven/NPM的库管理平台(解决依赖问题, 标准化代码和文档等)无缝集成. 所有使用这个开发环境的用户都可以选择把自己的库/代码直接分享, 其他用户可以在开发环境中搜索和利用其他人分享的库/代码并直接在自己的项目中使用, 这样可以最大限度地互相学习, 减少重复开发, 以此来抵消部分后发劣势, 使得第三方库和代码的积累尽快赶上老牌主流编程语言. |
在Z语言讨论群里版大介绍了一个在线中文编程环境: http://quzsc.huangyipeng.cn/web/ 目测像是汉化了JQuery的接口, 因为JQuery就用#号按照ID取HTML元素:
#20 和它的不同在于, 目标用户是设计师和初学者, 而不是通用前端开发者. |
@nobodxbodon 你说的不错,我很赞同,我还完善了一下我的思路。我想到一个新思路 利用现有基础,站在巨人的肩膀上,借鉴前人的经验。 手动汉化不如自动汉化。 |
这样做的好处是可以兼容现有语言的资源。反正是机器自动智能的翻译,即便是海量的源代码文件或者各种库、模板等也是可以轻易翻译完的。只不过校验需要一定的人手和时间,不过这应该已经很容易了。我觉得此举就像我们买了苏联的su-30 、su-35后将它国产化并自己生产出歼-11,、歼-15一样。完全消化并掌握这项技能。现在还有全新的歼-20,也就是说以后我们有创造全新语言的可能性,什么图形化编程,人工智能编程,自动化编程都不在话下。 |
请正确拼写我国战斗机的名字,那个字是 |
另:是
|
@ice1000 感谢指出,已修正。 |
https://duangsuse-valid-projects.github.io/Share/绝句/绝句词法#解析器实现-kotlin-literate 你们先看看这个吧,我研究一下上面是啥 |
首先我觉得还是说几句:我觉得在语言都还没有定好的情况下是不应该太考虑API的,不是不应该考虑,但是语言……基础的定义、控制结构,已经确定,这必须是前提吧。 然后我还有几句,是之前我说过的:
其实它的意思是,有时候不能老盯着『中文编程』本身不放,你们看楼上的 ice1k 冰封哥,如果他想设计那做出来绝对比许多『中文编程语言』好看,因为那些人连都AVL树不会写。 😂 说点实际的,如果你没用 Haskell 写过程序或者用许多 很 不同的语言写过相同的程序,也不会觉得 Ruby、Lua、Julia 都在用的 之前我考虑过关于绝句逗号表示法的一些事情,我复制一些(因为这个东西我也是现在还在准备设计……也不算是真的设计完了,还有很多东西没看): 当然以下稿子,最终的结果我还要再修改(包括设计到现在很多残次语法已经删了、换了,没太大时效性) [In reply to duangsuse::Echo]
嵌套链「,」的右边只接受嵌套链或嵌套段。
逗号取调链就是,在使用直接表达式作为块参数的时候,
比如说:宫水家.找,她:她的名字是"三叶"。手机上的最近聊天记录.数,它的发送者是泷。有若「大五十」 空则,抛下沃日("emmmm")。 控制流简记是针对表达式的情况,即便回/抛下/停下/略过是语句,它也可以取而代之, 当然这些(后来再修改了以后的版本)很显然都是比较容易实现的,至少比我之前想的那个能多个 然后你上面提到的『不符合表达习惯』按你举的例子如 |
我想你是不是理解错了…… 那个 [In reply to duangsuse::Echo] 先一言不合就念诗: int main() {
~绝句 (https://www.gushiwen.org/GuShiWen_97f95d9179.aspx)~
[唐] 杜甫
『两』个『黄鹂』;鸣『翠柳』
『一』行『白鹭』... 上『青天』
『窗』含『西岭;『千』秋『雪』』
『门』泊『东吴』。『万』里『船』
} 说这玩意是代码你们相信么? 🌴🦜🦜🎵 🤔??? 这是今年4月28 的事情 然后 Glide.with 的那种方法我之前也考虑过,甚至我到上上个星期为止都一直是这么想的,如果你们用有 extension function 的 Kotlin 很快就能把这种思路扩展到一个可以工程实用的级别,它翻译过来大概是
其中用到的DSL方法就是 |
不是那种毫无规则的简化,设计是相当克制的 还可以看看 |
顺便说一句,
这种用法其实 Kotlin 里就已经可以实现了,甚至可以说是完美地实现。不过绝句的目标显然不可能只是这个。 //定义一个上面的 fun 可以多态的类型,当然此类型可以定义为内联的
//类型参数在取值的位置是自动推导的
data class 用<某值>(val 某物: 某值)
data class 位置和源<地, 某值>(val 位置: 地, val 源: 某值)
infix fun <某值> 用<某值>.替换(位置: MutableList<某值>) = 位置和源(位置, 某物)
infix fun <某值> 位置和源<MutableList<某值>, 某值>.中的(目标: 某值) = 位置.replaceAll { if (it==源) 目标 else it }
// 介于Kotlin貌似为了理论优雅?没这个方法,而且Collection貌似是不可随机访问的
//fun <E> MutableListE>.replaceAll(origin: E, replacement: E) {
// for ((index, x) in withIndex()) if (x == origin) this[index] = replacement
//}
//算了是这个意思
fun 入口() {
val 列表 = mutableListOf(1,2,3)
用(0)替换(列表)中的(3)
println(列表)
} 你们也看到了 Kotlin parses these code,所以理论上是可行的,至于为啥不能用是因为我不熟悉这API而且熬太晚了 所以我才说,如果我直到上上个星期还保留着的思路用于编程实践是绝对没问题的,至于为什么这样的API还没出现那就不知道喽。 没想到吧?俄罗斯人写的Kotlin用来『中文编程』反而比『中文编程』易语言更贴切。编程到了一定境界所有语言都是互通的,而且甚至不止是过程式、面向对象、函数式 hello, declarative world。 |
@duangsuse 不好意思,可惜不大会 kotlin。关于 def replace(old, new, max):
... 允许这样定义(暂不讨论关键字): def 用(new)替换前(max)个(old):
... (无意尽量避免括号等)
个人(只学过一点 PL 皮毛)觉得 api 的设计(比如上面的语法改变)会影响语言本身设计。而且也许有时牵一发动多处,比如楼上末尾牵涉到类型转换,等等。英文 api 已经基本约定俗成了所有参数在方法最后声明,因此这方面并无什么发挥空间。 如果,支持上面的方法定义 文字 问好 = "你好"
数[] 号码 = [1, 2, 3, 4, 5]
问好 = 问好.用("吃了么")替换("好")
号码.如果((数) -> 数 > 4)移除
对(号码)中的(某数) { // 遍历这样看起来有点像是方法调用
说(问好 + 文字(某数)) // 假定强制转换必须显式
如果(某数 % 2 == 1) { // 与`如果()xx`方法看起来有点像
...
}
} 写出来之后会发现更多问题(个人短期内无打算深入) 之前写过一点关于语言设计和 api 的顺序,现在仍觉得,如果首先从语言设计(甚至实现)出发,往往会出现削足适履的情况。越早编写接近实用的例程,越能发现语言设计的缺漏和可优化之处。因为实用(尤其是与实际业务相关的,而非纯算法)代码将是语言推广后存量比例最大的。而接近实用意味着至少是一小部分api 设计,以及一定的标识符命名风格。 对楼上的例程,个人(也许对目标人群有不同设想)第一眼感觉,“听去数一”,“解对”,“去化数”, “次里的”等等难以一目了然。另外,逗号、分号、句号、双冒号、顿号、波浪号等等似乎都是语法因素,也许会增加学习和使用负担。 语言设计时,相信忍不住会逐渐加入更多更强大的特性,期间需要不断把中文特性这个“足”塞到这些特性组成的越来越小的“履”中。几乎无法避免地,会导致包含这些特性的例程的可读性的下降(也许可写性也是)。更大的问题是,由于语言设计者自身的视角问题,往往不会觉得这种可读性的牺牲是什么问题,因为设计者本身是对特性最熟悉的人(甚至比其他使用的编程语言更熟悉)。即使对路人非常难读的代码(由于对语言特性不了解,以及试图用老思维理解新事物的本能),对语言设计者来说却是轻车熟路。 因此,个人认为,为了避免上述情况,最好是尽量一开始就从尽可能接近实用的例程出发,反过来决定 api 和语言设计。这样,至少一开始能够尽量从最终用户的视角检视例程(在真正开始设计、实现语法之前,尽量确保程序对于新手来说是“好用好懂的”)。即使在之后由于各种设计或实现原因需要改变例程,至少有个参照和基准,也不会太轻易地牺牲可读性。这也和一般项目在设计之前,在获取需求的早期尽量搜集有代表性的 user story 的思路相同。 |
呃我就照着你说的一段段回复吧:
(写完本回复我又看了一下,之前那个KotlinFriceEngineDSL的封装嘛,我觉得不是很理想。)
我的观点:这绝对不能算作是改进,尽管它往往不会与绝大部分语言的原文法冲突也不能。(JavaScript在限制不换行的情况下也不会) 就实现可能性上,一般我们认为 但是,如果文法上直接换成这种形式定义,其实也没什么问题(看刚才我写那Kotlin就知道的确是没啥问题,因为按Kotlin语法 首先我相信绝大部分静态类型检查的编程语言设计者,尤其是重视代码一致性的程序员都讨厌一些比较容易混淆的语法,尽管也有许多人喜欢 Ruby、Python 的 "keyword arguments" 包括我之前在 以绝句语言翻译 你之前翻译那个 Swift 的时候我都这么想,如果参数列表可以随便hack成那样:
如果没学过,哪怕是作为一个初学者你能明白这TMD是在做什么吗?下划线是什么意思?『日子』和『在』有啥联系?还是区别?反正我是看不懂。
“func 统计(得分: [Int]) -> (最小: Int, 最大: Int, 总和: Int) {
var 最小 = 得分[0]
var 最大 = 得分[0]
var 总和 = 0
for 分 in 得分 {
if 分 > 最大 {
最大 = 分
} else if 分 < 最小 {
最小 = 分
}
总和 += 分
}
return (最小, 最大, 总和)
}
let 结果 = 统计(得分: [5, 3, 100, 3, 9])
print(结果.总和)
print(结果.2)”
“绝句里单引号是文档,可以在工具里看到。”
“一个类/物的类型参数可以直接加入文档,参数和返回值的文档可以直接加在前面也可以独立加”
“和Kotlin,也是Markdown的”
事 统计(得分:组<数>):‘最小、最大、总和’ 元三<数、数、数> 为
对得分里的分,
判分, “一时间我也找不到更好的方法把「对」和「判」连在一起”
它大最大,最大 = 它。 “「它」是此分支局部的”
它小最小,最小 = 它。
否则,效果。
上皆,总和令置为「+分」。
回元三(最小、最大、总和)
这里,
变数 最小 初0;变数 最大 初0;变数 总和 初0 “不是一般的编程风格,但不置可否。”
“这个版本里,暂时我不会把对「变(属)(名)初(言)」的修改加上,请兼容前面的一部分。” 我觉得这样的语言对所有,甚至包括 mother tongue 是 English 的人都是莫名其妙的,而且类似的语言不在少数。 这就是一个观点的问题,也就是『脚本化』还是『规范化』两个互斥的方向,可能相关的你可以看看冰封哥的 形式验证、依赖类型与动态类型 拿一个最简单的例子:比较 Bash 和 Python 比方说呢?Bash 的函数不能有形式化参数,只能在函数体里 再比较Python和Java,就不提属于运行时特性的 我想他们要吹的肯定是 Python 的动态类型、duck typing,这样你就可以随性地使用任何有 我就不吐槽 Python 那毫无规章的『元方法』如 例如Kotlin这样的语言更不可能看上这种语法,因为它可能与 至于如果一定要说静态类型的好处,其实封装、抽象、继承、多态、fail-fast 我就不用说了,引用冰封哥的一句话(貌似是,忘记从哪看的了):
没错,一个参数类型式的多态就比它们强太多了,不论类型是否一定要显示标明,静态类型都能在更早的时候确定更多的信息(不需要很复杂的推导算法),基于这样的信息你可以无开销地弄出许多DSL和针对特定输入的优化版本程序,或者仅仅只是静态的 optional arguments 也很好。 我的另一个观点是,一门好的编程语言不应该能让它的使用者写出不好的代码,哪怕只是可能。
貌似无论是 Python 还是 Ruby 上这种修改都没有太大问题,不过 optional arguments 和 keyword arguments 就不应该在这种形式支持了,如果更严格我觉得使用这种形式的 Python/Ruby 就不该有 optional/keyword 了,而且 Ruby 的 def call_with_1p(n, &op); yield(1+n); end
call_with_1p(0) { |x| puts x } 不过介于 Ruby 其实已经支持这种形式(出于它有 但如果你觉得
是的啊,所以我刚才没说得太绝对,我自己也深有体会,比如写这个回答的时候就因为提及了Kotlin标准库的一个设计,我决定改掉一个语法,之前我以绝句重写了某JavaScript ES6的代码后我又改了绝句的一个「构词」。 而且说点不相干的,你个人研究中文编程也有几年了吧,我能给最大的建议就是:多『学』几门语言,好好斟酌比较一下它们的区别(这是别的方法无法替代的),总结出点类似「顺序、判断、重复」这样的东西来,也不必学多高大上写 LLVM 编译器前端
呃这样我没啥可说的,我贴一个自己之前写的代码(当然也有很多在我的笔记上没发),以及一个以目前绝句设计能有效的代码吧 把(这人.的(朋友们).中(所有(名字.以("abc").起始().的()))).都拿去(用户表::删掉);
从(1).数到(100, (它) -> {
若((它/2).为零(), 向(终端).写("偶数"))
.否则(向(终端).写("奇数"));
});
Consumer<?> 不可能 = (Object _) -> { throw new ImpossibleException(); };
判断(他.的(名字),
倘若(它.是("蔡徐鲲"), 向(它).致敬()),
倘若(它.是(在(iKun.映射到(IKun::名字)).中()), 向(终端)::写),
否则(不可能));
所以你要写啊,尽管许多语言的入门示例足够概况,但那远远不够啊。
其中 此外「次里的」是你理解错了(因为绝句是期望不带空格的风格的),其实它是 知道「去」是
所以说才叫『中文编程』啊,你试试就会知道只要输入法质量过关,没有任何问题。
https://duangsuse-valid-projects.github.io/Share/绝句/绝句词法 学任何语言都是要学这些表达形式的,我在设计时刻意没看Kotlin的词法规则,就是为了能设计出更贴切中文的文法表达。
这么说吧,其实也不无道理,但我对绝句的看法是,既然它也不是特别困难而且我现在也只需要上好学,我不要他们以为、我只要我以为。
为什么不试试以「中文」这个食材,煮盆「程序设计语言」的汤呢?我刚才说了,中文的语序是上下文如目标对象在前、关键描述在后。所以『中文编程』实际上是指『编程』,但它的前提是『以中文』;而不是『以编程』去倒贴『中文』。『中文编程』既要有『中文』更要有『编程』,只有比重视中文更重视编程的人,才有能力设计出好的『中文编程』语言。 中文它不是一种特性,而是对编程本身的描述手段,不应该说『为了让中文兼容某某语言特性』而怎么样,而是那些语言特性,必须变得适合中文,或者说被『削』的不是中文而是特性,这就要求设计者有相当的编程功底,以至于能够对每个『不合适』的特性有所斟酌取舍。
这是现在工程界普遍的看法,我对它其实是中立态度,不过我也有其他的看法。 看完之前你可能很好奇我为什么是这么想的。 如果你多往下翻几页,点那个 啥啥code 的按钮,就会发现那代码复制下来直接可以写进Kotlin文件编译,而我写完后也只是改了一遍修了两个非逻辑错误就编译通过了。
刚入门的程序员扣老师枚举出的语法,战战兢兢地拿那一堆惯用法组织自己的逻辑、加入实际项目的工程师扣刻板复制的项目管理、设计模式、代码风格, 可是真正的程序设计大师 只扣 对编程的 直觉 和程序 本身的灵魂 , 人类的本质是复读机,可是有些人就是能在不断复读的过程中领悟到所复读内容的真谛,有些人最终也只能是记忆容量大一点的复读机而已。 语法本身是你对高级程序设计语言使用的基础,项目管理和那群系统管理员做的工作一样容易令人困惑,必须强记。模式是容易复制却又很少被彻底看懂 看透 优秀的程序员 授人渔而不是授人鱼 ,看懂某个模式、弄懂某个框架或者库、语言特性、开发工具的使用,熟悉某种基本模型,是的,都很好。 当然,看起来工程本来就应该是这样, 理论是知道为什么但是它不好用,实践是它好用但不知道为什么。 |
Kotlin是理论和实践的完美结合,所以,用Kotlin吧! 你们有福见到 ice1000 还没被骂还真是走运,现在人家在 Telegram 直播独立重写 Agda 编译系统的呢(Agda 仅就 mixfix 这一点看『语法灵活性』早完爆 Ruby、Python、Groovy 这种了,还不谈各种 |
你们弄的那个 项目们 还真是挺有趣的,之前没听说过那还可以那么写 这个圈三如果以后能让绝句以库的形式使用的话,那我觉得它的例程应该是这样
https://github.com/program-in-chinese/CoCaml#compiler 这个也不错啊,OCaML 毕竟是 CaML 好像 Haskell 的,也有「为……」 可惜我对几何的图形思维能力太差,根本算不出海龟的位置,根本不知道这能怎么简化 另, http://www.chinesepython.org/ 的作者也提到了,布局文法对中文编程非常重要,这一点你们上面可能没注意到。(当然这完全不怪你们,因为只在写解析器的时候设计语言,而不能在语言还未具体定义的时候用它写许多程序的话,很难注意到居然有这种做法) 此外,ANTLR 至 v4 都是不可能直接在 grammar 层面实现布局文法的(但是可以在外部lexer里转化成隐含的类 上面
上文作者唯一没注意到的是,缩进带语义并非 Python 的专利,Haskell、Agda、CaML 都有,所以绝句也有,不过使用了「逗号表示法」「为……」「其中……」的规范化形式。 |
所以说 编程是解决问题,不是制造问题。真正制造问题的学院派编程,他们制造问题的复杂度真是比那些把简单问题弄复杂的人造的复杂一万倍,小巫见大巫了。 |
https://wenku.baidu.com/view/d4424def4afe04a1b071de17.html 这篇论文真是废话满篇。对 这人大概是自然语言学者,不是编程学者,尽说些没用的。全篇我没见他贴半点有效的代码,尽是写 natural language 的 statement,还都是那种无论对计算机作为一种 solver 还是对编程本身都表义不明的。 全篇什么作用域、指针、冯·诺伊曼、文法推导处理过程,全都是拼接一样极端不全、侧偏的定义,我肯定这人是第一次写这种论文,要不然他不至于连一点整理都不会做,是啊,说的都对,有什么用?能拿来编程吗?做不做工程是不一样的,那些只看着什么中文编程中文编程的人怎么会考虑中文真正写出来项目的易读性、复用性、可移植性、健壮性、安全性?排除了编程的『中文编程』就是个笑话。 |
说真的看到你们上面举出的一些代码我都好绝望啊,难得你们对『用中文编程』那么热情还坚持了两年,可最终还是没一个能出来做工程的,不知道最近那个文言文能不能,虽然很有创意而且作者的确有两把刷子但我不感抱太大期望。 我实在是不想评价上面那个易语言式例子了,作者现在还在『中文编程』领域工作,也算是将功赎罪吧。 不提模棱两可的『变量初始化』问题,首先缩进就不明确,然后『无返回』,其实翻译成现代一点的编程语言都是
另,UTF-8 是 Unicode 文本编码的方式,请把字符集和编码方式区分开。此处应为 |
@duangsuse 很可惜近期很难学习实验编程语言设计了。 另外,组内仍有对现有语言汉化的努力。 |
没关系,慢慢来嘛。反正也才快一年,我也会继续想办法实现我设计的程序设计语言的。 |
首先,易语言虽然开始在瀑布单次开发无维护式应用程序编程里火了几年,但随着时代更新逐渐被淘汰而且定位尴尬,这样的情况不能称为成功,排除那些元老级的 Fortran、Ada、ML、Forth、BCPL/CPL/C、PostScript 在外,我觉得 Basic、Delphi、Smalltalk 这种才能够算是成功过。
易语言到不如觉得是产品出身更好,我相信技术不会那么烂。就像中标麒麟一样。对易语言里的「易」,我觉得它的涵义就像中标麒麟是为『投标中标』里的『中标』一样,根本不是为了成为『中国标准』、成为『用户觉得容易』的语言,而是为了欺骗国家、政府和人民,自称是『方便普通人学习、推广编程技术』的语言。
这点到是真的
我这里想吐槽一句,能设计出易语言那样辣鸡语言的作者,根本不配在编程领域提『精易』这个词,更不配在程序表达和转化领域搅合,十五年如一日没有长进我也是很服了。 |
@duangsuse 刚写了《一种改进中文 API 可读性的方法:参数不限于在末尾》,尤其是后半部分的补充,是之前讨论时没想到的。 |
@nobodxbodon 这倒是,但不觉得容易给学习制造问题吗? 这个思路我是很赞同的(而且对中文编程很必须),但它是属于『很「中文」但不一定「编程」』的特性,如果这样的API太多了会制造问题,而语言基础库设计不够克制、过分利用这个特性会有更大问题。 一个语言特性一旦出现,对它的滥用就不会停止,并且如果保证向前兼容也就不可能停止。 如果标准库设计不够克制,以后这种语言里可能都是这样写代码——当然这里我只能举出滥用介词的例子,我不知道可不可能有更奇怪的情况出现。
看起来好像是没什么问题,实现起来稍微有点算法基础的人也能以 trie 树这样较为简单的数据结构实现。 可是为什么不这么写呢: 量 全角:表<字、字> = 表一(','到','“等等”)
扩物 文件 为
事 全角转化() 为
量 新书 = 同名新建()
对我去读全文本()里的每个符,
新书写(全角去取值())
新书去
另外,习语言举的例子:
一般面向对象里可以认为是这么封装的: INI["Fruits"]["TotalConst"] = "100CNY"
INI.sections["Fruits"].entries["TotalConst"] = "100CNY"
INI section "Fruits" entry "TotalConst" = "100CNY" 从这个角度我听人说『英文逻辑比中文严谨』是真的,因为它每个部分分得很开,
那么 如果新建一个 语言的设计是需要深思熟虑的,仅有创意、不融合对代码一致性(同时也和学习成本有关)不能造出既自然又能够被用于实际工程实践的『中文编程语言』。 比如我对 某个语言特性 就想了半天。
用类似 Kotlin
去学校三天绝句程序设计语言的『第一人称』『第二人称』『第三人称』都被整理出来了,
同时还添加了中后缀逻辑修饰符(新语法)「不」 所以原来的 |
@laowu2019 编写的vs code插件, auto-correct 基础上实现了中文标点符号自动替换为英文标点符号的原型。用到一个模拟键盘输入的模块。
有没有可能监听键盘事件,如果是中文句号就替换成英文句点,省得删除再模拟输入? |
找到一个新的VSCode内置方法写入字符,不需要引入外部模块。遗憾的是不能穿透python插件原生支持的jupyter notebook,期待大家帮忙解决。 |
#11 (comment) 「方法名参数位置」 顺便,「用("bb")替换(列表)中的("aa")」非常恶劣,主体应该突出在前,如「替换(列表)中的("bb")为("aa")」 |
大婶,这是技术,不是搞语言学,是理工科,不是文科。再说,自定义过程,有啥可纠结的呢?
在 2022-03-02 12:40:00,"liuxilu" ***@***.***> 写道:
#11 (comment) 「方法名参数位置」
相关:Multi-Part Method Names - RemObjects Elements
顺便,「用("bb")替换(列表)中的("aa")」非常恶劣,主体应该突出在前,如「替换(列表)中的("bb")为("aa")」
—
Reply to this email directly, view it on GitHub, or unsubscribe.
Triage notifications on the go with GitHub Mobile for iOS or Android.
You are receiving this because you are subscribed to this thread.Message ID: ***@***.***>
|
您好,您的邮件已收到,会尽快处理回复您!
|
这听起来很熟悉。「这是理工科,用中文写什么代码?」。我只能说,每人都有自己的「理工科」。 |
@liuxilu 日语编程语言抚子中,因使用日语语法有些参数在前的例子:
|
做技术,只要支持就可以了,具体别人怎么用,也不是语言的事情。你太纠结没意义的事情了。
在 2022-03-30 00:43:00,"吴烜 xuan 三声" ***@***.***> 写道:
@liuxilu 日语编程语言抚子中,因使用日语语法有些参数在前的例子:
締め切りは「{今年}/12/20」
今日から締め切りまでの日数差を表示 // 显示从今天到截止日期的天数差异,“今日から締め切りまでの日数差”为显示内容
参考:《关于日语编程语言“抚子”的解释》摘要(一)
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you commented.Message ID: ***@***.***>
|
@MaOrKsSi 建议了解一下 UX。 |
谢谢. 你居然把我的git找到了,我都忘记了,现在的框架已经不是这样子了。
在 2022-04-01 02:39:13,"吴烜 xuan 三声" ***@***.***> 写道:
@MaOrKsSi 建议了解一下 UX。
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you were mentioned.Message ID: ***@***.***>
|
因为无论什么表现形式,最终都要转化到:a(b,c) 的形式。
在 2022-03-30 00:43:00,"吴烜 xuan 三声" ***@***.***> 写道:
@liuxilu 日语编程语言抚子中,因使用日语语法有些参数在前的例子:
締め切りは「{今年}/12/20」
今日から締め切りまでの日数差を表示 // 显示从今天到截止日期的天数差异,“今日から締め切りまでの日数差”为显示内容
参考:《关于日语编程语言“抚子”的解释》摘要(一)
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you commented.Message ID: ***@***.***>
|
一个用户对象是中文为母语的开发者的编程语言以及配套开发环境, 应该有哪些特殊的功能, 才有存在的价值和维持开源的社区动力? 暂且不讨论如何实现的问题, 先搜集需求和探讨设计. 这个目标虽然是远期的, 但总要一步步实现, 希望这里能迈出第一步.
基于早先的讨论, 个人整理的一些如下. 视野有限, 仅作抛砖引玉:
下面是参考易语言相关平台的官方文档,挑选出的一些. 本人没有易语言实践经验:
The text was updated successfully, but these errors were encountered: