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

Project1

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

[胡扯] 很抱歉 gonglinyuan 君,我要打脸

[复制链接]

Lv3.寻梦者

梦石
0
星屑
4593
在线时间
1205 小时
注册时间
2016-4-7
帖子
982

开拓者

跳转到指定楼层
1
发表于 2016-4-17 04:36:51 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

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

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

x
本帖最后由 shitake 于 2016-4-17 04:36 编辑

@gonglinyuan

嗯,如题。关于阁下在 Ruby有什么简单的地方 一帖中的一些言论,实在是不能苟同。所以这篇帖子就是说说那些有异议的地方。虽然标题有点凶残,不过我大概会很温柔的。

1.关于 IDE 的错误提示的某些言论
阁下认为 IntelliJ Idea 在没 JSDOC的时候错误提醒很废,废到连函数调用时少了括弧都查不出来。原话如下:
我用的是破解版IntelliJ Idea写JS,有JSDOC的时候的确很好用,甚至堪比java的IDE,但是没有JSDOC的时候我调用函数的时候漏了括号都查不出来。


关于此点,能做到这一点的IDE大概现在是不存在的,以后很长时间也不会存在。恕我直言,如果真有一个IDE能完美的找出这类错误,那么那时候应该也不会需要会写出这种错误的程序员了。之所以我这样说,来让我们看看你提道的例子:
比如 var events = map.events(); 被我敲成了 var events = map.events。。


我们要知道,在javascript中,一个 Function 对象,当其后跟括弧时,表示函数调用 ;不跟括弧时,表示函数本身。也就是说  var events = map.events(); 和  var events = map.events 两者在语法层面上都是正确的。而且这种错误别说通过上下文分析,如果程序复杂一点的话,你就算跑一边代码也很难发现。除非时百分百覆盖率的单元测试。(另外,这里也和JSDOC毛关系都没有 就算你全写上jsdoc,还是发现不了)这种错误已经是你自己算法和程序逻辑上的错误了,举个例子来说,这就像你写个if判定,自己脑抽,本来是false写成了true,代码运行出错,却跑来怪IDE连这种“低级错误”都检查不出来。

在我看来,代码的错误,更多的应该是靠程序员自我的克制和细致来避免发生,而不是把什么都扔给IDE。虽然不是非要像 taroxd 触那样纸上手写代码都不出错,但也不应该对IDE依赖成性。

2.关于 Fiber 的言论

