[问题]Linux下的编程分那些啊?c,perl,python?

软件和网站开发以及相关技术探讨
头像
code vampire
帖子: 193
注册时间: 2010-06-19 12:50
系统: AIX、UBUNTU
联系:

Re: [问题]Linux下的编程分那些啊?c,perl,python?

#16

帖子 code vampire » 2011-10-21 22:25

一看你的提问就知道你才刚起步,还是个小小鸟。

首先,编程语言不应该成为决定你方向的决定因素,它们只是工具,但不可否认他们的作用很重要。我们要做理论与实践兼有的程序员。如果你刚从Windows过来,那你学习Linux/UNIX系统编程可能要费一点周折,倒不如白纸一张来的快速有效。原因是你要经过思想的转变。Windows是消息驱动的,而Linux不是。

不知你的理解是怎么样的,就我看你的问题,你所问的是应用编程的问题。你的概念中程序可能还是那种最好有个界面,搞得很复杂,很多功能,很花哨的那种程序。但你要知道,应用编程只是Linux/UNIX编程的小小一部分,或者说,不是特别重要的一部分。

在Windows下,图形系统与内核是一体的,内核就包含图形系统,窗口管理器是系统软件。但在Linux与UNIX下,不是的,你的电脑可以不装X System,不装窗口管理器,尤其对Server是这样。Windows下做什么你都可以像写GUI按钮一样,给它安排个信号处理函数,告知内核在情况满足时发信号。但在Linux下不一样,或者说起码系统编程不是这样,只有在用到GUI开发时才是这样,如Gtk+,Qt。其实所有的GUI开发都是这个模式,消息驱动不是微软的专利,要做GUI都得是这样,没什么技术含量,给你本说明,半个月更短一星期你就干得不错了。所以Linux程序员一般都是按需要现学现用GUI开发技术。

说了区别,我再说Linux/UNIX系统开发主要有那些方面。

1.后台服务,也就是服务器后台软件,如Apache,nginx等,以及自己的一些服务器软件,应用程序服务器端,网游服务器端等。这个相对来说现在从事的人最多。主要原因是UNIX是TCP/IP的发源地,就算微软也必须兼容Socket API,UNIX诞生可以说专门就是为网络互联的,Linux也是如此,Linux在94年就有了网络功能,而Windows在98才有系统级的支持。这就是差距。另外,由于Windows封装的过多,导致网络性能不怎么高,(封装这件事有好也有坏,对应用程序员封装多了就意味着上手容易,简单,但效率低下是系统级程序员不能接受的)这也就是为什么Apache与Nginx都有WIndows版本,但性能相差悬殊的原因。IE速度低下,也是这么造成的。你也许问那IE9为什么微软说很快?我想他们可能使用底层调用了,而非提供给大家用的。所以对于网站,尤其是大网站来说,Linux是个好的平台,效率至上。百度,Google,Sina,人人,豆瓣。。。 。。。全部都是。而只有一些小企业组织使用IIS,因为他们的网站一周也没有多少链接,更何况懂Linux及Linux系统编程的人才很少,或者说不屑于去他们这些地方。

如果要走这个方向,那么以下这些是你必须精通的:C/C++,Linux System API,Socket ,PThread
同时系统维护功底,掌握脚本语言的功底,专业功底也是必须的。脚本语言来说,起码Bash你要用得非常熟,再掌握Python。想做大牛的话,你还要深入理解TCP/IP,包括实现,LInux内核TCP/IP栈等。当然数据结构,算法这些都是基础的基础了。

另外,如果你做特殊领域,如金融行业,超算啊,云计算,分布式数据库。。。 。。。那么数据库也是你的必修课,其实对网站Web业也一样,技多不压身,你得深入了解数据库,甲骨文的,IBM的,你都得知道。尤其如果想进银行的,那DB2你肯定得熟悉,另外,有很多企业如银行,根本不使用普通计算机,如IBM的AIX,所以你学的东西一定不要固定到某个平台或OS。

2.嵌入式领域,这行业主要做LInux内核裁剪,为什么是Linux而不是Windows,这个原因就不必多说了。如果你想象的嵌入式开发是写iPhone或Android应用,那个基本和Linux开发没什么关系,那时应用层的东西,在WIndows与Linux下都一样,如Java一样普及,没什么技术含量,全部工作就是查库,使用,复制,粘贴而已。当然你有创意你就赢了,如疯狂的小鸟。你需要记住的是物以稀为贵,大家都会的东西,也就是不值钱的东西,当满大街的人都有计算机证书时,那就等于都没有,当人人都会写Java时,那很多Java程序员的工资就会降低。不是每个人都能写好C/C++程序,尤其是专业的Socket,System API,并行程序,所以这些人被称为大牛。所以该如何选择,你自己要抉择。

如果你要专攻Linux内核裁剪,那么内核你得非常熟悉,硬件也是必须的。以及设备驱动啊什么的,入门很难,如果做的好一定是大牛,千金难求。

3.Web前端,Web前端,顾名思义就是做网页的,当然不是HTML那么简单,PHP什么的这些都得懂,反正你就想如果你要作成Sina微博那样的网站,除了后台的Web服务器,服务器软件,你还要懂些什么。由于Linux在大网站的普及,所以这类人才的需要量也是非常的大,只要学好了,一定可以成功的。

以上三个是我觉得最有前途的。你注意到我没有提及应用开发,因为我觉得在Linux上做应用没前途。PC时代都结束了,思想能不能更开放点。未来是属于Web的,是HTML5的,打开浏览器你什么都可以做,打游戏,3D渲染,聊天,本地应用,云端应用,。。。 。。。只要有浏览器就够了,不需要MFC什么的,也不需要Gtk+,Qt什么的,那些东西只不过是像素,只要有图形系统,有人提供API,你可以用HTML写按钮,写游戏。
回复