我来揭穿这个最大的谎言

zhangxuguang2007 2009-11-13 05:15:23
最近园内有一个帖子特别火《36岁IT老人再次随笔 》,地址:http://topic.csdn.net/u/20091108/18/0a28b3e0-6cf8-4a3a-93b5-b0a6f0f2c289.html。其中作者的经验很是让人敬佩,但有些观点却十分荒谬,例如作者在谈到编程分类的时候,认为编程语言只有两种,原话为:”两种,一种是面向过程的,另一种是面向对象的。面向过程的C,脚本语言等都是一样的,而C++为代表的OO语言也是一样的。在我眼里,语言之间没什么区别,区别只是在思想上。“,这样的观点我坚决反对,今天就趁机在这里把话说透。

谁要是在面试的时候向考官说“语言只有两种,一种是面向过程的,另一种是面向对象的”,我敢说99%的可能性你要失去这份工作。且不说这句话会让面试官觉的你是如何的不切实际和高谈阔论,单从道理讲就会让人觉得你是多么肤浅。难道说掌握了所谓的编程思想,就真的进入编程的白化境界,达到了所谓的“手中无剑心中有剑”的境界了吗?难道说语言真的无关紧要吗?如果不是,真相到底是什么?

1.你很难在市面找到一份工作,只需要抽象的思想而不需要具体的编程。你可能会说架构师,但谁又告诉你架构师不需要编程,谁又告诉你架构和语言无关。我所经历的最糟糕编程经验就是实现一个C++的架构师设计的C#架构,整个架构充斥着COM和Socket,更和应用最切合的Web Service则完全没有涉及,因为这个 C++架构师的脑子里根本就没有Web Service的概念。
2.所有市面流行的语言(例如Java和.NET),即使你掌握了所谓的思想,你也无法轻易的从一门语法跨到另一门语言。不要相信所谓的“语言都是相通的,掌握了一门就一通百通”。能写个“Hello world”程序并不代表你真正领悟了一门语言的精髓。如果一门语言和竞争者的差异只是表现在语法层面,这样的语言根本就不应该设计出来,当然也无法生存下去,因为根本就没有学习的必要。下面是我以Java和C#的差异来验证语言之间的鸿沟:
A.语法不一样。一个熟练的Java的程序员并不能想当然迅速成为一个熟练的.NET程序员,从编译不通过到没有语法错误需要的不是数周,而是数月。
B.类库不一样。优秀的程序员只掌握语法是远远不够的,还需要掌握数量庞大的类库,看看那本1000多页的《C#高级编程》,你就知道你需要掌握的有多少。请不要告诉我你可以用的时候再去查,如果是这样,我只能说你连熟练的层次都没有达到(《C#高级编程》讲的都是最基本的),这样你凭什么和别人谈思想。
C.开发工具不一样。Eclipse和Visual Studio一样吗,SVN和SourceSafe一样,不要告诉我它们都很easy。如果您是这样认为的,我只能说你了解的还不够深刻。
D.积累的代码不一样。如果你告诉我你是个资深的Java程序员,我当然可以认为你手头一定积累了大量的Java源码,我不会期望你的每一行代码都从头写起(虽然ctrl c + ctrl v不止一次被人嘲笑,但我要说这不仅高效而且实用),我期望你表现出现资深的效率,因为我会支付给你资深的价格。因此,如果我想要的是一名资深的Java程序员,我当然不会去招一名C#程序员,至少C#代码无法无法粘贴在Eclipse中编译。
3.不同语言的所蕴含的深层思想也不一样。还是拿.NET和Java来说事,难道两者除了最基本的面向对象思想,就没有一些更深刻的东西可以启发你?难道JSP+Struts+Hibernate+Spring的设计理念和Asp.net完全一样吗?如果多少年过去了,我们念念不忘的依旧还是“面向对象的三个基本特征(基本所有的C++教程都会告诉你),我们可真的够可怜的了。

软件工程师的本质是匠人,生产力的根源在于熟练,正如《卖油翁》所说的:“我亦无他,惟手熟尔”。
...全文
10711 378 打赏 收藏 转发到动态 举报
写回复
用AI写文章
378 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
看到你写的一半,后面的是粗略的看的,
总结:你的程序员生涯是肤浅的
总结完毕
kome2000 2010-01-06
  • 打赏
  • 举报
回复
编程语言是不段变化的!
面向过程,面向对象!
肯定是不准确的!至少还有面向模块!还有更高级的SHELL化!

