V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
这是一个专门讨论 idea 的地方。

每个人的时间,资源是有限的,有的时候你或许能够想到很多 idea,但是由于现实的限制,却并不是所有的 idea 都能够成为现实。

那这个时候,不妨可以把那些 idea 分享出来,启发别人。
akfish
V2EX  ›  奇思妙想

最近看到太多关于中文编程的争论,搞得我在梦里都在用中文编程,不得不说,用中文写汇编很酷(dou)炫(bi)

  akfish · 2014-08-18 03:07:52 +08:00 · 8972 次点击
这是一个创建于 3510 天前的主题,其中的信息可能已经有所发展或是发生改变。

比如x86汇编,通用寄存器恰好8个,这是巧合么?其实是与我大天朝古代的八卦暗合了:

原名 | 中文
—–| —–
EAX | 乾
EBX | 坤
ECX | 坎
EDX | 离
ESI | 震
EDI | 巽
ESP | 艮
EBP | 兑

十六进制弱爆,我大天朝天干地支60进制,但是为了兼容性,好吧,就很生硬的十天干+五地支编码了1~F
1|2|3|4|5|6|7|8|9|A|B|C|D|E|F
—|—|—|—|—|—|—|—|—|—|—|—|—|—|—|—
甲|乙|丙|丁|戊|己|庚|辛|壬|癸|子|丑|寅|卯|辰

这时中文的伟大就提现出来了有没有,用他们洋鳖的阿拉伯数字的话,要区分十进制和十六进制需要加前缀后缀,0x神马的,h神马的,中文的话:
十进制:二百五
十六进制:辰子

至于指令神马的,洋鳖们又是mov,又是push,还pop,都不等长,多难看!中文的话,都是一个字,多么整齐!

示例代码:

四八六 矣
平模   矣
码     矣

公 吾函
吾函 始
  推 兑     
  移 兑, 艮 
  减 艮, 四   
  推 巽     
  推 震     

  移 乾, 存之兑增辛   
  移 震, 存之兑增丑  
  移 巽, 存之兑增甲零  

  移 存之兑去四, 巽   
  加 存之兑去四, 震   
  加 乾, 存之兑去四   

  弹 震      
  弹 巽
  移 艮,兑 
  弹 兑 
  返

吾函 终
终

像武功秘籍对吧?

我们再来看看洋鳖们的写法:

.486
.MODEL FLAT
.CODE
PUBLIC _myFunc
_myFunc PROC
  ; Subroutine Prologue
  push ebp     ; Save the old base pointer value.
  mov ebp, esp ; Set the new base pointer value.
  sub esp, 4   ; Make room for one 4-byte local variable.
  push edi     ; Save the values of registers that the function
  push esi     ; will modify. This function uses EDI and ESI.
  ; (no need to save EBX, EBP, or ESP)

  ; Subroutine Body
  mov eax, [ebp+8]   ; Move value of parameter 1 into EAX
  mov esi, [ebp+12]  ; Move value of parameter 2 into ESI
  mov edi, [ebp+16]  ; Move value of parameter 3 into EDI

  mov [ebp-4], edi   ; Move EDI into the local variable
  add [ebp-4], esi   ; Add ESI into the local variable
  add eax, [ebp-4]   ; Add the contents of the local variable
                     ; into EAX (final result)

  ; Subroutine Epilogue 
  pop esi      ; Recover register values
  pop  edi
  mov esp, ebp ; Deallocate local variables
  pop ebp ; Restore the caller's base pointer value
  ret
_myFunc ENDP
END

一点也不整齐,一点也不土气,居然还需要那么多奇怪的注释才能让人看懂这段代码,弱爆了!

程序员从此不再是手无束鸡之力的geek形象了有没有,给不明真相的围观妹纸随意朗诵一段中文汇编程序,立即就充满了武侠气质。

需要中文编程的少年们,学汇编去吧。

第 1 条附言  ·  2014-08-18 09:51:34 +08:00
其实我是来黑的,支持中文编程的十个有八个被我喷过。
中文也就用在汇编这种本来就没什么可读性、没有高层抽象、不需要显式的和数学表达式结合的语言上,才不会影响代码本身的可读性,甚至还能显示出一定的美感。
恩,中文很美,但有的事情不适合就是不适合。
壮士们还是学好英文吧。

