怎么提升编程内功呢 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zxCoder
V2EX    问与答

怎么提升编程内功呢

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

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

    网上一搜,倒是有很多教程,甚至有些是一步一步的教程,所有代码可以照抄运行的,这种也许可以看懂,可以抄下来运行,但是总觉得自己并不是真的会了,而且确实印象不深,感觉只是为了完成某个任务(刷教程 /网课,把代码一抄,跑起来了,改个名字,放 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 )花了时间没什么收获,有点迷茫,不知道学什么、怎么学?
    GBdG6clg2Jy17ua5
        9
    GBdG6clg2Jy17ua5  
       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   span class="snow">   Solana     1960 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 90ms UTC 16:13 PVG 00:13 LAX 08:13 JFK 11:13
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86