首先 Fiber并不是什么ruby里独有的既没有效率又复杂难以理解的东西,而且这和线程更是相近但完全不同的概念(线程在 ruby里对应过来是 Thread)。实际上,大多比较“现代化”的程序语言都会有这一概念的实现(ruby python lua go nodejs )。而实际上, Fiber 就是coroutine(协程) 的一种实现,而且fiber这个名字也是完全来源于windows(关于我indows里的fiber:http://blog.codingnow.com/2005/10/fiber.html)。ruby里的fiber 属于 半协程(Semi-Coroutine)。【所谓半协程,是指在它们对控制权传递的选择上收到限制。不对称协程只能将控制权传递回它们的调用者,而对于协程来说,只要它们有相应的句柄,它们就可以自由地将控制传递给其它的任何一个纤程。-----此句属于复制粘贴】

fiber这种东西,在RM里很大一部分是用来实现并发(注意和并行的区别,协程多为并发 线程多为并行)。而且,这篇文章更是直接指出fiber在游戏开发中可以提供很大的便利。
Fiber除了在實現了Enumerator#nex方法這樣子的機能之外,遊戲編程中在處理各種遊戲角色之類的對象、或者是事件驅動的循環處理等這樣子的編程場合中會非常有用。
  在遊戲編程的場合,遊戲內的各種遊戲角色之類的對象有著各自不同的狀態,隨著遊戲的進行,這些狀態也將會變化。


3. 关于ruby的可读性

我就偷点懒,直接引用晴兰前辈在某篇帖子 里提到的:

最后说说可读性问题啊,
可读性英文不叫readability啊!叫read***lity啊!
打星号是有时候说出来或者听人说出来感觉就像脏话一样啊!
Ruby有Ruby自己的风格啊!
拿其他语言来评判Ruby的写法也不对啊!
千万别觉得写得整齐,写得像你知道的其他语言的风格就完了啊!
有些代码每一行都很清晰,但是组合起来看不懂一样维护成本不低啊!
多学学Ruby的readability啊!
先不说看见别人写得短写得精简写得有元编程的代码就觉得read****lity有问题啊!
也不要自己一想写得短写得精简写得有元编程的代码就觉得是奇思妙想啊!
也不要说人类思维不会这么去啊!
你一个人代表不了人类的思维啊!!
这根本就是设计思路不同而已怎么就非人类啊!!!
好心好意分享代码给你看还弄出人参攻击了啊!!!!
放下那些对Ruby的readabillity的成见吧!!!!!


实际上,写出可读性差的代码的,很大一部分就是这些用着其他语言的思路在ruby里乱写一通,一边抱怨可读性差,一边写着可读性差的代码的人写出来的(实际上翻翻6R的老贴,那些从代码逻辑来看功底应该很足,但写的ruby代码却有着各种问题和许多难看的实现的脚本存在不少。当然写了这些脚本的前辈也不是人人都抱怨ruby的可读性,而且有不少前辈的代码也是刚从其他语言迁移过来时写下的) 。剩下的一大半大多就是学艺不精,各个知识点没弄通,再要不就是那个锤子,到处就当钉子敲的家伙。比如6R上一大堆经常连RGSS和ruby都搞不清的,再要不就是照着F1看几天就认为ruby只有这么点东西了的家伙。

这都叫什么事!处处可见指责ruby可读性差的,然而ruby的社区创造出了不少大型的有意义的工程。看看php的laravel,我能说有不少东西是从ROR sinatra 里来的东西,还有javascript 的mocha commander,这那个不是从ruby里借鉴了同名的工程。



以上,大概就是我要吐槽的了,个人学艺不精,如果文中有啥错误,众大触请随意指出。如果言辞上有那位看官看着不顺眼,还望见谅。我就一小小的野生凭兴趣写代码的渣渣,然后随便罗嗦几句。

最后,我想对 gonglinyuan 君说几句,写程序的不应该对新知识抵触,固步自封。而应更多的去听听不同的声音,博览众书。带着偏见和预设立场去看一件事情,永远也得不到正确的结果。我知道你有参加 ACM 的底子,程序方面的基础应该比我这种只学了一年的人要牢固的多。且不可妄尊自大,反而白白浪费掉这些自己的优势。

以及,我推荐你去看看七周七语言系列,应该会有所帮助。

最后,告诫坛子上的众位,无论是在写脚本的,还是打算学习脚本的,都应该抱着一颗虔诚的心去认真对待此事,仔细审核自己写下的每一行代码。编写程序既不是一件千篇一律的枯燥工作,也不是随心而为的胡乱涂鸦,它是一门属于书写者的艺术,是魔法,是奇迹!

评分

参与人数 3星屑 +120 收起 理由
威风镰鼬 + 30 精品文章
gonglinyuan + 45 精品文章
御曹司 + 45 赞认真的评论

查看全部评分

附庸的附庸不是我的附庸,女儿的女儿还是我的女儿。CK2沉迷ing

Lv2.观梦者

冰の妖精

梦石
0
星屑
264
在线时间
724 小时
注册时间
2013-8-25
帖子
1384
14
发表于 2016-4-17 22:34:19 | 只看该作者
woc拉下来全都看不懂@-@ 亿脸懵逼
点击购买冰冻青蛙

说别人是笨蛋的,自己才是笨蛋,我最强了,最最最强!!
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

13
发表于 2016-4-17 20:15:33 | 只看该作者
shitake 发表于 2016-4-17 20:03
每天听着鸟鸣声入睡简直不要太爽啊囧-------来自某刚起床的渣渣


首先要说很欣慰 gonglinyuan 并没有因 ...

不需要把脚本生成到 scripts.rvdata 里这样的东西,直接把 .rb 文件保存之后打开 Game.exe 就能跑了啊。

另外,函数本来就是可以用 [] 访问的,不用改原型。

点评

函数的确可以用[]访问,但前提是有这个键值啊。。。我传进去一个数字明摆着是会得到undefined嘛。。  发表于 2016-4-17 20:40
话说require的中文路径问题有好的解决方法了么?function那个看他的吐槽我还以为不能呢囧  发表于 2016-4-17 20:20
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
4593
在线时间
1205 小时
注册时间
2016-4-7
帖子
982

开拓者

12
 楼主| 发表于 2016-4-17 20:03:45 | 只看该作者
本帖最后由 shitake 于 2016-4-17 20:22 编辑

每天听着鸟鸣声入睡简直不要太爽啊囧-------来自某刚起床的渣渣


首先要说很欣慰 gonglinyuan 并没有因为我激烈的措词而生气,发展成我所担心的撕逼大战,反而很和气的交流。以及没有被大触们喷。让我先开心一下。

然后很多议点大家都有所讨论,我就不全说了。针对一些持有不同看法的事情说一说。

@gonglinyuan  

1.还是昨天关于IDE错误提示的问题

错误示范,详情看楼下

第一,我要说后边提到的用 [] 访问每报错,我在这边的RubyMine WebStorm 等上面都做了测试,皆会 warning。我觉的应该和软件的版本有很大关系。(我这边的是 Linux 发行版的最新版本)
第二,谁说 javascript 的 function 对象不能用 [] 了呢【手动斜眼
JAVASCRIPT 代码复制
  1. a = function () {};
  2. Function.__proto__ = Array;
  3. a[0]

嗯 array 换成 object 也没问题。

最后,我建议直接上最新版的webstorm写js。激活的话我这里有个服务器地址,可以在线激活。如果你是大学生有edu邮箱的话可以直接去他们家官网申请学生包。

2.不要拿npm和gem比啊混蛋!
你知道npm有多但疼么!!!你知道这玩意出点错有多难排查么,那错误信息有时候跟屎一样!虽然我不是黑,但是js的社区和ruby简直没法比啊啊!
还有 maven 不完全等同于 gem。ruby除了gem还有rake 有 bundler !他们负责了不同方向上的东西(gem和bundle基本在做差不多的事情,有人建议把这两个给合并)。关于ruby包管理的一篇文章

@taroxd

gonglinyuan 大概指的是rake、grunt、gulp这类的自动化构建工具。比如你代码写在src目录下,然后控制台运行 rmva publish ,自动把项目输出到out目录。再加个 -rvdata 参数,直接把脚本生成到scripts.rvdata 里这样的东西。

说起来,taroxd大触给我们造这么一个轮子吧,命令行解析直接上commander什么的。 233~

附庸的附庸不是我的附庸,女儿的女儿还是我的女儿。CK2沉迷ing
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
36347
在线时间
10777 小时
注册时间
2009-3-15
帖子
4813
11
发表于 2016-4-17 17:39:47 | 只看该作者
最初看到标题时..只能看到一部份..我以为是我要打十个
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止访问)

梦石
0
星屑
88
在线时间
631 小时
注册时间
2014-8-4
帖子
3600
10
发表于 2016-4-17 17:13:32 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
60
在线时间
705 小时
注册时间
2007-12-23
帖子
874
9
发表于 2016-4-17 13:29:04 | 只看该作者
浩然-Shuenhoy 发表于 2016-4-17 13:20
竞赛退役党看到这个帖子诈尸一下随便说几句

1.  我觉得原来的RGSS的脚本加载形式那个纯粹是历史遗留问题和 ...

可能是我见识太少了,我最初学习到类似fiber的东西是Java Tutorial的Concurrency这一章,看到那里的时候觉得这是一个很高端的东西,想不到这么多人都觉得fiber是很基本的东西云云;看来我对语言的理解还停留在C语言的层次啊。

静态分析工具毕竟不如IDE里直接用红色波浪线标注起来来得直观。。

gem、npm这种东西和Java庞大的maven比起来真是小巫见大巫了,也许和pip还有的一战。

点评

静态检查工具检查完RMMV自带的所有脚本和我的所有插件都要花两秒多,如果暴力集成恐怕结果就是打一个字卡2秒吧  发表于 2016-4-17 13:56
1. 静态工具可以当插件整合到IDE吧(不确定,没用过) 2. java 生态庞大确实无人可敌  发表于 2016-4-17 13:38
买了正版RMMV的同学进来看一下,谢谢~
https://rpg.blue/thread-393237-1-1.html
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
453
在线时间
343 小时
注册时间
2012-8-9
帖子
118
8
发表于 2016-4-17 13:20:57 | 只看该作者
竞赛退役党看到这个帖子诈尸一下随便说几句