附赠一段中文版Perl 《埃拉托斯芬篩法》:

```
用籌兮用嚴。井涸兮無礙
。印曰最高矣 又道數然哉。
。截起吾純風 賦小入大合。
。習予吾陣地 並二至純風。
。當起段賦取 加陣地合始。
。陣地賦篩始 繫繫此雜段。
。終陣地兮印 正道次標哉。
。輸空接段點 列終註泰來。
```

画面太美我不敢看。
58 条回复    2014-09-29 08:30:07 +08:00
akfish
    1
akfish  
OP
   2014-08-18 03:08:22 +08:00
传说中的markdown呢。。。
typcn
    2
typcn  
   2014-08-18 03:14:12 +08:00 via iPhone   ❤️ 1
你考虑过Linker的感受吗
alexapollo
    3
alexapollo  
   2014-08-18 03:18:30 +08:00
好玩
hoogle
    4
hoogle  
   2014-08-18 03:25:30 +08:00 via iPhone
100个赞
txlty
    5
txlty  
   2014-08-18 05:03:22 +08:00   ❤️ 2
如果没有西学东渐,工业革命在中国明朝甚至宋朝爆发。可能汇编真就是那样了。
fanzeyi
    6
fanzeyi  
   2014-08-18 07:12:07 +08:00
赞。
snachx
    7
snachx  
   2014-08-18 07:34:08 +08:00 via Android
如果从零开始计数是不是就把天干地支全用上了…
cloudyplain
    8
cloudyplain  
   2014-08-18 07:40:46 +08:00
真的很有文采...
clino
    9
clino  
   2014-08-18 07:42:09 +08:00 via Android
@txlty 工业革命的前提是科学的产生,中国会有生产相关的技术,但基本上没有产生科学的土壤。期望中国自己产生工业革命就是在做梦。看看4大发明在专制的中国的应用和在西欧引进以后的爆炸式的发展就能知道。
Havee
    10
Havee  
   2014-08-18 07:43:10 +08:00
语言从来不是问题,问题是生态啊
q397064399
    11
q397064399  
   2014-08-18 08:04:31 +08:00   ❤️ 3
@clino 土壤可以说根本没有,当西方人在探究自然科学的道路上付出生命代价的时候,我们还在闭关锁国,不求进取。
q397064399
    12
q397064399  
   2014-08-18 08:09:45 +08:00   ❤️ 3
世界上的象形文字在今天很普遍难以取得较为广泛的应用,从文字的基本属性-传递信息的目的角度出发, 汉字注定是一门落后的文字,无论是学习成本,书写成本,载体(纸张 竹片)本身的成本 来讲汉字都不是一门先进的文字。
从艺术跟内涵角度来讲 汉字确实是值得称赞的,但是很多人都忽略了文字的基本属性跟最重要的属性。
learnshare
    13
learnshare  
   2014-08-18 08:27:14 +08:00
易语言还是比较容易理解的,跟 VB 差不多嘛。
reeco
    14
reeco  
   2014-08-18 08:55:07 +08:00
@txlty 历史没有假设一说
Doubear
    15
Doubear  
   2014-08-18 09:14:53 +08:00
牛逼啊、、、小弟瞬间疯了、、、、、
pimin
    16
pimin  
   2014-08-18 09:17:21 +08:00 via iPhone
稍微有点偏激,其实汇编是最容易做中文的,逻辑比较好处理。
push eax
push ebx
mov eax,10
mov ebx,8
add eax,ebx

推入 扩展寄存器甲
推入 扩展寄存器乙
移动 阿拉伯数字10 到 扩展寄存器甲
移动 阿拉伯数字8 到 扩展寄存器乙
相加 扩展寄存器甲 扩展寄存器乙

认为语言是障碍的朋友,我可以做一个转译脚本,让他们学汇编更容易一些。
rwx
    17
rwx  
   2014-08-18 09:27:03 +08:00
凌波微步既视感。。已笑抽
kokdemo
    18
kokdemo  
   2014-08-18 10:12:38 +08:00   ❤️ 1
