免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: send_linux
打印 上一主题 下一主题

[Linux] Linux/UNIX系统编程,系统程序员成长的基石?(获奖名单已公布-2014-2-17) [复制链接]

论坛徽章:
1
白羊座
日期:2013-08-22 17:30:33
31 [报告]
发表于 2014-01-12 17:43 |只看该作者
1、您在Linux/UNIX系统编程行业的经历及经验
   参加工作不觉已有4年,个人从事的工作勉强算嵌入式开发吧,处于刚入门的水平。刚好年底,总结一下。
懵懂无知之期:
   刚刚毕业的时候,仅仅用过在单片机上用C语言写一些极其简单的跑马灯程序。那时候以为所谓的计算机技术,大抵不外如是吧--用C语言控制控制硬件管脚。软件的唯一用处就是按照硬件设计的逻辑,做一些简单的拼凑。毕业后加入了现在的公司参加工作,那时候linux是什么都全然不知,更别提在其上进行软件开发。机缘巧合的是,公司的项目需要,不得不去接触linux。还记得将一个项目代码移植到另一个项目,面对着makefile满脸的茫然,于是只能硬着头皮照猫画虎的改,结果可想而知--杯具。
开始了解linux:
   在项目开发中屡屡遭遇挫折后,开始有了一种迫切去了解linux的需求。于是便从读书开始,第一本书是<鳥哥的 Linux 私房菜>,通过这本书,也算是对linux有了一非常感性的认识,然后通过<跟我一起写 Makefile>了解了软件编译系统的构造,接着就是啃APUE这个大部头,还有就是啃另一个个大部头<深入理解计算机系统>。通过上面几本书的洗礼,才算逐渐可以应付起平时项目开发中种种需求。
开始了解设计思想:
   虽然是可以应付平常的项目了,但另外的困惑却又随之而来,自己开发的程序,在项目需求有变更时,总是会处于牵一发而动全身的无奈境地。后来有幸参与了公司的一个公版代码的重构工作。于是开始发现,程序开发除了实现功能还有另外一些更重要的东西需要去关注。软件的可复用性,易维护性,模块性等等,而对于这些东西的考虑,可以称之为"软件设计的艺术"。<UNIX编程艺术>这本书,对于我来说,可以说另一次的技术启蒙。

2、Linux/UNIX系统编程职业生涯的发展探讨
    在网络上,经常看到关于linux与windows,或者java,C++, C等这些东西的争论,而论点基本就是谁更优越。个人觉得,这些都是无谓之争。我们需要记住的是,技术说到底其实就是工具,仅仅是一种达到目标的手动。不同的工具适用于不同的场景。因此我们要尽量避免的一个误区是将自己限定于某种技术,固步自封!因为这对于个人职业发展有百害而无一利。   
    其实不管是Linux/UNIX系统编程还是其他什么编程,对于职业发展的考虑都大抵可以从两个方面出发:兴趣与钱途。至于孰轻孰重则取决于个人的价值观。
    linux系统编程的职业发展,单单从技术的角度来考虑的话,可以从以下几个方面去考虑吧:
a)Linux的系统、网络、服务、集群、网站、网络应用方向。
b)嵌入式开发、UNIX/Linux应用系统开发,Linux内核驱动开发方向。
c)Linux下的数据库,如Mysql、oracle和windows下的SQL Server及DB2等。

3、对于新入门的Linux/UNIX系统编程人员来说,您有什么话对他们说?
    本人自己也属于刚入门阶段,教诲肯定是不敢有的,只能说些个人感悟,予以共勉:
a)软件技术日新月异,因此这就要求我们不可心浮气躁,切记漫无目的的跟风;可以看看陈皓<程序员技术练级攻略>。
b)不要将自己限定于技术区域,多了解了解整个行业的发展,对于自己肯定是会有更多的好处的。

