Coder Social home page Coder Social logo

program-in-chinese / overview Goto Github PK

View Code? Open in Web Editor NEW
376.0 51.0 34.0 5.82 MB

中文编程的历史、现状和展望。issue 中进行相关问题的讨论.

Home Page: https://zhuanlan.zhihu.com/codeInChinese

License: GNU General Public License v3.0

Assembly 0.98% C# 0.33% Java 0.30% CoffeeScript 0.37% Go 0.37% JavaScript 59.48% Common Lisp 0.33% PHP 0.32% Python 27.59% Ruby 0.42% Scala 0.34% C 0.89% C++ 3.07% Haskell 1.27% Kotlin 1.51% Swift 0.46% Objective-C 0.63% Racket 0.31% Idris 0.45% Prolog 0.59%
chinese programming-language styleguide tutorial readability program-in-chinese

overview's Introduction

欢迎使用中文编程徽章,拷贝以下代码即可:

[![中文编程](https://gitee.com/Program-in-Chinese/overview/raw/master/%E4%B8%AD%E6%96%87%E7%BC%96%E7%A8%8B.svg)](https://gitee.com/Program-in-Chinese/overview)

如果平台不允许 svg 文件,也可将 svg 改为 png。

【2019/11】“中文编程”知乎专栏两岁了——山雨欲来风满楼

其实地上本没有路,走的人多了,也便成了路。 —— 《故乡》鲁迅

请阅社区守则。欢迎畅所欲言。初来乍到请在迎新贴了解各位组员。如心存疑虑请移步专题贴

最新文章请阅中文编程知乎专栏。更广泛的中文编程QQ群(620225373)成员表

相关项目

组外项目

项目 实现 简述
QuickCut Gitee 库 Python 中文命名 轻量、强大、好用的音视频处理、下载工具
CapsWriter Gitee 库 Python 中文命名 电脑语音输入工具
狗屁不通文章生成器 Python 中文命名

组内活跃项目

有活跃用户并且持续维护的开源项目

项目 实现简述 功能简述
Klang TypeScript 跨平台, 高并发系统级编程语言,支持中英文语法,实现使用中文命名
木兰编程语言重现 Python ulang 已发布在 PyPI,实现使用中文命名
草蟒 Python 基于 Python 的全中文编程语言,包括中文 API 等
VS Code 插件 - 中文代码快速补全 JavaScript 支持各种编程语言,英文状态下匹配中文标识符(现支持全拼、双拼、五笔)
VS Code 插件 - 离线英汉词典 TypeScript 支持驼峰和下划线命名翻译, 当前文件批量标识符翻译
中文简繁字符转换库 Java 在Maven发布
乘风龙王的代码库(Python) Python 实用库。以网络、爬虫为主
乘风龙王的代码库(C++) C++ 实用库。以游戏开发为主
【Librian】簡明強大的 Galgame + Visual Novel 引擎 Python + CoffeeScript 容易上手的文字冒險遊戲引擎。
一個實驗性程式語言 Racket+Typescript+... 一個實驗性程式語言

组内其他开源项目:

下面是完成度较高或有阶段成果的. 完整目录见#126

使用中文编写代码

关键词为英文的编程语言对中文代码的支持

经初步测试, 已有至少二十多种编程语言支持中文(Unicode)命名. 列表与细节详见这里

关键词为中文的编程语言和开发环境(不分先后)

实用  易语言按键精灵TC简单程序开发习语言, Z语言
先驱 中蟒 周蟒 文言Perl 丙正正 O语言
实验 亲密数(类Forth) 定义中文关键词:iOS开发iOS中文编程, 索引帖
待考证 标天汇编(备份)

参考资料

一些中文编程语言

Unicode in Ruby, Perl, Python, JavaScript, Java, Emacs Lisp, Mathematica

部分编程语言的中文文档

自媒体号

更多中文编程推广内情, 请关注微信公众号"用中文编程":

微信公众号二维码

同名今日头条号, 更专注中文编程的实用技术:

今日头条二维码

overview's People

Contributors

4b5ent1 avatar apexel avatar cflw avatar lsby avatar mandolin avatar nobodxbodon avatar rimochan avatar testacount1 avatar zaoqi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

overview's Issues

汉化了十数个编译器的前辈的心得体会

原址在, 63楼
他汉化了的编译器列表: https://www.zhihu.com/question/20184664/answer/21045030

1)论点:应否「建立新的中文编程语言」,慎思之。

2)理由:
 2.1)旧编程语言的优点(代价)。
 2.2)新编程语言的立足点。
 2.3)旧径:绕过上述困难,直接沿用旧编程语言。
  仅「令其函数名、过程名、变量名均可用汉字」即可。

3)致敬。


2.1)旧的编程语言,仍在使用当中,未受淘汰。
 且拥有庞大的用户群体,
 多年的历史沉淀、技术支持,
 出版的各种入门图书、文档、丰富详尽的函数手册,
 繁杂全面的网络帮助与代码用例,
 以及若干系列的测试工具(微秒级的各函数耗时百分比时间分析、
  符号级\源代码级别调试器、内存检查器、svn代码上传……),
 全球多层面、多场合、多语言的产品测试,
 完善的售後服务,
 不断的根据用户反馈或硬件改革而进行软件升级,
 保证20年後该产品\本公司依然存在。

  个人的作品与品牌公司在此得到最明显的对比:
个人\小工作室\普通公司 难以提供上述任何一项,无法与之竞争。

  而且即令是完成了上述所有项的大公司,例如宝兰(borland)公司,
全球320万用户,21年(1987~2008)的悠久历史,无数的测试工具……
仍落得被易博龙收购的下场。所以新的编程语言,一开始就得做好亏本的打算。


2.2)周思博有云,新技术若都用来解决一些「旧技术能解决的问题」,
 则新技术必受诟病。老周此话原是揶揄微软,但换在编程语言身上,依然适合。
 D语言与c--对于c来说,则患此弊。
 甚至连ruby等新语言,亦因此被王垠将之与lisp相提并论,被批得烂额焦头。
   所以一旦摒弃旧编程语言,则用户会循(2.1)为准 来要求新中文编程语言,
 间中还夹杂着不少对中文的偏见(**编程员对中文市场的敌视,天下知名。
 无论规格书、说明书、函数手册……能不写汉字就决不用中文。
 汉人学得胡儿语,却向城头骂汉人。今古皆然,不足为怪)。因而新语言的崛起,
 纵不是一枝独秀、出类拔萃,也得解决一些「旧技术不能解决的问题」。
 即使是内存自动回收、网络函数、反射、函数式编程……等等,都是题中
 应有之义,而非亮点了。
   此事并非苛求,因为既是一门全新的编程语言,众人当然认为作者是一位
 开宗立派的大师,按《春秋》责备贤者的传统,臧否这位宗匠级别的作品而已。
   当然,作者可以把新编程语言抛到网站上,然後撒手远飏。
 通常众人亦会权当作者交了一趟作业、完成了一趟导师的论文答辩。
 例如 Fabrice Bellard 的tiny cc,欠缺维护,现已少人问津了
 (顺便说一句,把他的 libtcc.c\LIBTCCAPI TCCState *tcc_new(void)内
 inline的preprocess_new()改一下,即可支持中文的标识符。
 即令不改源代码、不重新编译,只把他的 libtcc.dll 相应改四十个字节,
 也有同样效果)。
   但退一步而言,如(2.1)所说,要作者熬廿年的苦日子,自费出版各种手册,
 墙内墙外都租用服务器,为各国各族人民提供多语言技术支持,随时改bug,
 不断推出新版本,而且这廿年很可能颗粒无收。太过强人所难了。


2.3)综上所述:
另起炉灶後,压力之大,无以复加;赢利之微,几乎倒贴。所以大部分人都蝇附骥尾,仅让
「旧编译器在吃进中文程序时,能辨认出中文标识符,从而正常编译连接,不致报错」,
就经已心满意足。
  在读秀或万方上搜索,可窥见众前贤的旧迹,谨录部分于下:
 王其宏《用汉字标识符的PASCAL编译程序》,载诸《长春邮电学院学报》1987年02期,
 李京 《PASCAL编译程序的改造》,载诸《计算机工程与应用》1987年09期,
 苗庆斌《PASCAL语言汉化的设计与实现》,载诸《计算机工程与设计》1990年03期,
 章继三《中文汇编语言编程》,载诸《软件世界》1994年06期,
 黄志勇《Foxpro2.5的汉化方法》,载诸《电脑》1995年12期,
 阙建军《在FOXBASE下使用汉字变量名及字段名》,载诸《**金融电脑》1996年05期
 ……
  甚至连新人亦沿此旧径,例如aogo的masmplus,鼎龙的中文C++,竹闲的汉化各编译器。
藉旧编程语言之势,让其函数名、过程名、变量名均可使用汉字(在此强调:均可≠均须!)。
如此则旧的程序文档、编程员、代码用例……均纹风不动。
  此举虽有狐假虎威之嫌、鹊巢鸠占之喻,但终究算是把(2.1)的压力尽数卸开。
然後他山之石,攻我之玉。自此,中文编程即可。终于可以不写
“render_hexagon(last_descending_point)”,改为“_填6边形(_最近降点)”了。
而且连接lib\跑lua虚拟机\正常运行python\……效果一切如常,简直有百利而无一害。

  有一害:编译器每出一趟新版本,上述工作者就须配合一版汉化包,跟游戏汉化者发行
汉化包毫无区别。我这番话对游戏汉化者并无半分嘲讽之意:编译器是程序,游戏也是程序;
编译器的用户(编程员)是人,游戏的用户(玩家)也是人;而且後者的市场还大些。
而两厢的汉化者都在免费工作,都追赶在版本号後面而疲于奔命。
  「疲于奔命」是巫臣的原话,但汉化者的奔命何止七次,就因为他们的辛勤工作
故意被原编译器作者所忽视(台面规则是编译器得支持unicode,潜规则却是欧美国家毋需
理睬中文市场,例如以前 go语言组对导出中文函数名的争论,
https://groups.google.com/forum/#!msg/golang-china/h_vxbPHaIvw/wFRw1Myrm3AJ
该链接在墙外,不知是否失效了),就因为他们的劳动免费而不足挂齿。
于是,总有人厌倦,就出手打造自己的中文编译器了。


3)在此,向所有披荆斩棘的中文编程员致敬:
 例如(以下并非全集,且排名不分先後):O语言的作者,标天软件的BtAsm团队,
 易语言的吴涛,Python的周蟒,法国的WinDev……
   毋论他们在商业上是胜是败,但始终他们都为中文编程作出了自己的贡献,
 默默耕耘,未必收获。全凭有他们,也纔能映照出中文编程之路,何等曲折,何等漫长,
 虽是一脉如丝,仍是缕缕不断。

   勉之矣,任重而道远。

讨论: 适合中文用户的编程语言和IDE, 侧重于现有语言/IDE不具备的特性

一个用户对象是中文为母语的开发者的编程语言以及配套开发环境, 应该有哪些特殊的功能, 才有存在的价值和维持开源的社区动力? 暂且不讨论如何实现的问题, 先搜集需求和探讨设计. 这个目标虽然是远期的, 但总要一步步实现, 希望这里能迈出第一步.

基于早先的讨论, 个人整理的一些如下. 视野有限, 仅作抛砖引玉:

开发环境
    集成语言源码(编译器,标准库等),方便用户修改/改进语言本身或丰富库,并方便验证修改对已有项目的影响. 理想情况是开发环境本身也能在自身中导入进行开发
    集成代码版本控制功能, 语言开发团队对语言/标准库与用户库/项目提供版本控制服务, 以提高团队开发效率, 促进共享, 提升整体代码水平
    提示/帮助文档贯穿整个开发过程
    集成语言解释器
    内置适合编程的中文输入法
    可以导入其他编程语言的项目
语言本身
    内置语法最简化, 可扩展性高. 想到的类似例子是Scheme/Lisp
    保证代码可读性的前提下优化性能/效率
    支持与其他编程语言的集成
    源码版本间易于比较
    易于理解的中文反馈信息, 包括编译错误/警告, 运行时错误等等

下面是参考易语言相关平台的官方文档,挑选出的一些. 本人没有易语言实践经验:

火山:
    支持中英文代码切换
易语言:
    代码即文档源程序风格统一
易语言飞扬:
    类自然语言编程 - 支持宏定义(和可扩展性高一致)

关于建立个制作委员会, 通过模仿现有编程语言的标准(如C和javascript)来实现汉语编程语言(中文编程)的发展。

