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燈, 水草

請輸入看板名稱,例如:Tech_Job站內搜尋

TOP