论坛徽章:
1
技术图书徽章
日期:2014-03-06 15:29:50
32 [报告]
发表于 2014-01-12 18:59 |只看该作者
讨论话题:
1、您在Linux/UNIX系统编程行业的经历及经验
  本人就是一个大四的学生,往嵌入式linux的方向努力。目前没有什么项目经验,但实验做了不少。应用层的书读过了《beginning  the linux programming edition 4》作为入门。本人也有《apue》,而且是先入手的,看了几页,发现一开始就跟你讲标准什么的,完全不知所云,瞬间急流勇退,买了本《beginning the linux programming edition 4》,当我读完这本书  再来看《apue》的时候,发现我当初避开apue是正确的。但是还没有足够的时间把这本书通读完。一直以来,想着linux黑客们能马上出一本专门针对linux系统编程的书籍,哈哈  终于等到了。。准备年后入手,听评论,貌似我之前的linux应用层的书籍可以暂时压箱了。

2、Linux/UNIX系统编程职业生涯的发展探讨
  本人大四,正准备入行,现在菜鸟还算不上,可能是我的目标定的太高了,一般嵌入式linux系统工程师都需要硕士学位以上,本科生一般入行做应用层编程。正如上面几位前辈说的,不要好高骛远,这句话是我听过的最多的劝诫之一。还是得把买的开发板摸透,认真读程序 然后码程序。听我的毕业设计的导师还有其他相关人士说:未来是google的天下,ios已死。虽然听着有点冲,但毫无疑问,在嵌入式行业,android是未来的发展方向,从linux转android想必是大势所趋。

3、对于新入门的Linux/UNIX系统编程人员来说,您有什么话对他们说?
  我自己就是一个新手,大四放弃了保研。别人找工作的时候,我还在读书码程序,因为给自己定的门槛有点高,专业知识还没有完全成型(成熟)。最想对自己说,还有最后的半年时间,努力加油,hard work will pay off! 想对学弟学妹说:其他行业我不知道,但至少在电子计算机行业,学好理论知识对你以后的学习是大有裨益的,千万不要被报纸上的那些天才黑客迷惑,想要入行,还的脚踏实地。

论坛徽章:
48
15-16赛季CBA联赛之青岛
日期:2021-01-07 13:41:2315-16赛季CBA联赛之上海
日期:2020-12-01 18:02:0720周年集字徽章-20	
日期:2020-10-28 14:14:2620周年集字徽章-20	
日期:2020-10-28 14:04:3015-16赛季CBA联赛之天津
日期:2020-10-18 22:51:412016猴年福章徽章
日期:2016-02-18 15:30:3415-16赛季CBA联赛之北控
日期:2015-12-22 13:30:48操作系统版块每日发帖之星
日期:2015-12-07 06:20:00操作系统版块每日发帖之星
日期:2015-09-04 06:20:002015亚冠之德黑兰石油
日期:2015-08-05 18:46:082015年亚洲杯之巴勒斯坦
日期:2015-04-19 10:42:502015年亚洲杯之巴林
日期:2015-04-09 08:03:23
33 [报告]
发表于 2014-01-12 20:13 |只看该作者
1、您在Linux/UNIX系统编程行业的经历及经验
我一直不是做编程开发这一块的,不过以前上学的时候就想做编程,可惜刚毕业后并没机会进IT行业,等进入IT行业了之后一直也仅是做硬件技术的多。不过,自己在空余时间自学点Shell、Perl编程,不过还都是皮毛,主要是工作上面不相干,做起来也没啥动力。所以这一块的经验也没上面做开发的兄弟多,至少知道的是这活得靠动手多练,经验是靠失败慢慢积累出来的。前面的人也说得对,无论哪种编程语言都无所谓,其实不少东西都是不变的,得培养自己独有的设计思路;个人认为算法很重要,实现同样的功能,你用了100行代码,别人用了60行代码就ok了,执行效率是不一样的。
另外,4#说的我也有同感,进行后有一个带入门的师傅很重要,他能指点你该怎么走,提供些有效率的参考信息,这样能让你少走很多弯路。但实际生活上,很少能在对的时间里面碰到对的师傅;这一点在其他行业其他岗位上应该也是这样。