关于建立个制作委员会, 通过模仿现有编程语言的标准(如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

在OCaml中进行中文编程

@taostein 请问OCaml对中文/unicode命名支持吗? 刚尝试在OCaml 4.02下用中文命名:

let rec 斐波那契 n =
    if n < 2 then n else 斐波那契 (n-1) + 斐波那契 (n-2);;

报错:

Warning 3: deprecated: ISO-Latin1 characters in identifiers
...
Error: Illegal character

请有兴趣的自荐成为各讨论区的Collaborator

由于本人才疏学浅, 希望各位能够对擅长的区域参与管理和耕耘. 如有兴趣请在这里提出, 除非其他成员提出异议, 不然都会尽快添加权限.
@sih4sing5hong5 不好意思例外一下, 没有经过同意就加你为Python区的Collaborator. 希望没有让你为难?

GBK<->UTF8 互转问题: Maven checkstyle输出乱码

下面摘自 @azigeprogram-in-chinese/junit4_in_chinese#11 (comment)

在IDE和命令行(都是GBK)里都是之前那样,然后在UTF-8的命令行里就变成这样了……

[INFO] --- maven-checkstyle-plugin:2.17:check (validate) @ junit4_in_chinese ---
[INFO] ▒?始检查▒?▒▒??
▒?查完成▒??

目测是编码转了两次的结果,java在我的系统里应该默认用GBK来编码字符的,但是只有这个插件输出的字符是用UTF-8编码的

感觉值得探究一下. 这种编码格式不匹配的问题可能会比想象中的更普遍, 如果中文windows的默认格式是GBK的话.

讨论组的主页, 对外名称, 徽标?

随着新项目的开展, 迟早需要作为一个团队对项目进行维护和推广. 是否最好有个主页, 至少发布一些项目进度/发布的消息? Github page是否适合?

另外, github的默认图标虽然不是太难看, 但肯定不算美观. 也请推荐一下.

简单易用的中文编程(脚本)语言原型

早先算是开了个头: 实践"两周自制脚本语言"一书

昨天也被 @qingseshaohua 提醒一个很重要的方向是让更多人能够容易用编程的方式解决自己的问题. 因此打算在3个月内试着做一个原型出来.

由于时间精力非常有限, 打算尽量把工作量减到最小. 有所为, 有所不为. 下面是一些初步设想.

  • 用中文的Java代码实现
  • 只做解释器, 不作编译器
  • 容易开发第三方库(只支持用Java代码开发)
  • 维护一个git代码库, 开发者可以提交第三方库, 开发环境默认导入这个库
  • 容易调用Java接口, 使它可以作为"胶水"连接不同Java代码
  • 尽量详尽的用户反馈信息, 尤其是如果不提供调试功能的情况下
  • 开发环境尽量基于现有的IDE进行扩展, 至少做到语法高亮
  • 语言特性最简, 比如类型系统可以尽量简化, 面向对象等等可以不做
  • 性能能够接受即可

编写操作系统原型

在写这个回复的时候想到如何用最小的代价用中文命名编写代码, 实现一个操作系统原型, 以迈出第一步. 最好是易于参与开发, 不需特定硬件环境. 短期目标是用于学习和实验.

看到基于Java的操作系统发展史, 开始颇兴奋, 但后发现ARM已经在2011后不支持byte code.

即便如此, 仍先挖个坑, 以便有兴趣者探讨. 也可以汇聚一些中文开发者开源的操作系统原型.

JUnit中文化的原型验证

#9 提到的JUnit中文化, 下面是个pretotype:

  @Test
  public void test() {
    相等("1=1", 1, 1);
    不等("1!=2", 1, 2);
  }

与中文化前对比:

  @Test
  public void test() {
    assertEquals("1=1", 1, 1);
    assertNotEquals("1!=2", 1, 2);
  }

实现如下:

package com.github.programinchinese;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotEquals;

public class 断言 {
  public static void 相等(String 不等反馈信息, Object 期望, Object 实际) {
    assertEquals(不等反馈信息, 期望, 实际);
  }

  public static void 不等(String 不等反馈信息, Object 期望, Object 实际) {
    assertNotEquals(不等反馈信息, 期望, 实际);
  }
}

个人感觉用相对简单的实现, 达到了一定的可读性改进, 还是有意义的. 如果没有意见, 就打算照此思路开始项目了.

简单汉化的 C# 整数型/逻辑型/文本型/小数型

不太会使用Github,因为我目前主要使用c#,也使用中文进行编程
所以,我曾经试过汉化常见的类库,但是时间不允许,有开发任务。
因此,这个类库,是半成品,还有,很多一段时间,都不会更新和完善。

这里,我就上传我之前写的一些东西,当成例程吧。 @nobodxbodon

我不会添加和创建自己的项目,会的人下载后,合并到例程文件夹吧。

VS2017的解决方案,存放的核心文件:幻象类库\Cjing.Net\变量类型 幻象类库.zip

做了常量值,整数型,逻辑型,文本型,小数型,下面是逻辑型的部分截图。
qq 20170816131914

索引: 对现有编程语言的英文关键词进行汉化或者再创造的实例

曾几何时, 编译器还多不能支持中文标识符, 前人努力过改变. 现在多数语言本身已经支持unicode的标识符, 可以认为用中文编程的第一个障碍基本消除了. 随着语言和编译器的开源, 出现了各种对英文关键词的编程语言进行汉化的实践. 下面试着罗列一下:

TypeScript (原作者 @htwx. 演示)
PowerShell
TinyCC (@swizl开发过程)
clang
Lua@xgongya的版本
Julia
CoffeeScript
Python (原作者 @swizl) 原Python讨论区issue: 1 2

也有参照原语言的语法, 自己开发的语言:

Z语言 (类LOGO)
类似Forth的栈语言-亲密数编程语言 【原链已失效,此为存档链接

请各位补充.

如果能够做到以下这些,我相信中文编程语言一定能取得颠覆性成功

1.键盘。应该设计一种全新的、适合快速输入汉字的键盘。
2.输入法。应该设计一种颠覆性的,既具备低学习成本又具备高输入效率(单字的输入效率也要高)的输入
法。我认为,输入法和键盘是很难完全独立,二者应该是相互影响的,输入法的设计应该影响到键盘的布
局,键盘的设计反过来又应该导致输入法的改进。
3.语言本身的设计。绝不能生搬硬套英语编程语言的设计,应该在词法、语法、特性等方面做一个系统性
的、全新的设计。该设计的好坏,将直接决定语言的成败,所以将来最关键的是要在语言的设计上下功
夫。只要设计能够赢得广大程序员的青睐,汉语编程语言的成功就只是个时间问题。
4.编译器。
5.开发工具。开发工具的重要性不能低估,好的开发工具能够极大的提升用户的体验,对于产品的推广有
非常巨大的推动作用。

Kotlin Haskell 都支持 utf8

Kotlin:

fun main(vararg args: String) {
  val 垃圾 = 233
  println(垃圾)
}

Haskell:

** :: Parser String
** = do
  **1 <- 脑残
  **2 <- 智障
  return $ **1 ++ **2

提一个新概念”汉字编程“

目前来看,意识到计算机编程领域,英文(单词)占据过多权重的同志还是很多的,并且有很多技术水平也很高,已经有自己的项目实践,有些是对编译器做处理,有些是对语言自带库做处理,有些是创造全新的DSL语言或通用语言。总的来说,中文编程,有想法,有实践,我认为大有可为。

其实,中文编程的概念也存在很久了,包括易语言和习语言,都有好几年的历史,并且成熟度很高,但是这两个语言不开源,并且后续更新乏力,注定很难作为普通用户的选择成为普及性语言。后来无意间看到了Z语言,是开源的,但成熟度我并不清楚。但可以看到大家都很有动力和技术实力。

针对目前的现状,我想给目前的项目做一下梳理,分成两种类型:

  • 汉字编程

  • 中文编程

所谓汉字编程,指的是依然遵循现有语言的语法的编程形式,但是标识符使用汉字,甚至关键字也汉化为汉字。 现有语言都是外国人开发的,因此编程语言的语法也有英文语法的痕迹。比如 for ... in ...do ... while ...select ... from ... where ... 依据此规则,易语言和习语言都只能算是”汉字编程“形式。

所谓中文编程,指的是遵循中文语法的编程形式,它比汉字编程更高一级。 中文语法的第一点要求,是汉字之间不需要空格分割。这是英文句子和汉语句子最明显的区别,英文单词是一维横排的,没有空格就无法分割区分,汉字则是方块字,每个字都是独立的。比如echo Hello World!,中文编程应该是输出世界,你好,这是一个思维模式的转变。

针对汉字编程,我们再做一划分:

  • 初级:自己创建的类、方法、包等(标识符)使用汉字的

  • 中级:不仅标识符使用汉字,编程用到的库也使用汉字的

  • 高级:不仅标识符和用到的库使用汉字,关键字也使用汉字的

另外,我们可以将“汉字编程”称之为广义的“中文编程”的初级形式,“中文编程”称之为广义的“中文编程”的终极形式。

根据这些概念,可以更方便梳理目前的工作:
初级: 在编程实践中,自建类使用汉字,这就算“中文编程”入门了,个人学习就可以进行。
中级: 需要自己汉化库,或者使用“中文编程”相关开发者开发的中文库,更进一步。
高级: 关键字也是汉字,这个已经不是一般使用语言的开发者做的事情了,需要进行语言切换,切换为汉化的语言。代码变为更纯粹的纯汉字(阿拉伯数字和拉丁字母可接受)。这个阶段主要是“中文编程”相关开发者来对编译器进行修改。或者增加一个转换层。但整体上看,相当于再创了一门新语言了。
终极: 从语法上进行革新,符合中文语法的一般形式,将代码编译为JVM、CLI等虚拟机的字节码,或者直接编译为硬件平台的二进制文件。这个阶段,理论和实践上都需要继续投入精力。

在注释中添加标识符的中文标注

源自 @farteryhr : #2 (comment)

大概是像TypeScript对已有js库做“类型标注”一样,搞一种“标识符语言标注”,行内写法期望大概是
int this_name_is_long; /@zh_CN(此名长矣,CiMingChangYi)/
(多个自动补全引擎已经支持优先去匹配大写了,期望就是cmcy就能补全)
可能出现在一切会有标识符的地方,比如(纯粹理想地)
#define KW_IF /@zh_CN(若,Ruo_IF)/ if
不过后面这一坨的方便书写,可能仍然要编辑器插件配合……我目前能想到的就是这里了,如觉得有必要可随意整理搬运开新帖。

比如上面的this_name_is_long, 之后的引用就可以用'此名长矣'吗? 还是说通过IDE显示成'此名长矣'而代码中还是英文名?

游戏设计领域对中文编程(语言)的需求

@azige 恰好是你的专业领域, 请教一下需求和可能的方向. 下面源自#19 (comment):

游戏设计方面可能有很多应用,例如编写技能脚本或敌人的行动策略之类的

例程源自 #9 (comment)

def 基础策略() {
    if (存在单位(是自己 & mp比例范围(0,0.05))){ 
        选择单位(敌方 & 活着的){
            攻击 选择结果集.随机目标
        }
    }
    选择单位(敌方 & 活着的){
        if (选择结果集数量 > 2){
            使用技能 "XXX", 选择结果集.hp数值最低
        } 
    }
    选择单位(敌方 & hp比例范围(0, 0.1)){
        if (选择结果集数量 > 0) {
            使用技能 "XXX", 选择结果集.hp数值最低
        }
    }
    选择单位(敌方 & 活着的){
        if (选择结果集数量 > 1){
            使用技能 "XXX", 选择结果集.hp数值最低
        } else {
            使用技能 "XXX", 选择结果集.hp数值最低
        }
    }
}

不知像 按键精灵,TC简单程序开发 之类的脚本语言是否方向也是相似的, 只是更侧重I/O?

将Prolog中文化

  • 测试主流Prolog实现是否支持中文utf-8, 以及unicode smp
  • (如支持) 建立中文prolog例程库
  • (如不支持) 修改prolog解释器源码, 使其支持中文程序

索引: 在其他论坛关于用中文编写代码的讨论

中文编程历史

假如不拘泥于认为只有有了电子计算机才可以编程的话,不妨认为九章算術中的术曰...也是程序。

APL家族发展到后期,是以Tacit风格为主的。因为ASCII字符实在太少,J代码约等于没法看,而且 +: *: 这种自加,自乘,就可以表示了,没必要弄个特殊符号。那个求平均数的代码,大致上和中文平常的说法是一致的。

易语言 指出了解决输入的问题思路,也就是智能提示得和输入法整合到一起。

如何面向中文编程(潜在)用户进行推广?

虽然现在还没有一个成熟的项目, 不过先讨论一下如何面向用户, 也许对项目的开展和优先级有指导意义.

  • 现实和潜在的用户群有哪些?
  • 他们最需要什么? 他们会用来解决什么问题? 怎样的工具/教程?
  • 如何向他们推广? 后续的技术支持如何进行?
  • 如何商业化?

中文化 类C编程语言 需要什么样的关键字?

基于clang做中文编译,取得了一点成绩。
做出来是中英双语的,可使用中文关键字、中文符号,对原来的C,C++,Objective-C没有影响,安全兼容。
之前基于tinycc做的时候,有人嫌弃中文关键字选得不好。
目前还没动工,大家看看用些什么字词比较好?
Java, JS, Python, Go 等其他语言也可以一起讨论一下。

----- 追加 -----
关键词汉化待选列表整理在此wiki页

尝试JDK汉化

@hummerstudio 建议, 开专题讨论. 下面内容来自原帖

核心库的中文化是个工作量很大的挑战, 因为包括文档的翻译, 而且可能会有不可能汉化的部分(比如无法用一个新interface取代Iterable的问题). 这里是尝试对Java核心库(从最常用的部分开始)的汉化. 比如ArrayList汉化成"数组列表", 单元测试示例如下:

public class 数组列表测试 {

  // TODO: 添加测试“取”方法
  
  @Test
  public void 测试添加元素类() {
    数组列表<Integer> 表 = new 数组列表<>();
    表.添加(1);
    assertTrue(表.长度() == 1);
  }

  @Test
  public void 测试添加整数元素类() {
    数组列表<Integer> 表 = new 数组列表<>();
    表.添加(0, 2);
    assertTrue(表.长度() == 1);
    表.添加(0, 1);
    assertTrue(表.长度() == 2);
  }

  @Test
  public void 测试Collections方法() {
    数组列表<Integer> 表 = new 数组列表<>();
    表.添加(2);
    表.添加(1);
    Collections.sort(表.原型());
    assertTrue(表.取(0) == 1);
  }
}

尝试过的方法:

  1. 封装原类, ArrayList例子
  2. 汉化源代码, Collection例子

1对接口(Interface)不适用, 2还是有比如上面Iterable的问题.

@hummerstudio #9 (comment) 提出项目开展方法:

  1. 先确定翻译范围,列出来。包括(类所属)包名、类名、(类的)方法名。方法名有API可以很方便的打印出来,具体我不记得了,IDE显示方法名就是用的这个API。
  2. 在步骤1的基础上,看看哪些是常见的词(专业术语,有特殊指定的词等),讨论制定一个标准的英文->中文的对照表。
  3. 在步骤2的基础上,参考步骤1的输出,就可以让社区的人员来自愿领取翻译任务了,这时候已经没有什么技术性可研了,写好教程即可。
  4. 另外要做好版本控制,做到一个官方JDK版本对应一个汉化版本。

大体上是这样一个步骤,步骤3的实施过程可以根据步骤2的结果看看复杂性如何,是否可以引入一些方便的工具来进一步降低难度和效率(比如开发一个源码自动修改、打包的工具,只需要翻译人员提供一个特定格式的文本文件,工具读取文件,自动修改英文原版源码,并作打包)。

上面所说的自动修改工具在有一点很初步的尝试.

Edit privilige

I can't edit anything except by starting a pull request. Could you please give me write access?

所有开发者母语都是中文时, 为什么大多数项目仍然选择英文命名?

除去客户要求代码必须是英文的项目(比如外包项目). 应该有很多因素, 这里尝试搜集那些"硬"的理由. 请补充.

  • 已有的代码风格和格式规范的文档都是基于英文命名而制定的 @hummerstudio #18 (comment)
  • 从别处粘贴复制代码简单
  • 不同操作系统的默认编码方式不同, 比如代码库在Linux机器, 开发机是Windows, 容易出乱码问题
  • 依赖的库或者工具对unicode支持不佳(比如这里22楼发现的Spring的Thymeleaf不支持中文变量名)

升级MacOS从Yosemite(10.10)到Sierra(10.12.6)后git 2.11在命令行输出乱码

git version 2.11.0 (Apple Git-81)

$ git diff
diff --git a/sidebar/history.js b/sidebar/history.js
index f982d12..5cca082 100644
--- a/sidebar/history.js
+++ b/sidebar/history.js
@@ -19,23 +19,35 @@ var ?<80><97>?<97>? = {};
diff --git a/sidebar/history.js b/sidebar/history.js
index f982d12..5cca082 100644
--- a/sidebar/history.js
+++ b/sidebar/history.js
@@ -19,23 +19,35 @@ var ?<80><97>?<97>? = {};
   var ?<9C>??<84>?<90><86>url?<95>? = 0;
   var 访?<97>??<86>?<8A><82>表 = {}; // visitId -> historyItem
 
+  var ?<9C><80>?<87><8D>?<96>?索?<95> = true;
+
   var ?<8C><89>?<85>??<94>??<8D>?<90><9C>索?<8E><86>?<8F>? = function(?<85>??<94>??<8D>, ?<8E><86>?<8F>??<97>??<97>??<8C><83>?<9B>?) {
     计?<97>?("?<83>?<94>??<89><8D>")
     带?<85>??<94>??<8D>访?<97>?记?<95> = [];
     ?<97>??<85>??<94>??<8D>访?<97>?记?<95> = [];
+    ?<9C>??<84>?<90><86>url?<95>? = 0;
+    访?<97>??<86>?<8A><82>表 = {};

 ...

安装新版git version 2.14.1后, 问题解决.

请自荐: 讨论组管理员

鉴于在repo首页有醒目链接, 虽然暂时关闭此帖, 但欢迎任何有意自荐者随时重开此帖并自述.

欢迎熟悉讨论组事务, 对社区守则以身作则的组员自荐.

除了日常管理社区讨论和代码库/wiki之外, 现在想到的职(琐)责(事):

自己的一些希望:

  • 最好有(广义的)中文编程实践经验
  • 最好有公开的(开发员)社区/讨论群管理经验
  • 至少在刚开始的一段时间和本人有线下沟通(见面 & 电话). 理想情况是人在美西时区/湾区--不强求

ice1000新创语言Cm-lang

@ice1000 为避免迎新帖过长, 把你的相关回复合集在此, 以便继续讨论.

#2 (comment):

最近在用C#写一个零成本lambda抽象的底层语言,遇到编码问题了我会开问的。

零成本的意思是你写lambda+牛逼的集合框架和你写for循环的性能一致(编译后的代码都是一样的)

底层的意思是编译到LLVM IR以及GLSL,当然也能做编译到JavaScript和JVM,不过后两个暂时没打算

https://github.com/Cm-lang/Cmc
https://github.com/Cm-lang/Cm-Document

对日语编程语言Nadesiko, なでしこ的功能和源码学习

作为#39 中当前发现较有市场和历史的一个开源的母语编程语言项目, 相信会对中文编程语言的开发设计和推广会有所裨益. 这里试图由表及里地学习, 欢迎各位一同.

这是一些背景资料: 官方网站

  • 第三版(最新)源码库, 用JavaScript实现, 代码提交从2017/2至今
  • 第二版源码库, 用C#实现. 代码提交从2010/6到2016/2.
  • 第一版源码库, 用Pascal实现, 最近仍然在更新. 最早代码提交是2008年, 但应该在更早几年前就已经成型.

第三版的一个入门教程中的乌龟图(感觉类似LOGO), 顺便 @TKT2016
screen shot 2017-11-04 at 3 52 28 pm
原文: http://news.mynavi.jp/series/nadeshiko/003/, 上图是gg翻译后的.

把最常用的开源的英文API进行中文化

用某种编程语言的大多数项目里都依赖的第三方库可能就几十个 (比如Java里的JUnit, Log4j, Guava, ApacheCommon等等 - Java's top 20: The most used Java libraries on GitHub). 而这些库里最常用的接口可能不到10%,所以中文化可以增量进行,维护的工作量应该比较可控.

另外, 对核心库的中文化是个工作量更大的挑战, 因为包括文档的翻译, 而且可能会有不可能汉化的部分(比如无法用一个新interface取代Iterable的问题). 这里是尝试对Java核心库的汉化. 比如ArrayList汉化成"数组列表", 单元测试示例如下:

public class 数组列表测试 {

  // TODO: 添加测试“取”方法
  
  @Test
  public void 测试添加元素类() {
    数组列表<Integer> 表 = new 数组列表<>();
    表.添加(1);
    assertTrue(表.长度() == 1);
  }

  @Test
  public void 测试添加整数元素类() {
    数组列表<Integer> 表 = new 数组列表<>();
    表.添加(0, 2);
    assertTrue(表.长度() == 1);
    表.添加(0, 1);
    assertTrue(表.长度() == 2);
  }

  @Test
  public void 测试Collections方法() {
    数组列表<Integer> 表 = new 数组列表<>();
    表.添加(2);
    表.添加(1);
    Collections.sort(表.原型());
    assertTrue(表.取(0) == 1);
  }
}

请大家头脑风暴一下. 这个思路是否可行,或者对哪些语言比较可行.

中文命名的特定问题, 相关风格及规范

早先有一些尝试, 以及编写Java上手时归整的一些. 有些是Java特定的. 希望一同探讨, 早日发现潜在问题, 总结出一些不同编程语言普遍适用的规则以及特定编程语言相关的规则.

如何区分类/方法/变量/常量: 没有了大小写区分,词性又会有歧义,考虑用前/后缀?

有对变量进行前缀区别函数/变量的实践. 似乎类似匈牙利命名法. 但是感觉有些不大直观,比如g代表get和s代表set.在示例项目中, 我用的是get/setxx. 感觉还有改进空间. 下面是一些动议:

  • 类名尽量用名词或名词短语. 用"类"结尾, 便于和一般变量名区别. 测试类用"测试类"结尾.
  • 接口(interface)名用"接口"结尾
  • 方法/函数命名尽量用动词开头
  • 常量命名以"常量_"作前缀, 考虑只用在"真"常量上, 就是初始化后不能被改变的量(Immutable).
  • 包名(Java)用中文(如第三方不支持, 则用小写英文), 不用下划线

如何命名临时变量: 英文的a, i, j之类

详见nobodxbodon/program-in-chinese#2 (comment), 对于纯粹作为循环中的索引, 个人认为不需强求改为中文, 因为它的语义很少. 但是如果想突出它的语义, 那么当然可以用对应中文, 这和英文命名是类似的. 比如:

for(int 排名; 排名 < 总人数; 排名++) {
  System.out.println(排行榜[排名]);
}

英文单复数如何表达?

这是个有趣的主题. 其实英文命名如果带复数往往意思是"这个变量有可能含有多个元素", 比如List<String> names = new ArrayList<>(). 但实际上这个变量是可能包含一个元素的, 这种情况下就和复数形式不一致.
而中文中的名词默认情况下是不分单复数的, 感觉这其实更合适"这个变量有可能含有多个元素"这个语义. 那么, 关键就在于如何表示单数了. 比如:

for (String name : names) {
...
}

中文是否可以考虑:

for (String 某名字 : 名字) {
...
}

kotlin示例中貌似junit依赖缺失

// $ kotlinc 你好.kt -include-runtime -d 你好.jar

运行报错:

$ kotlinc 你好.kt -include-runtime -d 你好.jar
你好.kt:7:12: error: unresolved reference: junit
import org.junit.Assert
           ^
你好.kt:9:15: error: unresolved reference: test
import kotlin.test.assertEquals
              ^
你好.kt:23:20: error: unresolved reference: junit
typealias 测试 = org.junit.Test
                   ^
你好.kt:27:36: error: unresolved reference: Assert
		val 他们应该相等: (Any, Any) -> Unit = Assert::assertEquals
                                   ^
你好.kt:28:56: error: unresolved reference: assertEquals
		infix inline fun <reified 类型参数> 类型参数.应该等于(o: 类型参数) = assertEquals(this, o)

"中文编程"知乎专栏开通!

@program-in-chinese/all 特此通知: 地址
首次创建专栏, 希望各位有经验的多指点. 初步打算把之前写的一些文章选取一些发到专栏中. 另外, 不知专栏是否允许多人管理? 在此也诚征编辑(能管理投稿, 调整作者权限, 发布文章)和作者(能发布文章).

下面是一些打算写的具体主题(不分先后), 希望坑都能填平:

希望大家多多建议新主题, 更欢迎投稿!

Open source Non-English-based programming languages 开源非英文关键词编程语言

A comprehensive list on Wiki is here

Index below only lists the open source ones among them, with no specific order:

Locale Programming language detail
Japanese Nadesiko, なでしこ: repo
Arabic قلب
French Linotte: repo v2.07 source zip
Latvian Dzintars
Tamil Ezhil
Portuguese Potigol

此贴搜集所有成气候的开源非英文关键词编程语言, 并与相关开发者进行交流.

由于牵涉到有共同目标的国际开发者, 请各位三思而后言!

单字富指令型中文(还加韩文)编程语言 Sclipting

https://esolangs.org/wiki/Sclipting

Sclipting is a stack-based golf language, inspired by GolfScript, that uses Chinese characters for instructions and Hangul syllables for data (strings and integers). The basic idea is that to minimise the number of characters in a program, the language should provide as many single-character instructions as possible. It was invented by Timwi in 2011.

Sclipting is not considered finished as it can trivially be extended with more and more instructions assigned to new Chinese characters.

这个方向如何【逃

如果用已有的中文编程语言来设计编译器呢.如何?

我现在又萌发了新思路,在已有汉语编程语言的基础上,创造一门新的汉语编程语言,然后用 -汉语编程语言的编译器,编译 新的汉语编程语言, 得到一个编译器 ,然后用这个编译器再编译一遍-新的汉语编程语言 ,得到第二个编译器,然后再用第二个编译器再编译一遍, 新的汉语编程语言, 于是得到第三个编译器,这个编译器就是完全的汉语编程语言.
这里, 我决定用易语言来写编译器a, 也就是-第一个编译器, 得到第一个编译器的可执行程序后就可以用创造的语言来写编译器b, 然后用前面的可执行程序编译, 编译 编译器b .

反正第二个语言成熟后, 第一个语言和它的编译器是可以舍去的,它只要能编译出可执行程序就行了,我可以先写出个简单能用的编译器, 并不需要创造出非常复杂, 功能全面的编译器软件工程,
比如基本的, 流程控制解析, 函数解析 ,

我设想的是 [表] 语言.
[表格] 语言, 经过研究, 我发现所有一切都可以用表格来表示,
流程控制可以是一个表格,
函数也可以是一个表格,
并且 ,表格也可以很好地表示 '某一个' 过程,
我发现 ,不管什么风格的编程范式, 其编码都需要一个"过程".并且, 表格也能很好地展示 -数据结构.
我最近在学 HTML css javascript 我发现这些语言经过抽象, 就是个表格,
我设计的是, 把形与神 ,结合在一起,编码就是填表.
最近在研究HTML + CSS + JS,即可以做前端, 又可以做后端.
我想的是, 怎样将它们的优势抽象并综合起来.
https://movie.douban.com/subject/26718838/ [异星觉醒] 中的生物, 就像这样.
其 [神经] [肌肉] [骨骼] 不像人类一样分离, 而是融合在一起, 人类需要三种细胞去完成相对应的功能, 但是这种生物只需要一种细胞就能完成.

社区运行方式讨论, 迎新

刚迎来了第三位成员, 俗话说三人成群, 也许是时候讨论一下这个社区的运行方式了. 本人是第一次在github新建orgnization, 之前参与过另一个以外国程序员为主的org, 觉得大氛围挺专业, 而且这种公开讨论的形式效率挺高. 希望大家随意聊聊. 比如对这个社区的期望, 个人的目标, 如何利用github进行主题讨论, 任何对我的问题, 或者任何其他话题. @buyouyuan @jeromechan

下面是已有的讨论较多的话题. 为避免此帖太长, 如对其中一些有兴趣可以直接在那里发表; 如果有新主题或不同意见非常欢迎开新issue讨论(类似论坛开新帖):

另, 本人在其他社区的账号: 知乎 百度贴吧 OSC 易语言论坛

内部微信群详见此贴

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.