回 帖 发 新 帖 刷新版面

主题:[转帖]这是我在nrcce上和一些易语言爱好者的讨论:有没有必要在教育界普级易语言?

*楼主*  对易语言的一些感想

刚才看了一下易语言里带的“八皇后”的程序。头大了……
我只看了一下核心算法部分,感觉很失望。原作者用了几十行代码来描述一个很简单的规则,并且用了八个变量。这就遗留下一个问题:如果要解“九皇后”“十皇后”问题,就要修改几乎所有的代码。
而事实是,我曾经用Pascal语言写这部分代码用了八行,用C语言只写了四行。并且能很容易地实现扩展。为什么?因为我用了递归,严格地说,是一个很简单的深度优先搜索。
易语言的方便在于它捆绑了一个庞大的程序库,把很多的操作集成在了一起。我觉得这是一个定时炸弹:一但操作系统的API有变化,就可能对易语言造成很严重的后果。换句话说,易语言很难做到真正的跨平台。
所以我不太赞成在中小学中推广易语言,我感觉它对于学生的逻辑推理能力并不会带来什么提高。中小学没有必要去学一些和实际联系非常紧的技术,很可能十多年后学的这些东西都没有用了。大家可以看看Flash 2.0和Flash 2005的区别有多大。
重要的还是程序的思想。一个优美的思想可以造就一个优美的程序。现在有不少大学生甚至是程序员都写不出优美的程序代码。比如理解不了递归的思想、分治-合并的思想等等。
我想如果从小就注意这些的话,情况就会有很大改观。
刚才看到这个版的一个老师开发了LOGO的中文环境感到很高兴。我觉得一个人接触的第一种程序语言是LOGO的话对他养成好的编程习惯很有好处。只是不知道,您的LOGO可一定是完整的啊,能支持表处理、递归等操作,LOGO可不完全是一个画图的语言。
中学学习Pascal或C/C++的程序设计比较合适,对于学有余力的还可以接触一下其他的范式,比如Scheme、SmallTalk、Prolog,这些是在人工智能里比较前沿的东西。它们各自都有独特的思想。之所以推荐这几种语言,是因为在用这些语言写程序时可以使人更注重程序的逻辑结构,而不必过多地想内部的细节。C++的STL程序库是个宝,里面有很多精彩的数据结构和算法,可以作为很好的教学辅导资源。
当然学什么都要练习。信息学的题目就很好。



2005-10-28 08:45 PM               

edupioneer
新手上路





积分 2
发贴 1
注册 2005-10-27
来自 江苏
状态 离线  第2楼-  学习

很好。



2005-10-28 10:46 PM               

陈均匀
新手上路





积分 18
发贴 7
注册 2005-10-19
来自 湖南
状态 离线  第3楼-  

一楼的看法似乎有点问题,易是基于SDK的,的确!目前的大多数程序都走向.net了,

但我要说明的是:程序库随时可以抛弃!只要你愿意,你甚至可以为易封装开发一套真正跨平台的 GTK都没问题。易的初衷是为了使程序设计尽可能的简单。易的定位决定了它不可能像C那样简单灵活。
一楼您的错误在于,您看到了其他语言的发展,也看到了计算机的发展,但您却没有看到易语言的发展,这说明您对易语言的认识还是不够的。



2005-10-29 08:23 AM               

ggggqqqqihc
新手上路





积分 17
发贴 10
注册 2005-10-28
来自 河北省
状态 在线  第4楼-  

归根到底,其实易语言是很封闭的。
首先,易似乎并没有一个对它本身的严格的定义,也就是一份类似于BNF的描述。这样虽有利于版权的保护,却也限制了它的传播。如果有人很看好易语言,要做一个自己的易语言的编译器, 这几乎是不可能的。所以导致易语言的开发环境只有也只可能有“易语言”这一个。
其次,易语言在设计上确实有一个大胆的创新。给我的感觉就是易在写程序时已经生成了一种很接近可执行程序的格式。所以在编译时才那么快。否则,就是一个收发邮件的程序,在GCC下编译也得一个多小时。也就是说,它充分利用了写代码的时间,让资源利用更有效。但让易开发一个有几十个文件的软件,我想就不那么容易了。VB也是采用类似的设计,这其实已经导致了VB不适合进行大规模程序的开发(当然不是不能,只是不适合)。
所以我觉得,易在以后的发展中应该开放自己的语言规范,定下一个语言的标准。目前易的源程序文件并不是文本格式。但只要这个语言标准一公开,我想必定有人去设计各式各样的易语言的编译器或解释器。伴随着旧机器的不断淘汰,处理器对多字节码的支持我想过不了多久就会很普遍。这是一个时代的机遇。而易语言的创始公司,则可以依靠程序库或强大的IDE工具来盈利。
对于易语言使编程更加简单,我不敢苟同。任何一种语言只要有足够的程序库,都会使编程更加简单。而不在于它用什么语言。有人说别的程序语言都是英语,这就大错特错了。现在没有一种程序语言能直接用英文写的。外国人学编程也要花和我们一样的努力。其实,汉语的多义性也使它不方便编程。类似的我知道的还有俄语、日语。俄语也是字母语言,按理说应该和英语一样方便。但现在还没听说有哪个程序语言用俄语单词写的。
有两句话,大家品味品味:
“昨晚我差点儿掉井里”
“昨晚我差点儿没掉井里”
在汉语里,它们是一个意思。但这在以英语为母语的人看来是难以理解的。
我梦想有一天,我这样写易程序:我在Vim或UltraEdit里用中文写源程序,然后调用el来编译,生成一个可执行的文件……

回复列表 (共5个回复)

沙发

*楼主*  从亲身经历---驳《对易语言的一些感想》贴子作者的一些观点

2年前,我学习了易语言,从一个不知道什么是编程,从来没有接触过编程的小朋友,到学习2天后,回到家,就编写了一个梦寐以求的定时关机程序,学习了1周后,就开始有更好的想法,来写一个mp3的管理程序,到2个星期,可以写像贪吃蛇一样的小程序。。。后来就对编程渐渐的熟悉和感兴趣了。

上边是我最开始的一点小经历。

这里我就要开始说到《对易语言的一些感想》帖子的作者的一些问题。就从八皇后问题说起吧,可能对与《对易语言的一些感想》的作者(以后简称为“作者”)这是一个非常简单的问题,作者看到很多的易代码头大了,好,作者追求代码精简的精神很好,逻辑思维很清晰,很厉害的程序员,那么,我们先把八皇后问题放到一边,我们随便写10行代码,一个是易语言的,另一个是c或其他,放到中小学生的面前,前提是他们都不会编程,看看他们看哪一个头大?当然,答案是肯定的,就是他们看两种代码头都大,但哪个他们更能试着去理解?是一堆不认识的单词和符号;还是自己都能看懂的,用猜都能猜出大概啥意思的代码呢?我问下作者在开始学编程时看一堆英文代码头疼不?再说八皇后问题,一个人一个写法,为什么作者肯定易带的就是一个最精简的代码?作者可以给你的c代码给我,我翻译成易代码不就行了吗?在递归和循环等方面的运行原理上,易语言和c什么的是一样的,c用几个变量我就可以用几个变量,当然易代码是中文的(一个字2字节),有时候看起来好像多,实际上并不多。

本来,我想以一种理智的心态来看作者的文章并反驳他,但是看到很多地方,不免气不打一处来,文中,作者有一句话说的很对“现在有不少大学生甚至是程序员都写不出优美的程序代码” ,这句话我要有所补充,是“现在有不少大学生都写不出代码,没有编程思路!”,都没点编程思路还管啥优美不优美?就好像买不起好衣服你还臭美啥?那这里作者认为是中小学校没学c++等编程语言的缘故,那您认为,中学开c++或其他英文语言就可以了吗?想法未免太天真了吧,那您认为学不了这些语言的原因是什么?我告诉你吧,是语言不过关!英文都学的乱七八糟你让他们学编程,无疑,学上加霜、毫无乐趣,又增加了逃学学生的人数。为什么?因为你丝毫也不能给他们编程乐趣、成就感。