1.  我觉得原来的RGSS的脚本加载形式那个纯粹是历史遗留问题和语言无关
2.  我认为if写在前还是写在后后 用and还是&&并不会造成任何理解上的问题,因为不管哪个是符合语义的吧。。同理问号叹号等号也都是约定俗成的
当然ruby确实是不同人写的区别很大造成一些理解的区别,不过不在这一点上。不过在RGSS里没有什么太莫名其妙的吧。。。
其实最主要的是千万不要自己一个人写各种各样的形式,导致写的时候纠结半天,这个最可怕
3.  fiber或者说coroutine乃至async/await 作为一种易于理解的异步控制方法应该一种趋势吧。。。不知道比回调还有别的什么自然多少。。
4.  我小时候比较喜欢动态类型的比如lua js之类的,现在还是觉得静态类型好
5.  js的语法确实莫名其妙,尤其体现在 `[]+1` `[]*3` 这种东西上,运行时都不报错简直了。不过也不是完全没办法,js也是有一些静态分析的工具,比如flow之类的,当然现在的静态分析也很厉害了,然而我还是不想写js,一定要写的话也会写typescript。
6.  生态这个问题比较玄学我不知道怎么评论,gem npm生态算不算好?
7.  以上仅随便说一下,并没有仔细看上面几位的观点,可能文不对题或者有别的什么问题,继续潜水了
hello, world

有事情邮件联系 shuenhoy#gmail.com(#换成@)
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21589
在线时间
9407 小时
注册时间
2012-6-19
帖子
7117

开拓者短篇九导演组冠军

7
发表于 2016-4-17 12:56:57 | 只看该作者
gonglinyuan 发表于 2016-4-17 10:42
对不起啊,前面因为是点评有200字节限制(还是UTF-8编码的200字节,所以也就六七十个汉字),所以很多事情 ...

我有点不理解论点了

之前的帖子不是都在讨论 Ruby 本身的优点吗,为什么观点被换成 RGSS 了
因为我看到了一段烂代码,所以这个代码本身使用的语言是烂语言这样的逻辑?

Ruby 本身被设计成一门灵活的语言,所以 Ruby 的方言很多,学 C 的写出来的 Ruby 和学 python 的写出来的 Ruby 都是不同的,就连 RGSS3 本身的代码风格和设计哲学都存在细微的差异……

然而,有啥关系?不爽那些代码的话,推翻重写啊,因为 Ruby 很灵活又很多方言,从 C 来的能写出 C 程序员容易理解的 RGSS,从 Java 来的能写出 Java 的 RGSS3 ,为啥要想着看懂别人的代码呢?

点评

LBQ
写代码假如最后止于"能跑"的话是不是太糟糕了,诚然Ruby支持一定其他语言直接代入的自由,但是在此之上也发展了自己的优良特性  发表于 2016-4-18 09:52
但是写的很 C 的 Ruby 能跑,写的很 Java 的 Ruby 也能跑  发表于 2016-4-18 08:36
LBQ
个人感觉 Ruby 虽然方言多,但是还是普遍存在一个“符合 Ruby 哲学的 Ruby 代码”观念的,用 C 哲理写出来的不是好 Ruby,Java 的也不是好 Ruby。  发表于 2016-4-18 08:05
Ruby和RGSS在语法上真的有很大区别吗?其实我也不是很懂啊。之前我说的都是个人写代码的时候的感受,并没有刻意贬低Ruby的意思,望谅解  发表于 2016-4-17 13:31
没写过 RGSS 以外的 Ruby ,那就不要谈 Ruby,另外,很多代码写出来本身就不是为了让你去学习的  发表于 2016-4-17 13:16
回复 支持 反对

