做一个基础很扎实的程序员是一种什么感受啊

2019-05-06 12:14:13 +08:00
 snappyone

想到这个话题是因为最近在看 linux 操作系统内核以及 mysql 的一些源码,突然感慨大学时候的一些基础课程的重要性以及底层原理的重要性,譬如我现在去看汇编都看不懂,c 语言也忘光了。

试想如果一个程序员基础很扎实,后期在基础上添砖加瓦确实很轻松,而一开始只注重语言和应用的人则被拉开了巨大的差距

10478 次点击
所在节点    程序员
62 条回复
ChenFanlin
2019-05-07 09:46:43 +08:00
@shiji #27 不严谨, Math.min(猝死, 60 岁);
zouzou
2019-05-07 09:51:46 +08:00
@ryd994
基础扎实,操作系统、计算机网络、数据结构有 90/100 分以上。
基础不扎实,操作系统、计算机网络、数据结构有 60/100 分,刚过及格分,这是对软件开发工程师的基本要求,有必要人人如此。
没基础,那就是不及格,只会调用 api,面向百度编程。
linghutf
2019-05-07 09:53:48 +08:00
身边曾有过这样的人,简直是百科全书似的,解决问题也非常深!
shiji
2019-05-07 09:54:23 +08:00
@ChenFanlin 有道理

@fsafdasfsdafsd
@geniusmyn
其实我的意思是,很多人(包括我)喜欢收集书单,收集教程,@XX 云笔记,结果光顾着收集,光顾着比较哪本更好,哪本是“圣经”, 到头来根本没认真翻开看过几本。除非家里有矿,可以不上班在家看书学习。。。
smdbh
2019-05-07 09:58:31 +08:00
原来是这样
Mithril
2019-05-07 10:09:57 +08:00
@Tenma
比如说你了解 HTTP 协议在某些情况下每发送一个请求会创建一次 TCP 链接,而 TCP 链接(包括你说的三次握手)会比较消耗资源。
那么你写业务代码设计 HTTP 接口的时候就会尽量减少调用次数,在高频调用接口上使用 RPC 等其他方法。

虽说你可以百度或者其他人凭“经验”告诉你要减少 HTTP 接口调用次数,但更可能的是你第一次在这里遇到过性能问题,才会去查找咨询这方面的信息。然而如果基础足够扎实的话,第一次开发和设计接口的时候就可以避免这种问题,可以显著减少开发和 Debug 过程中的试错成本
ifxo
2019-05-07 10:28:02 +08:00
做任何事都是程序化的
Geekgogo
2019-05-07 11:07:45 +08:00
那么,该怎么加强自己的基础呢
www5070504
2019-05-07 11:08:31 +08:00
不知道什么算基础扎实 作为一个跨专业(电子专业毕业的)进来的 现在写 python 学了一些操作系统 算法之类的东西 一直在看书 但是还是感觉自己永远基础那么菜。。 很多时候基本上就是调 api 用的东西挺多的 很多东西都没法了解
www5070504
2019-05-07 11:10:06 +08:00
btw 基础这个东西真的很扎实有时候也不一定就很厉害了 同事哈工大博士 程序里边也会有一些让人费解的调用和写法 而且一点也不遵循 pep8 的格式
www5070504
2019-05-07 11:13:30 +08:00
很羡慕那些能把火箭上每个螺丝都弄的明明白白的人 确实很厉害 估计要钻研很久花很多心思吧
snappyone
2019-05-07 11:18:28 +08:00
@www5070504 确实挺难的,但是一通百通,掌握之后的好处也是巨大的
lzjamao
2019-05-07 11:20:34 +08:00
同感,原理性的知识很重要,这是技术岗位与非技术岗位的核心竞争力。个人觉得应用层的技术会越来越好,使用门槛越来越低。
whusnoopy
2019-05-07 11:22:59 +08:00
重剑无锋大巧不工
独孤九剑在手,管你怎么来,我都一样破
whusnoopy
2019-05-07 11:24:07 +08:00
@www5070504 哈工大博士和基础扎实又不一定必然划等号,也可能有是擅长考试或专注科研发论文的(只是说可能,没有说博士都水)
xman99
2019-05-07 11:42:46 +08:00
2019-2020 书单
语言经典书:

C:C 程序设计语言( K&R )->C 和指针->C 专家编程->C 陷阱与缺陷->你必须知道的 495 个 C 语言问题

C++: C++ primer -> effective C++->深度探索 C++对象模型 ->stl 源码分析->C++必知必会

java:java 编程思想->java 并发编程->深入理解 Java 虚拟机:JVM 高级特性与最佳实践

 

算法经典书:

算法导论->数据结构与算法分析(维斯)->编程之美->剑指 offer

 

系统经典书:

无关平台:

深入理解计算机操作系统->编译原理(龙书)->程序员自我修养

TCP/IP 协议详解 v1

 

linux:鸟哥的 linux 私房菜->unix 高级环境编程(必看,熟读,完全消化)->unix 网络编程(卷 1&卷 2 )->unix 编程艺术(进阶)->linux shell 脚本攻略(短小精悍)->linux 内核设计与实现->深入理解 linux 内核

 

windows:windows 核心编程(必看)->深入理解 MFC(经典)->windows 内核情景分析(上下)->寒江独钓 windows 内核安全编程

 

视野:

linux 多线程服务端编程

深入理解 nginx

深入剖析 nginx

 

调试:软件调试的艺术(强烈推荐!!)

设计模式:headfirst 设计模式(强烈推荐!!)
luozic
2019-05-07 11:50:42 +08:00
@snappyone 哎,會吹牛逼就行,反正大部分都在沒出問題前,都不管到底啥實現。
funlee
2019-05-07 12:47:29 +08:00
一个转行的前端程序员表示经典的大头书看不懂啊,求指导。
www5070504
2019-05-07 12:59:32 +08:00
@whusnoopy 嗯 发完我自己也有点觉得自己说法有些奇怪了 不过在我们这种学渣眼里哈工大的 cs 专业的博士已经是定级选手了。。QAQ
snappyone
2019-05-07 14:41:36 +08:00
@funlee 大头书一般需要看很多遍才行,看不懂的地方还得补补前置知识,反正一言难尽

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/561411

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX