设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 3222|回复: 8
打印 上一主题 下一主题

[胡扯] 诸位关于脚本教程的意见以及想要看到的内容

[复制链接]

Lv3.寻梦者

梦石
0
星屑
1050
在线时间
1564 小时
注册时间
2008-7-30
帖子
4418

贵宾

跳转到指定楼层
1
发表于 2013-4-20 09:14:03 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 DeathKing 于 2013-4-26 13:18 编辑
酱油一下,急寻 @「旅」 君一枚,听说ta今年高考,先预祝顺利,然后还望知情者告知ta或我一声。

因为最近在准备某个神秘的东西,所以经常回6R查一些资料,然后就翻到了各种教程,深入的看了其中的很多,有很多想法,我想利用这个帖子扯淡一下。

优点
  • 语言诙谐。虽然有时也有插科打诨之嫌。
  • 角度合理。大多数情况下就是教程作者的学习心路历程。

缺点
  • 偏离本意。教程讲的大多数是Ruby,而非RGSS。
  • 死磕细节。Ruby本来提供了足够高的抽象层了,建立好了完美的抽象屏障,我们反而逆其导而行之。
  • 误人子弟。这个是个别现象,最初的教程谬误一代人,然后恶性循环。
  • 不切实际。对于教程面向的受众来说,有些功能用不到。
  • 没有基础。有些知识需要先做好铺垫。

关于死磕细节。很明显,有的东西对写RGSS根本影响不大,譬如p和print的区别。这个通常都是用于调试,调试谁还在乎这些无所谓的格式呢?区别Fixnum、Bignum、Float有什么好处呢?我认为:只要讲明数在运算时的精度保留问题就行了。Ruby已经给你封装好了数,告诉你:不用担心数的大小、内部存储了,我(Ruby)已经帮你弄好了,我们又何必自讨苦吃呢?

就拿each来说,通常是用[1, 2, 3, 4, 5].each {|e| puts e}这种Block——块的形式,但是你要讲,你需要讲一些什么呢?

  • 信息隐藏。你看不到这个数组的内部结构,整个迭代是each进行实现的(迭代器);
  • 匿名函数。这个概念最早来自于Lisp(lambda-演算),把函数当作一个参数传递。这里,是把我们的匿名函数引用于迭代器传递过来的参数e。(有兴趣的同学可以读读《松本行弘的程序世界》)

这两大类容就涉及到了CS的一个核心内容——抽象。而信息隐藏在OOP中尤为重要,匿名函数则在FP中被强调。这几个都要求有很一定的科班积累。就从这一点来说,把这些东西6R也鲜有人能讲细了。况且就6R来说,目前看脚本教程的受众都是小学生、初中生,缺少一些前置知识以及抽象思考的能力,学起来相当费劲(少数高智商少年除外)!

我的想法

  • 完全分离。分离Ruby和RGSS的教程,这样,一份Ruby教程完全可以适应RGSS1、2、3的所有教程!
  • 最小化。只讲授能操作RGSS的最小化Ruby教程,一些语言特性或者和RGSS无关的东西就毋须给读者加重负担了。
  • 图表图示。大量使用图表图示给读者直观的感受。
  • 深入浅出。例如我上面提到的信息隐藏和匿名函数,写教程的人应该能抽取出之中最本质的东西,深入浅出的讲授给读者。
  • 扎实基础。强调Ruby程序设计中的基础概念与思想(譬如OOP),否则读者在读RGSS教程时,就会因为Ruby基础功太差而感到吃力。

欢迎大家谈谈自己的想法。

这里再酱油一下,对计算机抽象思维有兴趣的同学可以看看这个视频:http://v.youku.com/v_show/id_XNTEzMDAyMTU2.html






See FScript Here:https://github.com/DeathKing/fscript
潜心编写URG3中。
所有对URG3的疑问和勘误或者建议,请移步至发布页面。
欢迎萌妹纸催更

Lv3.寻梦者

梦石
0
星屑
1050
在线时间
1564 小时
注册时间
2008-7-30
帖子
4418

贵宾

2
 楼主| 发表于 2013-4-20 10:51:13 | 显示全部楼层
LBQ 发表于 2013-4-20 10:26
匿名函数感觉死活也讲不好=-=。。。

简言之: class_eval从“类”的层次操纵对象,而非“对象/实例”的层次。理解这句话,首先要知道这点:

Ruby中的类也是一个对象。是Class类的一个实例。特别的,Class类是Class类的一个实例。


A.instance_eval ==> 强调A是一个实例,而不是从类的层面上考量
A.class_eval  ==> 强调A是一个类

导致的结果就是
RUBY 代码复制
  1. A.instance_eval {
  2.   def a
  3.     puts "1"
  4.   end
  5. }
  6. # ==>
  7. def A.a
  8.   puts "1"
  9. end
  10.  
  11. A.class_eval {
  12.   def b
  13.     puts "2"
  14.   end
  15. }
  16. # ==>
  17. class A
  18.   def b
  19.     puts "2"
  20.   end
  21. end


另外,以前翻译过Ruby元编程系列教程:http://deathking.is-programmer.com/posts/29100.html

分清楚集合和元素之间的关系是很重要的,不然就会出现类似于罗素悖论这种逻辑上的错误。

点评

备注 当作用于类时,class_eval将会定义实例方法,而instance_eval定义类方法。  发表于 2013-4-20 10:55

See FScript Here:https://github.com/DeathKing/fscript
潜心编写URG3中。
所有对URG3的疑问和勘误或者建议,请移步至发布页面。
欢迎萌妹纸催更
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1050
在线时间
1564 小时
注册时间
2008-7-30
帖子
4418

贵宾

3
 楼主| 发表于 2013-4-25 21:34:34 | 显示全部楼层
额,现在就没人关注这些了?

See FScript Here:https://github.com/DeathKing/fscript
潜心编写URG3中。
所有对URG3的疑问和勘误或者建议,请移步至发布页面。
欢迎萌妹纸催更
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-5-7 07:13

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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