0|1|2|3|4|5|6|7|8|9|A|B|C|D|E|F
—|—|—|—|—|—|—|—|—|—|—|—|—|—|—|—|—
甲|乙|丙|丁|戊|己|庚|辛|壬|癸|子|丑|寅|卯|辰|巳

古代十六两秤叫十六金星秤,是由北斗七星、南斗六星加福禄寿三星组成十六两的秤星,告诫做买卖的人要诚实信用,不欺不瞒,否则,短一两无福,少二两少禄,缺三两折寿。

所以十六进制应该是……

天枢、天璇、天玑、天权、玉衡、开阳、摇光、天府、天梁、天机、天同、天相、七杀、福、禄、寿

你看这种设置多喜庆。
circsqua
    19
circsqua  
   2014-08-18 10:44:29 +08:00   ❤️ 1
来人,喂楼主Brainfuck
Tinet
    20
Tinet  
   2014-08-18 10:47:32 +08:00
笑喷了
panlilu
    21
panlilu  
   2014-08-18 10:47:49 +08:00
给楼主点个赞
jok3r
    22
jok3r  
   2014-08-18 10:50:20 +08:00 via iPhone
这个不是知乎上的吗?








不要随便盗取别人的答案啊!!!!!!!!
akfish
    23
akfish  
OP
   2014-08-18 10:55:54 +08:00   ❤️ 1
kslr
    24
kslr  
   2014-08-18 10:58:06 +08:00
发现还相当不错。
dorentus
    25
dorentus  
   2014-08-18 12:35:14 +08:00   ❤️ 1
@q397064399 汉字是否落后我不予置评。

但是拿到编程语言的例子里来看的话,汉字也罢、拉丁字母也罢、其它奇怪的字符也罢(比如传说中的 APL 用的关键字),都是符号,只有方不方便输入之分,没有落不落后之分;在同一门语言里,无论怎么换符号,语言的表达能力不变。

其实就拿楼主的汇编的例子来说吧,假如是用英文,那么假如我不懂英文,我也可以靠背诵来记住语言里面会用到的所有符号,背诵的过程可能比较难,但是背会了之后用起来一点问题都没。

而假如母语为英语的编程者,其实也还是要经过一个背诵学习的过程的;然后母语丰富的词汇量没准还会有一些不利的影响(拿到汉语的环境下来说,就是肯定有时我会忽然忘了到底是“推”还是“顶”还是其它的动词……)

所以就这点来说,我是觉得编程语言不用汉语其实是方便了母语为汉语的编程者的……
ravenw
    26
ravenw  
   2014-08-18 13:12:09 +08:00
屌爆了
reverland
    27
reverland  
   2014-08-18 13:38:54 +08:00
哈哈
Artotria
    28
Artotria  
   2014-08-18 13:58:12 +08:00
die = 爹
光是这一个我就不忍直视了(/▽\)
bcxx
    29
bcxx  
   2014-08-18 14:06:03 +08:00
真 literal programming XD
aaalzk
    30
aaalzk  
   2014-08-18 14:08:57 +08:00
我觉得中文可以做一些可视化编程,面向平时不编程的人,也许还有点用处
rentaro
    31
rentaro  
   2014-08-18 14:14:38 +08:00
我以为在看《周易参同契》
durrrr
    32
durrrr  
   2014-08-18 15:04:42 +08:00   ❤️ 1
一看到中文就产生一股切换输入法的恐惧感
dudor
    33
dudor  
   2014-08-18 15:30:15 +08:00
这这这。。。。算命的啊。。。
HowardMei
    34
HowardMei  
   2014-08-18 16:07:10 +08:00   ❤️ 1
@rentaro LoL
易经本来就很像个“模拟人生”一样的程序,由八卦定义语法和运算规则,
只是更接近 Functional Programming,而不是面向对象。

中国原生哲学,道生万物那一套,就属于创生论,而不是
原子论,跟软件领域 FP vs OOP 的路径差异非常类似。

只是没有好好系统化地发展,被叶公好龙、不求甚解的浪漫文科生们,
将其一味神秘化、毁掉了,使它沦落成为算命、迷信工具。

