游戏开发论坛

 找回密码
 立即注册
搜索
查看: 10357|回复: 24

日语是计算机语言;C++是自然语言

[复制链接]

362

主题

3023

帖子

3553

积分

论坛元老

Rank: 8Rank: 8

积分
3553
发表于 2009-2-8 05:19:00 | 显示全部楼层 |阅读模式
在C++中我们会写 DoSomething2( DoSomething1 ( x ) )

其实这根本不符合计算机的执行顺序。
其实最符合计算机原理的书写顺序是:
x  DoSomething1  DoSomething2

而日语恰恰就是这种最科学的顺序,我们看:

x wo DoSomething1 suru result wo DoSomething2 suru

类似地, ! ( ! lovely ) 这种表达式的顺序也根本不科学,看日语:
lovely-ku na-ku na-i    直译就是 lovely not not

呵呵,实际上人脑进行思维的“tension”和计算机很类似,都是单线程的,
所以日语不仅符合计算机的顺序,更符合人们思考的顺序。

362

主题

3023

帖子

3553

积分

论坛元老

Rank: 8Rank: 8

积分
3553
 楼主| 发表于 2009-2-8 05:22:00 | 显示全部楼层

Re:日语是计算机语言;C++是自然语言

另一方面大家估计都知道,日语是黏着语,而C++是孤立语。
换言之,日语等于就是数据结构,而C++要进行复杂的语法解析。

4

主题

107

帖子

107

积分

注册会员

Rank: 2

积分
107
发表于 2009-2-8 14:09:00 | 显示全部楼层

Re:日语是计算机语言;C++是自然语言

那上古汗语是什么样的语言呢?

1

主题

106

帖子

110

积分

注册会员

Rank: 2

积分
110
发表于 2009-2-8 15:34:00 | 显示全部楼层

Re:日语是计算机语言;C++是自然语言

未能理解,有点兴趣,希望楼猪再详细解释下
比如中文
我是小白
刚刚正好搜索了下黏着语,好像还有点意思.

1

主题

106

帖子

110

积分

注册会员

Rank: 2

积分
110
发表于 2009-2-8 15:57:00 | 显示全部楼层

Re:日语是计算机语言;C++是自然语言

搜索了一下,原来instemast是大名鼎鼎
只是你的帖子很难理解啊,难道是使用中文的缘故..

3

主题

263

帖子

267

积分

中级会员

Rank: 3Rank: 3

积分
267
发表于 2009-2-10 13:16:00 | 显示全部楼层

Re:日语是计算机语言;C++是自然语言

呵呵,"符合计算机原理的书写顺序"是二进制代码执行顺序吗?

计算机顺序是: DoSomething2 DoSomething1,貌似跟x无关吧.x本身没有可执行的code,只是一个参数

还有这个x是主还是宾啊?
如果是主,那么C++应该是x.dosomething1( x.dosomething2() ),
如果x是宾,假设主就是this,那么C++的就是 this->dosomthing1( this->dosomething2(x) )

这个C++语言的表示顺序就跟纯数学语言的函数一样y = f( g(x) ) 没有什么不妥,顺序是括号里面的优先

假如楼主写了一个计算机语言 Jpn++,其中的语法是 x g() f(),而不是 f( g(x) ),那么别人我不敢说,我自己是肯定不会去用的.哈哈

C++语言里面引入了"函数"的概念(其实就是计算机过程),包含了数学符号的使用习惯,而并不单单是某一种人类自然语言.
用f( g(x) ),大家都习以为常.所以这样做可读性好.有时候不能因为效率而牺牲编程可读性.
但是"Jpn++"的代码可读性...那我就感觉很难接受了...

362

主题

3023

帖子

3553

积分

论坛元老

Rank: 8Rank: 8

积分
3553
 楼主| 发表于 2009-2-10 21:06:00 | 显示全部楼层

Re:日语是计算机语言;C++是自然语言

假如楼主写了一个计算机语言 Jpn++,其中的语法是 x g() f(),而不是 f( g(x) ),那么别人我不敢说,我自己是肯定不会去用的.哈哈

f(g(x)) 的执行顺序是什么? 难道你认为是 f > g > x 这样? 不是吧!? 应该是 "x > g > f" 吧?

先执行的东西,就先说(或先写),后执行的后说(后写),这样才即科学,又轻松。

假如是C++语言,比如我嘴上说“g(x)”然后我想把它再进行一个 f 运算,那么我怎么办????????
----没有办法(除非打破语法或者重新说一遍)

而如果是日语,比如我说"x wo g suru" 然后我想把再进行一个 f 运算,可以接着说“kekka wo f suru”


还有,按你所说的话,比如我嘴上说“ a ( b ( c ( d ( e ) ) ) ) ”你容易听懂吗?
不容易。但是黏着语就不!
EをDする?果をCする?果をBする?果をAする

362

主题

3023

帖子

3553

积分

论坛元老

Rank: 8Rank: 8

积分
3553
 楼主| 发表于 2009-2-10 21:08:00 | 显示全部楼层

Re:日语是计算机语言;C++是自然语言

但是"Jpn++"的代码可读性...那我就感觉很难接受了...

日本人都可读,而且那就是日本人的日常语言

362

主题

3023

帖子

3553

积分

论坛元老

Rank: 8Rank: 8

积分
3553
 楼主| 发表于 2009-2-10 21:09:00 | 显示全部楼层

Re:日语是计算机语言;C++是自然语言

计算机顺序是: DoSomething2 DoSomething1,貌似跟x无关吧.x本身没有可执行的code,只是一个参数

PUSH x
CALL DoSomething1

怎么无关?

362

主题

3023

帖子

3553

积分

论坛元老

Rank: 8Rank: 8

积分
3553
 楼主| 发表于 2009-2-10 21:25:00 | 显示全部楼层

Re:日语是计算机语言;C++是自然语言

还有这个x是主还是宾啊?
如果是主,那么C++应该是x.dosomething1( x.dosomething2() ),
如果x是宾,假设主就是this,那么C++的就是 this->dosomthing1( this->dosomething2(x) )

1) 请看看是不是所有的类库都是 主语.动词 ( 宾语 ) 这样设计的。 比如:
str1.append (str2); // 这句话是 间接宾语.动词 ( 宾语 )

2) x.dosomething1( x.dosomething2() ) 这种句子实际上同时包含了2种含义:
// struct Cls x;
  (*Cls::pDosomething1) ( (Cls::pDosomething2)(x) );
含义<1> x 是Cls类的一个instance, dosomething1,2 都是 Cls 中的函数,
含义<2> 这里还传递了this指针(x)

你那么说,实际上混淆了这两个概念(名称作用域和this指针)!!
这里你说的“主语x”是作为this指针传递给 Cls::pDosomething1,2 的


哲学上说,还有下列关系:
pDosomething1 是 "Cls::pDosomething1" 的父类,
pDosomething1 无法直接进行调用,这是因为它身上没有参数信息,只有一个名字,
换句话说,只写 pDosomething1 编译器找不到参数信息,所以无法调用,
于是我们需要加上限定词"Cls::",以表示我们调用 Cls::pDosomething1 这个子类,
而这个子类具有更多足够的外延(参数信息)所以可以进行函数调用。


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-12-19 20:05

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表