java 板


LINE

※ 引述《PsMonkey (痞子军团团长)》之铭言: : 推 AmosYang:(不过我短时间内不想再写五行以上的 Java 程式了… 09/22 15:43 : → AmosYang: 被VS+C#宠坏後…Eclipse+Java用起来超痛苦… 09/22 15:44 : → AmosYang: 比 SC2 ZvT 还痛苦... XD 09/22 15:45 : → remmurds:VS有强大到这种程度吗= =? 09/22 16:41 : → PsMonkey:这一切只是因为我不会用任何 profiler or debugger 工具 09/22 21:53 : → AmosYang:风向好像不太对… orz 晚一点(约12hr後)来发篇比较详尽的 09/22 22:10 : → tkcn: 悔过书 09/22 22:19 : → PsMonkey:楼上很有梗啊... gj 09/22 23:16 : 推 AmosYang:楼上很有梗啊... gj 09/23 14:30 首先,要打 VisualStudio vs. Eclipse 或 C# vs. Java 战场的话, 我们得先排队,前面 Emacs vs. vi(m) 跟 C vs. C++ 还没打完呢 XD 这篇文章想讲的「四年内没写超过五行的Java程式的人在 8 小时内完成 LolAI」的心得 这目的不是去捧或贬任何一边,因为那没什麽建设性 去 google "C# vs. Java" 或 "VS vs. Eclipse" 大概都有人已经谈过这类题目了 在弄 LolAI 的这 8 小时里,我的感觉就是像 WALL-E 里的半残人类一样, 在一个半陌生的环境里,失去了熟悉的工具,试着在有限的时间内完成一个小型的作品 我在 2001~2006 时主要用 Eclipse+Java, 2007~今日 转 VisualStudio+C# 以下提到的都是 out-of-box 的 VS/Eclipse 预设设定 我并没有花时间去研究 Eclipse 的设定 * Eclipse+Java 在安装上是大胜,抓两个档解开/安装就可以开工 VS 要装要等一段时间,还得要 reboot... * Eclipse 装 GWT 也是很简单, google 一下 3分钟就完成 在 VS 要装 extension... hahaha... haha... ha... wuwuwuwu... XD 这点在 VS10 有改善许多 * VS10 的 IntelliSense 比 Eclipse 的 auto complete 强大许多 输入 class member 名称的任何部分都可以,而 Eclipse 这边一定要从头打起 * VS10 的 debugger 预设很方便,输出的 data value 很好懂 通常只需要手放在 F10, F11 上去控制 Step in, Step over, Step skip 就可以 debug Eclipse 这边…要手动去点开每个 object, 且输出的资料包含了 private members, 实在很难看懂 VS debugger 的强处就是跟 C# 的整合 在 C# code 里你可以给予 debugger 指示, 让 debugger 知道「你的程式在 debug view 下要如何表示」 例如,当我在 VS 里看一个 C# collection 时,他可以直接告诉我 "Size" 这个 property 的值; 因为这个 collection class 的设计者有把 Size 这个 property 标示 (attribute) 好 所以 debugger 知道它应该要秀出这个 property 的值 对 debug 的人来说很方便 在 Ecplise 下我的感觉是我必须的了解这 class 里的哪一个 private varialbe 代表的是这个 collection 的 size... 看得很头痛 VS debugger 的另一个强项就是 interactive debugging 可以在 debug session 中动态地执行任何 code 例如,可以 break 进这个 method void X() { obj.DoSomething(100); } 然後在同样的 context 底下,看看执行 obj.DoSomething(777); 会发生什麽事,而不需要重新启动程式 (易言之,可以保有程式现在的状态) 还可以直接改 code, 直接在 debug session 里 compile, 然後 patch 在记忆体中的程式码, 再继续执行 (一切全自动,使用者只需要改程式码,save 就可以 不过这只适用於 32-bit 的程式,在 64-bit 上不能用) 甚至在 IntelliTrace 的加持下,可以「倒车」 可以回到程式更之前的状态去 Eclipse 的 debugger 似乎办不到… (I will be more than happy to be proven wrong here.) * VS10 直接内建 test project template, Eclipse 这边我想装了 junit 後也是可以直接写 unit test, 不过没心力再去研究 * C# 有 property 这东西,跟 Java 的 getter/setter method 是一样的东西 但我觉得能少打 get/set 与 () 比较顺手,也比较好读 且之前提到的 Eclipse auto complete 的限制…写起程式就是不顺手…就心烦意乱 XD * C# 4.0 的 generic 有支援 covariance 及 contra-variance 这两个东西不好以三言两语解释,有兴趣可以自行 google Java 没有…为了这个有些地方得重写 * C# 3.5 开始有 LINQ, 这东西在 perf 上有潜在的危险 (不过也没那麽严重) 不过其语法比用一票 for loop 乾净许多; Java 也没有这玩意 例,假设你想从一个 collection 取出所有 score >= 5 的物件 在 Java 得要先开个装结果的 collection, 再写 foreach-loop 再写 score >= 5 的判断式,最後再把结果存起来 在 C#, 只需要 var results = dataCollection.Select(obj => obj.score >= 5); 就可以收工了 * 其他还有对 Eclilpse 的快速键不熟悉所带来的挫折感 不过这不能算是 Eclipse 的缺点, 如果今天是从 Eclipse 换到 VS,也会有一样的感觉 ====================================================================== 因为接触的程式的不同,对 debugger / profiler 的需求也不同 在 debug 小型的程式时,可以改改程式码,加几个 print statement, compile, 再看结果,从 log 来疹断问题 但在其他的情形下,例如,无法重新 compile / deploy 或在不能 shutdown 该 process 的情形下,就得要用 debugger 了 当然,再强的工具也治不了脑残, LolAI 之前的 OOM bug 就是脑残在某一行少了一个 ! 用 log 的方式很难找这问题,有如大海捞针 但 psmonkey 释出 aiarena 後,问题就很简单 1. 用 debug mode 执行 aiarena 2. 从 CPU & memory usage 看出程式目前进入了 OOM 的前期 3. break (在 Eclipse 里叫 suspend) , 看程式码正执行到哪里 这很有效地把问题的搜寻范围缩小到只有几行的程式, 那个 missing "!" 很快就可以找出来 且在 VS 的 interactive debugging 的加持下,写 C# 可以像写 lpC / Python / Lisp 一样现写现看到结果 失去了这利器,我就变成 WALL-E 里的半残人了 XD -- "Mr. Data, can you show me how to parse this XML?" "Certainly, sir. Let me google that for you." -- StarTrek, the Next Gen. 《Back to 2009》 (误) --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 65.87.177.87
1F:→ AmosYang:是故,被VS+C#宠坏後…Eclipse+Java用起来超痛苦… XD 09/23 15:47
编辑: 原文:「四年内没写超过五行的程式的人在 8 小时内完成 LolAI」 修正:「四年内没写超过五行的Java程式的人在 8 小时内完成 LolAI」 少了 Java 一字,整句意思差很多 XD ※ 编辑: AmosYang 来自: 65.87.177.87 (09/23 15:52)
2F:推 PsMonkey:这篇岔题岔很大... 不过还是推一下(虽然看不懂 XD) 09/23 16:26
3F:→ james732:VS+C#真的是挺可怕的组合...XDD 09/23 16:29
4F:→ brianhsu:话说我用了 Scala 之後也觉得 Java 是残废。XDDD 09/23 16:40
5F:→ AmosYang:岔题 imba; 要被 nerf 了 XD 09/23 16:51
6F:推 nvidia:微软:把你绑死在上面阿 不好吗 09/23 16:52
7F:推 nvidia:LINQ也是可怕的东西 听说F#更可怕 09/23 16:54
8F:→ james732:对了,J#是不是已经被彻底放弃了? 09/23 16:57
9F:推 nvidia:不过.NET 3.5 Framework才支援 LINQ 不能拿来工作用 QQ 09/23 17:00
10F:→ remmurds:VS安装有要reboot? 应该是安装framework时才需要吧 09/23 18:22
11F:→ remmurds:LinQ真的是好物啊 希望Java能加油 09/23 18:24
12F:推 nvidia:可用SCALA阿XD 09/23 19:49
13F:→ ogamenewbie:VS多少钱啊? Express版有即时debugger嘛? 09/23 22:51
不知 不知 XD 你可以装来试试看 我用的是不知人间痴苦的 VS2010Ultimate+MSDN 一年的 license 要镁11899 ... 还好不用我出钱 XD 注: 虽然 MSDN 要每年更新 license 以享有持续的服务, 但就算 license 过期 你已经下载的程式仍然算是你买断的 所以这一年要镁11899,如果你有那个硬碟跟网路频宽, 你可以把 M$ 所有的产品通通下载下来 (但只能用在软体开发、测试的用途上)
14F:→ ogamenewbie:LINQ确实是优势,但是碰过一次以後我宁可回去用for 09/23 22:52
LINQ 或任何语法都可以写得很恶心;适时适当适量,并没有一个很明确的界线
15F:→ brianhsu:比起 LINQ,我还是觉得 Scala 的 High order function 09/23 22:57
16F:→ brianhsu:和 for comprehension 实用多了,任何地方都可以用。 09/23 22:58
我并不熟悉 Scala, 但的确 C# 的 LINQ 还是有不足的地方 :|
17F:→ chrisQQ:推 VS + C# 的组合~ 非~~~常强大 09/24 01:30
※ 编辑: AmosYang 来自: 65.87.177.87 (09/24 09:31)
18F:推 nvidia:11899............................... 09/24 09:54
19F:推 summery0212:XD 09/24 16:39
20F:→ AmosYang:PRO+MSDN 是 US$1199/year ,但我没有去比较过功能差多少 09/24 17:00







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Boy-Girl站内搜寻

TOP