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

转行做程序员,工作两年了,想补充一下基础知识,求教。

  •  1
     
  •   Gaussen · 320 天前 · 7327 次点击
    这是一个创建于 320 天前的主题,其中的信息可能已经有所发展或是发生改变。

    转行的时候学的是 java,不过现在工作用 PHP,中间也写过一些 python 的脚本。

    平时基本上看的都是编程技巧之类的博客,经常会看一些网课,不过看的多了,开始觉得烦恼了,因为这些网课从来都只是讲怎么使用,哪里有什么坑,怎么避免坑,但不会深入讲原理。

    虽然使用了两年的 PHP,但是很多原理还是不了解,包括常用的框架,也只是会用,或者比较熟练罢了。

    于是萌生了想要补充基础知识的念头,因为我是转行做的程序员,很多科班生学的理论知识我都没有学过,培训班也不会教这些。

    现在想要去补充,但不知道该从何入手,最近看到一本书《计算机组成与设计:硬件软件接口 第 5 版》,很多人都很推荐,不过好像要懂 c 和汇编语言才能看的懂,是这样的吗?

    希望各位可以推荐一条填补基础知识的路线,自己实在是不了解这些,感谢。

    --------补充---------

    身边也有朋友跟我说,叫我先不要看那些,让我先把常用的语言和框架的原理弄明白,再去看那些。

    47 回复  |  直到 2019-01-11 18:26:46 +08:00
        1
    hv3s1   320 天前   ♥ 1
    推荐 中国大学 MOOC 的数据导论。https://www.icourse163.org/course/ZJU-93001
    学习之后你会对算法与结构又初步认识。

    非科班真需要学!
        2
    Akiyu   320 天前
    如果你想真的明白底层的话, 汇编有必要学, 但不需要精
    高级语言会先转换成 CPU 架构对应的汇编语言, 再转换成二进制的机器指令
    而二进制是看不懂的, 所以汇编是能接触到的最底层语言
    在汇编里面, 会有很多细节实现, 一些在教材上一句话概括的特性, 或者什么功能, 都会有很多句汇编支持
    看懂它们, 你就能理解真正是如何实现的, 从而明白这些"特性"到底是什么

    关于汇编, 有两本书推荐
    1. 汇编语言 王爽
    masm 汇编, 如果只是想了解, 那么这本书不错, 简单易懂
    2. 汇编语言语言程序设计 红皮的
    AT&T 汇编, 这种格式是比较常看到的, 也是 gcc -S 默认的格式
    这本书比较厚, 个人觉得不如上一本那么好懂, 不过深度要比上一本深

    其余的话
    深入理解计算机原理
    这本书很不错, 也可以读一下
        3
    driveby   320 天前   ♥ 3
    一本 CSAPP 就完事了
        4
    kristpan   320 天前
    1. 数据结构与算法:你会 Java 的话,看 Sedgewick 那本 Algorithms 就挺好
    2. 体系结构:《深入理解计算机系统》,比硬件软件接口那本性价比高一些,但是要有 C 语言的基础
    3. 操作系统:《现代操作系统》或《操作系统概念》,有个概念就行了
        5
    111qqz   320 天前 via Android
    汇编不需要看得太细,推荐王爽的那本,看前面一半就行
        6
    kljsandjb   320 天前 via iPhone
    推荐 csapp 第三章、第四章对底层汇编的训练比较多,把题目和 lab 做掉,我目前才看到缓存那一章,大半年了,折腾 ing …
        7
    Gaussen   320 天前   ♥ 1
    @hv3s1 已报名,感谢推荐。
    @Akiyu 感谢推荐,请问我描述里提到的《计算机组成与设计》,以我现在的水平有必要看吗?是要学习汇编之后再看效果更好吗?
    @driveby 好的,感谢推荐。
    @kristpan 感谢推荐。很齐全。
    @111qqz 好的,我之后找找看。感谢推荐。
    @kljsandjb 感谢推荐。

    之前在定学习目标的时候突然发现,自己需要学习的太多了,一下子不知道该如何安排,只能今天看一会这个,明天看一会那个,工作一忙起来,就什么都不想看,学习的效率实在是太低了。
        8
    ttxhxz   320 天前   ♥ 2
    @Gaussen 我觉得跟着网易云那个计算机课程的顺序来一遍没什么问题
    https://study.163.com/curricula/cs.htm
        9
    Gaussen   320 天前
    @ttxhxz 感谢推荐,坐等开课。
        10
    yiranHZT   320 天前
    网上找找计算机专业的本科生的学期 /学年课程表,或者是教务系统里的培养计划,看里面感兴趣的书。计算机本科的课程都是以培养基础知识和编程思想为主的,所有知识的实用性不是很高,有不少已经过时,所以盲目看别人推荐的通常看不下去。一定要看感兴趣的比较概况性的那些书。
    如果决心更强的,甚至可以去附加的大学蹭书蹭课。
        11
    Gaussen   320 天前
    @yiranHZT 感谢建议,还真没想过去查课表这些。之后看一下。
        12
    learnshare   320 天前   ♥ 1
    网络也学习一下,主要是 HTTP 用得比较多
        13
    Raisu   320 天前 via Android
    请问现在月薪多少?做完这些以后工资会涨多少?
        14
    Gaussen   320 天前
    @learnshare 嗯,慢慢来,一下子学太多我会混乱- -
    @Raisu 现在是 8k,学完以后,看能学成什么样子吧。我计划是用 2 年时间来提升自己。
        15
    lidongyx   320 天前 via iPhone   ♥ 9
    你朋友说的有道理,你与其花时间学楼上推荐的计算机课程,不如深入去学习语言和框架。
    那些计算机理论课程,对你工作的帮助并不大,推荐你整理一下大公司对 PHP 开发工程师的技能要求,这样更有目的性去学。
    你待遇才 8k,远没有到要去学习理论的程度,月薪 2 万以上基础理论才会起作用。
        16
    Gaussen   320 天前
    @lidongyx 感谢建议。确实从职场角度来考虑的话,深入语言和框架才是更快提升自己价值的一条路。我会好好计划一下学习安排的。
        17
    j2gg0s   320 天前   ♥ 1
    我觉得你朋友说的是对的,先从工作上延伸出去比较现实。个人建议是你现在用的 HTTP/RPC 服务框架, DB/Cache/MQ 的 client,MQ 的实现,以及各种中间件。代码看的累的话,可以先看 C/S 之间交互的协议
        18
    php01   320 天前
    15 楼说得没错,现在推荐你看这些的,肯定都是 20k 往上走的
        19
    stdying   320 天前
    15 可以的
        20
    Akiyu   320 天前
    这本书我也没看过, 不能做出什么建议
    不过我倒是又想到一本书, <编码> 这本书也不错

    至于#15 的, 说的有一定道理...
    现在的话与其练内功, 或许练练外功会更好
    多一点框架或者工具的运用, 在短时间内能达到最好的效果

    不过从现在积累也不错, 就当没事看着玩吧
        21
    huruwo   320 天前
    面向工资编程即可
        22
    supermanheng21   320 天前
    15 楼说的很对
        23
    tujin   320 天前 via Android
    从常用框架入手到 http,tcp 更好一点
        24
    likuku   320 天前
    Java, PHP, Python .... 嗯,先修 数据结构,再修 算法,PHP 工作的话,网络这块也得补 重点 http

    DB 也免不了了,SQL 的基本概念什么得补,nosql 的看情况主次有别补补

    计算机组成原理,汇编什么,这些靠近底层硬件的,你有优化编译器 /虚拟机 /runtime 这个需求,才有必要学
        25
    ZCapping   320 天前
    我感觉你可以先学深入学习下 Redis 和 MySQL,然后可能你就知道还是需要先学《数据结构》,然后就知道可能搞下 c 语言。以上是我目前的心境,希望对你有帮助。
        26
    hanxiaomeng   320 天前 via iPhone
    计算机网络(七层的常用协议),Linux 系统( rhca 水平,非原理),数据库(企业实际应用的那些,非原理),数据结构。
        27
    hanxiaomeng   320 天前 via iPhone
    月薪 2w 以下,可以数据结构可以先放一边,Linux 达到 rhce 就可以了
        28
    Donne   320 天前
    作为 2w 以下,学了一段数据结构的人,确实感觉是为学而学,先学 Linux,MySQL 和 HTTP 可能更好一些,个人意见。
        29
    JRight   320 天前
    深入理解计算机系统,算法(第四版)(结合 Coursera 上的普林斯顿算法课)
        30
    hugo54   320 天前 via Android
    如果真是想好好深入学计算机本科的专业课,可以刷国外名校的课,例如 cmu 的 15-213 和 ucb 的 cs61b
        31
    AltairT   320 天前
    @Donne #28 我能说我之前还想着看算法嘛,后来想了下这样不行,没有适当的正反馈坚持不下来.就简单了解下常用数据结构,然后看 mysql 了.
        32
    ljzxloaf   319 天前
    同野生,握爪
    我觉得你说的这些东西学的时候不用太计较细节:一方面是没有时间和精力;另一方面知识体系都是螺旋进化的,没必要一开始就吃个胖子.所以我一般找网课学.
    汇编:http://www.xuetangx.com/courses/course-v1:TsinghuaX+20240103X+sp/about
    操作系统:http://www.xuetangx.com/courses/course-v1:TsinghuaX+30240243X+sp/about
    其他的应该都能找到
        33
    Hanggi   319 天前
    计算机组成原理对理解计算机工作很有帮助,如果英语还可以可以试着看原版,或者看 CSAPP,非常经典。
        34
    MIMEIK   319 天前
    考个中级 /高级资格证,还能减税。
        35
    mamahaha   319 天前
    开车的司机了解一些汽车结构以更好地服务于驾驶,基本都是在维修保养过程中积累出来的,而不是系统学习车辆工程专业。
        36
    maplelin   319 天前
    @Gaussen 科班至少前三年都在学基础,补基础这个急不来,除了上面提到的,嵌入式系统和数据库设计还有计算机网络都要补的。
        37
    wolfie   319 天前
    23 小时 14 分钟前 · 3528 次点击 ∙ 133 人收藏
        38
    quinoa42   319 天前
    csapp 实体书就算不想看了还能垫桌角,虽然太重了压不了泡面
        39
    xwbz2018   319 天前
    要不要来点更基础的 https://www.bilibili.com/video/av21376839
        40
    wangluofansi   319 天前 via Android
    月薪两万也是搞懂 csapp 就行了,跟着 cmu 15213 的课程上完就是了,其他用得着再学
        41
    Gaussen   319 天前   ♥ 1
    感谢各位的建议。
    真的感叹,想起自己初学编程的时候,有点小成果就沾沾自喜。
    工作后,慢慢的适应了公司的节奏,每天考虑的大多是业务上如何实现,技术上却几乎没有进步。终于在我离开第一家公司之后觉察到了这点,我在温水里被煮了太久,加上自己的惰性,让我寻找新东家的时候碰了很多次壁,虽然我现在已经落定,不过想到当时连续碰壁的经历也不免焦虑,感到了十足的危机感,使我开始不停地去学习。
    结合我个人以及现在工作的情况来说,我一开始想要做的那些可能是真的性价比不高,因此我决定先从工作入手,加深对 PHP,常用框架框架的理解和使用,同时更多的去了解一下协议(确实我现在对协议的了解很粗浅,很多时候也感到不知道该如何深入了解协议的知识),以及常用数据库也要加深认识,之后再去考虑别的。
    因为个人英语也很差,所以在去年年末也下定决心提升自己的英语水平,并为之付出努力,路还很长,希望自己能稳步前进,每一年都有巨大的进步。
        42
    nililnellaf   319 天前
    这本书和 Computer Architecture: A Quantitative Approach 都建议看完 CS:APP 之后再说
    CS:APP 看之前补一下标准 C 就行了
        43
    xrr2016   319 天前
    mark
        44
    MorningBOBO   319 天前
    共勉 mark
        45
    kios   319 天前   ♥ 1
    CS 50 哈佛的公开课
        46
    inter18099   318 天前
    @kios 我学过 web programming with python and js。很好的课程,提供了很多 insight。
        47
    driveby   314 天前
    不太赞同 LZ 朋友的观点。
    在对计算机基础知识没有一个整体概念之前,强行去深入学习语言和框架,虽然能提高工程能力,但是这个过程是很枯燥且低效的。
    相反,在有一定理论基础后,再深入学习语言,绝对会有一种豁然开朗的感觉,也很利于长远的发展。
    永远记住:磨刀不误砍柴工。
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1271 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 30ms · UTC 23:37 · PVG 07:37 · LAX 15:37 · JFK 18:37
    ♥ Do have faith in what you're doing.