转行的时候学的是 java,不过现在工作用 PHP,中间也写过一些 python 的脚本。
平时基本上看的都是编程技巧之类的博客,经常会看一些网课,不过看的多了,开始觉得烦恼了,因为这些网课从来都只是讲怎么使用,哪里有什么坑,怎么避免坑,但不会深入讲原理。
虽然使用了两年的 PHP,但是很多原理还是不了解,包括常用的框架,也只是会用,或者比较熟练罢了。
于是萌生了想要补充基础知识的念头,因为我是转行做的程序员,很多科班生学的理论知识我都没有学过,培训班也不会教这些。
现在想要去补充,但不知道该从何入手,最近看到一本书《计算机组成与设计:硬件软件接口 第 5 版》,很多人都很推荐,不过好像要懂 c 和汇编语言才能看的懂,是这样的吗?
希望各位可以推荐一条填补基础知识的路线,自己实在是不了解这些,感谢。
--------补充---------
身边也有朋友跟我说,叫我先不要看那些,让我先把常用的语言和框架的原理弄明白,再去看那些。
1
hv3s1 2019-01-05 12:51:34 +08:00 1
|
2
Akiyu 2019-01-05 12:58:35 +08:00
如果你想真的明白底层的话, 汇编有必要学, 但不需要精
高级语言会先转换成 CPU 架构对应的汇编语言, 再转换成二进制的机器指令 而二进制是看不懂的, 所以汇编是能接触到的最底层语言 在汇编里面, 会有很多细节实现, 一些在教材上一句话概括的特性, 或者什么功能, 都会有很多句汇编支持 看懂它们, 你就能理解真正是如何实现的, 从而明白这些"特性"到底是什么 关于汇编, 有两本书推荐 1. 汇编语言 王爽 masm 汇编, 如果只是想了解, 那么这本书不错, 简单易懂 2. 汇编语言语言程序设计 红皮的 AT&T 汇编, 这种格式是比较常看到的, 也是 gcc -S 默认的格式 这本书比较厚, 个人觉得不如上一本那么好懂, 不过深度要比上一本深 其余的话 深入理解计算机原理 这本书很不错, 也可以读一下 |
3
driveby 2019-01-05 13:01:23 +08:00 3
一本 CSAPP 就完事了
|
4
kristpan 2019-01-05 13:04:51 +08:00
1. 数据结构与算法:你会 Java 的话,看 Sedgewick 那本 Algorithms 就挺好
2. 体系结构:《深入理解计算机系统》,比硬件软件接口那本性价比高一些,但是要有 C 语言的基础 3. 操作系统:《现代操作系统》或《操作系统概念》,有个概念就行了 |
5
111qqz 2019-01-05 13:05:43 +08:00 via Android
汇编不需要看得太细,推荐王爽的那本,看前面一半就行
|
6
kljsandjb 2019-01-05 13:10:41 +08:00 via iPhone
推荐 csapp 第三章、第四章对底层汇编的训练比较多,把题目和 lab 做掉,我目前才看到缓存那一章,大半年了,折腾 ing …
|
7
Gaussen OP |
8
ttxhxz 2019-01-05 13:48:44 +08:00 2
|
10
Everyman 2019-01-05 14:03:58 +08:00
网上找找计算机专业的本科生的学期 /学年课程表,或者是教务系统里的培养计划,看里面感兴趣的书。计算机本科的课程都是以培养基础知识和编程思想为主的,所有知识的实用性不是很高,有不少已经过时,所以盲目看别人推荐的通常看不下去。一定要看感兴趣的比较概况性的那些书。
如果决心更强的,甚至可以去附加的大学蹭书蹭课。 |
12
learnshare 2019-01-05 14:30:07 +08:00 1
网络也学习一下,主要是 HTTP 用得比较多
|
13
Raisu 2019-01-05 14:40:21 +08:00 via Android
请问现在月薪多少?做完这些以后工资会涨多少?
|
14
Gaussen OP |
15
lidongyx 2019-01-05 14:52:05 +08:00 via iPhone 9
你朋友说的有道理,你与其花时间学楼上推荐的计算机课程,不如深入去学习语言和框架。
那些计算机理论课程,对你工作的帮助并不大,推荐你整理一下大公司对 PHP 开发工程师的技能要求,这样更有目的性去学。 你待遇才 8k,远没有到要去学习理论的程度,月薪 2 万以上基础理论才会起作用。 |
16
Gaussen OP @lidongyx 感谢建议。确实从职场角度来考虑的话,深入语言和框架才是更快提升自己价值的一条路。我会好好计划一下学习安排的。
|
17
j2gg0s 2019-01-05 16:11:33 +08:00 1
我觉得你朋友说的是对的,先从工作上延伸出去比较现实。个人建议是你现在用的 HTTP/RPC 服务框架, DB/Cache/MQ 的 client,MQ 的实现,以及各种中间件。代码看的累的话,可以先看 C/S 之间交互的协议
|
18
php01 2019-01-05 16:38:42 +08:00
15 楼说得没错,现在推荐你看这些的,肯定都是 20k 往上走的
|
19
stdying 2019-01-05 16:57:47 +08:00
15 可以的
|
20
Akiyu 2019-01-05 18:08:50 +08:00
这本书我也没看过, 不能做出什么建议
不过我倒是又想到一本书, <编码> 这本书也不错 至于#15 的, 说的有一定道理... 现在的话与其练内功, 或许练练外功会更好 多一点框架或者工具的运用, 在短时间内能达到最好的效果 不过从现在积累也不错, 就当没事看着玩吧 |
21
huruwo 2019-01-05 18:45:23 +08:00
面向工资编程即可
|
22
supermanheng21 2019-01-05 20:03:30 +08:00
15 楼说的很对
|
23
tujin 2019-01-05 20:43:15 +08:00 via Android
从常用框架入手到 http,tcp 更好一点
|
24
likuku 2019-01-05 20:53:57 +08:00
Java, PHP, Python .... 嗯,先修 数据结构,再修 算法,PHP 工作的话,网络这块也得补 重点 http
DB 也免不了了,SQL 的基本概念什么得补,nosql 的看情况主次有别补补 计算机组成原理,汇编什么,这些靠近底层硬件的,你有优化编译器 /虚拟机 /runtime 这个需求,才有必要学 |
25
ZCapping 2019-01-05 20:56:49 +08:00
我感觉你可以先学深入学习下 Redis 和 MySQL,然后可能你就知道还是需要先学《数据结构》,然后就知道可能搞下 c 语言。以上是我目前的心境,希望对你有帮助。
|
26
hanxiaomeng 2019-01-05 22:33:23 +08:00 via iPhone
计算机网络(七层的常用协议),Linux 系统( rhca 水平,非原理),数据库(企业实际应用的那些,非原理),数据结构。
|
27
hanxiaomeng 2019-01-05 22:34:36 +08:00 via iPhone
月薪 2w 以下,可以数据结构可以先放一边,Linux 达到 rhce 就可以了
|
28
Donne 2019-01-05 23:28:02 +08:00
作为 2w 以下,学了一段数据结构的人,确实感觉是为学而学,先学 Linux,MySQL 和 HTTP 可能更好一些,个人意见。
|
29
JRight 2019-01-06 00:00:52 +08:00
深入理解计算机系统,算法(第四版)(结合 Coursera 上的普林斯顿算法课)
|
30
hugo54 2019-01-06 00:09:34 +08:00 via Android
如果真是想好好深入学计算机本科的专业课,可以刷国外名校的课,例如 cmu 的 15-213 和 ucb 的 cs61b
|
31
AltairT 2019-01-06 03:19:18 +08:00
@Donne #28 我能说我之前还想着看算法嘛,后来想了下这样不行,没有适当的正反馈坚持不下来.就简单了解下常用数据结构,然后看 mysql 了.
|
32
ljzxloaf 2019-01-06 09:18:23 +08:00
同野生,握爪
我觉得你说的这些东西学的时候不用太计较细节:一方面是没有时间和精力;另一方面知识体系都是螺旋进化的,没必要一开始就吃个胖子.所以我一般找网课学. 汇编:http://www.xuetangx.com/courses/course-v1:TsinghuaX+20240103X+sp/about 操作系统:http://www.xuetangx.com/courses/course-v1:TsinghuaX+30240243X+sp/about 其他的应该都能找到 |
33
Hanggi 2019-01-06 10:04:42 +08:00
计算机组成原理对理解计算机工作很有帮助,如果英语还可以可以试着看原版,或者看 CSAPP,非常经典。
|
34
MIMEIK 2019-01-06 10:38:28 +08:00
考个中级 /高级资格证,还能减税。
|
35
mamahaha 2019-01-06 11:05:37 +08:00
开车的司机了解一些汽车结构以更好地服务于驾驶,基本都是在维修保养过程中积累出来的,而不是系统学习车辆工程专业。
|
36
maplelin 2019-01-06 11:18:36 +08:00
@Gaussen 科班至少前三年都在学基础,补基础这个急不来,除了上面提到的,嵌入式系统和数据库设计还有计算机网络都要补的。
|
37
wolfie 2019-01-06 11:58:11 +08:00
23 小时 14 分钟前 · 3528 次点击 ∙ 133 人收藏
|
38
quinoa42 2019-01-06 12:00:12 +08:00
csapp 实体书就算不想看了还能垫桌角,虽然太重了压不了泡面
|
39
xwbz2018 2019-01-06 14:01:08 +08:00
|
40
wangluofansi 2019-01-06 14:25:23 +08:00 via Android
月薪两万也是搞懂 csapp 就行了,跟着 cmu 15213 的课程上完就是了,其他用得着再学
|
41
Gaussen OP 感谢各位的建议。
真的感叹,想起自己初学编程的时候,有点小成果就沾沾自喜。 工作后,慢慢的适应了公司的节奏,每天考虑的大多是业务上如何实现,技术上却几乎没有进步。终于在我离开第一家公司之后觉察到了这点,我在温水里被煮了太久,加上自己的惰性,让我寻找新东家的时候碰了很多次壁,虽然我现在已经落定,不过想到当时连续碰壁的经历也不免焦虑,感到了十足的危机感,使我开始不停地去学习。 结合我个人以及现在工作的情况来说,我一开始想要做的那些可能是真的性价比不高,因此我决定先从工作入手,加深对 PHP,常用框架框架的理解和使用,同时更多的去了解一下协议(确实我现在对协议的了解很粗浅,很多时候也感到不知道该如何深入了解协议的知识),以及常用数据库也要加深认识,之后再去考虑别的。 因为个人英语也很差,所以在去年年末也下定决心提升自己的英语水平,并为之付出努力,路还很长,希望自己能稳步前进,每一年都有巨大的进步。 |
42
nililnellaf 2019-01-06 15:09:17 +08:00
这本书和 Computer Architecture: A Quantitative Approach 都建议看完 CS:APP 之后再说
CS:APP 看之前补一下标准 C 就行了 |
43
xrr2016 2019-01-06 16:51:40 +08:00
mark
|
44
MorningBOBO 2019-01-06 17:51:17 +08:00
共勉 mark
|
45
kios 2019-01-06 18:01:46 +08:00 1
CS 50 哈佛的公开课
|
46
gpj22pYlv2qYiZ8U 2019-01-07 07:55:45 +08:00
@kios 我学过 web programming with python and js。很好的课程,提供了很多 insight。
|
47
driveby 2019-01-11 18:26:46 +08:00
不太赞同 LZ 朋友的观点。
在对计算机基础知识没有一个整体概念之前,强行去深入学习语言和框架,虽然能提高工程能力,但是这个过程是很枯燥且低效的。 相反,在有一定理论基础后,再深入学习语言,绝对会有一种豁然开朗的感觉,也很利于长远的发展。 永远记住:磨刀不误砍柴工。 |