这里我就在拿我自己举个小例子吧,我学易语言有一些时间了,现在在别的地方学习英文编程,和很多大学本科(理科)的学生一起学习,他们都学过c拉什么的编程语言,我英文编程没接触过,那篇文章的作者认为谁会掌握的更快呢?我在学习了1个月后,我就可以轻松的用java写很多程序,大部分同学却仍一头雾水,没有一点编程思路,让我帮助调试程序、介绍编程思路,那作者认为易语言对培养编程思路没有影响?那我告诉你吧,不但有影响,而且影响很大,易语言是把用高级程序语言表现出来的编程的特性中文话,让同学们绕过语言关,而直接到编程的实际概念上来,让很多模糊的概念具体话,让抽象的理解实际发生变化,我亲身经历过的编程思路的转变就是一个例子,易语言所形成的编程思路跟任何语言都不冲突,而且可以培养很好的解决问题和独立思考的能力,当然易语言培养的也大部分是面向过程的思路,但是作者所说的c和Pascal似乎也不是oo的吧?

那既然易对培养编程思路是有好处的,那我们在回到中小学的教育上来,我们就先把那些不实际的c/c++和Pascal放到一边吧,中小学是不会理睬的,如果可以的话,早在10年前就给这些教育就好普及了,为什么没普及,我再说一次,是语言不过关,请《对易语言的一些感想》的作者不要在给中小学生增加精神负担了。那这里就说到易语言好还是logo(中文)好,同样都是中文,我认为logo可能比较适合小一点的,比如小学生,比较适合,因为他很简单,实际上作者说的递归拉(哈哈)什么的,即使学logo也没必要理睬,logo语言用空格来分割的参数和命令,用递归更乱套,小学生头不大?他们还不到使用递归(高级算法?垃圾算法?)的年龄,让他们初识编程是必要的。中学生我认为更适合易语言,因为易语言的格式和其他编程语言最类似,而且很清晰,即使使用递归看这也很清楚和明白,对中学生时代就打好编程基础和培养编程思想是有百利而无一害的。我认为《对易语言的一些感想》的作者可能在学编程的时候走了很多弯路而且至今仍认识不清,而且对自己抄来的一些算法能看懂而深感自豪-_-!悲哀!

这里我要说一句,大家都不要让那个文章的作者给骗了哦,递归算法是很差的算法哦,不论是时间复杂度和空间复杂度上来说,都是很高的,因为递归是使用了栈的操作(详细情况就不介绍了,自己网上差),除了在解决个别问题上不得不用这个算法来简化思维,一般谁用递归算法啊?优美吗?可能很优美,但是我告诉你,运行效率低:)

说到后面不免有写气愤,当然《对易语言的一些感想》的作者有写地方说的我也赞成,就是易语言有些封闭,公司完全可以定制自己的语言标准,让易语言真正的脱离运行环境而成为一门真语言!祝易语言明天会更好,因为它正在改变。

呵呵,我还没注意作者在自己帖中的回贴,我这里也稍微的纠正一些其错误观点,
首先“对于易语言使编程更加简单”----这句作者不同意,我纠正一下,易语言并不单单是程序库啥的让编程简单,而主要是易语言使用中文,所以编程简单,因为使用中文的思维,脑子里可以只想怎么编,而不用想这个关键字怎么拼写,也不用去想这个命令的格式是啥,因为易语言有语法提示,而且提示方式比其他语言的任何开发环境都来的直观,而且是中文。
-------这就好像,其他编程语言的开发环境提示你这个参数是啥,你一看,哎?有个单词不认识,查字典吧,哎?命令解释里有一堆单词不认识,查吧~~~等你搞明白命令咋用的时候,使用易语言程序都写完了,这就是所谓的方便。

还有您说汉语多意性啥的,好像你中文学的很好,我问你,哪个语言没多意?我学日语还一个单词10来个意思,英语就没多意?别逗了行不,哪个单词不有好几种意思,再着说,你说其他国家没有自己母语的编程语言,撤的远点,这些国家你都去过咋地,你认为易语言其他国家有人知道么?再着说,你以为开发一个语言是容易的事情么?谁都能干?你编一个我看看?我这里只能跟你说,你没见过的东西多这呢。