2、Linux/UNIX系统编程职业生涯的发展探讨
我在这方面接触不多,也说不了多少,不过也有碰过些以前是做编程的同事,也了解过一些背后的辛酸。以前一个女同事做编程的,说经常熬夜加班,有次通宵后第2天早上没回去休息之前老板竟然问她还能不能继续干活。现在公司开发部门去年有一哥们在家不知道怎么晕倒,送医院后发现是脑溢血(不能说肯定就是他工作原因直接导致,但起码应该能算个间接因素--用脑太多),后来公司还发动所有人捐了近20w给他做手术。看过资料,不少写代码的最晚到30多岁就得考虑转型了,毕竟拼体力的干不过刚毕业的年轻人,而且很多都是重复性的工作。
我做硬件那么久,发现到后面涉及的code层面的时候觉得如果有些软件编程的经验的话会更容易贯通,而公司里面level比较高的工程师也大多是软件背景出身的。所以有时候我会想是否毕业时应该做些编程方面的工作,之后再转硬件会比较好。当然,如果能知道职业发展的目标,自己定好学习线路也行,但没人或大部分人能一开始就知道自己以后就一定做什么,很多时候出现各种变数而进行修订。

3、对于新入门的Linux/UNIX系统编程人员来说,您有什么话对他们说?
基础很重要!一开始不用学太多编程语言,先找个最基本的好好学好好练习,比如C;之后再学其他的比如C++、Java之类就快多了。培养好良好的书写习惯,这可以增加你代码的可读性和避免不必要的问题(比如少了个分号之类导致编译时出错),可以看看林锐的《高质量程序设计C/C++》。除了单纯编程知识外,最好也同时涉猎些其他的相关知识,比如数据结构、硬件技术(硬件离不开软件,软件同时也需要硬件的支持)。自己学会定好目标,按部就班一步一步实现,不要老想着一蹴而就,要知道罗马城也不是一天就能建成的。

论坛徽章:
0
34 [报告]
发表于 2014-01-12 23:03 |只看该作者
其实自己挺喜欢linux的,在下面编程,外人一看都觉得你是高手,可惜公司偏要选window程序,搞得我现在linux好多东西都忘了。希望明年能专心做一个linux项目

论坛徽章:
208
巨蟹座
日期:2013-09-02 09:16:36卯兔
日期:2013-09-02 20:53:59酉鸡
日期:2013-09-05 21:21:45戌狗
日期:2013-10-15 20:51:17寅虎
日期:2013-10-18 21:13:16白羊座
日期:2013-10-23 21:15:19午马
日期:2013-10-25 21:22:48技术图书徽章
日期:2013-11-01 09:11:32双鱼座
日期:2013-11-01 20:29:44丑牛
日期:2013-11-01 20:40:00卯兔
日期:2013-11-11 09:21:32酉鸡
日期:2013-12-04 19:56:39
35 [报告]
发表于 2014-01-13 09:33 |只看该作者
最难的是搞懂底层真正的运行机制,而不是怎么调
否则很难提高性能

论坛徽章:
0
36 [报告]
发表于 2014-01-13 09:42 |只看该作者
正在编辑....

论坛徽章:
1
天蝎座
日期:2013-12-06 18:23:58
37 [报告]
发表于 2014-01-13 10:30 |只看该作者
回复 26# 奋斗的小牛


    Linux/UNIX系统编程手册

论坛徽章:
2
午马
日期:2015-01-27 11:22:392015年辞旧岁徽章
日期:2015-03-03 16:54:15
38 [报告]
发表于 2014-01-13 12:19 |只看该作者
1、您在Linux/UNIX系统编程行业的经历及经验
2、Linux/UNIX系统编程职业生涯的发展探讨
3、对于新入门的Linux/UNIX系统编程人员来说,您有什么话对他们说?


这些问题之前,我们可以先讨论一下这是一本什么书。
10年的时候书出来,不久就读到了电子版本,基本上算是比较早的读者了。我的意见是,这本书更应该是一本参考用书,而不是一本教程。
为什么这么讲,这类书的好的教程,我更推荐《Linux Programming by Example》 http://book.douban.com/subject/1610230/ 有实例,再旧都是practice。
作者mtk本身就是manpage的维护者,这本书显然是受到了manpage的例证影响,很多章节的内容,基本是和man的结果一致的,换句话说,这本书不会有太新的内容,超越man。
另一方面,这本书同样受到apue的影响,可以找到和apue的相同的例子,也有不少和manpage相同的例子。相似地以api为线索来分章节。而且由于不可逆的原因,这本tlpi肯定是要比apue新很>多,而且是以linux为平台,谈了susV3/V4的内容。所以部头要比apue大很多。
在mtk的页面上有这本书的course material,当然我不是很推荐以这本书入门,太过碎片化,还是推荐上面那本书入手,早有中文版本。
但这本书是适合用来作参考书的,标准本身和linux都是变化中的平台,里面的东西也随时会过时,我比较建议入手的朋友们,在读到困惑的地方或者觉得有误之处,尽量同mtk直接邮件交流,>或提交errta。他不是很懂所有的细节,但他会对资料来源和具体数值做对校。
我之前给mtk写过一些邮件讨论这书的细节,基本上他的意见是每次print,或者电子版更新会尽量考虑errta的补入,和标准的变化。所以这书的内容是会变的,大家可以看电子版本更新,自己
攺进来。

还有,如果不是做linux开发的,而是其他类unix平台,如BSD/Solaris/AIX的话,还是看各自平台的api,看susV4,看apue,不要以这本书作参考。


然后谈谈主题。
我认为这个行业还是很有意思的,谁有兴趣入门,我都愿意交流。
从入门的角度看,我认为基本的知识就是c语言,操作系统,cpu寄存器这些基础知识。加上对linux/unix的兴趣。如果是大学本科的话,可以在二年级的时候读这本书,在这本书之前可以把csapp给读了。然后以上面的linuxprogrammingbyexample当成教材来练。
从发展的角度,目前来讲,虚拟化,嵌入式平台有很大的发展空间,就算是android编程,也可以对底层的linuxkernel有比较好的理解。而且在nosql/openstack的项目里,linux编程都很重要>的。这些api平时多练练sample,用的时候就熟悉了。 当然就算遇到类似crashdump,不熟悉的api,直接翻源代码,翻这本书来参考,也是来得及的。
我认为这个方向的编程,是没有太好的捷径的,也只有多练习,多看代码,新入门可以追一些较小的开源项目,然后可以看看linuxkernel的某个子模块来理解。
~      

论坛徽章:
2
午马
日期:2015-01-27 11:22:392015年辞旧岁徽章
日期:2015-03-03 16:54:15
39 [报告]
发表于 2014-01-13 12:27 |只看该作者
btw, 我是 不觉得这本书名应该包括UNIX这个词 , 就像它的英文名也只讲到linux.

\ 虽然说有提到susV3/V4, 但问题是 就算不同的平台都符合标准,但他们的implementation和practise behavior都有很大的不同, 和mtk聊的过程中,也发现他specific on linux,而且是常见的linux发行版本作为参考标准,即使是不同linux平台没有全实现的,也不尽收录。

像-Wall -std=c99 状态, 没有提关于C99的具体内容,只是说linux平台自身, 所以像printf的 %zd也没有谈及。

那就更不应该 include UNIX了。

imdo

论坛徽章:
0
40 [报告]
发表于 2014-01-13 15:58 |只看该作者

在Linux系统下做开发时间比较短,半年时间的样子,目前又在研究Linux/unix网络编程,所以对此书还是比较想拥有的,希望可以赠我一套
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP