正在自学 Linux c/c++ ,列了一个计划,麻烦您指点下,看看是否有需要补充的修改的。 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
请不要在回答技术问题时复制粘贴 AI 生成的内容
itsuibi

正在自学 Linux c/c++ ,列了一个计划,麻烦您指点下,看看是否有需要补充的修改的。

  •  
  •   itsuibi Jul 14, 2014 via Android 10000 views
    This topic created in 4308 days ago, the information mentioned may be changed or developed.
    我是奔着linux c/c++ 程序员的方向努力的,下面是我自己通过google 及亦师亦友的三哥帮助写得一个计划。(我想知道如果我通过掌握这些书是否能通过面试,看一些公司的招聘条件:本人没有学历硬伤啊。)。
    如题是否有需要补充的,恳请从事IT的朋友指点计划是否可行,如果可以希望能耽误您一杯咖啡的时间写下您宝贵的意见。我将感激不尽,或许因为您的指点未来将多一个从事自己喜欢职业的人。


    我也想在看的途中自己试着做个小项目什么的,希望自己以后进入这个行业可以最快的上手适应。但是这方面太空白了,如果可以希望您能多说一些。
    List:
    已看过的书:

    鸟哥的私房菜
    c primer plus
    c++ primer plus
    windows核心编程(看了一般多吧,不打算从事win下开发就搁浅了)

    视频类教程看过:

    郝斌老师的c,sql,数据结构。c语言也能干大事等,有些乱有点不知道先从哪下手了…

    接下来打算看的书:

    打算按着这个顺序看,不清楚这个顺序是否正确
    Linux编程一站式学习 (正在看)
    linux系统编程
    C++标准程序库
    深度探索C++对象模型
    EffectiveC++
    STL源码剖析
    数据结构(C语言版) 严蔚敏
    大话数据结构
    数学之美
    TCP/IP协议详解-卷一
    算法导论(这个我的数学功底太差,不知道能否看的明白搁到最后)
    Unix环境高级编程
    Unix网络编程
    深入python
    高性能MYSQL(第三版)

    因为没有学历所以想多提高些自己,以后面试通过的概率大一些。
    47 replies    2018-11-17 08:50:40 +08:00
    jjx
        1
    jjx  
       Jul 14, 2014
    将里面的c++换成go 就好了
    ispinfx
        2
    ispinfx  
       Jul 14, 2014
    数据结构和算法是不是可以放前一点?
    xcc7624
        3
    xcc7624  
       Jul 14, 2014   1
    这种计划对于90%的人来说,都是不靠谱的。
    itsuibi
        4
    itsuibi  
    OP
       Jul 14, 2014 via Android
    @xcc7624 谢谢您的意见,请问您认为哪里比较不靠谱呢?如果是怕坚持不下来的话这块的话,这方面我对自己有信心,我现在每天坚持着自己一天要看多少页,当日的事情当日完,如果是其它方面还请您指正。
    missdeer
        5
    missdeer  
       Jul 14, 2014   1
    linux那几本不需要,有unix那几本就够了。shell没提及,数据结构一本够了,mysql暂时没必要吧。
    加一本《代码大全》吧,如果你看这书经常有种惺惺相惜的感觉,那至少是中段以上水平了。
    TankyWoo
        6
    TankyWoo  
       Jul 14, 2014
    《windows核心编程》如果想看,看下上册就行了,其实我想说不是很有必要去看。

    视频就免了,浪费时间,尤其“c语言也能干大事”,这都是些神马玩意。。。

    至于其他的书,没有一个绝对的顺序,都是经典的书,都值得看,但是:

    学习路线这玩意不是一个靠谱的东西,尤其在你还没有接触这个技术或这本书时。你只管学就行了,后面的路线自然会清晰,你会知道自己接下来应该去选择哪本书来学习。

    话说你上面列过的书,在大学时我大部分都看过了

    有些属于基础书,可以看个2遍,有些是经验书,不必强制去看,把目录翻下,隔段时间翻下自己感兴趣的章节就行。
    itsuibi
        7
    itsuibi  
    OP
       Jul 14, 2014 via Android
    @jjx 谢谢您的回复,不过我比较喜欢这个,暂时只想学习这方面的东西。
    itsuibi
        8
    itsuibi  
    OP
       Jul 14, 2014 via Android
    @missdeer 嗯嗯,谢谢您的宝贵意见。
    jianzong
        9
    jianzong  
       Jul 14, 2014
    前几天提过一个类似的问题:/t/122273,可参考。
    WildCat
        10
    WildCat  
       Jul 14, 2014   2
    一页一页看完你可以去BAT当CTO了
    itsuibi
        11
    itsuibi  
    OP
       Jul 14, 2014 via Android
    @jianzong 谢谢,认真的读了一遍很有帮助。
    allenforrest
        12
    allenforrest  
       Jul 14, 2014   1
    书单有点多。
    你需要先明确一下,学 Linux 是为了学习在 Linux 平台上开发应用?还是 Linux 内核和驱动开发?是服务器还是嵌入式?明确了这部分后,书单会精简很多。

    不过看你既然很痴迷 C++,应该多半是 Linux 服务器的应用开发?
    C++的书,你书单里的 C++ Prime 和 Effective C++ 看完就差不多了,重点是吃透,然后大量的操练。

    总得来说,希望精简掉至少一半的书,增加大量的实际项目操练。
    lequiet
        13
    lequiet  
       Jul 14, 2014
    其中的书和类似的书都有看过,曾经还在读书时也这么列出自己想看的书但是不了了之了,现在证明,用到什么看什么才是王道,补基础的话可以看看《深入理解计算机系统》。多用Python。 学linuxC/C++的话,要明白你自己学了想做什么。C/C++的书一开始不要看太多,应该边用边学。
    lequiet
        14
    lequiet  
       Jul 14, 2014   1
    列出的书的顺序完全没有什么逻辑和意义。非要从这堆书里挑的话,<UNIX网络编程>,<TCP-IP>, <数据结构>, 其它的先不用看。
    xuwenmang
        15
    xuwenmang  
       Jul 14, 2014   2
    单纯看书就一个作用:浪费时间。不动手一个月后忘光。。。反正我是这样。
    Kabie
        16
    Kabie  
       Jul 14, 2014   1
    ...脱离实践怎么看都没啥长进的。。。
    bengol
        17
    bengol  
       Jul 14, 2014   1
    把Unix环境高级编程和Unix网络编程看完看懂就够猛的了
    tjmao
        18
    tjmao  
       Jul 14, 2014 via iPhone
    准备应聘什么开发职位?举几个例子:数据库?网络?图形界面?内核驱动?嵌入式?编写图形界面,C艹是用得着的。

    读这么多书,你自己准备了足够的时间吗?全日制高等学校计算机专业工学士学制为肆年,以你的情况,大概两年就能学完。既然自学,去考个文凭吧。不亏。

    计算机专业设有一些通识性质的课程,主要介绍计算机的发展史、计算机和科学与工业的关系、计算机的构造及其设计理念、数据通信与计算机网络、信息安全、最近10年的研究方向和进展等,我觉得你更需要补补这个。

    另:多学数学,多学英语。
    assassinpig
        19
    assassinpig  
       Jul 14, 2014   1
    书太多了,cpp书多易学难用, 建议还是有点针对性的拿一个方面来搞点项目,不然只有cpp的话,学习周期长不说万一到最后还没核心竞争东西的话就不值得了
    tonyluj
        20
    tonyluj  
       Jul 14, 2014   7
    正巧也在朝这个方向努力(后端工程师),不过我不太打算深入学习C++,并且我也掌握一些其他可以赚钱的技能,譬如Python和Go(一半大公司才有,或者游戏后端开发)

    基础(没基础,下面的书就不要看了):
    操作系统 Minix作者写的,刚退休,泛泛的讲了操作系统,务必熟悉
    深入理解计算机系统,不错
    数据结构,找一本靠谱的即可,大话也可以
    算法,看 Sedgewick的算法即可,算法导论也不是很难,跟数学关系不大,主要还是逻辑思维能力


    Linux:
    APUE,不看这本书都出门都不好意思和别人打招呼,缺点是面面俱到,针对Unix,没有特别倾向于Linux
    Linux Kernel Development by Robert Love 介绍内核,比深入理解Linux内核简单通俗点
    Linux System Programming by Robert Love 比较喜欢看Love的书
    深入理解Linux内核 内容稍多
    UNP,内容稍旧,也就看看Socket,了解一下过时的poll/select,最新的epoll/kqueue直接看源码吧
    LDD,看看驱动也无妨

    TCP/IP V1 必须要看,TCP/IP三四次握手,流控,滑动窗口,RTT,状态图,必须信手拈来

    C:
    TCPC 经典啊,不能不看
    C专家编程,讲了讲C语言的事情,务必掌握C各种数据类型占用内存,const使用,C程序在内存的结构BSS等等
    C指针与陷阱
    C标准库

    Python:
    官方Doc
    从项目中获取经验比看书印象深刻

    C++:
    我一直当带class的C用,C++目的就是一个多范式的语言,怎么用,怎么选择是自己的事情
    STL/EffectiveCPP不错
    C++对象模型也不错

    source code:
    推荐memcached 少,libevent
    redis
    Nginx 必看
    python的有tornado\gevent(libev)\twisted(不看也可以)

    其他技能:
    VIM/emacs 选一个,推荐vim
    GDB必备
    makefile要会
    git要会

    要完整的做下来,大概需要1-2年左右,并且做Linux C开发稍微枯燥一点,别人写个Android小游戏正在向像别人炫耀的时候,别放弃别懊恼~~~北大青鸟培训Android的老多了,为啥很少有培训Linux开发的~~~

    葵花宝典给了LZ,如果楼主能完整的做下来,大概能满足腾讯/阿里的后端/系统工程师的要求~~~
    tonyluj
        21
    tonyluj  
       Jul 14, 2014
    打的稍快有基础错误,
    TCPL the c programming language K&R 写的

    python也可以开发后端:
    一般是python + gevent / python(pypy) + twisted

    go最适合开发后端了,不少MMOG游戏后端已经用Go,七牛也是Go

    nodejs个人看不好,它能做到的别人都能做到,它做不好的,别人依然做的很好
    GPU
        22
    GPU  
       Jul 14, 2014
    @tonyluj 我也刚刚开始接触学习C 也是在看K&R的那个 .

    我是打算把C 理解一下 , 然后用学习 go 去写我自己的需要的东西 ,因为貌似用C 做后端有点什么那个说不出来.

    还有层主是否 可以说一下啊 有哪些方便的知识学习有助于学编程呢 ?

    很多人都零零碎碎的说 什么 数据结构 微机原理这些 . 能否谈一谈呢?
    itsuibi
        23
    itsuibi  
    OP
       Jul 14, 2014 via Android
    @allenforrest 嗯嗯,谢谢您的指点,正如您说的我想做服务器方面的开发,还有您提到的大量的练习,我也想做实际的项目,我仅仅是把书上的习题和例子敲了出来,关于项目实在是太空白了无从下手。
    luoqeng
        24
    luoqeng  
       Jul 14, 2014
    书随便翻翻就可以了,直接上代码来的直接些,比如弄个编译器前端,OS内核,TCP/IP协议栈的源码。 你看这样基本都全面覆盖了。
    iptux
        25
    iptux  
       Jul 14, 2014
    把日常用的操作系统换成 Linux
    tonyluj
        26
    tonyluj  
       Jul 14, 2014
    @GPU “有哪些方便的知识学习有助于学编程呢 ? ”
    操作系统 》 C -》数据结构(里面多少有点算法) 》 Let's Go
    当Go熟练的时候,开发过几个项目之后,你就会不知不觉的需要了解底层,这些以后再说也不晚
    itsuibi
        27
    itsuibi  
    OP
       Jul 14, 2014 via Android
    @tonyluj 谢谢您解惑,关于项目实践多练习,你能否说的详细些,我也想边看书边做项目,可是这个项目却无从下手。
    allenforrest
        28
    allenforrest  
       Jul 14, 2014
    @itsuibi
    可以尝试用 C++ 在 Linux 上写一个简单的 HTTP Server,这样能用到你学习到的 C++ 语言、网络编程、多进程/线程、并发处理、STL、数据结构等等,麻雀虽小,五脏俱全。
    总代码量不会很大,但是能学到和巩固的知识太多了。
    tonyluj
        29
    tonyluj  
       Jul 14, 2014
    @itsuibi
    首先从APUE上,把每个重要的例题都敲一遍,重点是文件IO进程线程这些

    然后看UNP吧,看TCP/IP、socket、select/poll这些就差不多,SCTP这些都没人用,不用看了,然后从网上搜搜epoll,学习一下。在看这些的时候 一定要动手看看源代码,推荐FreeBSD+Linux一块看,比如netinet/in.h这个头文件中sockaddr_in结构体,Linux 下的就和FreeBSD下就不一样,顺遍谷歌一下,印象肯定很深。

    这时候,可以写一些Demo项目:比如单进程TCP服务器(从最简单的echo开始),多进程、多线程、select、一直到epoll。
    然后对Linux 网络编程有初步了解

    之后可以看看memcached的源代码,从网上找份别人整理的文档,调重要的部分看一下。
    然后自己实现一个简单的。期间可以学学libevent或者libev这两个库(推荐libev)。

    然后可以找份文档,看看Niginx源代码,这个可是好东西。Tengine(阿里fork的nginx)的文档不少
    然后自己实现一个,简单的就可以

    期间你可能需要温习TCP/IP的知识,了解HTTP的知识。

    到这里,基本能满足校招或者初级后端工程师或系统工程师的能力需求了
    当然必不可少的要刷题~~~leetcode 剑指offer 编程之美 微软100题 等等~~~
    bnpysse
        30
    bnpysse  
       Jul 14, 2014
    建议还是不要看太多的书,找一本中级左右的,从头做一遍程序就差不太多了。如果中间遇到什么问题,可以尽量多Google一下嘛。

    类似编程这类需要动手的,光看书效果并不好
    YouXia
        31
    YouXia  
       Jul 15, 2014
    Linux C/C++ 学习曲线太长,如果只是想找个不错的工作的话,不建议跳此坑。
    hualuogeng
        32
    hualuogeng  
       Jul 15, 2014 via Android
    csapp打个基础。
    xixi10111011
        33
    xixi10111011  
       Jul 15, 2014
    @tonyluj
    要是当年找工作能意识到第一份工作的重要性,抑或是能按照这个方法走下来,现在的职业发展可能就会是另外一番景象。
    建议即将找工作的/有意向从事偏底层开发的硕士生按照这个过程走一遍。
    dingyaguang117
        34
    dingyaguang117  
       Jul 15, 2014
    @tonyluj leetcode 什么时候火的
    xgdyhaiyang
        35
    xgdyhaiyang  
       Jul 15, 2014
    给LZ再推荐一本:《深入理解计算机系统》
    C++不是必要的,Python 可以看一下。
    不需要两年,我2010年大三开始走你现在打算走的路,只花了半年,就拿到了腾讯暑期实习offer.
    itsuibi
        36
    itsuibi  
    OP
       Jul 15, 2014
    @xgdyhaiyang 可是我没有学历哎...估计没戏
    duzhe0
        37
    duzhe0  
       Jul 15, 2014   1
    书不在多, 在精。 同类型的书看一本就够了, 太过深究细节的书也不要花太多时间。
    帮你做些减法
    ----
    C++标准程序库
    深度探索C++对象模型
    EffectiveC++
    STL源码剖析
    ----
    这几本只看第一本就可以,而且最好放在算法导论后面



    -----
    Linux编程一站式学习 (正在看)
    linux系统编程
    Unix环境高级编程
    Unix网络编程
    --------
    前两本估计内容相似,都是linux编程入门书籍,内容泛而不精, 选一本快速过一遍即可。 后两本太过经典,只涉及标准UNIX系统接口和核心C库接口,需要精读。

    -------------
    数据结构(C语言版) 严蔚敏
    大话数据结构
    算法导论(这个我的数学功底太差,不知道能否看的明白搁到最后)
    ----------------
    只看最后一本即可



    --------------
    数学之美
    TCP/IP协议详解-卷一
    深入python
    高性能MYSQL(第三版)
    -----------------
    数学之美没看过,不评价
    TCP/IP协议详解 我感觉有点老,可以考虑换成国内的教材《计算机网络》
    python的话真不知道有什么书值得推荐,但我觉得你更应该先学Shell
    高性能MySQL并不是一本mysql入门书
    duzhe0
        38
    duzhe0  
       Jul 15, 2014
    我建议的书单:

    算法导论
    深入理解计算机系统
    linux系统编程
    Shell脚本学习指南(非常重要)
    UNIX环境高级编程
    计算机网络
    UNIX网络编程

    边读书边实践是非常重要的,装一个linux的虚拟机, 多折腾折腾
    itsuibi
        39
    itsuibi  
    OP
       Jul 15, 2014
    @duzhe0 谢谢您给我一个清晰的思路,忘记说了,我已经装了centos 看的时候也都在机器上敲了,也认真的看了每个人的热心解答,关于建议我不要只看书,我应该怎么实践呢,只是书上的例子我自己也感觉有点少,不知道如何选择适合自己的项目。
    duzhe0
        40
    duzhe0  
       Jul 15, 2014
    实践就是说看书的同时把代码敲一下,编译运行一下看看效果,加深印象和理解。看完以后, 也可以选择写一个简单的ftp服务器, http服务器之类的东西练手。能找到一份相关的工作是最好的,就不愁不知道干嘛了
    MarioLuisGarcia
        41
    MarioLuisGarcia  
       Jul 15, 2014
    @xcc7624 个位数的9没有了,还有小数部分的9
    GPU
        42
    GPU  
       Jul 15, 2014
    @tonyluj 关于操作系统有什么书推介一下呢, 貌似是理解了系统的原理这些的, 对编程或多或少有点帮助. 新手不是很懂 .
    hellogmh
        43
    hellogmh  
       Jul 21, 2015
    @xixi10111011 我跟你有一样的想法,但是任何时候都可以华丽转身,就看舍不舍得放弃!
    HowToMakeLove
        44
    HowToMakeLove  
       May 5, 2017
    3 年了,楼主我问你,你现在学的怎么样了?
    itsuibi
        45
    itsuibi  
    OP
       May 8, 2017
    @HowToMakeLove 3 年了,还有人关注谢谢,生活仍在继续,理想还未达到;有些事不是想就可以达到,我败给了生活。
    KaGa
        46
    KaGa  
       Nov 16, 2018
    四年了,楼主学的怎么样了?
    我也是刚开始自学编程,发现书单跟楼主差不多,只是我学完 C 语言就学了数据结构与算法( C 语言描述),还有 C++ primer plus,Python Cook Cook,STL 源码剖析,鸟哥的 Linux 私房菜和一点点 Java,l 明年就毕业要去找工作了,嗨呀,好焦虑啊。
    最近在练标准指法打字,因为发现编码盲打总是出错.....
    itsuibi
        47
    itsuibi  
    OP
       Nov 17, 2018
    @KaGa 我没学出来,希望你能坚持下去。
    About     Help     Advertise     Blog     API     FAQ     Solana     2702 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 89ms UTC 02:42 PVG 10:42 LAX 19:42 JFK 22:42
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86