语言本身只是思想的载体,拉丁文、德文、法文都曾经是主流科技语言,
现在英文领先,不是它本身有多牛叉,而是用英文发布牛叉思想的人最多,
他们自然也会不断改造英文,使她适应时代需求。

中文显得落后,无非因为承载的思想落后,要想改变,只有用它来表达、
创造最先进的思想,而这就需要中文使用者,从用各种语言表达的牛叉
人物那里汲取养分,把自己先变成牛叉人物,再用中文创造牛叉思想,
改造和充实中文,否则只会害死中文。
P233
    35
P233  
   2014-08-18 16:07:27 +08:00   ❤️ 1
@txlty @clino @q397064399 亚里士多德在《形而上学》中提到 “为知识本身而探求的知识,总比为应用而探求的知识更近于智慧。为求知而求知的人,自然选取最真实的也是最可知的知识。”,从这个角度上说西方的科学思想一开始便与中国“学以致用”的思想有着很大分歧。再到后来伽利略开创了科学实验的验证体系,中国在科学之路上已经彻底落后西方了。
pljhonglu
    36
pljhonglu  
   2014-08-18 16:13:25 +08:00
我只感觉到楼主好闲啊。。。竟然有时间整理出来,竟然还有汇编的例子。。。
Macrov
    37
Macrov  
   2014-08-18 16:25:17 +08:00
LZ真棒,以前也经常YY这块。
现在比较认同象形文字不太适合做这种编码工作,但是一直思考是不是现有的知识束缚了咱们的思考。

大家有没有记得007有一集邦女郎在她小基地里用的键盘,全部都是中文的,我记得好像不是传统的键盘画的五笔,所以我想如果一切从头开发,当我们不知道有英文这种东西我们去做计算系统,做出一套最基本的软件环境来会是什么样子。

国家随便拨点钱搞一下多好,很有意思么。
bulldozer
    38
bulldozer  
   2014-08-18 17:34:23 +08:00 via iPhone
林语堂曾经把自己的几乎全部稿费收入投入到中文打字机的发明,一度接近破产。
bulldozer
    39
bulldozer  
   2014-08-18 17:42:57 +08:00 via iPhone
其实中国文化庙堂和江湖、市场有一个很大的脱节

比如中国是最早出现银行、会计的国家,它日常记账所用助记符相当简单

但你几乎看不到有人整理这些,我们得到的信息仿佛祖先就靠种田,和之乎者也度过了几千年
clino
    40
clino  
   2014-08-18 18:26:59 +08:00
@P233 其实追根究底差别还是来源于地理,中国的地理特点导致了历史发展趋向于专制统一,经济上倾向于重农抑商,西欧的地理特点导致了历史发展较趋向于平等自由,经济上倾向于重商主义
XadillaX
    41
XadillaX  
   2014-08-18 19:43:37 +08:00
二进制本身就是从太极和八卦中受到的启迪。
jakwings
    42
jakwings  
   2014-08-18 20:58:10 +08:00
我想知道哪个支持法是没被喷过的,有朱邦復老先生的那个中文系统吗?有的话再附上让大家知道也好啊。
http://www.cbflabs.com/
jamiesun
    43
jamiesun  
   2014-08-18 21:04:49 +08:00
易经就是一本编程书啊
zhounew
    44
zhounew  
   2014-08-18 21:12:51 +08:00
@jamiesun 有可能真的就是一本古人的编程书。。。
xrui
    45
xrui  
   2014-08-18 21:26:59 +08:00 via Android
@P233 我们数学老师曾经说,这就像是算法和理论的区别。像秦九韶的那个大衍求一,秦九韶算法等都是很先进的。袖里吞金那不也是吗。
形而上学不懂
Automan
    46
Automan  
   2014-08-18 22:06:11 +08:00
@XadillaX 二进制那是无奈之举
hustlzp
    47
hustlzp  
   2014-08-18 22:46:44 +08:00
吊!被楼主智商完爆了!
P233
    48
P233  
   2014-08-18 23:03:02 +08:00   ❤️ 4
