语言真的不重要吗?

zhangxuguang2007 2009-11-13 05:23:10
加精
最近园内有一个帖子特别火《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++教程都会告诉你),我们可真的够可怜的了。

软件工程师的本质是匠人,生产力的根源在于熟练,正如《卖油翁》所说的:“我亦无他,惟手熟尔”。
...全文
4252 160 打赏 收藏 转发到动态 举报
写回复
用AI写文章
160 条回复
切换为时间正序
请发表友善的回复…
发表回复
huojiehai 2009-12-19
  • 打赏
  • 举报
回复
[/color][/b][b]首先要严重鄙视以上说楼主年轻的人和所有不赞同语言重要的人!!!

写代码的人在国外是很值钱的,在国人是很贱的!这是中国特色,中国的程序都是沉不住气写代码,写了一两年的代码就大口的说语言什么的不重要,重要的是思想!很浮、很好高骛远,以为自己都是高手了,别人一说就马上拍砖头,好像生怕别人水平超过自己!国内从领导到程序员都是这种思想,认为写了一两年程序,就应该转管理工作,不应该写代码,这样才是程序发展的正确方向!正是这种思想,导致中国的程序员的工资很低!正是这种思想,中国才没有世界级别的共享软件。。。。可悲!

[color=#FF0000]俗话说得好,“术业有专攻”,没有精通一个工具,如何亮剑!更谈不上拍别人砖!




xiongcaoyuanlang 2009-12-15
  • 打赏
  • 举报
回复
我现在是同意楼主的意见的。
可能我们理解的深度可能真的不够,但我们将来肯定都会明白这些道理的。
MingInCode 2009-11-24
  • 打赏
  • 举报
回复
以前我认为不重要,搞了一年delphi,现在在找工作,很难找,我认为语言还是很重要,有些语言自己不发展了或者支持它的大公司少,就会把相应的开发人员给搭进去。这年代,我认为不重要,招聘公司也不这么认为。。。
pilx89 2009-11-24
  • 打赏
  • 举报
回复
招聘MFC&JAVA人员
地点:深圳高新技术产业开发区
要求:1、精通MFC&JAVA,有两年以上开发经验

2、有团队开发精神
薪金:3-5K左右

有兴趣的请联系:pilx88@163.com
qdu123 2009-11-24
  • 打赏
  • 举报
回复
LZ修行不够呀,虽然我也不够,汗一个
其实语言真的不重要,老板注重的是你能把软件搞好,用啥语言他不管
liyulun 2009-11-24
  • 打赏
  • 举报
回复
唉,没有激情了~~~~
vindo 2009-11-24
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 dirdirdir3 的回复:]
没有到那个境界是不可能理解的,就像对牛弹琴一样......................
[/Quote]
同意,相信那个36岁IT老人也不会拿那种话去面试,LZ有些钻牛角尖了
haitao 2009-11-24
  • 打赏
  • 举报
回复
[Quote=引用 153 楼 jhdxhj 的回复:]
引用 148 楼 bukkake 的回复:
"武器不重要,只要有战略战术思想就够了"

你觉得呢?
[/Quote]

武器不重要,只要有战略战术思想就够了
├对于司令员
│├武器是指本人的手x枪:对
│└武器是指部x队的主要战斗器x械:不完全对
└对于前线战x士:错

所以,凡事不要说的这么快、这么简单

——您的回复正文中有非法词或词组! ???
jhdxhj 2009-11-24
  • 打赏
  • 举报
回复
[Quote=引用 148 楼 bukkake 的回复:]
"武器不重要,只要有战略战术思想就够了"


[/Quote]
你觉得呢?
szvsking 2009-11-24
  • 打赏
  • 举报
回复
语言不熟练的就说自己思想好
思涵 2009-11-24
  • 打赏
  • 举报
回复
学习
magicpang 2009-11-24
  • 打赏
  • 举报
回复
我觉得那个大叔说的事情是在跨过了语言之后的事情
比我这样的菜鸟还是得在语言这块再深入,思想慢慢来
五更琉璃 2009-11-24
  • 打赏
  • 举报
回复
同意LZ 感觉那些离开语言谈思想的根本是扯
bukkake 2009-11-24
  • 打赏
  • 举报
回复
"武器不重要,只要有战略战术思想就够了"

你觉得呢?
尽千 2009-11-24
  • 打赏
  • 举报
回复
争论出两者谁更重要很有意义吗。难道说仅仅使用它们中的一个就能出一个软件?
ufo0848 2009-11-24
  • 打赏
  • 举报
回复
[Quote=引用 141 楼 hqhqhw 的回复:]
引用 135 楼 ubiquitious 的回复:
引用 134 楼 ufo0848 的回复:
一、所有的语言都是过程化的,无论是你所谓的过程化还是面向对象的,归根结底都是过程化的。机器只会执行过程化的代码。换而言之,程序只不过是一种工作流程,和流水线线是一样的。面向对象只是一种概念,只是将看起来散乱的过程化的代码做了一下处理。就好比以前所有的东西都放一个抽屉,现在按照东西的类别做了一下整理。当然在某些方面来说,这是一种进步。但也是一种退步。
二、去学习另一种语言的难度并不是语法,而是类库。语法正如那位老先生所说一通百通。而类库也只是一种主观上的困难。因为这是软件商设置的障碍,避免和别的语言交叉。如果有一个统一的类库标准,比如全部做成类似API或者别的什么形式(自己写的类也可以这么做),有一个统一的标准的话,这个困难时不存在的。至于工具嘛,那就是一种工具,只是形式不同,本质上我不觉的有什么不同。如果你的类库一样的话VS和Eclipse用起来有什么区别?虽然有些调试工具不大一样。
三、不同语言的所蕴含的深层思想没什么不同,Asp.net一样可以做出JSP+Struts+Hibernate+Spring那种框架,只不过首先要完成大量的框架集的编写工作。JSP+Struts+Hibernate+Spring所用的那些东西80%以上的代码都是别人写好的,没什么可炫耀的。
四、楼主说的那次糟糕的经历不是架构师的问题,是楼主的问题。而楼主在指责别人不懂Web Service,我想说的是楼主太肤浅。天天将Web Service挂在嘴边,难道楼主真的很懂吗?楼主所了解的那是Web Service的应用部分而已。就是说Web Service是别人做好的,楼主在用,仅此而已。也许那次那个项目有一些特殊的需求,现有的Web Service不能满足(比较主流的像tomcat,IIS,apache等),架构师需要COM和Socket来实现Web Service,而楼主用不懂怎么去实现。

顺便说下,楼主真的很年轻。不过他关于卖油翁的说法我比较赞同!


不年轻的你能否解释一下为啥可以用webservice实现的架构非要用蹩脚的过时的com+socket来实现?
从理论上来讲,任何com+socket可以实现的东西都可以用webservice来实现,只有一个例外就是速度,webservice速度比较慢,但是如果作为架构的选择的话,绝对比com+socket好。新出现的技术如果不如旧的,怎么可能有生命力?请问SOA架构是基于什么实现的?com+socket?你别逗我了。
学习另外一种语言不仅仅是语法,还有类库,这话没错,不过更重要的是基于这种语言的设计方法,这是必须有了经验或者精通了才能做到的。不然你写出来的东西就是一个用语法和类库API堆出来的垃圾。



哎,是不是我太年轻了?在没有web服务的时候能提供webservice么?或者webservice是用什么实现的呢?
[/Quote]

搞错了,把webservice当Web Server给paste了
修改:
四、楼主说的那次糟糕的经历不是架构师的问题,是楼主的问题。而楼主在指责别人不懂Web Service,我想说的是楼主太肤浅。天天将Web Service挂在嘴边,难道楼主真的很懂吗?楼主所了解的那是Web Server的应用部分而已。就是说Web Server是别人做好的,楼主在用,仅此而已。也许那次那个项目有一些特殊的需求,现有的Web Server不能满足(比较主流的像tomcat,IIS,apache等),架构师需要COM和Socket来实现Web Server,而楼主用不懂怎么去实现。


Web Service能使实现的东西com+socket一定可以实现,但是com+socket能实现的东西Web Service就不一定行,比如Web Server。

SOA架构只是一种编程思想,并不一定基于某一种技术。但是用某一种技术可以把它表现出来,这种技术不过是一种载体,Web Service能做,用c++调用COM和Socket也能做。

软件的设计方法也就是编程思想,并不是某一门语言的。没有有思想的代码就不是程序。但凡是程序都是有思想的,只是思想深浅的问题。有些东西除了语法、类库和API堆之外好像也没别的办法,比如通信协议。硬要说TCP/IP协议是垃圾的话我也没办法,不过阁下大可以用Web Service或者SOA做给我看
si_huifeng 2009-11-23
  • 打赏
  • 举报
回复
快往下撤!
jayhebe 2009-11-23
  • 打赏
  • 举报
回复
楼主啊,你一开始就理解错了,你再看看人家的原文,人家是说他会的语言就两种,一种是面向过程的,一种是面向对象的,可没说语言就分两种!
LastEditor 2009-11-23
  • 打赏
  • 举报
回复
纯粹的语言有多少差别?

1.面向对象编译型的:
C++和Object Pascal
如果论纯粹的语法结构和关键字的用途,差别很大吗?
加上IDE和类库->VC++和Delphi区别就大了

2.面向对象虚拟机解释型的:
C#和Java
如果论纯粹的语法结构和关键字用途,差别很大吗?
加上IDE和类库->VS.net和J2EE区别就大了

3.面向过程的C

在文本编辑器里写以上三种类型的代码
逻辑控制结构也就ifelse while(for)的组合
体现在i386汇编里无非也就是MOV ADD JMP CALL RET等等汇编指令的组合
体现在arm汇编里无非也就是MOV ADD BL等等汇编指令的组合

类库和控件是什么?类库和控件都是别人提供给你的思想,把别人的思想(控件和类库)组织一下生成你自己的程序,你的程序有思想吗?

语言并不重要,语言只是形式上的工具,而在一个语言中,别人实现的类库和控件能够帮助你实现你自己的应用才是最重要的。
你说你不需要别人提供的类库和控件,你一步一步实现自己类似的东西然后最终实现你自己的应用 ,好的,去实现吧,你用ifelse while(for)自己慢慢组合吧。

软件开发,什么工具能完成什么功能,实现功能用什么工具最快,在项目设计之初必须得仔细分析,这才是最重要的。
ren197836yuan 2009-11-23
  • 打赏
  • 举报
回复
一但你真的走过那个阶段,你就会认同他的观点了。,,,只是没能把各种语言的关键都吃透,就不能说这样的话,
加载更多回复(140)

590

社区成员

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

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