观点该更新了!
zuoming120 2009-11-24
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 xhyang123 的回复:]
引用 12 楼 vickemble 的回复:
我用C#和PHP,却几乎不用类。

复杂,性能低下。感觉使用一大堆类的人,心理有问题。


不知道你是牛人,还是菜鸟,我是搞.net的,当然算不上高手,但我可以明确的告诉你.net没有类,你没法活

不是别人心理有问题,而是你根本不懂什么叫.net
[/Quote]

顶,那位哥们刚入行吧,你知道什么较高性能吗,要是都像你说的那微软出那么多类库不是很傻吗,不要以为你学了点东西就来说别人.
vicoding 2009-11-24
  • 打赏
  • 举报
回复
油老板说的其实是:无他,但手熟尔。
snpl19910112 2009-11-24
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 zhangxuguang2007 的回复:]
引用 7 楼 namhyuk 的回复:
没什么。

真刀真枪的时候才决定一切。

“我才懂,你不懂”,这种东西没用。


不错
[/Quote] 对头!
dceacho 2009-11-24
  • 打赏
  • 举报
回复
我不会那么多语言所以没法比较,只能看看了
  • 打赏
  • 举报
回复
翁说了两次,第一次是“无他,但手熟尔。”,第二次是“我亦无他,惟手熟尔。”
kittyjie 2009-11-23
  • 打赏
  • 举报
回复
LZ太2了
liubuweiright 2009-11-23
  • 打赏
  • 举报
回复
第一百零一楼。。。。。
yyysss520 2009-11-23
  • 打赏
  • 举报
回复
不懂C# 和 Java的 的群众围观
烈火蜓蜻 2009-11-23
  • 打赏
  • 举报
回复
只能说,楼主的思想还没有达到一定的境界,
zs_han 2009-11-23
  • 打赏
  • 举报
回复
我只想说的是《爷孙俩和驴子》用在这里是最恰当不过了,没有什么说的了。
许文君 2009-11-23
  • 打赏
  • 举报
回复
这人要么是老师,要么是叫兽
S_S_Ge 2009-11-23
  • 打赏
  • 举报
回复
up
kouzixibeinv 2009-11-23
  • 打赏
  • 举报
回复
我是打酱油的 ,我不发表任何言论
bigkai13 2009-11-22
  • 打赏
  • 举报
回复
程序要的就是思想,所有的程序语言都是为思想服务的。语言千万种,但是思想还是万变不离其一。所以面向对象还是面向对象,面向过程还是过程。

多学点总是没有坏处的,何必在这评论是非。
happybelladavid 2009-11-22
  • 打赏
  • 举报
回复
各有各的道理,出发点不一样,看问题的角度不一样,得出的观点就不一样,没有什么对错。
不过个人觉得面向对象跟面向过程还真只是思想上的区别,跟具体的语言无关.
熟练一门语言也许需要很久,但如果只是上手,却不一样了。有了面向对象和面向过程2种思维了,其他一切都好办。
我很赞同这个说法“思想是共同的,语言是有差异”,这显示了专业和非专业。
思想是设计的灵魂,而如何将思想表达就要借助工具(语言和IDE)
其他的不同时必然的,但有了活的(思想)其它就快了.
语言是一通相通,但是表现在具体的编程上,你不得不一点一点去对照,去认真摆脱原有的语言的束缚!
进入了编程的门槛,学了些所谓的最新技术编程,之后就觉得很够时代,开始有些左右颠摆。听教授呼哧了几句,讲了几句很够“知识”的言论,就认为在IT里掌握了大半,似乎把IT的根茎脉络都弄得很熟。
此种人,即便在我的周围,已是屡见不鲜。
其实这些“面向……”是跟着时代和编程思想的进步而诞生的编程方向,亦或许这当中某种是最潮的,但这些大的方向并不能全扩整个编程。你比如,就像“面向对象”在有些情况下也是很难绝对做到的。
因此,要分,说实话,是难以分清的。我们不能因为某些“潮流编程”的存在而忽略了“非潮流编程”的作用.
msdn2100 2009-11-22
  • 打赏
  • 举报
回复
有些道理。
home20010252 2009-11-22
  • 打赏
  • 举报
回复
资深程序员一大方面就在对代码的积累,这点我深有体会
J20082020 2009-11-22
  • 打赏
  • 举报
回复
生活压力大啊!

是得找个地方发泄一下,理解
加载更多回复(358)

590

社区成员

发帖
与我相关
我的任务
社区描述
提出问题
其他 技术论坛(原bbs)
社区管理员
  • community_281
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