主题:【原创】也来说说Linux和Windows下的开发感受 -- 昔杨今雨
你这说的都是TCP以下的勾当,华为中兴每天写的程序不都干的这些东西,比如交换机的话务量处理能力都是有要求的。
华为最成功的不就是软交换吗?
真服了您了, 我从framework developer角度写的东西, 您居然从一个framework user的角度来批评, 还批评得那么自信.
美国银行咱没见过, 您牛, 您是见过美国银行的人. 原来您评价一个技术"能不能快速有效可靠地解决实际问题"的依据是美国银行有没有用来做自己的业务系统, 那可供您评价的选择也不多啊. 而且我严重怀疑您现在用着的framworks(想了半天还是加上个s吧)美国银行有没有用来做自己的业务系统.
您要是为了打工混口饭吃, 确实没必要自己写一个. 费那劲干什么? 运行速度慢? 加内存呗! 效率低? 硬件升级呗! 4万行程序, 那是多大的一个天文数字, 远远超过您从开始工作到现在为止写过的有效代码行数的总和. 唉, 还是别去碰了, 照葫芦画瓢吧.
别怪我口气冲, 我就烦你这样的, 上来先下个断言, "你对Java Framework的理解不对", 中间一堆初学者感言, 最后装个B, 说句半哲不哲的废话: "没有必要为了变化而变化". SUN!
好吧,我试试回答你的问题:
现在我就在充当一个java项目组的技术管理者, 除了不直接写代码之外, 其它的事情也都管. (说这些是表明咱不是个java盲)
-- 我能说啥?
没有觉得java资源比C/C++多啊, 从人气上讲, java的几个framework显然热闹一点, 可是其中的原因我想也和java下面高质量的framework本来就少也有一点关系吧. 看看sourceforge, 从数量上和覆盖的范围上讲, C/C++的资源更多吧.
-- 好嘛,原来是Java/.Net互殴,现在加上C++了。C++这里也就是一些hedge fund, bloomberg之类在做,主要是实时应用,抢个毫秒级的时间做trading。C++做企业级应用?你举个例子吧?
再看看PHP, 各类framework满天飞, 要说单独哪个的人气, 恐怕都不如java下的, 但是好在从低到高, 从简单到复杂全有, 而且很容易裁剪.
-- PHP我不太熟悉,是scripting的吧?没听说后台用PHP做业务逻辑的。LAMP也就是做一些比较简单的网站。
java下编程动辄要使用framework, 这些framework一个比一个庞大, 一个比一个难以裁剪. 由于使用java变成使用framework, 因此学习java也变成学习framework了, (前一阵我面试java程序员, 直接问你们熟悉哪些framework). 想想真没啥意思.
-- 看来你不懂这些框架,所有的Java framework都一个样, 前端都是基于Servlet 2.5标准。(Servlet 2.5 标准懂吗?就是公布出来的200多页的那个东西,十几年了)。Spring的后端是完全基于J2SE的。所以你在下面感叹JDK1.0.2就比较的funny。你知道JDK1.0.2和JDK6差了多少功能吗?JDK1.0.2哪里有什么活力,就是简陋而已。没有JDK1.3,哪里来的Spring AOP(什么意思,你的明白?)。Hibernate基于CGLib,CGLib没有变化,Hibernate变化什么?
-- 另外这个Spring 很难剪裁是什么意思,没看明白。Spring源程序70多M,你可以把你不需要的东西拿掉再编译打包,很容易,这也是Spring设计的目的之一。你剪裁不了,啥意思?做架构决定采用那个框架,要清楚这个框架的源程序API。Spring 源程序并不难看懂,核心程序就是那几个,用多了应该很熟悉各种版本之间的变化,怎么会有out of control的无力感?
-- 另外选择版本也很重要,对自己要用到的功能,最好选择高版本(别人帮你debug过),熟悉源程序。
java现在越来越像.NET, framework背后都是企业而且是大企业在支持, 新的来自草根的framework如何出头?出头的难度太大, 于是很多情况下就直接放弃, 回到亦步亦趋地跟随那寥寥几个framework的道路上去. 我现在越来越不看好java了, 10年前我的毕业设计是用JDK1.0.2完成的, 那时候的java真是充满了活力.
-- 现在你要写一个基于Servlet2.5的框架并不难,无非就是加上啥reflection之类。你觉得困难的话,我可以教你写。你只知道开源的主流框架,估计是因为你们公司自己没有框架。美国这边有不少公司有自己的框架,构思精巧,只不过不开源,公司靠他挣钱而已。再说一句,以后千万不要再说JDK1.0.2充满活力了。JDK1.0.2太差了。
-- 另外对于银行项目应用的问题我也一并回答了吧。道理很简单,银行应用是企业级应用的一个典型,要求高可靠性,灵活性(业务逻辑复杂),有时候还要求实时性。我觉得这是检验一个框架的可靠的标准。
2000年那会儿,在北京写JAVA的程序员,谁要不自己写个ORM的库,好意思说自己是大牛吗?手下的程序员能拢得住吗?
在某个库被大众接受之前,肯定是牛就要写一个自己的framework的。因为不写framework,手下程序员就会四处乱跑,追都追不上
而且,写个framework也没你说这样难,象Hibernate、Struts核心就几百行、上千行代码吧,稍微有点儿理想的程序员就能搞定。即使是EJB容器,用动态代理的话,几百行代码也能搞定核心功能
BCEL是2001年10月才加到Apache,难道真的有大牛已经在2000年做AOP了?
当时,大家已经认识到在Servlet里真接写JDBC是不好的,中间应该有个ORM层。
但当时并没有公认的解决方案,Hibernate还没影呢。我记得较早的一个是Turbine里的Torque。
这时候,一个团队里的大牛,如果不挺身而出写个ORM库的话,程序员是不会乖乖地把JDBC封装在Servlet之外的。而且这种团队内用的、简单的ORM并不需要很多代码,更多时更象一种Helper类。
而且,我即使现在还在用这样的薄薄的ORM层。可控、灵活,出现异常、或性能不足的话,直接查JDBC多简单、时尚啊:)
再加一点:我会把这个ORM层的写法教给程序员,新来的会很爱学,并有成就感。团队里,这非常重要!
恭喜:你意外获得【通宝】一枚
鲜花已经成功送出。
此次送花为【有效送花赞扬,涨乐善、声望】
也引发了重量级的讨论,很受教益。
最同意的一点就是Linux/Unix下的团队开发相当容易,比Windows要强不少。CVS还是open source的,真好。
Haskell,以及 .Net 平台上的 F#(Ocaml的表亲)
这一类的FP类语言
几个问题
1. oracle rac在百万记录达到几百tps小case,
我自己在非RAC的x86上测试,单节点都轻易达到800tps(每个transaction4个sql,3个查询一个更新)。对于rac的极限,不知道你有什么进一步的资料。
2. 我感觉创新并不一定需要坚实的技术基础,这种限制可能对于大部分天赋比较弱的程序员来说有用,需要靠积累来完成量变到质变的过程。但是并不意味着所有人都是这样的。
举个例子,最近我们一个菜鸟程序员,程序都写不利落的人,提出一个问题解决思路,虽然有很多缺陷,但是和我曾经仔细考虑过的一种解决方案的一部分一致。而大部分有经验的程序员,虽然有比较扎实的基础但是至少从未想到过这样去解决问题。
还发现一个有趣的问题,项目里面最有想法的人,往往都是技术最差的那几个,因为对技术一知半解,不受任何约束,反而有不少有创意的点子出来。
另外我感觉,其实技术往往是由创意去驱动的。腾讯的程序员也不比其他程序员强多少,只是因为由了这样的需要,才push他们去解决问题,逐步提高了自己。
facebook一个星期写出来第一版,有鬼的技术含量,看facebook的架构变迁就知道了。google也没那么神奇,最近看一本八卦,google刚刚上线的时候,佩奇因为系统瘫痪居然躲到桌子下面去了,还是一个外援出手才搞定了廉价pc集群。
3. 顾教授不是程序员出身的,所以他看待问题,更多是以一种学院派的角度去考虑问题。理论上的东西多,实践的少。 前后和不少老外共事过,也在国外工作过一段时间,我感觉国内软件业和老外的差距,其实核心还是基础产业的差距,因为软件毕竟是服务性产业,必须有所依托。 比如facebook,如果脱离国外的商业社会长期养成的信任文明,一无是处。
项目里不弄个啥cmp,你都不好意思跟别人说你是搞java,这破风气好像一直到2005年,某个号称中国java第一人的家伙还无耻的说,不玩ejb的项目就不是真正j2ee项目。
不过也就是那个前后确实有不少人搞一些简单的orm工具,我自己也写过一个。另外还有so搞笑的,某人号称精通此道,资本就是也写过一个orm工具,问题是丫到现在连数据库外键会影响性能不止,如何写转职sql不知,总之一堆数据库的基本概念不清楚。所以么。。 会写orm,听听就好了
sun推ejb的目的是为了硬件销售,你仔细想想当时哪几个厂商对这事最积极?
RJ也没做什么革命性的工作,只是丫会写书,把概念系统化了,另外rj的商业意识非常强, 做ioc的,他不是第一个,但是他能把spring做的很胶水,吸引了主流的开发人员支持,然后借着名气把概念产业化。
说点不谦虚的,spring出来之前,我自己做的东西就是类似的,那年头,琢磨着简化j2ee开发的不是一个两个。
我现在都挺反感spring的fans,会用spring做东西不算本事,你也不用spring也能把东西做好,这才算本事。
EJB养活了不少软件厂商,比如做Application Server的BEA和IBM之类,还有JBoss。
Rod Johnson的生意头脑我没有看出来,Spring2002年就出来了,他和Jurgen Hoeller两个也就靠写书卖了点钱。SpringSource也是最近几年才有的东西。Java和Servlet的这点东西,挑明了也没啥。Spring本身并没有技术上的突破,他的AOP一开始还做错了(考考你,知道错在哪里吗?)大家最欣赏Spring的有两点1. 真正地简化了开发,2.干倒了无聊透顶的EJB2,因此 3.拯救了JavaEE。
至于Spring为什么受到追捧而你做出来的东西没有人看,想过差距在哪里吗?把你的源代码贴出来大家观摩一下吧?要知道天外有天人外有人,有人1998年还是99年就做出了Hibernate之类的ORM(在北京,就在这个帖子里好像),只是不像Rod Johnson那样能言善辩会吹嘘而已。
iBatis一类的简单ADO+SQL Mapping之类。不是说approach不对,但是这个和Hibernate之类的纯OO方法,难度不一样吧?
嘿嘿,那可是卡马克的得意之作之一。