日期:2014-05-16 浏览次数:20820 次
windows还是linux上工作,已经选择未来开发方向和技术,语言的的朋友
2009-10-19 00:19
争论windows和linux谁更好是没有意义的,只有相互借鉴才能促进不断的完善。
撇开个人的喜好,从客观的开发角度来看,windows和linux都是成功的系统。
曾经在开源社区最大的比较就是linux的内核比windows好。这个争论到后来突然偃旗息鼓了,因为我们既然看不到windows的内核,就无法做出客观的比较。
在就业市场上,从需求的角度来说,可分为专业和非专业需求。有的客户是专业公司,需要开发专业系统,他们也有专业人员维护,有的客户是面向非专业市场的,比如开发游戏,给普通用户使用。这2者的市场总体来说差别不大。对于正在选择未来发展方向的IT人员,选择什么公司和什么市场,并非首要因素。
因为工资的决定,是遵循市场需求和物以稀为贵2个原理同时运作的。
比如说,市场需求量大的技术,则比较容易找到工作,市场份额也大,总蛋糕最大。由此来看,windows管理员是需求最多的。可是因为现在计算机的普及,可以胜任windows管理员的人相当的多,于是蛋糕虽大,可是分的人太多了,便变得没有很大的价值。从另一个面来看,AIX服务器的总体需求量是不大的。一般大企业才使用,但是因为对技术要求高,内容复杂,掌握的人少,所以工资一直都居高不下。
在目前的市场上,windows在桌面市场占有绝对优势,在服务器市场占有三分之一强的席位(中小型为主),而中大型服务器都在UNIX家族控制下(包括linux,linux也占有很多小型服务器市场)。在很长的未来里,它们都不会被轻易淘汰。因为选择哪个方向则可依照个人兴趣爱好。
第二:选择编程语言和开发方向。
首先,可以粗略的把编程语言归为几大类
1:c/c++ asm
2: java/c#/f#/VB
3: perl/python/php/ruby/bash/powershell
撇开第一类不说(后面解释),第二类是解释语言,也是微软和开源社区都推荐的未来技术.是JAVA EE和.NET的核心。第三类是描述类语言,在设计上,语法和使用比前两类要简单(除了PERL <-特例)。
那么再看方向:
1:桌面开发:范围很广,但主要在windows平台上为主。
2:企业开发:目前以JAVA EE和.NET为主流。其中当前的形势是JAVA EE更为广泛。
3:游戏开发: 很流行,不只局限在windows,也包括游戏平台。
4:特定开发: 专业用途的开发,需要特定技术掌握。
在此,我们仅仅讨论第一二类方向,因为游戏开发和特定开发于前两类有很多相似之处。
从桌面开发的角度来看,选择一门语言是相当重要的。这里的桌面开发主要指windows平台。
在windows平台上开发的工具软件,最主要的是visual studio和borland 系列。现在已经可以细化为四大块:
visual c++;visual basic;delphi;visual c#;(c++ builder的份额越来越少了)
这四门工具掌握好了,都能有相当的发展,vb也不是想象中那么弱,vb是.net的主要语言之一,虽然默认的首席语言是c#.
但是从工资的角度来说:visual c++是最高的。
因为c++的难度是所有语言中最大的。不止是掌握这门语言,而且要懂stl/boost等库的开发。还要同时兼容c,要懂c,懂汇编,了解编译器是怎么产生代码的,才能算精通c++. 在vc上,还要懂几个库,MFC和ATL等。现在有的人才学了点皮毛就自称精通,招聘广告上也要求精通vc++,java等一套工具。其实那个精通的标准,是被潜规则了的。
学习visual c++,如果不精通,还不如学delph,java,c#,在开发用户程序二者差别不大,而且速度快,易于维护。c++没有相当的功力的人,无法维护。用c++不同的人可以写出数种模式的代码,没有经验的人要整合在一起十分艰难。
但是最程序有底层要求,或者性能要求,则必须使用vc,因为vc功能强大,也是目前唯一能编写二进制代码的工具了。java,c#必须转换成中间码,eclipse也能把java换成exe.但是和vc相比,差距是不容忽视的。
从企业开发的角度来看:JAVA EE拥有更大的范围,因为其跨平台特性。从IBM到SUN到LINUX都全力支持JAVA技术,而企业服务器应用上来看,UNIX/LINUX占有更大的份额。但是.NET也不容忽视,从工资上来看,二者居然能基本持平。J2EE的工资较高于普通.NET应用。因为普通asp.net等开发在visual studio/msdn支持下相对容易,但是高级开发则没有大的区别。
这篇文章是从朋友博客上转载的,供参考。
我的看法是,选择平台都不算太重要。因为都有其发展范围。
重要的是自己掌握了多少。精通了多少。
但是对于有些犹豫的朋友来说,选择方向仍然是关键,所以我的一点愚见是
掌握和精通比如delphi,vb,c#,java是明智的,这些东西入门容易,一旦努力精通,是很有用处的。
对于vc++,要精通则是很难的。掌握不难,可是普通的掌握实在不如精通以上RAD快速开发工具。
c/c++是一个大工程,什么叫精通呢?按照linus开发内核小组的要求,相当理解c,就能开发内核了。通c++就能开发stlport和boost这种库了。 精通c不是说很懂c的语法。这叫懂语法。精通是懂其结构,为什么如此,如何编译。是一套系统专业的过程。仅懂其语法,则和掌握vb没啥太大区别,所以有人感觉stl,mfc很难。
论坛讨论建议:
一:咱们都是文明人,不做人身攻击,不因人废言,也不因言废人。比如(一看就知道你不懂windows)(一看就知道你没开发过mathlab)这样的话。有意见,批评直接切入。比如(你那个东西说错了,visual studio 2002不能编译最新的stlport).
二:做理智发言。不要意气用事。比如(linux就是垃圾!)(windows就是狗屎一坨),最好指出问题所在,比如(linux的稳定性确实好,内核和GUI分离),(windows vista的兼容有问题,最好改进)。
三:不因别人提不同意见便攻击对方。比如(我开发c#时你还在高考呢),(我学算法时你还不知道电脑是什么呢),没有意义。人各有所长,也有所短,出现错误不可避免,有则改之无则加勉。