2007-9-27 18:56
Maxwell
预告 汉语编程扫盲
前几天茶座有个帖子宣传汉语编程的,不想今天又从别处看到了更多的信息,想到茶座的帖子讨论的也不少,因此打算从这里开个扫盲帖,给大家介绍介绍汉语编程的方方面面。为了对观众负责,不能随便对汉语编程进行评价,因此完成帖子应该需要一段时间,但是不会等帖子全部写完一次发出来,而是有部分内容就先帖出来。
帖子的内容将会是汉语编程的各个方面,不限于语法、使用等等,而且部分内容将是搜集来的而不是我写出来的,为的是能对汉语编程有个全方位的描述。
如果对汉语编程有兴趣的,可以跟这个帖子提出问题,我会尝试着回答,当然也别抱太大希望:lol:
2007-9-27 19:01
司徒苍月
调用API大部分还是E文的吧:titter:
2007-9-27 19:09
Maxwell
补充一点,今天证实了原来的一个猜想,果然是有个语言叫汉语编程,而不是泛指的。这次的扫盲也主要针对这特定的语言进行。
调用API的部分,理论上即不是中文,也不是英文。
2007-9-27 19:36
炎帝瀑布碎
说到那个帖子
偶现在想想那段:
[quote]#define 如果 if
#define 否则 else[/quote]
实在是太经典,太有趣了:():():()
2007-9-27 19:40
Maxwell
没觉得有什么可乐的。
2007-9-27 20:47
岱瀛
:-_-:看索命鬼能写出虾米东西。 写不好,让偶的老虎坐骑吃掉你这只大尾巴狐狸。
:titter:偶想问问,新引擎下的剧本编辑器,写出来的剧本具备 了循环结构,分支结构,顺序结构三大结构化特征, 内中数据又有了布尔型变量,数字型变量,指针地址型变量。
而整个工具又是绝对中文汉化,而且这套工具相信也是绝对国内知识产权的(Van不会是浙大的外国留学生吧:titter:)。
在编辑出来的内容里也无一点传统的英文编程内容,但是他却能胜任一般Basic,C语言等语言可以写出来的程序。(调用API的属于与操作系统的交互部分了,不属于语言本身,新引擎利用71,72指令其实也能和套套交互,由此看来真要调用API也未尝不可)
试问,这套引擎,这套工具写出来的剧本程序,是否可算汉语编程呢:rolleyes:
p.s : 就我这附件里看到的关于汉语编程的工具的介绍和使用,还真看不出他在逻辑处理能力上是否有剧本编辑器的强大。那15个命令用那些诡异的符号表示,丝毫看不出他有什么易入门性。
[[i] 本帖最后由 岱瀛 于 2007-9-27 20:58 编辑 [/i]]
2007-9-27 20:54
炎帝瀑布碎
回复 #6 岱瀛 的帖子
这个东东,写出来的东西已经很像素程序鸟,8过,这个东东弄出来的东东,只有CCZ才认识吧:(
2007-9-27 21:05
岱瀛
[quote]原帖由 [i]炎帝瀑布碎[/i] 于 2007-9-27 20:54 发表
这个东东,写出来的东西已经很像素程序鸟,8过,这个东东弄出来的东东,只有CCZ才认识吧:( [/quote]
这个关系不大啊。因为你可以把他理解成为解释型的语言。
解释型的语言不是那种编译型的,它是需要解释器配合运行的。
比如Quick Basic就是一种解释型的语言。
而象Java,它也有类似解释型语言的特征。虽然它也经过编译,却没有形成最终代码,只是形成中间代码,也需要虚拟机的解释。
还有,象html,js,php,jsp,asp等等也叫做语言,但是那叫脚本语言,需要解析器才可以运行。
而还有象xml,它也叫做一种语言,还被叫做元语言呢。(可定义其他语言的语言)
计算机语言倒不是仅仅限于C/C++这类编译型的语言的。
2007-9-28 09:05
Maxwell
[quote]原帖由 [i]岱瀛[/i] 于 2007-9-27 20:47 发表
:-_-:看索命鬼能写出虾米东西。 写不好,让偶的老虎坐骑吃掉你这只大尾巴狐狸。
:titter:偶想问问,新引擎下的剧本编辑器,写出来的剧本具备了循环结构,分支结构,顺序结构三大结构化特征, 内中数据又有了布尔型变量,数字型变量,指针地址型变量。
而整个工具又是绝对中文汉化,而且这套工具相信也是绝对国内知识产权的(Van不会是浙大的外国留学生吧)。
在编辑出来的内容里也无一点传统的英文编程内容,但是他却能胜任一般Basic,C语言等语言可以写出来的程序。(调用API的属于与操作系统的交互部分了,不属于语言本身,新引擎利用71,72指令其实也能和套套交互,由此看来真要调用API也未尝不可)
试问,这套引擎,这套工具写出来的剧本程序,是否可算汉语编程呢
p.s : 就我这附件里看到的关于汉语编程的工具的介绍和使用,还真看不出他在逻辑处理能力上是否有剧本编辑器的强大。那15个命令用那些诡异的符号表示,丝毫看不出他有什么易入门性。
[/quote]
说到编程语言,我个人觉得有个最基本的条件就是以文本方式存在,一般来讲,游戏有个引擎必然会有对应的类似语言的东西,只是传统上未必称作语言而已。Van的作品实际上其本人定位已经很准确了。我认为这个不能算汉语编程,连编程也称不上。
作为编程语言,功能通常会比引擎的脚本功能强大,这个应该没有问题。不过汉语编程那诡异的语法确实很让我迷惑。
2007-9-28 09:12
Maxwell
[quote]原帖由 [i]岱瀛[/i] 于 2007-9-27 21:05 发表
这个关系不大啊。因为你可以把他理解成为解释型的语言。
解释型的语言不是那种编译型的,它是需要解释器配合运行的。
比如Quick Basic就是一种解释型的语言。
而象Java,它也有类似解释型语言的特征。虽然它也经过编译,却没有形成最终代码,只是形成中间代码,也需要虚拟机的解释。
还有,象html,js,php,jsp,asp等等也叫做语言,但是那叫脚本语言,需要解析器才可以运行。
而还有象xml,它也叫做一种语言,还被叫做元语言呢。(可定义其他语言的语言)
计算机语言倒不是仅仅限于C/C++这类编译型的语言的。 [/quote]
通常说的计算机语言一般指编程语言,QBasic是解释型的,早期的GWBasic也是解释型的,Quick Basic是解释编译两种皆有的。
Java的虚拟机方式要是非要划分也应归于解释型,但是Java还是有编译器的,只是用的很少。
js称为脚本语言,实际上也能归在编程语言的大类里,php, jsp, asp都足以称为狭义上的编程语言。
除了XML还有HTML, SQL, PCL这都是比较常见的称为语言的东西,只不过不能算作编程语言罢了。
2007-9-28 12:46
岱瀛
[quote]原帖由 [i]Maxwell[/i] 于 2007-9-28 09:12 发表
通常说的计算机语言一般指编程语言,QBasic是解释型的,早期的GWBasic也是解释型的,Quick Basic是解释编译两种皆有的。
Java的虚拟机方式要是非要划分也应归于解释型,但是Java还是有编译器的,只是用的很 ... [/quote]
Java定义为解释性语言,偶刚学那会尝试这样说过,但是立马给老师否定的。
Java确实要说得和Basic那样归类成解释型,还素有不少人反对的。
计算机编程语言的话,如果偶个人的认为是,这种语言必须具备数学运算能力,逻辑处理能力,有这两点,应该就具备了可编程性。
所以汉语不汉语的去炒作这个概念根本就没有必要。
如果认为因为英文符号而影响了编程学习的入门,那就和质疑用了英文字母影响代数学习入门 一个性质。
偶入门学的语言是Logo语言。最初的几条命令是FD,BK,RT,LT。 前进,后退,右转,左转. 对于这个,有什么英文意思吗?不就是一些字母组成的符号。懂得FD是Foward和懂得FD是前进其实不会有太大区别。
2007-9-28 14:55
Maxwell
[quote]原帖由 [i]岱瀛[/i] 于 2007-9-28 12:46 发表
Java定义为解释性语言,偶刚学那会尝试这样说过,但是立马给老师否定的。
Java确实要说得和Basic那样归类成解释型,还素有不少人反对的。
计算机编程语言的话,如果偶个人的认为是,这种语言必须具备数学运算能力,逻辑处理能力,有这两点,应该就具备了可编程性。
所以汉语不汉语的去炒作这个概念根本就没有必要。
如果认为因为英文符号而影响了编程学习的入门,那就和质疑用了英文字母影响代数学习入门 一个性质。
偶入门学的语言是Logo语言。最初的几条命令是FD,BK,RT,LT。 前进,后退,右转,左转. 对于这个,有什么英文意思吗?不就是一些字母组成的符号。懂得FD是Foward和懂得FD是前进其实不会有太大区别。[/quote]
我已经说了,如果非要分作两类,java应该归为解释型。
既然用什么语无所谓,我觉得就[color=Red]没有必要去说用汉语没有必要[/color]。
英语对于编程的学习确实有阻碍,如果代数书上讲Pythagorean proposition的话,在学习上的障碍也是显然的。如果[color=Red]仅仅是关键字是英文[/color]才比较接近现在代数学习的情况,而现有的事实是很多文档都只有英文版,函数名、类名、包名等等一大堆东西都是英文的,如果不认识相关的几百个单词,靠死记硬背一个无意义的符号,难度会大的多。
简单举个例子,这个新语言实际上支持的功能与c++/MFC差不多,里面有个错误你看出来了吗?觉得这门语言是不是很好掌握?用这门语言编程多长时间有把握会写程序?
XRRN是一个布尔型类型
cby是整型
JOypcbi是字符串类型,类似MFC的CString
JOypcbi::Urpmay类似于CString::Format
JGCbyAppaf是CUIntArray类型
JGCbyAppaf::IwyOcvw()取对象中UInt的个数
JGCbyAppaf::PwmrkwAnn()删除存储的所有数据
JPwjrpeowy是数据库记录集
JPwjrpeowy::AeeO'n添加指定的Sql语句
JPwjrpeowy::>qwjMgnycO'n执行前面添加的Sql语句
条件分支关键字cu
结束函数返回的关键字是pwygpb
常量UANO>代表假,YPG>代表真
urp是循环语句
jrbycbgw直接开始下一次循环
XRRN JLcjygpwJypnl::OakwNcbtBrew()
{
cby i, j;
XRRN bSuccess;
JOypcbi strSql;
JGCbyAppaf NodeArray, CellArray;
JPwjrpeowy RS;
cu (UANO> == m_ElectricGraph.IsElectricGraphChanged())
pwygpb;
strSql.Urpmay(_Y("DELETE FROM WD_LINKNODE WHERE STATIONID = %d AND PICTUREID = %d"),
m_StationID, m_PictureID);
RS.AeeO'n(strSql);
urp (i = 0; i < m_ElectricGraph.m_NodeList.IwyOcvw(); ++i)
{
cu (UANO> == m_ElectricGraph.IsNodeExist(i))
jrbycbgw;
m_ElectricGraph.GetLinkedNode(i, NodeArray, CellArray);
urp (j = 0; j < NodeArray.IwyOcvw(); ++j)
{
cu (i < (cby)NodeArray[j])
{
strSql.Urpmay(_Y("INSERT INTO WD_LINKNODE (STATIONID,PICTUREID,SRCNODE,DESNODE) VALUES(%d, %d, %d, %d)"),
m_StationID, m_PictureID, i, NodeArray[j]);
RS.AeeO'n(strSql);
}
}
NodeArray.PwmrkwAnn();
}
bSuccess = RS.>qwjMgnycO'n(120);
pwygpb bSuccess;
}
顺便说一句
Pythagorean proposition就是说直角三角形两直角边平方和等于斜边平方的那个定理:titter:
[[i] 本帖最后由 Maxwell 于 2007-9-28 14:57 编辑 [/i]]
2007-9-28 23:30
岱瀛
本来都失踪了,开始要准备流浪了,看了索命鬼这贴,不得来回一回了。
不知道索命鬼写的素虾米鸟语言,确实米见过。
不过结构化的层次写的倒不错,整个函数顺序下来,在开头有个分支,接着一个大循环内嵌套个小循环。最后结束。
所以虽然从词法上看不懂,但是从代码里透出的气味里还是可以知道些东西的。
从SQL里透露出来的信息是一开始删除了 WD_LINKNODE表内的信息
后面遍历m_NodeList,把一个一个LinkNode取出来放在NodeArray和CellArray中。
再把NodeArray里的每个Node的信息联合 m_StationID, m_PictureID,依此插进库。
不过这里没有看到CellArray这个数组有什么作用,这个数组作为一个局部变量,仅仅出现在一次GetLinkedNode的函数调用作为一个传入参数。要说是传值进入嘛,先前没有见到赋值,要说是送数组地址进入,取回内容的嘛,又没看到使用,不象NodeArray,所以对CellArray这个数组变量在本函数的使用表示一点怀疑。
从数据结构上看,这是个线性表,表内的每一项是一个单链表。
所以从这段函数的作用看,应该就是如果内存的列表信息发生改变,那么把内存里的信息更新进库的作用。
XRRN 是bool型,所以这个函数是有返回值的。
从函数行文看,很明显pwygpb应该就是等于return 了。
那么这个函数有个明显的错误点在于未进入循环前,
cu (UANO> == m_ElectricGraph.IsElectricGraphChanged())
pwygpb;
pwygpb没有带上一个真或假的常量,也没有带上一个XRRN类型的变量。
除非这个编辑工具会做什么预处理,否则个人觉得在编译过程的语法分析应该会出错。
jrbycbgw这个功能,看上去可以等于break,也可以等于continue.
这个要具体分析list的内容定义,节点项是否会连续来定了。
continue的可能性稍微偏大一些。
---------------------------------------------------
:titter:看到索命鬼下面有个注释jrbycbgw确实是continue的功能。
pwygpb素return, 原来都说鸟,偶多猜了。呵呵。
------------------------------------------------------------------------------------------------
语言本来就是相通的,编程重在一种思维。关键字是否好记并不重要,最多多查查字典帮助,多用几次就熟悉了。
编程的思路,运算性,逻辑性才是重要的,所以真要偶用上面这破语言写虾米程序,:P偶会说,船到桥头自然直。关键素有没有耐心,外界条件有没有驱使你去这样写的必要而已。
语言实现从来就不会是真正要编程者的绊脚石,记得天宫公主曾在一贴中说过,她觉得语言实现都是累傻小子的活,如果仅仅把编程等价于语言实现,把学习编程等价于记忆关键字,那我倒是对她曾经的这个说法表示赞同。
不过,学习编程,偶从来不认为那是去背天书,如此美妙的编程世界的学习,怎么会和那学政治课背概念背最新时事论点一样无聊呢。:-_-:
[[i] 本帖最后由 岱瀛 于 2007-9-28 23:47 编辑 [/i]]
2007-9-29 15:43
Maxwell
[quote]原帖由 [i]岱瀛[/i] 于 2007-9-28 23:30 发表
本来都失踪了,开始要准备流浪了,看了索命鬼这贴,不得来回一回了。
不知道索命鬼写的素虾米鸟语言,确实米见过。
不过结构化的层次写的倒不错,整个函数顺序下来,在开头有个分支,接着一个大循环内嵌套个 ... [/quote]
这个程序就是从公司的c++代码里面摘了一段转换了一下贴来的:titter:
我贴这个程序的目的是让你看到函数、库等等大量的内容如果是不熟悉的语言造成的难度。我原本后面还有一个问号,就是你能看懂这个程序吗,后来自己看了一眼,c++的结构太明显,就是换成火星文也能猜出来是干什么的,就删掉了。结果你反倒把我删掉的问题回答了,看来你也会挑简单的:titter:
MFC库,我估计了一下,常用的应该有超过300个不同的单词,算上全部内容这个数目应该超过500个。如果有英语基础,学习难度会降低很多。
如果是j2ee平台,我猜测单词会超过1000个,想想这个难度就知道即使是汉化一种语言,也有其用武之地。当然必须要做到全面汉化。
[quote]语言本来就是相通的,编程重在一种思维。关键字是否好记并不重要,最多多查查字典帮助,多用几次就熟悉了。
编程的思路,运算性,逻辑性才是重要的,所以真要偶用上面这破语言写虾米程序,偶会说,船到桥头自然直。[color=Blue]关键素有没有耐心,外界条件有没有驱使你去这样写的必要而已。[/color]
语言实现从来就不会是真正要编程者的绊脚石,记得天宫公主曾在一贴中说过,她觉得语言实现都是累傻小子的活,如果仅仅把编程等价于语言实现,把学习编程等价于记忆关键字,那我倒是对她曾经的这个说法表示赞同。[/quote]
现在c++跟我发明的这个鸟语语言放在一起,我告诉你,这两门语言语法一致、库一致、功能一致,你选择哪个?如果世界上没有c++只有我这个鸟语语言,你是不是会去转学java、delphi甚至vb?甚至于如果编程语言仅有这一种,多少人会放弃学习编程?
很多人看英语比你看鸟语还头疼,这就是支持汉语符号的编程语言存在的意义。另外现有的两种中文编程语言不代表所有支持汉语符号的编程语言,因此不能参考这两门语言去得出不需要支持汉语符号的编程语言。
如果某一天出现了一个功能完善的语言关键字是中文的,我绝对有兴趣去研究一下,而不像原来茶座帖子里一些人的态度好像看到中文编程语言就欲除之而后快。
[color=Blue]不过,学习编程,偶从来不认为那是去背天书,如此美妙的编程世界的学习,怎么会和那学政治课背概念背最新时事论点一样无聊呢[/color]
如果现在编程语言都是鸟语写成的,学校里又没有开过鸟语课,我相信你今天绝对不会说这句话。
2007-9-30 15:20
摔猫砸镜吃浇头
茶座那个原贴,你看那些红字部分,说得不跟扯的一样吗?
MFC又不是一门语言,它只是一个类库,有中文语言的类库的时候,一样也可以方便使用。
.Net 2005的编辑器是允许中文定义变量什么的,见过多少个程序开发者这样干了吗?
至于 是 if还是cu ,那仅仅是一种习惯而已啊。
必须承认中文在现代科学中的一些表达上存在一定缺陷的。
键盘上都是26个英文字母,日文的都有日语键盘,
见过有中文的键盘吗?
这个本身已经很致命了。
中文在计算机编程世界的表达能力,在数学论证的表达能力,在物理化学等学科里的表示能力,都是比较弱的。
既然能吸收1,2,3,4这种阿拉伯数字来充实我们的语言,为什么要拒绝英文字母呢。
对了,这里强调下是英文字母。
其实对于语言关键字来说,一门语言关键字就100个左右,很多也是缩小而来的,所以与其说是英文单词,不如说是英文字母。
反正一直偶都是这样认为的。
至于说Java,MFC 。类库的问题,只能怪MS,SUN都素米国公司了。
如果说做做中文类库,中文资料,那也许还有价值,但是这个界面交互上由于传统键盘的关系,应用上障碍不小。
至于大张其道的吹嘘 汉语编程,那就纯粹是骗小孩的。
大概可以骗多大呢,8岁以下吧:titter:
2007-9-30 15:49
炎帝瀑布碎
看了上面的两位讨论了几楼
偶感觉
这个恐怕是学习上的学习习惯问题吧
人通常会有一个先入为主的概念
你先学了编程,在学英语会感觉编程和英语没关系
如果相反,则会感觉编程和英语有莫大的关系
就像小学时候先学了小数的四则运算
后学了分数的四则运算
刚学分数的四则运算的时候你可能会感觉小数的比较简单,因为小数已经先入为主了
但其实是分数的比较简单
2007-9-30 16:36
Maxwell
[quote]原帖由 [i]摔猫砸镜吃浇头[/i] 于 2007-9-30 15:20 发表
茶座那个原贴,你看那些红字部分,说得不跟扯的一样吗?
MFC又不是一门语言,它只是一个类库,有中文语言的类库的时候,一样也可以方便使用。
.Net 2005的编辑器是允许中文定义变量什么的,见过多少个程序 ... [/quote]
首先搞明白一个问题,我一直强调的是中文符号的编程语言(而不是局限于现有的几种中文编程语言)有其存在的意义。另外,VB早就支持中文变量名了,.net2005落后了。
2007-9-30 16:52
Maxwell
[color=Blue]茶座那个原贴,你看那些红字部分,说得不跟扯的一样吗?[/color]
讨论的基础就不一致了。
[color=Blue]MFC又不是一门语言,它只是一个类库,有中文语言的类库的时候,一样也可以方便使用。[/color]
从理论上,MFC不是语言,从现实讲,使用VC的时候有多大几率用到MFC?讨论问题要脚踏实地,说到玩虚的,论证语言不应该基于英语都可以。多考虑现实问题,多考虑平均情况,讨论才有意义,只从自己的程度出发讨论问题那叫显摆:titter:
[color=Blue].Net 2005的编辑器是允许中文定义变量什么的,见过多少个程序开发者这样干了吗?
至于 是 if还是cu ,那仅仅是一种习惯而已啊。[/color]
您也知道那是习惯,您习惯了,别人呢?
[color=Blue]必须承认中文在现代科学中的一些表达上存在一定缺陷的。[/color]
为什么?凭什么?
[color=Blue]键盘上都是26个英文字母,日文的都有日语键盘,
见过有中文的键盘吗?
这个本身已经很致命了。[/color]
这有何致命?这是比关键字是中文更表面的东西。
[color=Blue]中文在计算机编程世界的表达能力,在数学论证的表达能力,在物理化学等学科里的表示能力,都是比较弱的。[/color]
没听说过这种说法,我的理解,数理化方面的弱点是因为标准的问题,国际上已经用了一套符号,自己再搞不利于交流而已。
[color=Blue]既然能吸收1,2,3,4这种阿拉伯数字来充实我们的语言,为什么要拒绝英文字母呢。[/color]
这不是拒绝英文的问题,没有人说英文编程语言不应该存在,而是相反,有些人见不得中文编程存在。
[color=Blue]至于说Java,MFC 。类库的问题,只能怪MS,SUN都素米国公司了。[/color]
就是阿拉伯的公司也会这样,在这个问题的认识上还是有点浅。
[color=Blue]如果说做做中文类库,中文资料,那也许还有价值,[/color]
MSDN中文部分就应该删掉。
[color=Blue]但是这个界面交互上由于传统键盘的关系,应用上障碍不小。[/color]
30年前就有一批人这么说,还说中国想信息化就要放弃汉字。
[color=Blue]至于大张其道的吹嘘 汉语编程,那就纯粹是骗小孩的。
大概可以骗多大呢,8岁以下吧 [/color]
出发点又错了,8岁小孩还是太嫩:titter:
2007-10-5 11:48
alphax
没搞明白楼主出发点是什么,主要观点是什么,中心思想是什么?
既然那个搞汉语编程的纯粹是骗钱,楼主为什么还要宣传它?
2007-10-7 13:57
Maxwell
[quote]原帖由 [i]alphax[/i] 于 2007-10-5 11:48 发表
没搞明白楼主出发点是什么,主要观点是什么,中心思想是什么?
既然那个搞汉语编程的纯粹是骗钱,楼主为什么还要宣传它? [/quote]
扫盲的目的是让大家了解“汉语编程”的真实面目,对一个东西了解的越少越容易被欺骗。
但是要说明一点,我展示“汉语编程”的面目并不代表我反对一切用中文编程的语言。
页:
[1]
Powered by Discuz! Archiver 5.0.0
© 2001-2006 Comsenz Inc.