本人为09届计算机应用专业毕业生,还在困惑中……
学的是C++,还自学了Linux ,对Linux 感兴趣。
问下Linux程序员的就业方向?还有从事Linux编程要看哪些书?
|
|
|
感觉有几个方向:
1。 驱动开发。开发LINUX上驱动程序,以后LINUX会向嵌入式发展,以后会有更多的嵌入式设备,所以机会应该越来越多。但职业一般可能是小公司,除非你做精通了。
2。 应用开发。开发LINUX上应用程序,主要是网络开发等等,这个一般进大公司的机会多,因为大公司需要各种熟悉LINUX的开发人员。
3。 界面开发。开发LINUX上的图形界面,但现在看这个好像市场需求不多,现在LINUX上界面趋势是使用JAVA。
不知道对你是否有帮助
回复次数:
23
|
#1楼 得分:7回复于:2009-03-29 18:56:09
俺偷懶,把俺在其它帖子裡的回覆copy過來了...
1.学习Linux的内核,或是驱动程序开发,再或者嵌入式软件开发,有没有必要好好把汇编语言学一下,毕竟我是
软件工程的,不像计算机科学与技术的那个系,硬件东西教的比较多,汇编也是重头。要是汇编很重要的话,我还
是很愿意努力的去学它的。
=================================================================
如果打算将来搞内核、驱动,或者想技术能有一个质的提高,汇编是必须的!站在C/C++的角度看问题,和站在汇
编,比特流的角度看问题,深度和广度都有太大的差别了。
2.Windows下的图形图像学很牛这个我知道,但想知道Linux下的计算机图形学有没有发展前途。
=================================================================
linux下的图形也是很有发展的,主要也就是两个主流分支,GTK和QT。现在QT被诺基亚收购了,将来在移动行业
应该会有一番作为的。
3.我的意向是Linux程序设计方面,并且偏低层,不出意外我会考研,希望各位Linux的前辈们给出一条学习linux的路线,就是先学什么,后学什么,什么比较有前途等等。大一整了和大二整了一年半网页,才发现走了不少弯路,浪费不少时间。
=================================================================
底层个人觉得有两个方向,一个是前面说的内核和驱动;另一个就是网络方面了,主要也就是协议栈。如果想做
内核和驱动,建议加深操作系统原理,加深linux操作系统原理和实现的部分。推荐这样几本书《操作系统设计与
实现》(第三版),《linux内核完全剖析》,《UNIX环境高级编程》(第二版),《深入理解linux内核》(第三版),
《linux设备驱动》(第三版)。如果是网络方面,那推荐这几本书《UNIX网络编程》,《TCP/IP详解》,然后再加
上RFC和各种协议规范。
另外再补充一句,以上两方面并不冲突,而且也经常有linux的大牛,是以上两个方面都精通的!毕竟离开了网
络,linux基本就是没牙的老虎。所以你要是有能力,也可以通吃!
源地址: http://topic.csdn.net/u/20090322/16/bf1af94d-d003-40be-8f29-a57adde8fdcf.html?524164488
|
|
|
|
|
#2楼 得分:7回复于:2009-03-29 22:01:11
下面的来自一个网文,你看看吧 应该对你有用!写给C语言初学者的话!::
前些天我写了一篇“Unix C语言值得注意的地方”一贴,回贴中谈到学习国外的开源软件中的高质量代码的问题,但是有朋友跟我说,在看代码的过程中感觉难度很大,想想也是如此,动辄十几万行的程序如果没有人指点的话是很难找到切入点的,所以我撰写了此文希望能对广大C语言爱好者有所帮助,在文章中有很多煽情的地方还请大家原谅,因为这篇文章使我想到了刚刚毕业的时候,所以有点感慨。同时文章中还有一些个人偏见存在,希望持反方向意见的人多多包涵,既然是偏见,那它只是偏见。
学习C语言不要心急,要循序渐进,须知欲速则不达的道理。千万不要盲目的写大量的代码,这样做只会堆出大量的低档次代码,同时使你形成不好的代码习惯。先买本基础的教材来看看,使得对C语言有个初步的认识,其实我现在手头上还放着《The C Programming Language》和《C程序设计(第二版)》(大学教材)呢,有些时候我还会为了一些基本性的概念来翻翻看呢。
如果你的身边有高水平的开发人员,那么再好不过了,多多向别人请教。但是就我了解的情况来看,大部分的初学者并没有在进入IT行业后得到一个资深的软件工程师的指导,而恰恰是在入司后就被推向前线,替老板们骗取客户口袋里的钱,在这个过程中很多人都是在苦苦的堆代码,赚着可怜的薪资。尽管我也是在拿着可怜的钱,但是有一点我是幸运的,因为我在我的第一家公司里遇到了带领我走向Unix和C语言领域的导师,正是他的一句“Unix和C语言是你一生都要去学习的技术”让我*的爱上了它们,正是他的一句“你有root口令,并不是你有root口令这么简单,更多的是一种责任”(说这句话的前提是我用root口令进入SUN服务器后删除了别人的东西,因为我认为这些是无用的东西)使我对责任这两个字有一个非常具体的认识。所以在这里请广大读者允许我用一些篇幅来对我neusoft的导师yuhj表示深深的感谢。同时也对CU的朋友们表示深深的感谢,可以说,你们是我的第二导师,我已经离不开你们了。
希望大家都比我幸运,没有得到幸运之神垂青的朋友们也不要灰心,多上CU上来和大家交流交流,讨论讨论吧,但是注意在论坛上讨论的时候不要刨根问底,很多事情不是一句话就说的清楚的,别人只能给你一个指引,再具体的只有靠自己多研究研究、琢磨琢磨。闲暇的时候去精华区看看,你会有意外的收获的。
千万不要一看到英文就头大,尽管我也是这样,并不是看不懂(毕竟也接受过CET4、6级哑巴英语的教育,还是能看懂的)。man的帮助是最好的教材并且很多国外的论坛对技术的描述是很清楚的,也是很简单的,更重要的是,你会在上面看到些在国内论坛上看不到的东西(计算机的技术一直都是由西方向东方传递,希望有朝一日老外都到我们中国的论坛上来寻找技术资料)。
学习C语言有一件事情也是必须要学的,而且最好是同时学,有的朋友可能已经猜出来了,没错,是Unix。Unix和C语言可以说大家提的很多了,有 Unix的地方就有C语言,同时也正是有了C语言,才有了Unix(我们还是先讨论讨论鸡生蛋还是蛋生鸡的哲学问题吧,谁拿西红柿打我),甚至有人说C语言就是为了Unix而设计的,可见Unix和C语言之间的非同寻常的关系。学习Unix现在容易多了,以前Unix都是运行在大型的服务器上的,可是现在有了Linux(按照GNU的意思,Linux就是Linux还不能叫Unix),大家可以在自己的PC上装一套Linux来学习,注意学习Linux不要拿Linux和Windows来比较,它们不可同日而语。Linux会让你知道什么是经典,永远让你在一个方向上大展宏图,Windows只会让你在别人的套子里耍上大刀,不时的还要换一个套子耍耍。下面罗列了一些我在学习Unix的一些经验:
1、学习Unix和C语言,先向大家推荐一本书《Unix高级环境编程》,这本书是学习Unix和C的经典之作,尽量把书中提到的系统调用都写个练习程序,先感性的认识一下Linux系统提供给用户的系统调用都是干什么的,怎么用。系统调用是内核提供给用户的功能用以申请内核服务,对于Linux内核的学习,从系统调用入手是个不错的办法。学习过程可以参看Linux的联机帮助,和网络上的资料。当你觉得差不多了的时候,那我给大家出一道联系题目吧:实现一个ftp服务器和客户端的功能,完全可以自己定义一些应用层的协议,只要能实现用简单的命令传输文件就可以了。
这个题目可以使你练习到TCP/IP的基本编程方法和文件操作的基本方法对于后面学习内核的文件系统会有帮助的。
2、当你对Unix系统有了些了解后,同时对于大部分的系统调用(关键是关于文件的系统调用,对于Linux系统的内核来说从文件系统入手相对容易一些)也有了清楚的认识后,再推荐你一本书《Linux内核情景分析》,该书是关于Linux内核的经典之作唯一美中不足的是没有关于网络子系统的详细介绍。你可以从文件系统的系统调用入手,慢慢的你就会对Linux有了一个更深入的认识。同时注意很多经典的方法和思想在Linux中的运用。你会认识到为什么 Unix把所有的东西都看成文件,对什么东西操作都是对文件操作,你会慢慢体会到Unix的经典之处了。
3、当你对Linux内核有了些了解后,你就可以找个方向来专门发展了,如果你想对眼下流行的网络编程感兴趣,那么再推荐你一本书《TCP/IP详细解释》,这本书是关于TCP/IP协议的经典之作。你会学习到TCP/IP协议栈是如果实现的,为什么,各层协议之间是如何工作的。你看完了这本书后,你就可以自己写一个dos攻击程序和sniffer了。
我说的简单,其实我提到的每本书至少都够你研究很长时间的,所以希望初学者别着急不骄不躁,相信只要努力过,一定会成为高手的。
在写代码的时候大家要注意养成好的代码习惯和风格还有抽象能力。
下面给出大家在写代码的时候的20字方针:
函数要小
尽量的把函数弄的通用点,代码行少点,一个函数只完成一个简单的功能,一眼就能看出来此函数有没有代码错误,每个函数都是健壮的,那么你的程序就是健壮的。
代码要少 完成一个功能的时候在逻辑清楚的情况下代码越少越好,千万不要比代码谁写的多啊。
算法要好 在完成一个功能的时候要考虑效率,目前计算机的内存很大,所以内存已经不是首要考虑的因素了,但是在某些特殊的地方效率还是很重要的。有效率高的算法,就不用效率低的算法,看看本版有一篇精华贴子是关于把一个字符窜两边的空格去掉的帖子(trim),很多人都提出了算法,但是有一个算法是最好的,效率最高,代码最少,是算法要好的最好体现
命名要清 命名要清楚,最要用汉语中的谓宾结构如set_buffsize()
文件要多 尽量把一个大的程序安功能分成多个文件,一个文件尽量不要超作1000行,这样就很清楚的知道那个文件代码是健壮的,那个文件有可能有隐患,在代码检查的时候可以有针对性的检查某几个文件
最后,还疑惑的话:
学习linux/unix编程方法的建议:http://bbs3.chinaunix.net/viewthread.php?tid=1070966&extra=page%3D1%26amp%3Bfilter%3Ddigest
|
|
|
|
|
#3楼 得分:6回复于:2009-03-29 22:11:14
LZ看过哪些书?
推荐《unix环境高级编程》
《linux kernel development》(中文名忘了)
《linux内核剖析》
《linux设备驱动》
《深入理解linux内核》
|
|