-
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
关于建立个制作委员会, 通过模仿现有编程语言的标准(如C和javascript)来实现汉语编程语言(中文编程)的发展。 #28
Comments
多谢分享!
量子计算机虽然还没有商业化, 但相信是一个未来的重要方向. 现在对它的编程也许就类似当年电子计算机问世时的用齿轮或者卡片的阶段, 这就意味着在量子计算上, 中文编程和英文处在同一起跑线, 甚至更有优势, 因为我们没有什么包袱. 可惜在下对量子计算机没有什么积累. 希望大家一起探讨.
之前开始了一个汇编编译器项目, 就是想从最底层开始, 在汇编语言中使用中文标识符的一个尝试
意思是把中文关键词在编译时替换成英文关键词?
不知#25 列出的几种汉化语言和你想的第一步是否一致?
用C写也可以吧
目标是把所有C标准库的接口都翻译吗?
可以先开始第二条 |
1,现在开始为量子计算机编程还太早,待其芯片可以像80年代pc那样普及开始以后再讨论吧。 |
C语言在PC普及前很久就开始和UNIX发展了. 硬件成型后系统软件可以立刻开始跟上的.
请教一下选择llvm为参照物的原因? 比如它和其他编译器的不同之处?
你之前说到汉化汇编的不可移植问题(一种硬件一种汇编), 这里也适用. 据我所知, 没有什么新语言敢用汇编实现了.
哦. 你之前说的
很同意. 这个讨论组其实就是一个汇聚的尝试. 问题是, 现在对于新的中文编程语言/开发环境的理解和设想还在很初级的阶段. #11 是一个试图集思广益的帖子. 如果你有一个比较具体的目标, 或者语言设计设想, 非常希望能分享出来一起讨论. |
已经基于C语言的tinycc做了一个的中文编译器,增加了中文关键字支持。在一个副本上替换中文关键字,实现中文自举。
|
稍微找了一下, 已经有不少量子编程语言了:
|
@nobodxbodon nobodxbodon你好,我觉得量子计算机的计算过程和计算原理我们现在没有任何文档可供参考,它的算法可能与现有编程语言的算法千差万别,甚至完全不同,如果用现有编程语言的词法、语法、语义去设计某种语言标准,无疑是一件牛头不对马嘴的事。现在探讨为时过早,我觉得现在我们还是把现有编程语言消化为汉语比较好,还有条件链和工具链的建立。我们必须要有一定的基础--也就是地基。 |
@swizl 你好,这个TinyCC 是自成一派还是可以兼容甚至使用现有这门语言和编译器的资源?我刚刚檄文描述了一个新思路。我想到一个新思路 利用现有基础,站在巨人的肩膀上,借鉴前人的经验。 手动汉化不如自动汉化。 |
@nobodxbodon llvm的优点是开源自由、模块化、友好的调试提示。 |
这样做的好处是可以兼容现有语言的资源。反正是机器自动智能的翻译,即便是海量的源代码文件或者各种库、模板等也是可以轻易翻译完的。只不过校验需要一定的人手和时间,不过这应该已经很容易了。我觉得此举就像我们买了苏联的su-30 、su-35后将它国产化并自己生产出歼-11,、歼-15一样。完全消化并掌握这项技能。现在还有全新的歼-20,也就是说以后我们有创造全新语言的可能性,什么图形化编程,人工智能编程,自动化编程都不在话下。 |
#28 (comment) 里列出了很多文献, 包括原理, 算法, 实现等各个方面. 已经有了开源项目进行量子计算的模拟而且有了相应的编程语言. 从这方面说, 中文编程在量子计算领域已经落后了. 虽然我个人不可能在短期内进行相关方面的研究, 但如果有组员有兴趣的话还是很希望能够参与的. llvm的这些优点很多其他开源编译器也有吧? 比如JavaScript v8, GNU系列(gcc等). 关于机器翻译的思路, 回复请见 #11 (comment) |
这里提到的量子程序设计研究的近期进展一文中前瞻性的一段很有同感:
|
@qwas982 tinycc 是以标C为准的,C语言的语法都支持。 |
@swizl 我看了,似乎没有中文支持? |
@nobodxbodon 有些关键字似乎还有改进的空间。如此看来,汉化的c已经有了,我只是不知道罢了,汉化的python也有了,只不过是正体中文。 |
关键词是个比较主观的问题, 不妨列一下你觉得更合适的关键词, 以及理由. 关于可以做的:
个人感觉现状是, 反对的声音比较大, 说到底, 最有说服力的还是拿得出手的开源项目. 要是从系统到常用应用软件, 开发工具/框架都有中文代码的成型开源项目, 很多反对意见都会不攻自破. 当然, 这些不可能一蹴而就. 上面列出的一些推广途径感觉是必经之路. 欢迎建议其他的推广方式, 以及分享推广经验/教训. |
我考虑了,不如把关键字命名改成可以自定义设置的方式。 |
那么, 如果从别人写的代码拷贝一段到自己的代码里, 还要转换关键字? 而且, 看别人的代码会不会不习惯呢? |
词法会变,但是语法不会变,语义更不会 |
汉化高级语言可能是一件舍近求远,缘木求鱼的事 |
之前开始的中文汇编编译器实验项目: https://github.com/program-in-chinese/assembler-in-chinese-experiment 另外, fasm已经支持中文标号(原址的53楼) |
@nobodxbodon 还不彻底,不过我找到了o语言,支持全中文,汇编助记符和机器指令集指令都是汉语~~~ |
@swizl |
好像2014年之前就没有更新了, 而且不是开源的? |
@nobodxbodon 是啊 ,所以我想继续使用,在使用的过程中继续更新 ,它的主页都打不开了,所以我想搬到git上来。开发者也联系不上,没有源代码,只有一个汇编器 可执行程序,windows平台的。 如果你也想实现这个想法,你可以先搞,我跟进 |
@qwas982 C语言和C++的标准就是不支持字母、数字、一些常用符号以外的字符的。GCC在这方面做了主动的规避,改起来比较麻烦。tinycc网开了一面,所以我改起来比较顺利,先用tinycc做出能中文自举的编译器。
关于“汉化高级语言可能是一件舍近求远,缘木求鱼的事”这个观点,我是持反对意见。我个人认为中文编程的目的是,能让中国广大没有受过专业训练的青年,可以以最低的时间和精力成本转换为程序员群体。先量变,再质变,帮助我国在IT等行业能更早更牢固的占到主导权。所以我认为汉化几个用户基数大,在各行业有较高地位的高级语言,更加重要。 当然个人有个人的想法,行动起来,最重要。 |
@swizl 多谢再次回答我,谢谢。 我的目的与你一样,我只是没发现你汉化的tcc才想到从更基层的入口找切入点,比如汉化汇编,我的想法也是想汉化用户基数最大的C。因为不管是什么软件平台或硬件平台,很多工程的基础几乎都是C,更多高级语言的解释器或编译器都是基于C。现在既然找到了你汉化的tcc,我觉得有新线索可循了。只是人力不够,希望有更多的兄弟伙伴加入汉化tcc这一项目。 |
即使不汉化tinycc的源码, 如果要和官方的源码(是http://repo.or.cz/w/tinycc.git 吗?)保持同步, 个人觉得一套比较全面的中文测试代码集总是必要的, 不仅可以进行回归测试, 还方便推广演示. 如果要着手汉化它的源码, 是否从相对稳定的代码部分开始汉化? 以尽量减小官方代码更新带来的同步修改的工作量(前车之鉴请见#13). |
tcc已经较为全面,支持了ISO c99。 我是想在 swizl 的【tinycc_cn】基础上汉化。他取材自tinycc官方英文最新稳定版。 |
tinycc_cn是7月26的分支, 官方已经有了几个新的bug fix(好像是国内开发者 @zhangboyang 提交的). |
@nobodxbodon 我最近才接触tcc,前几天使用过程中发现几个bug,交了几个patch过去,其实我对tcc不是很熟。。。 |
"全新的路线" 就是在汉化后的源码上改进或新增功能,远期计划是,汉化python3以上的源码,这样在python里就可以自由使用汉语,再加上python3本来就支持utf8,想来真是如虎添翼。 |
@zhangboyang 阁下谦虚了, 刚发现你的commit解决了字符串中utf8字符的支持问题, 这是中文化必须过的槛. 多谢! |
@nobodxbodon 可以试一下。如果将tinycc_cn的源文件都转成UTF-8,第一遍用gcc编译,后面就可以支持UTF-8的中文关键字了。目前就是UTF-8或ASCII二选一,tinycc本身没有转码,我也没做。 |
那个补丁实际上是解决宽字符串字面值中不能有非ascii字符的问题的。因为原本tcc是直接把源代码中的字节序列强转成wchar_t的;而那个补丁所作的是,假设源代码是utf-8然后解码后转wchar_t。 举个例子: 这对于在windows下写unicode程序比较重要(要不然就不能在宽字符串字面值中写汉字了),但我觉得对linux平台下可能没啥用(因为linux下全是用char存utf-8,很少有人用wchar_t的) |
@zhangboyang |
@qwas982 那个版本号实际上对应了好多版本。。。如果不是几天前拉的代码,应该是有这个问题的。。。 |
@zhangboyang |
@nobodxbodon 谢谢你的分析,swizl已经告诉我没有加进tinycc_zh,他说编译的时候只要把那个diff加进去一起编译就可以了。 |
@qwas982 @nobodxbodon 字符串前加L,本身就是表示字符串编译成wchar_t,即使是 |
@swizl 我的代码是假定源代码是无bom的utf-8编码的,如果不是utf-8则不能正常工作。 |
@swizl @zhangboyang 为了保险起见,还是加进去比不加进去更有利于以后的改进? |
#35. |
关于建立个制作委员会, 通过模仿现有编程语言的标准(如C和javascript)来实现汉语编程语言(中文编程)的发展。
C的标准,ISO C语言标准。背后是ISO国际标准组织委员会。
C的实现,GCC、llvm等等太多。背后是各大公司或组织或个人。
javascript的标准,ECMAScript。背后是欧洲计算机制造商协会。
javascript的实现,V8等。背后是各大公司或组织或个人。
建立委员会的目的是为了形成一定的组织和产生执行能力。
借鉴前人的经验,站在巨人的肩膀上是我们的基础。
经过我的观察后,我总结得到,【操作系统】和【政府】是没有太大区别的,TA们本质上都是某种组织结构。
操作系统的宿主是程序和数据,还有硬件创造的赛博空间。
政府的宿主是人和人群,人类群居化带来的结果。
因此,团队其实就是一个简单的组织结构,它最后会发展为现在市场上常见的组织结构,如;公司,企业,党派,政治团体等,力量来自于人群组织。要实现一件事,必须要有一定的力量,这是需求和条件,而一个人的力量是微小和微薄的。所以要说人多力量大,星星之火可以燎原。
现在,我们为了实现汉语编程语言是凭着一腔热血和业余爱好在不断进取和向前探索,我们远远没有达到能创建公司企业的程度和阶段。所以我们只能凭借现在已经具有的人力、 物力 、财力、 资源等条件建立一个委员会。做出实际可行的探讨和列出大纲,还有设计一套发展阶段计划。
1,芯片只能执行二进制。
大家可以想象一下其他语言是怎么发展的,怎么开始的,在赛博空间中本是空无一物、一无所有,是有限状态机产生的有限多个状态码驱动了软件世界的诞生和程序的运行,是不断抽象带来的一层一层的组织和结构使程序和数据有逻辑地不出错的产生功能,供人类使用解决问题。现在芯片大多能运行到3GHz左右,G是十亿,3GHz就是三十亿次,那么,一个晶体管每秒钟产生三十亿个二进制有限状态,10亿个晶体管就是10亿乘以30亿,每秒钟产生300亿个二进制有限状态(每秒钟可以执行300亿个二进制)。GPU的晶体管更多,产生的状态码更多。在这海量的二进制中(我称之为二进制海)有很多元器件会消耗掉一部分的二进制状态,如;寄存器,指令集,缓存等,即便如此,剩下的状态码也是不可小觑的,而程序就存在于这些二进制之中,因为我们现在是通过冯诺依曼结构来使用二进制的关系,所以,程序分为指令和数据,当然,TA们都是以二进制的形式存在的,只不过经过抽象后,表现的形式有些变化,第一世代是数字(二进制和八进制、十进制、十六进制一一对应),第二世代是字母和数字(汇编指令、地址与第一世代各种进制一一对应),第三世代是英文单词和数字(变量和数据与第二世代的指令、地址一一对应),第四世代是半自然语言和数字(编程范式和各种接口与第三世代的变量、数据一一对应)。其实这就是一级一级地翻译,从一种形态转换为另一种形态,想象下能量的流动和改变(风和水从一个地方流动到另一个地方),这让我想到了变形金刚Transformers,其实它应该被翻译为转换形态,Trans;转换、formers;形态,不知道为什么会有人翻译为变形金刚,可能是在搞秀。所以,程序语言和程序的关系也是如此的,我们创造汉语编程语言的目的就是要利用二进制为我们的母语、思想所用。当然,程序语言的本质是为了表达思想、主意、想法、idea,最后演变为实际的功能,供我们解决生活中面临的问题。
2,怎么利用二进制。
经过上述理论的设想,我们知道,如果要建造程序,我们需要通过程序语言不断地将想法转换为代码,只有当代码量达到一定程度后(比如几千行,几万行,百万千万甚至上亿行)才能形成一定的功能,创造若干条件链、工具链,才能塑造出如;编译器,组件,模块,操作系统,大型软件工程。这就像(往下还有微观宇宙←原子(并不是一个,而是有限多个)→分子(并不是一个,而是有限多个)→ 大分子(并不是一个,而是有限多个)→细胞(并不是一个,而是有限多个)→器官(并不是一个,而是有限多个)→动物身体→社会→往上还有宏观宇宙)一样,前一层是后一层的组成基础。那么,程序语言该怎么建造呢?利用现有基础还是从零创造?我看了各种讨论,发现大家比较认同利用现有基础。利用现有基础也行,但是会受制于人,这种方法是能很快出成果,但是我们并不会有我们的核心条件链和工具链,从二进制到第四世代之间我们不会有我们的核心权。如果别人改动了第一到第四世代中的任何一环,我们的基础就会受动摇,以至于我们的程序上层就会瘫痪,那样的话,一切将会变得没有意义。如果从零创造,我们就得将现有的有限状态机(CPU、GPU、芯片等)之状态码(二进制)与我们设计的程序语言(汉语编程语言)一一对应,这必将是一项巨大的软件工程,工程量很庞大(如果是人手动来做的话)其实也不大,如果人力充沛的话。但是这里,我有个取巧之策,结合现有基础,比如利用现有的编程基础和程序语言写个增删改查和自动查找替换的小软件帮助我们,你看llvm都能完成。
因为现在的有限状态机(如X86、ARM等)对外的接口已经不是原始的二进制,而是汇编指令,因此,我们要创造汉语编程语言的话,只需要模仿现有的最成功的编程语言(如C)和它的实现(如llvm)就够了,这个实现分前端、中段、后端、三大模块,每一部分都用到了 语法分析、 词法分析 、语义分析,它有一个核心的【语义处理器】,这是不管移植到什么平台都不会改变的。此实现相当的开放和自由,模块化程度很高,可以按需通过增加或删除或改变某一部分来适应不同的软件平台和硬件平台。通过模仿它,我们可以快速设计出汉语编程语言。当然这是第一步,有了第一步的基础,以后发展第二步就不需要再模仿TA们了(我们甚至可以设计基于汉语的有限状态机,比如易经的理论基础)。
大家可以把二进制想象成一股能量或载体,它承载变量和数据组成的算法,通过使用指令和存储空间创造程序宿主。
3,设计汉语编程语言
首先我们需要成立一个制作委员会,我们需要通过讨论去制定计划和大纲。
其次我们需要设计并规定这门语言的词法、语法、语义、关键字等一系列语言规范。它需要足够的简单(像C、python一样)好用。设计编程范式和模块接口等。
然后我们需要创造它的实现,向下需要与汇编指令一一对应,向上需要与自然语言一一对应。
创造条件链和工具链。
几乎现有的操作系统、各种程序语言的实现都是基于C,所以我们创造的汉语编程语言要不就是替换c要不就是在c的基础上建立实现。其区别是,替换c,我们就需要用汇编写代码翻译汉语编程语言的编译或解释过程。以c为基础,我们就需要用C写代码翻译汉语编程语言的编译或解释过程。我们的目标是实现与二进制的交流,实现自举。现在到处都能用c,各平台都有c的编译器,那是因为它已经翻过了,它在这些平台已经有二进制可执行程序了。
为什么不汉化汇编呢?第一,如果我们创造一个实现(编译器/解释器),那么我们会生成这门语言的专有汇编码。第二,现有硬件的CPU/GPU/或其他DSP、mcu等有限状态机有专门的汇编指令,TA们都是西方人开发的硬件,我们不可能做到每一类每一种都去汉化,这也是多此一举,我们只需要直接拿来用与我们的语言之专有汇编码适配就够了。
某种编程范式的实现(面向对象、面向过程、函数式),是因为它的编译器/解释器中提供这一功能,能将用这一范式写的代码编译/解释为二进制。语言自带的函数也同理是这样实现的。
总之就是翻译工作,大家协同合作按计划就能一步一步完成。
关于有些观点说有易语言和习语言的前车之鉴,拿TA们的失败举例,但是我要说的是,首先,TA们并不开源也不自由,其次TA们没有一个良好的实现,没有开发者跟进。TA们甚至没有一个像样的组织结构。TA们缺少一切工具链、条件链。
///
我在知乎的回答;有些回答有讲到发展汉语编程语言的意义。
为什么代码都是用英文来写的,将来会有用中文写代码的那天吗?
https://www.zhihu.com/question/19769482/answer/98050506
中文编程目前面临的难题是什么,你有哪些建议?
https://www.zhihu.com/question/29895778/answer/98089092
一般编程语言都是英文的,大家对中文编程有什么样的看法,中文编程有哪些优劣势?
https://www.zhihu.com/question/20184664/answer/98090968
共产主义最终是否会使经济学无意义?
https://www.zhihu.com/question/42960875/answer/109848403
如果计算机是由中国人发明的,那么编程时写代码会是全中文吗?
https://www.zhihu.com/question/21061180/answer/121283185
汉语编程语言意义何在?
https://www.zhihu.com/question/33983820/answer/187782339
一个开源的适合中文用户开发的编程语言和开发环境, 必需具备的独到功能有哪些?
https://www.zhihu.com/question/55386231/answer/187784837
cpu那么多晶体管组成的门电路代表不同的逻辑,那么输入的代码是怎样找到确定的逻辑的?
https://www.zhihu.com/question/62173438/answer/195436918
人工智能(AI) 是否进入了第三次技术瓶颈? ---这篇讲到发展汉语编程语言的意义
https://www.zhihu.com/question/62627800/answer/201181045
完美的计算机语言存在吗?
https://www.zhihu.com/question/62389459/answer/201189947
The text was updated successfully, but these errors were encountered: