V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
soulomoon
V2EX  ›  程序员

刷完 SICP 入门编程后应该如何继续学习

  •  3
     
  •   soulomoon · 2017-03-15 22:26:05 +08:00 · 12374 次点击
    这是一个创建于 2813 天前的主题,其中的信息可能已经有所发展或是发生改变。

    一个金融专业毕业的编程小白,花了 5 个月刷完 SICP 并且完成几乎所有习题后(答案都放在 soulomoon/SICP上,写得挺烂)觉得勉强进入了编程的世界了,并且同时在外包公司打杂学习有了一定的网络编程基础。
    现在正在为了成为一个合格的 python 后端工程师,成功找到 python 后端的工作,现在面临两个选择:
    1 重点继续刷 clrs , csapp ,不啃完誓不罢休,再同时兼顾一下学习 python 和 flask 。
    2 重点学习 python ,研究 flask , dajongo 等流行框架的使用,再轻度学习一下简单常见的算法。
    这两者该如何抉择?想听听大家的意见

    第 1 条附言  ·  2017-03-15 23:30:18 +08:00
    补充一点东西, 2016 年毕业后连 html 是啥都不懂,走去一家小外包公司写点 c#和一点前端,
    现在要想走出来,所以还是需要刷点砖头书吗?
    52 条回复    2017-03-17 18:11:56 +08:00
    ivvei
        1
    ivvei  
       2017-03-15 22:31:02 +08:00 via Android   ❤️ 3
    反正你不急着找工作,那就 1 吧。另外,不要把自己绑死在一门语言上。
    Zachary
        2
    Zachary  
       2017-03-15 22:38:36 +08:00
    1
    lsmgeb89
        3
    lsmgeb89  
       2017-03-15 22:43:59 +08:00
    clrs 有的啃了,习题全做的话,估计得几年。
    kingcos
        4
    kingcos  
       2017-03-15 22:46:48 +08:00
    在看 CSAPP 。。准备看完这个再看 SICP 。。
    pathbox
        5
    pathbox  
       2017-03-15 22:49:06 +08:00 via Android
    在刷一遍
    junnplus
        6
    junnplus  
       2017-03-15 22:58:40 +08:00 via iPhone
    1
    misaka19000
        7
    misaka19000  
       2017-03-15 22:59:53 +08:00
    1
    Cbdy
        8
    Cbdy  
       2017-03-15 23:27:27 +08:00 via Android
    五个月吓尿
    soulomoon
        9
    soulomoon  
    OP
       2017-03-15 23:39:17 +08:00
    @ivvei 其实还是算有点急的, 主要是怕全部刷完用时比较久,
    @lsmgeb89 吓到我了,这么恐怖。。。

    @pathbox 以后有这个打算,但现在教我重刷的必然坑 哼《- 。-》
    @Cbdy - -//尿频尿急。。。
    soulomoon
        10
    soulomoon  
    OP
       2017-03-15 23:46:27 +08:00
    @kingcos 加油啊 我之前是 csapp 和 sicp 一起看,看了 50 页的 csapp 然后就专注 sicp 荒废了 csapp 了,主要是再之前看了 code 编码的秘密,了解到了一点点硬件的小知识,觉得还是先补充一点抽象的编程思想好一点,现在准备回去吃回头草。。
    Cbdy
        11
    Cbdy  
       2017-03-16 00:11:35 +08:00 via Android   ❤️ 1
    @soulomoon 我给你一点建议吧
    0. 不要迷恋经典
    1. 如果要看算法,其实没必要看算法导论,严蔚敏的数据结构就够了,其他算法需要的时候再看
    2. cdapp 是好书,适合当操作系统和组原教材,如果你要补计算机的基础可以看看
    3. 如果打算做一个程序员(而不是代码搬运工),你必须掌握的是 c 语言,幸运的是有 k&r 这本很棒的书(学 scheme 写解释器开拓一下视野可以,工作之后离这种东西最好远一点)
    4. 做 web 相关的工作,你应该找一本 http 相关的书看( http 权威指南之类),不要盲目去学习框架
    5. 你需要提高看书速度
    soulomoon
        12
    soulomoon  
    OP
       2017-03-16 00:17:41 +08:00
    @Cbdy 感谢指导啊, 看来 csapp 挺好的,也可以顺带学习 c 语言, http 简单的还懂点,关于刷书速度,没办法,我平时还要上班搬砖,你懂得外包公司诶。
    zetary
        13
    zetary  
       2017-03-16 00:21:52 +08:00 via Android
    在准备看 SICP 中,如果看 CLRS 建议多刷刷 OJ
    Cbdy
        14
    Cbdy  
       2017-03-16 00:29:28 +08:00 via Android
    @soulomoon 看 csapp 恐怕学不了 c 语言,但可以学会汇编😄
    soulomoon
        15
    soulomoon  
    OP
       2017-03-16 00:31:22 +08:00
    @Cbdy 刚走出 sicp 里面的伪汇编的恐惧- -。。
    lsmgeb89
        16
    lsmgeb89  
       2017-03-16 00:42:59 +08:00   ❤️ 1
    @soulomoon 所以没必要全做完,性价比很低,除非你是研究算法方向 PHD 。

    工作的话,数据结构和重要的算法设计的方法掌握就可以了。然后就是刷题

    Big-Oh Notations
    Proof Methods: Loop Invariant, Proof by Induction
    Complexity Analysis Methods: Iteration Method, Substitution Method, Master Method, Recursion Tree, Amortized Analysis
    Data Structures: Linked List, Stack, Queue, Heap, Hash Table, BST, B Tree, B+ Tree, AVL Tree, RB Tree, Disjoint Sets
    Sorting Algorithms:
    O(nlog(n)): Quick Sort, Merge Sort, Heap Sort
    O(n): Counting Sort, Radix Sort, Bucket Sort
    O(n^2): Insertion Sort, Bubble Sort, Selection Sort
    Medians and Order Statistics
    Divide and Conquer
    Dynamic Programming
    Greedy Algorithms
    Graph Algorithms
    NP Completeness
    phx13ye
        17
    phx13ye  
       2017-03-16 00:53:33 +08:00 via iPhone
    厉害, sicp 看得我头皮发麻, csapp 也是前面那些汇编,处理器的章节也是一度崩溃
    hxndg
        18
    hxndg  
       2017-03-16 01:33:53 +08:00
    膜拜一下,我一直觉得 sicp 真的不适合作为入门书籍看。。。
    call43848
        19
    call43848  
       2017-03-16 03:51:47 +08:00
    学金融的不去好好“骗”钱,来这里捣什么乱……
    WildCat
        20
    WildCat  
       2017-03-16 05:22:58 +08:00
    学金融可以搞搞数学做量化,真的
    w2exzz
        21
    w2exzz  
       2017-03-16 08:14:37 +08:00 via Android   ❤️ 1
    2 显然选 2
    letv
        22
    letv  
       2017-03-16 08:22:18 +08:00   ❤️ 1
    显然是 2 , Python 工程师用到算法和底层的地方很少吧
    kier
        23
    kier  
       2017-03-16 09:47:40 +08:00
    学金融的搞毛 python 啊,既然搞 python ,为啥不做量化分析,搞毛后台开发啊,既然要搞后台开发, 为什么不选 java ,搞毛 python 啊
    jiang42
        24
    jiang42  
       2017-03-16 10:16:19 +08:00 via iPhone
    @letv 算法是何时何地都会用到的。底层在写 C extension 和优化性能的时候相当有用
    wizardforcel
        25
    wizardforcel  
       2017-03-16 10:22:27 +08:00   ❤️ 1
    所以你一开始就应该拿 Python 入门,可以省时间。

    你现在应该刷 leetcode ,然后才是 CSAPP 。比起系统,算法的优先级更高。
    irenicus
        26
    irenicus  
       2017-03-16 10:29:09 +08:00
    2 ,学好了赶紧换个正经公司干
    Kymair
        27
    Kymair  
       2017-03-16 10:38:25 +08:00   ❤️ 1
    @Cbdy 这年头看 K&R 真的合适嘛… 这是不是也属于迷信经典的一种?之前读 21st Century C 就深有同感,现在学任何一门语言都是学一整套生态系统, 21st Century C 就会首先教你如何用 Makefile, linker, 用库什么的… 不过,我并不能算会写 C 语言,只是讨论下 :-)
    HarveyDent
        28
    HarveyDent  
       2017-03-16 10:39:36 +08:00
    难道不是应该刷 TAOCP 吗🤓(千万别当真)
    jmc891205
        29
    jmc891205  
       2017-03-16 10:44:56 +08:00
    急着找工作就选 2
    Supy
        30
    Supy  
       2017-03-16 10:45:15 +08:00
    @kier 👍 目前 Python 开发, 自学 Java 。 发现 Java 好啊
    djFFFFF
        31
    djFFFFF  
       2017-03-16 10:45:20 +08:00
    刷书感觉要和实践结合吧,习题是一方面,感觉项目也挺重要
    pezy
        32
    pezy  
       2017-03-16 10:46:06 +08:00
    显然你应该用 python 刷 SICP 的。
    Cbdy
        33
    Cbdy  
       2017-03-16 11:15:23 +08:00   ❤️ 1
    @Kymair 你说的有道理,但是我认为 k&r 并没有过时
    k&r 是一本很薄的书,真正介绍 c 语言的部分只有 100 页不到,但是覆盖了语言的各个方面, 100 页一俩个下午就可以看完了。很适合拿来入门和查阅
    一般说 k&r ,基本都是说第二版,实际介绍的是 ansi c , c 语言从诞生到标准化变化很小,现在各个平台实现的最广泛的也是 ansi c ,所以我认为是入门是合适,也没有过时的,实际用的时候工具链更多的是一些操作系统的知识,如果真的要使用 c 语言工作,一本书肯定不够,这个时候就可以看看 apiu , 21st Century C 之类的书

    举一个例子, lua 语言的解释器就是完全使用 ansi c 写的,现在仍活跃使用于游戏开发、嵌入式、机器学习等领域

    最后我对'迷信经典'的理解:重点在迷信,而不是经典。经典是好的,但是存在一个语境:'需要某本经典'。 po 主这样的情况,我认为阅读 sicp 的短期收益是比较小的,对找工作鲜有帮助而耗费很多精力,所以目前阶段为了达到 po 的目的,可能需要更加适合的经典

    '君之楚,将奚为北面?'—— sicp 也许就是那辆跑的很快的马车
    zoffy
        34
    zoffy  
       2017-03-16 13:36:57 +08:00
    我擦,好毅力,我之前看 algs 两个月已经很烦躁了。
    另外, csapp 是好书
    rpdict
        35
    rpdict  
       2017-03-16 16:59:21 +08:00
    好想改行干金融,该怎么入门?
    cjyang1128
        36
    cjyang1128  
       2017-03-16 18:21:05 +08:00
    羡慕金融毕业的,干嘛要来做码农。。虽然我同学做金融的平时也都在写代码,但是他们赚得多啊!别做什么后台开发了,还不好好地去做金融! [滑稽
    Drahcir
        37
    Drahcir  
       2017-03-16 19:38:09 +08:00
    同不理解,为何不搞金融要来当码农?金融里也有编程职位啊。
    soulomoon
        38
    soulomoon  
    OP
       2017-03-16 20:51:11 +08:00
    首先非常感谢大家的回复
    @lsmgeb89 非常感谢对学习数据结构和重要的算法设计的方向指导,我会 mark 下来。

    @wizardforcel 我也是想从 python 入门的,但仅仅是尝试,写 console , 21 点小游戏之类的。尝试去进一步入门,之后也尝试跟着 CS61 的 python 版的 SICP 学过,但是有一个严重的问题,就是它的习题量太少,对于我来说,学过就忘了。只好尝试去学原版。

    @感谢支持选 2 的回复,确实这更加现实和容易走一点。

    @Cbdy @Cbdy 感谢你们的讨论,又让我学到了一些东西

    @djFFFFF 刷书和实践一起食用,效果更加,刷过 SICP 后,对程序的组成,逻辑的走向,有了更好的理解,工作阅读和写 C#的程序时也可以慢慢看出写法的优劣,也有了更清晰的思路去组织代码和复用代码。例如关于书里抽象隔离的部分让我能很快就理解依赖注入之类的设计模式的原理。

    关于不选择做金融, 1 不敢兴趣, 2 没有资源, 3- -别再逼我了,我投降┗( T﹏T )┛还不行?。。
    Systemd
        39
    Systemd  
       2017-03-16 20:54:46 +08:00 via Android
    厉害… SICP 什么的看的一头雾水
    soulomoon
        40
    soulomoon  
    OP
       2017-03-16 21:33:07 +08:00
    @zoffy 我不烦操是因为我同时还在体验很多其他的东西,
    例如折腾电脑系统,刷了一个有一个的系统,体验 ubuntu 和 fedora 的使用后果断装上 macOS, 其实电脑里一共装了 3 个系统, windows (工作使用), linux ( fedora ), macOS (装逼+因为对多屏幕异分辨率的支持真的很好)。所以即使工作是在 windows 学到了一点基本的 bash shell 的知识。
    还搭了自己的 VPS 来玩,墙外的大世界, 看到我目瞪口呆。
    玩了一下很火的几个前端框架和 nodeJS , docker 之类的(跟 tutorial 写 demo )。还不务正业的去搞一点 Axure- -。。
    还写一个专门把新短信偷偷发送到自己电脑的安卓 app , python 端服务器接收( ps 绝对不是专门监听女朋友)(加上了 selenium 用手机发送到被监听手机,然后 pc 端接收到信息去 google 相应的网页)[绝壁没有用的功能]
    wizardforcel
        41
    wizardforcel  
       2017-03-16 21:33:38 +08:00 via Android
    @soulomoon cs61 那个不是少,而是没有。

    可以拿 python 做 sicp 的习题, scheme 和 py 都是多范式语言,没啥不可行的。
    soulomoon
        42
    soulomoon  
    OP
       2017-03-16 21:35:07 +08:00
    @zoffy 不好意思 typo ,更正"不耐烦","没有不耐烦"
    diveIntoWork
        43
    diveIntoWork  
       2017-03-16 21:38:39 +08:00
    现在都入门都这么凶残了?直接 SICP ?
    soulomoon
        44
    soulomoon  
    OP
       2017-03-16 21:49:31 +08:00
    @wizardforcel
    有习题的,课后作业就是- -。。
    冒昧问一句,你真的有刷过书里的习题吗?。。。。,
    一开始我也有想过这点, 用 python 去完成习题,但是
    书里的习题很多是以文中的代码为基础的,让你增加,改写功能的,特别是到了第四第五章的习题,需要大量的 load 代码。除此外,某些再加上, symbol 的 quote 和 unquote , s 表达式等等特性。
    几乎书里所有的代码都会在习题中用到,想一想,除了翻译过去耗费的绝大时间,
    作为新手的我更没有能力去把 scheme 的特性全部都翻译到 python 上 0 0 。
    scheme 语法简单,于是这糖我也就吃了。
    soulomoon
        45
    soulomoon  
    OP
       2017-03-16 21:57:24 +08:00
    @diveIntoWork SICP 是以前 MIT 的入门教材吧,虽然貌似现在改成 python 入门了。
    lsmgeb89
        46
    lsmgeb89  
       2017-03-16 22:41:09 +08:00
    不过话说回来,还是金融好赚钱,金融的有了几年经验,分分钟赚码农一年的钱,为什么要转呢?
    muziki
        47
    muziki  
       2017-03-16 22:53:52 +08:00 via iPhone   ❤️ 1
    @lsmgeb89 金融要后台背景和实力,否则进一般的小公司或银行保险之类的,基本就废了
    cqqccqc
        48
    cqqccqc  
       2017-03-16 23:07:04 +08:00
    金融行业不是挺好的么,为什么想转啊
    soulomoon
        49
    soulomoon  
    OP
       2017-03-16 23:20:44 +08:00
    @muziki 所言正是,
    @cqqccqc 当你到柜台看到那里的阿姨们, 你就看到自己的未来了。而且还有一点非常重要,当你不喜欢一个妹纸的时候,她再漂亮又有什么用。- -//
    heqingsb1234
        50
    heqingsb1234  
       2017-03-17 15:40:41 +08:00   ❤️ 1
    千万别刷 这些只是看看了解下原理就可以了 直接看拉钩招聘 选你对应的职位看要求进行学习 你这样有点浪费时间 后期补就行 肺腑之言
    Swift3030
        51
    Swift3030  
       2017-03-17 16:28:27 +08:00
    我觉得 SICP 这书吧,你刷了之后真没什么多大用。
    soulomoon
        52
    soulomoon  
    OP
       2017-03-17 18:11:56 +08:00 via iPhone
    @Swift3030,为什么这么说?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5869 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 06:07 · PVG 14:07 · LAX 22:07 · JFK 01:07
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.