最后,你说:“我梦想有一天..."这种话以后少说点好,英国人和你有相同的梦想,就是有一天,他们能用英文来写”i am soft,compiling”

最后作者说也希望易会更好,这个我还是赞同的,毕竟如果不关心的东西可能连意见都不会提,多提意见是好的,最好是能给别人都说服并且有意义的,至少作者的大部分观点我是不服地。

最后的最后我说下我的梦想吧,我觉得核心部分吴涛经理孤军奋战实在很累,而且后劲应该是不够足,真希望有N个吴涛经理这样的高手,共同将易语言推向高峰。

[ Last edited by 我猜 on 2005-11-1 at 23:52 ]



2005-11-1 10:06 PM               

王军
注册用户





积分 72
发贴 29
注册 2005-10-17
来自 大连
状态 离线  第2楼-  

说得很全面.精品贴.
吴涛不会孤军奋战的.



2005-11-2 10:19 AM                   

ggggqqqqihc
新手上路





积分 17
发贴 10
注册 2005-10-28
来自 河北省
状态 在线  第3楼-  

在打字机刚出现的时候,键盘上的字母是按字母表的顺序排列的,可是由于当时技术的原因,打字机的键盘经不起长时间快速的击打,所以很容易就会坏掉。后来有人根据英文字母的频率设计出一种QWERTY的键盘序列,才比较圆满地解决了这个问题,因为这种键盘布局会使打字员的击键速度放到最慢。
而今天的技术已经能不费劲儿地造出很牢固的键盘,为什么还是采用QWERTY的键盘序列而不是用一种使人打字更快更省力的键盘序列?事实上的确有过,但那种键盘没有市场,因为QWERTY已经深入人心,使人养成了习惯。

不知道大家知道否,在Linux操作系统刚传入中国的时候,有一个叫做“蓝点Linux”的中文发行版,它做到了内核级的汉化,也就是让Linux的核心支持中文,这样就可以使Linux上的所有程序都支持中文,真正是全中文的操作系统,比Windows还要彻底。当时的中国Linux爱好者可都是皆大欢喜呀!不少人还嘲笑zhcon这种外挂式的中文系统,说它占用太多的内存。但为什么现在很难找到“蓝点Linux”而zhcon却顽强地活了下来呢?正是由于蓝点的彻底中文化,使它对来自国外的开源软件不兼容,而这可不是改改代码就能解决的。蓝点Linux无法利用开源社区的东西,只能孤军奋战,最后的消亡也是必然的。

再来说说编程语言。编程语言可以有很多种分类,按运行方式可分为静态语言(C++/C/Pascal/Fortran)和动态语言(Ruby/Pytyon/LISP/LOGO),按哲学思想可分为面向过程(C/Pascal/C++)、面向对象(Java/C++/Smalltalk/Ruby/Python)、面向函数(LISP/ML)、面向逻辑(Prolog);却没有面向英语、面向法语之称,事实上,那是人工智能要研究的问题。而我们这里出了一些“中文编程”,也的确是有中国特色的了。

楼主说开发一门语言很不容易。我不得不对你说:你错了。要是在30年前,你这话一定是正确的。但显然你对设计编程语言和制造编译器这两个概念混淆了。我不得不告诉你,在我的Linux上早已有了flex和yacc这两个程序,我只要把我设计的语言的BNF范式稍加修改,再用这两个程序适当地处理一下,它就会为我生成很准确的C语言代码,把这C语言代码编译后,就是我自己的语言的编译器,我就可以用我的编程语言写我自己的程序。如果GCC支持Unicode(.NET已经支持了),我就可以用中文编写我的程序。
但语言真正的生命力,在于它所体现的哲学。
Pascal体现的是“程序=数据结构+算法”,如果你没有用它编过足够的程序,请不要乱说,至少我用它编过一千多个程序,我觉得还是有发言权的。Scheme或LISP体现的是世界由最简单的少数元素所构成,你如果用过它,就会体会到由非常简单的两种元素——原子和表,能构成非常复杂的程序,而这一过程在你看来又是那么的自然。SmallTalk是纯粹的面向对象的语言,这个我用的不多,也不好说什么。不过它是为孩子们设计的,在国外据说和LOGO的普级程度相当。你说我所说的Pascal不是面向对象,不错,但我反问:我为什么非要推荐面向对象的语言?
您对递归算法的偏见,在我看来同样是好笑的,可以说您就是我所说的一个活生生的例子(对不起,不客气了)。递归是要用到栈,但谁告诉您它的运行效率一定就低?我用递归写快速排序、二分查找,你能说它的效率低?如果那样,你不用递归写个快速排序试试,这会加深您对递归的理解。但我也承认,在有些情况,递归算法确实有些不尽人意。递归算法的复杂度可以是指数级的,可以是对数级的,也可以是线性的。如果您不了解这些,请学习算法复杂度分析。

另外,看您说话的情绪,我想您和我差不多大吧,我现在17岁,咱们交个朋友有无妨(Email:ggggqqqqihc@163.com),这和观点上的不一致是两回事。我在学编程的时候确实走了不少的弯路。我在上小学三年级时得到了个学习机,里面有一个BASIC的语言环境,那个BASIC只能处理整数,而且是行编辑模式,并且还不能存盘(是用那种类似游戏机卡的东西)。四年级时学校开计算机课,我发现DOS里有个QBASIC,而且还不用打行号。也就是从那个时候,我才开始渐渐抛弃了GOTO语句。同时我学习LOGO,学习递归——因为用递归的方法画出的图实在是太漂亮了。可能我现在非常重视的程序的美感就是在那时启蒙的。上高中时我用了两天的时间学会了Pascal,从此我就喜欢上它了,后来接触了Scheme——一个LISP的方言,虽然它和Pascal的风格是天壤之别,但Scheme的思想却使我在写Pascal程序时更加得心应手:找到关键的过程,从大局设计,从小处入手。

其实对于吴涛这个人,我还是很敬仰的,他毕竟坚持不懈地正在实现他的理想,还要顶住来自外界的很多压力(就像我在前面说过的话)。但我也深深地感觉到,他的产品在设计方向存在一些问题。会不会像当年的蓝点Linux一样消失,亦或是如红旗Linux一样发展壮大,这还都是个未知数。但他是一个先驱,不管最终的结果如何,仅凭这一点,他也是个了不起的人,是我的榜样。

最后,祝楼主消消气,平静一些、快乐一些,生气对身体不好。

[ Last edited by ggggqqqqihc on 2005-11-6 at 14:33 ]



2005-11-6 02:11 PM               

ggggqqqqihc
新手上路





积分 17
发贴 10
注册 2005-10-28
来自 河北省
状态 在线  第4楼-  




  Quote:
Originally posted by 我猜 at 2005-11-1 10:06 PM:
因为递归是使用了栈的操作(详细情况就不介绍了,自己网上差),除了在解决个别问题上不得不用这个算法来简化思维,一般谁用递归算法啊?  



如果您有空看看C++或JAVA的程序库源代码,你就知道人们为什么不常用递归了——需要用到的,程序库里已经用了,当然不用其他人再去写了。



2005-11-6 02:41 PM               

ggggqqqqihc
新手上路





积分 17
发贴 10
注册 2005-10-28
来自 河北省
状态 在线  第5楼-  




  Quote:
Originally posted by 我猜 at 2005-11-1 10:06 PM:
如果可以的话,早在10年前就给这些教育就好普及了,为什么没普及,我再说一次,是语言不过关



十年前有多少学校有计算机课?这样推断不太严密吧……



2005-11-6 02:45 PM               

ggggqqqqihc
新手上路





积分 17
发贴 10
注册 2005-10-28
来自 河北省
状态 在线  第6楼-  




  Quote:
Originally posted by 我猜 at 2005-11-1 10:06 PM:
我认为《对易语言的一些感想》的作者可能在学编程的时候走了很多弯路而且至今仍认识不清,而且对自己抄来的一些算法能看懂而深感自豪-_-!悲哀!
……
再着说,你以为开发一个语言是容易的事情么?谁都能干?你编一个我看看?我这里只能跟你说,你没见过的东西多这呢。



只针对观点评论即可,不要不尊重别人。更何况您的说法根本没有事实根据。这不是学术问题,是道德问题。

