怎么提升编程内功呢

2020-10-06 19:53:37 +08:00
 zxCoder

比如有个作业要实现一个简单的编译器,虽然课也上了,书也看了,但是一到自己动手,啥也不会。

网上一搜,倒是有很多教程,甚至有些是一步一步的教程,所有代码可以照抄运行的,这种也许可以看懂,可以抄下来运行,但是总觉得自己并不是真的会了,而且确实印象不深,感觉只是为了完成某个任务(刷教程 /网课,把代码一抄,跑起来了,改个名字,放 github 上),而不是真正学到了东西。

有些没有详细的教程,但是会有一些人的分享,而且会存在一大堆的劝退的技术名词,让自己感叹人与人之间差距实在太大,而如果要学好这些前置知识,恐怕又会 dfs 学习好一段时间,然后再回过头来,似乎又陷入了啥都没学会的怪圈了。

能够自己说想写就能写出来的,目前就只有那种简单老套的 web 应用了,也思考过到底是因为平时写的这些增删查改太简单呢?还是说对别东西不感兴趣?还是说学别的东西没有像当初学 web 开发一样投入很多时间?但我自认为每天花在编程,花在学习上的时间还是很多的,所以对这些问题也都没有一个比较确切的答案。

有点迷茫不知道要怎么才能学好,时间一天一天过得很快,但自己感觉一直没有提高。

这么多年的学习其实有一个道理是明白的,就是东西如果不用或者很少用,就肯定会忘记。所以对于编程,我觉得也是这个道理,但是对于一台小小的计算机来说,涉及到的内容可以说是无穷多了(至少对我来说),所以要怎样才能去深入地学习这些东西,还是说只能靠时间来积累?(因为至少据我所知,身边那种计算机大佬,精通软硬件的大佬,都是从小就开始接触这些东西,从小学,从初中就开始编程,学习)

2180 次点击
所在节点    问与答
11 条回复
Mohanson
2020-10-06 20:32:33 +08:00
我个人的"内功"学习历程是这样的

1. 写了一个 Game Boy 模拟器, 有趣, 好玩, 一套写下来对计算机体系结构基本门清
2. 学习使用 LLVM, 用 LLVM 写了一个 TypeScript 静态编译器(可以直接编译成原生 binary 哦)
3. 学习写 JIT 虚拟机, 这个过程顺带要学 x86 汇编

目前在看<程序员的自我修养: 链接, 装载与库>. 这本书的名字很容易让人误解, 但实际上和周星驰没有关系.

你可以看看我 v 站的发帖, 我每次突破一个阶段都会 v 站发帖庆祝...
ebony0319
2020-10-06 23:25:11 +08:00
建议刷 leetcode.
qefrgty
2020-10-06 23:41:00 +08:00
emmmmm

要不先读一读 std,把基础的一些方法溜一遍。

然后刷题,用刷题的方式变相做到学以致用。

或者自己搞项目,先实现项目的基本功能,然后再一点一点的想办法优化。

不过还是得先选定一门,千万别全学,或者看到就学。
irytu
2020-10-07 02:43:16 +08:00
OS,networking,algorithm,这些选一门课去完成,之后去刷题或者自己做点玩具啥的,理论+实践
TreStone
2020-10-07 08:06:19 +08:00
学而不思则罔,思而不学则殆
cnbattle
2020-10-07 08:38:49 +08:00
先分析需求,确定适合自己的实现方式技术栈等

比如我如果要做,会选择用 election,前端那一套
Removable
2020-10-07 08:45:56 +08:00
我赞同 @Mohanson 的意见,先把基础的一些东西弄明白,然后尝试做个自己有兴趣的东西,这样在做的过程中遇到不明白的地方,再去查资料。这样一套东西做下来,起码对整个结构会有个大致的了解
taogen
2020-10-07 13:12:59 +08:00
学了多久?看了哪些书?学生还是程序员?先把背景大致说一下能更好地交流

提炼一下你的问题是:
1 )想提升内功,但学了之后感觉没什么提高,一知半解,很快就忘记了,要怎么做才好?
2 )花了时间没什么收获,有点迷茫,不知道学什么、怎么学?
angryfish
2020-10-07 14:07:08 +08:00
个人觉得,内功不能单独提高,得先学会招式,写足够多的代码。
很不建议学了编译原理就想着写个编译器,甚至想着看 gcc 源码,学了操作系统就想着看 linux 内核,学了数据库又想看 mysql 源码。浪费时间的,看不懂的。
入门,计算机的专业课程全部弄懂,能够独立完成一个个人博客网站
新手,找资料能够实现常用的软件功能,如各种开源库,开源中间件的使用。
中级,了解某些库,某些中间件的实现原理。
高级,能够自己开发商业级库,框架,中间件等
最后,最后,如果对技术还有兴趣,再看看实现个简单的编译器,数据库,os 这些工作中不用怎么直接用到的底层东西吧。
aguesuka
2020-10-07 15:01:24 +08:00
编译器难就先写前端,可以实现一个 sql 的,还难就 xml,json 。但是不要不做。多写代码
levelworm
2020-10-08 00:00:43 +08:00
据说可以先读 SICP 然后基础课一个个上去

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

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

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

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

© 2021 V2EX