×

Loading...
Ad by
  • 推荐 OXIO 加拿大高速网络,最低月费仅$40. 使用推荐码 RCR37MB 可获得一个月的免费服务
Ad by
  • 推荐 OXIO 加拿大高速网络,最低月费仅$40. 使用推荐码 RCR37MB 可获得一个月的免费服务

@

刚刚翻旧贴,才发现原来C++和JAVA的FANS吵得很凶。我刚来这个坛子,不了解情况,难怪被人砸。

本文发表在 rolia.net 枫下论坛人的命运是很奇怪的。十年前我刚到加拿大,找不到工作,和一个一起来的朋友一起去学J2EE。朋友从JAVA班开始学,我很穷,上不起两个班,从J2EE开始学。感觉还可以,虽然没有念过JAVA,可是在班上也属于比较好的学生。可是后来找工作,我朋友找了AS400,那是他的本行。我找了C++,命运就是这么作弄人,明明在朝JAVA走,机会来的时候就变了。

不是有那么一句话么?男怕投错行,女怕嫁错郎。当然,男的如果投错行,女的基本上也就嫁错郎了。所以压力很大啊。其实做C++没什么不好,关键是多伦多太小。我做的几个公司,一旦被裁员,整个多伦多找不到第二家。C++的问题就在这里。应用极广,行业太分散。相反JAVA就好很多。业务内容差不多的公司在多伦多扎堆。东跳跳,西跳跳,逍遥自在。

现在去找工作,人家见面,第一句话,你有某某某工作经验吗?FAINT,没有。这是实情。这就是很让人郁闷的地方。

C#,JAVA,用起来当然很爽。我自己也喜欢用。不是说我们会了C++的,就不肯用JAVA了。哪里有那种事情?能用高级语言的,都是尽量用的。写程序多舒服啊。XXXX.XXX.XXX一路地点下去,脑子都不用动。很多时候,我都不用学什么语言,一点,菜单里面一找,OK。用上。

用C多恐怖啊,用VI写,GDB调试。不管是谁,我只要看看你用VI的程度,就知道你混了几年C了。不过话说回来,C++其实还好啦。最恐怖的是MFC,那么多的调用函数,那么多的宏定义。做什么用的?UI,杯具啊。点一个按钮,需要那么高的速度吗?完全可以用C#写。要写特殊点的东西,只要找一个HWND出来,就可以用上C++了。

重新拾回对C++的信心,是回归到UNIX世界以后。原来C++可以很美的。一样有简洁的风格。比如MOTIF,比如TK,一样写UI,人家多简单明了?当然,这两样和C#还是不能比。毕竟是历史产物。C#集中了历史以来的经验,写的当然好。极其简单优美。可是毕竟C++可以做很多特殊的事情,所以还是放不下C++。

有机会的话,我也可以转JAVA,这不还没有机会嘛?慢慢来吧。当然,学C++以后带来的一个工作习惯是喜欢抠底层。比如我写过的那个十万行记录中找重复频率最高的10条的例子。你用XXX.XXX.XXX写当然爽啦,可是你这个东西送到数据库那里是什么你知道吗?不清楚了。数据库是需要编译和执行SQL的。如果你XXX.XXX地一路下去,毫无疑问,即使你的查询是非常优化了的,数据库还是要对其进行编译。像这种大剂量的查询,使用预编译stored procedure应该是比较好的选择。如果我今天在一家大型公司做的话,我可能不会采用XXX.XXX的写法,我会考虑到数据量的现实,综合考虑采用哪一种方式。

我相信,JAVA和C#也是一个广袤的世界,也同样是值得深入研究的。既然做了技术这一样,就应该钻一点,不能浮在表面看问题。对自己使用的每一件工具,优缺点都要有所了解,这样才能写出真正的好东西。

“只有偏执狂才能生存”,我是这么信仰的。我也很希望在这里能看到大量的JAVA的内容。同样,对我们是一个提高。更多精彩文章及讨论,请光临枫下论坛 rolia.net
Report