[ Last edited by ggggqqqqihc on 2005-11-6 at 14:50 ]



2005-11-6 02:49 PM               

ggggqqqqihc
新手上路





积分 17
发贴 10
注册 2005-10-28
来自 河北省
状态 在线  第7楼-  




  Quote:
Originally posted by 我猜 at 2005-11-1 10:06 PM:
我问下作者在开始学编程时看一堆英文代码头疼不?



我上小学三年级时最初接触的是一种BASIC,除了讨厌到处都有的GOTO语句外,其他的代码并不感到头疼。顺便一提,当时我还没学英语,我就把BASIC里的Print理解为“显示”,IF……THEN理解为“如果……那么”,WHILE理解为“当……时”。呵呵,让大家见笑了。

[ Last edited by ggggqqqqihc on 2005-11-6 at 15:04 ]



2005-11-6 03:00 PM               

ggggqqqqihc
新手上路





积分 17
发贴 10
注册 2005-10-28
来自 河北省
状态 在线  第8楼-  

刚才用Google看了一下,发现我前面说的观点不完全对。确实有English Programming Language,不过似乎还没有全部实现。大家可以看看:
<begin source>

First, create a window approximately 75% of the screen size. Then, add two menus to the top, one File and one Help. Under the File menu, add Exit. When a user clicks on Exit, the program should exit. Under the help menu, add a simple About option that describes this program.

Now create two buttons in the main window (the first one). The first button should say "Message", and the second one should say "Exit" (without the quotes). When a user clicks on Message, a message box should pop up saying "Hello, World!". When the user clicks on the Exit button, the program should exit.

<end source>

这就是程序代码,可以看出代码已经很接近自然语言了。把它称之为English Programming Language我想是不为过的。而易语言还仅仅相当于把VB的关键字变成中文就开始到处宣传“中文编程”。http://www.whynot.net/view_idea?id=1441里还有别的东西。然而作者之一还是谨慎地说:The problem with English-like programming languages is that while they're easy to read, they can be hard to write.

这难道就是我们和国外的差距吗?

[ Last edited by ggggqqqqihc on 2005-11-6 at 19:24  

板凳

电脑不是中国人造的,e语言何来前途?
别浪费时间了,e语言只是用来给不会编程的人(或者没准备在这方面有很大发展的人)用的,到最后谁都不会去用e语言写(包括楼上这位同志,你不是也在学英语和java了吗?)

与其用e语言做过渡,还不如直接学有前途的语言,还有楼上说中小学生看着c头大?
我是初中生,我记得第一次看c代码就觉得很有意思,很想知道什么意思,怎么工作的
如果一个人连这点好奇心都没有,还怎么在程序方面发展???

3 楼

<开始来源>

首先,大约产生一扇窗户 75% 的荧屏大小。 然后,把二份菜单加入顶端, 一

文件和帮忙。 在文件菜单之下,出口增加。 当一个使用者在出口上按的时候, 计画应该

出口。 在帮忙菜单之下, 增加一简单的有关描述这个计画的选项事。

现在在主要的窗户中产生二个钮扣。 (第一个) 第一个钮扣应该说 "信息",

而且一个第二的应该说 "出口" 。 (没有引证) 当一个使用者在信息上按的时候, 一

信息盒子应该流行的在叙述 "哈罗 , 世界 !" 上面。 当使用者在出口钮扣上按的时候, 那

计画应该退出。

<结束来源>

4 楼

这就是程序代码,可以看出代码已经很接近自然语言了。把它称之为"中文程序语言"我想是不为过的。而vb还仅仅相当于把易语言的关键字变成英文就开始到处宣传“英文编程”。http://www.whynot.net/view_idea?id=1441里还有别的东西。然而作者之一还是谨慎地说:“那问题像中国人一样的编程语言是当他们是容易读的时候,他们能是难写的。”
这难道就是国外和我们的差距吗?

5 楼

1楼的转贴

他们还不到使用递归(高级算法?垃圾算法?)的年龄

====================================================

仅此一句,就能看出原贴作者对于编程根本是个门外汉。

我来回复

您尚未登录,请登录后再回复。点此登录或注册