V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
zxCoder
V2EX  ›  问与答

怎么提升编程内功呢

  •  1
     
  •   zxCoder · 2020-10-06 19:53:37 +08:00 · 2352 次点击
    这是一个创建于 1512 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

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

    第 1 条附言  ·  2020-10-06 22:59:13 +08:00
    2333 好多人收藏了,还有没有大佬可以来分享分享心得体会
    11 条回复    2020-10-08 00:00:43 +08:00
    Mohanson
        1
    Mohanson  
       2020-10-06 20:32:33 +08:00   ❤️ 6
    我个人的"内功"学习历程是这样的

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

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

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

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

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

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

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

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

    提炼一下你的问题是:
    1 )想提升内功,但学了之后感觉没什么提高,一知半解,很快就忘记了,要怎么做才好?
    2 )花了时间没什么收获,有点迷茫,不知道学什么、怎么学?
    angryfish
        9
    angryfish  
       2020-10-07 14:07:08 +08:00 via iPhone   ❤️ 1
    个人觉得,内功不能单独提高,得先学会招式,写足够多的代码。
    很不建议学了编译原理就想着写个编译器,甚至想着看 gcc 源码,学了操作系统就想着看 linux 内核,学了数据库又想看 mysql 源码。浪费时间的,看不懂的。
    入门,计算机的专业课程全部弄懂,能够独立完成一个个人博客网站
    新手,找资料能够实现常用的软件功能,如各种开源库,开源中间件的使用。
    中级,了解某些库,某些中间件的实现原理。
    高级,能够自己开发商业级库,框架,中间件等
    最后,最后,如果对技术还有兴趣,再看看实现个简单的编译器,数据库,os 这些工作中不用怎么直接用到的底层东西吧。
    aguesuka
        10
    aguesuka  
       2020-10-07 15:01:24 +08:00 via Android
    编译器难就先写前端,可以实现一个 sql 的,还难就 xml,json 。但是不要不做。多写代码
    levelworm
        11
    levelworm  
       2020-10-08 00:00:43 +08:00 via Android
    据说可以先读 SICP 然后基础课一个个上去
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3330 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 12:25 · PVG 20:25 · LAX 04:25 · JFK 07:25
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.