使用道具 举报

Lv3.寻梦者

唯一的信徒

梦石
0
星屑
1665
在线时间
1357 小时
注册时间
2013-1-29
帖子
1637
6
发表于 2016-4-17 11:17:54 | 只看该作者
本帖最后由 LBQ 于 2016-4-17 11:21 编辑

自己一写长一点的回帖就容易打自己脸,不过一想练习一下也是好的于是我就顺便说一下我个人的看法好了。

因为感觉自己只对 IDE 这部分有点感觉,所以 Fiber 的就不谈了


以下都是个人的解读,个人浅见难免会出偏差,望各位去读原文之后指出我的错误

gonglinyuan 和 LZ 说的不在一个角度

gonglinyuan 原来结论是:“没有好的 IDE”给 js

例子是:

RUBY 代码复制
  1. var events = map.events;


观点是:

“Js 本身语言导致 IDE 没法达到很高的高度”

推理是:

“Js 语法自由 -> 没有 Js 好的 IDE”

LZ 说的其实是对的, JS IDE 想要做到找到(赋值的)缺失括号的确难,但是这也最后导致了 IDE 整体质量不如 Java 这类静态语言的。

我个人在这里的观点是:Js, Ruby 的 IDE 的确整体在功能强大系数上低于 Java 的 IDE。个人在用 RubyMine, Cursive (Clojure IDE) 这类为具有强大动态拓展性语言开发的 IDE 的时候,普遍发现 IDE 在查错、重构的能力都比较弱。Intellij Idea 的 Java 基本上小型工程(我只玩过小型工程)只要 IDE 不提示有错,编译时就不会有编译错误,运行时很多错误也被提示。而 RubyMine 则很多明显的错误查不到,或者以 warning 的形式展现,但是这些都不是 IDE 本身问题而更多是语言的界限。

觉得 LZ 和 gonglinyuan 其实是有一定误解…… 不是什么大的意见分歧,gonglinyuan (个人感觉)更多的是强调语言导致的生态系统特点(比如说 RGSS 本身大家习惯性的工作环境就是 .rvdata,假如换成 .rb + require 估计很多脚本师和制作者都不会习惯吧)。

点评

LBQ
嗯... 这么一想生态系统和语言的关系的确不是我一直认为的“语言影响生态系统”(感觉这种想法有点不加考证直接想的感觉)。  发表于 2016-4-18 07:58
那些连循环语句都不会写的人都能用易语言写出外挂和木马,说明易语言还是很强大的;而这个强大,体现在生态系统上,而不是语言本身  发表于 2016-4-17 11:40
不过我个人觉得“生态系统”比语言本身更重要,比如易语言这个语言很垃圾,但是易语言的模块唾手可得,动不动就是验证码识别、360免杀这种功能  发表于 2016-4-17 11:39
不过其实我没用过Rubymine,现在想想之前妄加评论可能的确有失偏颇了,赞层主中肯的解释  发表于 2016-4-17 11:29
用过IntelliJ Idea的同学才知道它的强大,没用过的人都不太了解其中的酸爽,包括同学像我传教Idea的时候我也不相信区区一个IDE能有多么厉害  发表于 2016-4-17 11:28

评分

参与人数 2星屑 +325 收起 理由
咕噜 + 280 塞糖
gonglinyuan + 45 精品文章

查看全部评分

『我只是一个正在潜心修炼的渣乐师罢了』
Dear Time\(^o^)/~


假如上面的图片挂了的话麻烦各位去发个帖 @ 一下 orzFly 让他修复 deartime
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-6 08:25

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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