Re: [問題] java與C#何者較難?
我兩年前也在finance line待過,好巧不巧也是用C# .Net
做internet banking。
沒錯,銀行是只允許我們帶一張diskette進機房。
不過我們通常的做法是先嘗試在test environment debug,找不到才去機房
靠diskette存transaction/audit log回來trace,
修好了才帶進機房patch耶.
就算是Server掛掉,我們都沒人敢當場改source code。
尤其是business logic或transaction logic,沒test run 過就放進去,
顧客取10萬變成存10萬,到時候誰來負責?
就算是cosmetic change,我們也是在local寫好了才存進diskette的。
所以我還蠻好奇您的主管為何允許您這樣搞的。
還是您本身就是主管,或您的老闆對您充滿120%的信心保證您一定不會出錯?
※ 引述《Contactman.bbs@bbs.badcow.com.tw (上B只為剿小白出氣!)》之銘言:
> 我仍要重申, 你所有的言論都跟語言無關. 接手維護前人遺留的專案, 是所有Programmer的痛.
> 前人文件沒交接好, 是管理上的問題, 你竟然怪罪到JAVA太難!?
> 這好比你這種不入流的程式員賺不到錢, 一輩子窮光蛋, 不反省自己不長進不學好, 怪父母遺產太少?
> 難道用.NET不會遇到前人寫好的Library dll不知如何使用? 難道.NET沒有遇到missing library等問題?
> MS的東西真的有單純到這種地步, 就不會好幾年來陷在Dll hell的泥沼爬不出來.
> 這種管理缺失或是交接不良的問題, 是產業通病, 與語言毫無關聯.
> 再看到你連MONO都提出來了, 可見你連什麼是開發工具, 什麼是Runtime環境都不會區分, 真是令我恥笑.
> Mono跟我用什麼工具開發何干? 而且Mono是Linux上的, 我在Windows平台上做事情, 簡直祖宗八代都不相干,
> 你根本只是隨便把你萎縮的大腦內寥寥幾個聽說過的名詞拿出來招搖一下, 私底下根本什麼是什麼都一點sense.
> 用Notepad或是UltraEdite改C#的程式, 你以為不會遇到嗎? 若你的認知如此, 要不就你根本沒出社會工作,
> 再不就是出社會半年多, 都是在做些鳥不拉雞的小CASE.
> 如果你是去做Banking的案子, 一但已經上線7*24的系統出問題, 機房管制你什麼都不能帶, 只能帶一張他們
> 提供的磁片. 然後Production機器上根本不可能讓你裝任何IDE, 你怎麼Debug? 你怎麼臨時改程式上Patch?
> 管理員不讓你安裝任何軟體, 你能做的就是複製Source Code在那張容量小到不行的磁片中, 純文字檔的Source
> code才被安管允許.
> 這樣的情形下, 靠寫入EventLog內的CodeStack追原因, 用Notepad或UltraEdit(若管理人員有裝的話)臨時修改,
> 反正機器在執行.NET, 裡面多半管理人員會安裝SDK, 然後當場在Command line底下完成Complie並上Patch.
> 你以為走到哪都有IDE可用嗎? 你以為所有開發和除錯都在你的機器上進行嗎?
> 不依靠IDE, 直接用SDK工具和簡易的系統內建文字處理程式, 是所有Advanced Engineer都該具備的技能.
> 不懂還亂放槍, 你還繼續抱著你的IDE碎碎唸JAVA好難, 然後安分當個月入兩萬五的低階程式員.
> -------------------------
> JAVA的困境在於, 當初JAVA剛推出的目標就是一個"簡單易用, 廣泛用於網際網路不同平台的語言"(Easy & simple),
> 和MS推出.NET預設的立場"強而有力"(Powerful)完全是不同的出發點. MS一開始制定.NET一系列的語言, 就不是為了
> 簡易為出發點. 而是為了全功能性(Full functionality). JAVA是紅起來之後, Sun才決定將它運用在
> Enterprise Business上, 因此不對追加新features去強化其語言特性.
> 然而為了過去相容性的考量, 錯誤的根基已經造就, 學JAVA的人就往往很容易寫出效能不佳的程式.
> 但是要用Java來寫一個勘用, 可以做事情的程式, 是比用C#容易的.
> 比如說, C#強迫程式員去釐清static和non-static的method的差異, JAVA就很隨合, 反正亂寫也讓你動.
> 以下的程式碼, JAVA編譯會過, 但是C#編譯會Fail.
> class emptyClass {
> public string getValue(){
> return "";
> }
> public static getStaticValue(){
> return "";
> }
> }
> static void main(string[] args)
> {
> emptyClass o = new emptyClass();
> o.getValue();
> o.getStaticValue();
> }
> Why? 因為C#.NET不允許 instance 呼叫static的method.
> 除了你以外, 全天下的人都知道new 一個instance, 很傷performance. 必須allocate memory, 還讓
> GC的工作負擔加重. 但是這個instance的用途竟然是為了呼叫static的methos, 這就好比脫褲子放屁.
> 但是多少像你一樣的笨蛋會這樣想: 反正只要產生物件, 不管static or non-static我全部都能叫用,
> 何必釐清這麼多? new 就對了!
> Java的程式會又慢又吃記憶體不是沒道理的, 因為養壞太多Programmer. 不信? 讓VM不再支援這種叫
> 用語法, 看是不是八成以上現行的JAVA程式全部都動不了?
> 但C#硬是不讓你犯這種錯(除非是你自己寫的class, 該static宣告的沒宣告).
> 較複雜, 定義較嚴明的語言, 真的是比鬆散易用的語言寫出更佳的程式碼.
> ※ 引述《kithe.bbs@ptt.cc (城市天際線)》之銘言:
> : 天阿...Contactman,你這種人果然人如其名
> : 通常把別人當小白的人,自己就是最大的小白
> : 你用ultraedit練習寫c#2.0的東西?
> : 我想你大概只寫了helloworld吧
> : Mono現在也還沒有辦法支援.Net 2.0的語法
> : 所以我才很好奇你是用啥方法來寫C#的...
> : 沒想到你大言不慚阿...
> : 我有聽說過java的高手寫程式是用vi寫的
> : 原來Contactman也是同等級的角色耶!!真是令我大開眼界
> : Net Framework 2.0 不過22MB,只要安裝一次,大部分的程式就可以開始放心寫了
> : 你用java的話,看你用了那些額外的東西,還有一堆的jar檔要引用吧,
> : 東加西蓋(jar檔的版本不同),就算寫的時候沒問題,deploy的時候也可能出現問題
> : 而且通常每個加進來的jar檔都是可以出一本書來解釋的API
> : 當你接手一個別人寫的Java專案
> : 這個專案引用了一堆framework
> : 沒有文件可以告訴你,這些framework是如何使用的
> : 我想以Contactman的強度,一定是很快樂地把ultraedit打開,開始trace程式
> : 我真是服了你啦
> : 以後我再理你,我就真的是小白!!
--
夫兵者不祥之器物或惡之故有道者不處君子居則貴左用兵則貴右兵者不祥之器非君子
之器不得已而用之恬淡為上勝而不美而美之者是樂殺人夫樂殺人者則不可得志於天下
矣吉事尚左凶事尚右偏將軍居左上將軍居右言以喪禮處之殺人之眾以哀悲泣之戰勝以
喪禮處之道常無名樸雖小天下莫能臣侯王若能守之萬物將自賓天地相合以降甘露民莫
之令而自均始制有名名亦既有夫亦將知止知止可以不殆譬道之在天下202.75.4.140海
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 19 之 21 篇):
java 近期熱門文章
PTT數位生活區 即時熱門文章