@xrui 对比一下过去的两千多年里,西方的治学观是学以致知,而东方则多强调学以致用。前者为了获得知识而探索知识,如亚里士多德说 “最高级的学术研究的开始,只在人生的必需品以及使人快乐安适的各种物品几乎都得到了之后”,并且对知识的探索,验证,传承等逐渐形成了一套完整的体系,发展出了科学。而后者得到的多是片段化的知识,某些地方确实很突出,却远远谈不上系统化的知识体系。历史书上强调我们很多理论比西方早发现几百年,但却没有发展出一门学科来。我想这也是楼上几位提出中国没有孕育科学的土壤的原因。
davidli
    49
davidli  
   2014-08-18 23:20:41 +08:00
楼主请收下我的膝盖
akfish
    50
akfish  
OP
   2014-08-18 23:59:29 +08:00
@aaalzk +1,中文编程用于启蒙,或者特定系统里面的DSL/脚本语言有一定的价值,专业开发就呵呵了。

@jakwings 剩下的2个是懒得喷/没空喷。你贴的那个例子并不是编程中文化,不在喷的范畴内。
Mutoo
    51
Mutoo  
   2014-08-19 00:08:09 +08:00
这..比草泥马语牛逼多了! https://code.google.com/p/grass-mud-horse/
akfish
    52
akfish  
OP
   2014-08-19 00:09:16 +08:00   ❤️ 2
@q397064399
@dorentus
+1,英语之所以在现代这么有生命力/侵入性,就在于其语言的复杂度恰好在一个合适的范围内,英语和数学、现代科学天然兼容也不全是偶然。
开发语言/平台这种东西到最后就是拼社区大小(其实科学研究也是),英文编程只需要知道26个字母,记得关键字的单词,全世界的人民都能很快上手来用,语言学习门槛也不高。要是中文的话,非中文母语国家的人先乖乖的花几年学会中文,再花半年练习中文打字,再来写hello world吧,这时的中文水平还不一定看得懂文档。

所以我经常喷那些连中文都会了,却觉得英文要命的人非懒即笨。
xrui
    53
xrui  
   2014-08-19 00:31:58 +08:00 via Android
嗯嗯,嗯……为什么我想到了中医呢。
9yu
    54
9yu  
   2014-08-19 01:45:23 +08:00
码出这么多字,佩服……
fzss
    55
fzss  
   2014-08-19 12:52:15 +08:00
哈哈哈哈笑死了
Havee
    56
Havee  
   2014-08-19 22:55:28 +08:00
讨论编程语言,却讨论出中西文优越性......

老实说,收音机里听中文相声,可以听的津津有味,中文表达能力强
收音机里听听英文相声试试,没有语境、没有手势,没有表情,就是抓瞎
跟老外讲话,需要手势、表情、语境等配合,结果就是手舞足蹈,就像耍猴一样。

编程语言,语理越简单越适合,英文适合,数字更适合,跟机器直接沟通的就是0/1。侧面反应该语言的贫乏,没有深度。

汉子不适合编程,同样完全没必要用英文用出优越感。
themachine
    57
themachine  
   2014-08-22 20:14:15 +08:00
@HowardMei 不苟同你文科生的看法,不过后面两点很赞。

|语言本身只是思想的载体,拉丁文、德文、法文都曾经是主流科技语言,
|现在英文领先,不是它本身有多牛叉,而是用英文发布牛叉思想的人最多,
|他们自然也会不断改造英文,使她适应时代需求。
|
|中文显得落后,无非因为承载的思想落后,要想改变,只有用它来表达、
|创造最先进的思想,而这就需要中文使用者,从用各种语言表达的牛叉
|人物那里汲取养分,把自己先变成牛叉人物,再用中文创造牛叉思想,
|改造和充实中文,否则只会害死中文。
benjiam
    58
benjiam  
   2014-09-29 08:30:07 +08:00 via Android
中文 英语并无区别
为了中文而中文不可取。英语有很大的优势,字母组合表示意义,而汉字的象形写法太复杂,没有好的编码方式。什么天干地支 你的CPU都是别人设计的,靠这种东西来意淫中国文明?
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5469 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 40ms · UTC 08:29 · PVG 16:29 · LAX 01:29 · JFK 04:29
Developed with CodeLauncher
♥ Do have faith in what you're doing.