Replies, comments and Discussions:

  • 工作学习 / 科技领域杂谈 / 刚刚翻旧贴,才发现原来C++和JAVA的FANS吵得很凶。我刚来这个坛子,不了解情况,难怪被人砸。
    本文发表在 rolia.net 枫下论坛人的命运是很奇怪的。十年前我刚到加拿大,找不到工作,和一个一起来的朋友一起去学J2EE。朋友从JAVA班开始学,我很穷,上不起两个班,从J2EE开始学。感觉还可以,虽然没有念过JAVA,可是在班上也属于比较好的学生。可是后来找工作,我朋友找了AS400,那是他的本行。我找了C++,命运就是这么作弄人,明明在朝JAVA走,机会来的时候就变了。

    不是有那么一句话么?男怕投错行,女怕嫁错郎。当然,男的如果投错行,女的基本上也就嫁错郎了。所以压力很大啊。其实做C++没什么不好,关键是多伦多太小。我做的几个公司,一旦被裁员,整个多伦多找不到第二家。C++的问题就在这里。应用极广,行业太分散。相反JAVA就好很多。业务内容差不多的公司在多伦多扎堆。东跳跳,西跳跳,逍遥自在。

    现在去找工作,人家见面,第一句话,你有某某某工作经验吗?FAINT,没有。这是实情。这就是很让人郁闷的地方。

    C#,JAVA,用起来当然很爽。我自己也喜欢用。不是说我们会了C++的,就不肯用JAVA了。哪里有那种事情?能用高级语言的,都是尽量用的。写程序多舒服啊。XXXX.XXX.XXX一路地点下去,脑子都不用动。很多时候,我都不用学什么语言,一点,菜单里面一找,OK。用上。

    用C多恐怖啊,用VI写,GDB调试。不管是谁,我只要看看你用VI的程度,就知道你混了几年C了。不过话说回来,C++其实还好啦。最恐怖的是MFC,那么多的调用函数,那么多的宏定义。做什么用的?UI,杯具啊。点一个按钮,需要那么高的速度吗?完全可以用C#写。要写特殊点的东西,只要找一个HWND出来,就可以用上C++了。

    重新拾回对C++的信心,是回归到UNIX世界以后。原来C++可以很美的。一样有简洁的风格。比如MOTIF,比如TK,一样写UI,人家多简单明了?当然,这两样和C#还是不能比。毕竟是历史产物。C#集中了历史以来的经验,写的当然好。极其简单优美。可是毕竟C++可以做很多特殊的事情,所以还是放不下C++。

    有机会的话,我也可以转JAVA,这不还没有机会嘛?慢慢来吧。当然,学C++以后带来的一个工作习惯是喜欢抠底层。比如我写过的那个十万行记录中找重复频率最高的10条的例子。你用XXX.XXX.XXX写当然爽啦,可是你这个东西送到数据库那里是什么你知道吗?不清楚了。数据库是需要编译和执行SQL的。如果你XXX.XXX地一路下去,毫无疑问,即使你的查询是非常优化了的,数据库还是要对其进行编译。像这种大剂量的查询,使用预编译stored procedure应该是比较好的选择。如果我今天在一家大型公司做的话,我可能不会采用XXX.XXX的写法,我会考虑到数据量的现实,综合考虑采用哪一种方式。

    我相信,JAVA和C#也是一个广袤的世界,也同样是值得深入研究的。既然做了技术这一样,就应该钻一点,不能浮在表面看问题。对自己使用的每一件工具,优缺点都要有所了解,这样才能写出真正的好东西。

    “只有偏执狂才能生存”,我是这么信仰的。我也很希望在这里能看到大量的JAVA的内容。同样,对我们是一个提高。更多精彩文章及讨论,请光临枫下论坛 rolia.net
    • 大哥, 我知道你有屠龙之技,可是咱加拿大没那么多龙可屠,要不你南下? 要不转杀鸡。
      • 呵呵,不行啊。你们找工作的时候,都问些什么?可以讲讲吗?我有的时候看JAVA的工作帖子,晕啊。一堆一堆的东西。就说HIBERNATE吧。那么大一本手册,都要背的?我搞不懂。
        也许我是神经过敏吧。当年学J2EE的时候,看到DEPLOY,要写那么大一个XML文件,晕菜了。可能是不需要考的吧,考我的话我死定了。到底是要到什么程度?刚才看另一位牛哥说,他被考的是,ENTITY BEAN是什么,我还记得四个BEAN,state session bean, stateless session bean, container-managed entity bean 和 entity bean。可是四个bean 往下考还可以问一堆出来,我不知道会到什么程度。
        • 哥们儿还是stick to 你的C++吧。
      • 这个我同意。看得出来LZ的功力还是很深厚的,而且很有钻研精神。最近在Linkedin上看到一些同事的教育背景,很多都是学经济、商业、历史甚至哲学的,还有很多就是一年两年的College。
        我并不是唯教育背景论者甚至是持反对态度的,但是很多人似懂非懂滥用各种时髦名词,再加上令人发指的HR, Recruiter or even computer screening,绝对会将很多真正优秀的候选人拒之门外。即使混进去了,你的优势也并不容易体现出来。bug有就有吧,fix 就是了,一次不行两次,他们根本不care,至少在我们公司是这样。
    • 有些同感. 我也是十年多前开始转IT.
      当时J2EE刚出来, 我很想找那方面的工作, 但是一个公司在monster/workopolis看到我的resume主动找我, 做的主要就是C++. 在公司一干就是十年. 现在直接跟customer谈需求很多, 写code已经很少了. 如果当年找到J2EE的活, 经历就会大不一样了吧, 也许会做很多短工. 有得必有失. 精通C++的到wall st去做trading software, 钱也是大把大把的.
    • “只有偏执狂才能生存”? Wrong. 只有偏执狂才能*超群*! Keep your niche -- opportunities will knock.
      • 谢谢你们大家的鼓励,我会继续努力。
    • I m a COBOL fan
      • 这个rolia的系统不知道什么毛病,有些条目可以回,有些不可以。借这个回复链接回楼下。
        本文发表在 rolia.net 枫下论坛兄弟没有钻牛角尖。你没有兄弟我的痛苦,所以你会说我钻牛角尖。我是十年的C++程序员,不是十年的C#程序员,如果转行做C#,我可能需要从初级开始,从四万年薪开始慢慢爬。这很现实吧。甚至这都不算什么,如果我觉得行业有前途,就算白干我也去干。我最近到处托人找白干的地方呢。

        关键是行业。我刚刚看到一个兄弟说:多年前转VOIP什么的,现在你转转看?不容易,你没做过,要讲出行业知识来很难。

        你说你干了8年的C#,才懂了一小块。我理解。C++也一样,谁敢说自己精通C++? 我现在的水平,我只敢说我通基本的C++,STL,SOCKET。BOOST都是半懂,后面还有ACE,还有大量的FRAMEWORK。可是你看招聘启事,都打喇喇地刷上C#,C++,然后是一堆的framework,心里没底啊。不管是什么语言,要把你考死真是太容易了。尤其是framework。比如说,要用weblogic,娘的,这一堆考点啥?咱心里没有半点底。

        碰到运气好的时候,面试官会问,c#怎么把一个类型的指CAST成另外一个?那就是撞了大运啦。我现在不就是在做C#么?根本什么都没有问。面试的时候给了几个题目,唰唰唰一写,老板就点头了。可是这种职位同样也很无聊,面试容易的职位往往是没有人做的职位。现在我的感觉就是一身的本事发不出火来。

        其实大家说得都有道理,我不是一个钻牛角尖的人,在这个行业这么多年了,怎么会体会不到big picture的重要?怎么会不懂得语言只是工具?关键是行业啊。走错路了,呆过的行业都不行了。什么叫做行业知识?有朋友说过,你要会SOFTWARE ENGINEERING。这个东东么,说实话,你做了八年的C#,没吃过猪也见过猪跑。你说你不会么?基本上不大可能。把一个大任务分解成小任务,设计接口,设计模式。这些我们都常做。关键还不在这里。关键在于,比如你是一个作物流的,你除了是一个计算机的专家,你还应该是一个物流专家。客户的要求,他在想什么,他要做什么?你马上要理解。他没有想到的地方你还得帮他想到。这才是一个真正优秀的程序员。如果你只是被动地接受客户需求,那么,不出一年,你的设计肯定被改得面目全非。根本和最初的想法接不上头了。

        所以如果你沉在一个行业里,深入了解这个行业,甚至有做行业专家的水平,那要比会个把C++有用的多得多。那些都是工具。而这一切的关键,就在于入行,以及入行以后的努力。我现在第一步还没有跨进去呢。

        其实太太说工资低,这没有什么。真正让我伤心的是现实,所谓的郁闷,不过是自己的伤疤被揭了呗。不多说了,我现在开始补行业知识了。看书去了。更多精彩文章及讨论,请光临枫下论坛 rolia.net
        • 俺说一两句,说错了,你不要生气。俺其实是个老好人。
          本文发表在 rolia.net 枫下论坛俺觉得,你的问题,是不虚心,自以为是。俺有例为证。

          private inheritance, by design, 就不是is-a,而更像composition。但是你不知道。你当时是怎么学的呢?你难道连C++ FAQ都没有看过?这是不是不虚心,自以为是?

          面试的人给你指出来了,你不屑一顾。你就没想一想他可能是对的?你回来连在网上查一下的冲动都没有?这是不是不虚心,自以为是?

          这以后你就从来没有怀疑过你的错?在Rolia上公开这件事之前,就没有想看看书,确认一下你是不是真对?这是不是不虚心,自以为是?

          fail了,就一口咬定是别人的错。认为原因是别人太拘泥于一两个题的答案,or simply difference of opinion。为什么不先假设别人有道理,然后仔细琢磨琢磨到底是什么道理呢?fail 你在 private inheritance,真有道理。这不是 difference of opinion,这是你基本概念不清。

          看到 Rolia 上有些帖子可回,有些不能,你一口咬定是 Rolia 有毛病。为什么不先假设 Rolia 没有毛病,然后琢磨琢磨有些帖子不能回的原因呢?这件事是 Rolia 有毛病的概率,应该极小极小吧?这么小概率事件,你基本就确认了,是不是不虚心,自以为是?

          "Divide and conquer", 你从来没有听说过,应该也是从来没有想过。但你说, “做了八年的C#,没吃过猪也见过猪跑。你说你不会么?基本上不大可能。”进而说,“关键还不在这里”。本人认为,这也是“不虚心,自以为是”。如果你写code时从来没有想过reducing complexity,你在这方面肯定有不少可以改进的,甚至有大的缺陷要弥补。一口咬定,“关键还不在这里”,至少是不虚心。

          言重了些,但俺没有恶意。俺是老好人,不习惯这种激烈的言辞。但看你写的帖子,俺这种感觉很强烈,所以想想还是写下了。其实俺还有别的例子,比如你对”business logic“的崇拜,但今天就算了。更多精彩文章及讨论,请光临枫下论坛 rolia.net
          • Good point, thanks.
            • PS: why some thread can be replied, some can't? Please help. Just like the one belows us.
              • 我又看了你说的贴,没觉得有什么不可回。你能不能再说得具体一些?
                • 就是我们楼下这条,后面的reply链接到哪里去了?只有一个more链接。
                  • take a moment to open it, and you will see
                    • I don't understand. I opened it over night. I still don't see the link.
                      • Looks like you really need to improve your learning skill. For any item more 255 char, Rolia force you to open the full content before you can reply.
                        • plus, you can't reply to "archived" posts. i.e. (#1595874@0) (该话题已在历史区内,不能被修改或回复。 )
    • 觉得你钻到牛角尖里去,死扣着C++比.NET快啥的
      觉得你钻到牛角尖里去,死扣着C++比.NET快啥的(说不准也没快啥,.NET Framework核心的东西肯定优化过的),人工比机器贵多了,一台机器太慢,就上2台,2台太慢,就来4台。当然有的方面可能还的C++,这apple 和orange,不好比,市场说了算。我做了8+年的.NET程序,也就熟悉一小块,.NET framework浩瀚地很那。
      • REPLY 话题 收藏 投诉 关闭窗口
        • 谢谢,我找到了。的确是我没有注意到要打开帖子才可以回复。这次学到了不少东西,谢谢各位。
    • 要顺势而为,不能倒行逆施!
    • 一般人编程,尽量告诉程序 "what",而不是 "how"
      讨论性能一定要有上下文。

      除非特定行业,比如 driver,嵌入式,算法库什么的,一般人编程,尤其商用程序,尽量告诉程序 "what",而不是 "how" -- 实在不行了再 *根据上下文* 进行性能优化。

      举个例子,也许一段 code 今天用 LINQ 慢,但是用了 LINQ 你在告诉机器 what to do,不是 how to do it,以后并行计算了,这段程序就快了。要是告诉机器的是 how to do it,以后就没机会更快了。

      知道上面的例子随便谁都能找出例子说明不能普适,我也懒得敲太多的字给上面的例子加上一堆限定条件。就酱紫 8。
      • That's true. I learned my lesson of "try NOT to beat compiler", it is much smarter than me.