美文网首页Linux我爱编程
linux开发-摘自知乎

linux开发-摘自知乎

作者: 荣子3507 | 来源:发表于2018-05-23 21:45 被阅读33次

作者:Kerr Wang

链接:https://www.zhihu.com/question/20730157/answer/82034823

来源:知乎

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

首先,要学Linux编程,你得会用Linux,也就是得在命令行环境下生存下来。什么叫生存下来呢?就是我现在给你一台主机,键盘,显示器啥的,然后给你一个服务器版的Linux系统的光盘或者其他什么安装盘,你去把这台主机用起来。什么叫用起来呢?你平常用Windows电脑干啥,你现在还用这台电脑干啥。新建文件啊,查看文件,编辑文件,保存文件,复制,移动,删除,打包,解压,联网,下载个什么东西啊等等基本操作你得会。还有软件怎么安装,不仅要熟悉apt-get和yum,还有给你源码的软件怎么安装你得会,另外要熟悉Linux下的文件系统,每个目录是干啥的,目录下的文件是干嘛的,插入一个U盘,如何挂载这个U盘,操作U盘下的文件你得会啊。这个看一本书就行了,《鸟哥的Linux私房菜-基础篇》,记得是基础篇,记得安装Linux系统自己操作一遍,还有一本是服务器篇,你既然是要学Linux编程开发,那就不用看服务器架设篇了。做完这一步,你可以开发了。

Linux下开发,两种基本语言,C和C++咯,至于其他人要说Python,Java,Ruby啥的不讨论,因为就讨论Linux下的开发,什么是Linux开发呢?就是利用Linux的API进行开发咯,首先你得会C语言或者C++语言啊,这个去看丹尼斯的《C程序设计语言》,注意是丹尼斯的,C++的就去看《Essential C++》或者《C++ Primer》,然后在Linux下的程序开发,Linux的API是遵循POSIX标准的,自行谷歌什么叫POSIX。Linux下程序开发几大块,文件操作,这个很重要,你要知道Linux下的一个思想叫一切皆文件,可见文件读写多重要了。I/O模型,五大I/O模型,阻塞,非阻塞,复用,信号驱动和异步I/O,环环相扣丝丝相连,概念和操作都要仔细琢磨,最重要的当属复用,就是select,poll和epoll,面试笔试就问这个东西,要知道他们的适用范围和优缺点。进程和线程,包括进程和线程的概念和区别,进程和线程的建立,同步,通信,互斥等等。网络编程,就是socket编程,Linux编程,这个学不好等于啥都没学,这个估计还得了解一下TCP/IP协议,编程方面主要是那几步,申请socket,bind,listen,accept几步,要熟悉种常见的服务器模型,进程池线程池方式的,多进程方式的,复用方式的,最重要的是复用方式的,这部分可以先只写服务器,测试直接用Telnet就好了,加快速度么。其余的就是数据库,这个东西不属于Linux,但是还得会,要不然啥都做不了,看那本《MySQL必知必会》,当然深入的话还得找本专业的书细细看。这个时候就可以真刀真枪的去干点有意思的事了,比如写个终端下的类似于QQ的软件啊,包括服务器和客户端啊,慢慢的增加并发数,比如可以同时支持五千人在线啊,文件传输啊等等。然后学学Qt,熟悉一下图形界面,可以把你的终端下的QQ完全改成图形界面下的。估计到这个时候,你差不多在Linux下进行像样的开发了吧。在这个过程的学习中,相信你已经学会Makefile的编写啊,编译啊,链接啊等等一些细枝末节的东西了,还得反思一下把零散的东西串一串,要系统化。

接下来就是继续深入了,Linux为什么这么多人用,好处在哪里,你得去稍微的看看内核源码啊,内核的进线程调度啊,我告诉你,Linux内核的一个链表都够你研究好几节课的。哦,这个时候,数据结构啥的又得翻出来加强一下了不是,计算机网络啥的也得看看,操作系统原理啥的也得看看呢不是,把这些东西放在这里是合适的,前面让你知其然,知道怎么编程怎么做,现在要知其所以然了不是。

在学习的过程中,要不断积累和了解最新的东西,最起码要知道个概念,比如分布式,大数据,云计算,机器学习,计算机视觉,JIT等等,形成知识链,这样不会导致你最后不知道学啥。有个建议,一定要学一下Python,一定要学一下Python,一定要学一下Python,重要的事情说三遍。它能极大的提高你的工作效率,也能和C/C++结合在一起用,很nice的语言。

最后推荐几本书(前面的包含在内):

《鸟哥的Linux私房菜 基础篇》

《C程序设计语言》 丹尼斯写的

《Linux C编程一站式学习》 宋劲杉写的

《Eensstial C++》

《C++ Primer》

《Effective C++》

《Linux网络编程》 宋劲彬写的

《Unix环境高级编程》

《Unix网络编程》 两部

《Linux高级程序设计》 华清远见的

《MySQL必知必会》

《数据库系统概念》

《大话数据结构》

《算法导论》

《Linux内核情景分析》

《深入理解Linux内核》

《深入理解计算机系统》

《现代操作系统》

《深入理解计算机网络》

《TCP/IP》的三卷经典书

廖雪峰的Python学习网站

另外各大论坛,stackoverflow, 博客园,CSDN等等,多逛逛,当然还有知乎也要多逛逛。差不多就这么多了吧,前文列举的东西,只要完成一半,估计就不用我教你学了,你自己应该知道自己该学啥了……有时间在更,估计是没时间了……

1月20日更:

之前有一点忘记写了,一定要学习一款版本管理工具,首先要了解一下什么是版本管理。然后选择一款版本管理工具,这个很重要。目前常用的是git和svn,就用git就好了,当然你要去用svn那也行。还是建议用git,看廖雪峰的git教程就好。

相关文章

  • linux开发-摘自知乎

    作者:Kerr Wang 链接:https://www.zhihu.com/question/20730157/a...

  • 转自知乎

    • • • 我曾在网上和书中找过一些提升专注力的方法,但要么太鸡汤,要么太学术。前者的缺陷是「看似有道理,但道理谁...

  • 来自知乎

    我大概就属于这种人吧。 从小就属于埋头苦学的那类人,可依旧平庸。上学十几年,却发现自己还是不会学习。 小时候和高中...

  • 摘自知乎。

    海子有一首诗:”你来人间一趟,你要看看太阳,和你的心上人,一起走在街上,了解她,也要了解太阳。“ 但我害怕爆表的雾...

  • 来自知乎

    我一直感觉任何正向发展的东西到了极致所产生的美,都会令人生悲。正所谓“美哭了”、“感动哭了”其实无外乎是极致美所导...

  • 摘自知乎

    《路人》 不知为何, 明明想和你说话,却骗你说, 风雨正好,该去写点诗句。 不必嘲讽我, 你笑出声来 ,我也当是天...

  • 来自知乎

    一、分类 中国诗词的分类法是在唐代中后期形成的。 唐代诗分为:古体诗和今体诗(也称近体诗)两大类。 古体诗包含除楚...

  • 整理自知乎

    最近在简书上看到一篇《知乎上102个简短而深刻的回答,看完人生豁然开朗》,感觉其中不乏有好的回答,但也有些答案鸡汤...

  • 来自知乎

    去工作、去学习、去复习、去做各种尝试等等等等,一年试错时间又何妨?!用心去学习,去思考,去试错,未来会有很多可能,...

  • 转自知乎

    其实,按着年龄,李白大了杜甫整整十一岁……真的。杜甫诗712-770,而李白是701-762,自己加减乘除一下。可...

网友评论

    本文标题:linux开发-摘自知乎

    本文链接:https://www.haomeiwen.com/subject/hfvdjftx.html