看板java
标 题Re: [问题] java与C#何者较难?
发信站不良牛牧场 (Tue May 23 17:53:32 2006)
转信站ptt!ctu-reader!Spring!news.nctu!news.ntu!bbs.ee.ntu!zoonews.ee.ntu!Sim
其实我讲的是Casc by case的状况, 坦白说是有点weird case,
我只是强调并非不可能发生, 所以大部分的Case其实多属於你这种情形.
有几种情况会逼人走上梁山:
1. Unable to reproduce on testing environment.
(又些问题是被量冲出来的, 也就是Production的实际量超出Testing
原本压测的预估量, 这通常是事後发现有些resource的存取没控制好)
2. 事态紧急, 但是紧急变更却必须跑官方申请流程.
银行把机房用层层的防火墙挡住, 就怕两件事, 骇客和病毒. 你直接带Binary的执行档
进去机房, 没有扫毒和经过一些重重检验审核过, 他们大多是不放心让你直接把执行档
放进去.
若不是火烧眉毛, 自然可以奉公守法搞他们的流程, 不过有时候情势所逼...
但是纯文字档就没有病毒这样的顾虑在(除非你的Source Code编译完就是要搞破坏的),
所以可以避开部分流程直接进机房, 因为在申请单上只要填"纯文字档补汇入"就可以
立刻进去. 如果这样可以在时限内过关的话, 事後甚至银行根本不会知道曾经出过BUG,
因为查不到任何变更纪录或申请表, 未经过任何变更程序, 系统就已经稳稳当当的.
当然系统是否牵涉到金流, 也是风险的考量, 这样子干之前我们是有评估的.
不过, 如您所说, 以上行为并不足取, 错误行为示范, 小孩子不要模仿...
※ 引述《[email protected] (飞)》之铭言:
: 我两年前也在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%的信心保证您一定不会出错?
: ※ 引述《[email protected] (上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宣告的没宣告).
: > 较复杂, 定义较严明的语言, 真的是比松散易用的语言写出更佳的程式码.
--
我主修物理
选修计概
副修离散
唉.....三修国文
--
╭──── Origin:
<不良牛牧场> bbs.badcow.com.tw (210.200.247.200)─────╮
│ ↘ Welcome to SimFarm BBS -- From : [61.218.14.146] │
╰◣◣◢ ◢◢《不良牛免费拨接→电话:40586000→帐号:zoo→密码:zoo》 ◣◣◢ ─╯