V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
guimeisang
V2EX  ›  程序员

现在很多人看源码似乎都是为了面试,纯粹的程序员应该在思考啥?

  •  
  •   guimeisang · 82 天前 · 8839 次点击
    这是一个创建于 82 天前的主题,其中的信息可能已经有所发展或是发生改变。
    93 条回复    2021-07-08 09:54:25 +08:00
    securityCoding
        1
    securityCoding   82 天前   ❤️ 10
    我一直觉得源码只是看的话根本没多大用处 , 得写得抄才能真正理解作者的意思
    Saxton
        2
    Saxton   82 天前
    如果你纯粹为了面试看源码,那没有意义。
    如果你为了提升自我能力而看源码,那很有意义。
    czfy
        3
    czfy   82 天前
    什么是纯粹的程序员?
    只需要和代码打交道,不需要和人打交道?这样的研发岗存在吗?
    msaionyc
        4
    msaionyc   82 天前
    有时候想了解一个组件是如何工作的
    有时候想看一些优秀的模块设计,借鉴一些好的思想
    纯粹为了面试看源码确实很枯燥,但看着看着感兴趣了也没准呢
    kop1989
        5
    kop1989   82 天前
    哪有所谓“纯粹的程序员”。

    另外,不是为了面试而看源码,只有一个原因,就是想搞明白作者是怎么实现的,自己的设想和作者的实现孰优孰劣。
    带着问题去阅读源码,是最好的提高自己的方式之一。
    meteor957
        6
    meteor957   82 天前
    思考赚钱
    p2pCoder
        7
    p2pCoder   82 天前
    看代码,看书,都是一个积累的过程,并不是一个完全的知识内化的过程,说到底,还是要用了,要在诸多限制下落地,才是最有意思,最有挑战的。还是要想办法去真实的世界解决真实的问题,特别是后端、算法这种岗位。
    dfkjgklfdjg
        8
    dfkjgklfdjg   82 天前
    看源码是看因为某些地方自己卡壳了,然后想看看别人是怎么实现的,然后去读的源码,多看几个仓库,就会得到一个自己相对比较满意的解决方案。

    现在大部分人看源码是为了面试,就是正常人没人看源码, 都是 API 战士,怎么实现的不知道,出现 bug 了怎么办?百度,也不去看 Issues,遇到真正喜欢 Coding 的人一比就黯然失色,为了能有竞争力,才开始读源码,刷算法,为了够到那根门槛而读 /刷。

    内驱动学习不是每个人都有的,更何况那么多人都是来 IT 行业捡钱的,哪里还会放弃打王者的休息时间去学习。

    不过那些直接啃源码的新人,从 VueJS 到 ExpressJs 坚持了一年还在啃,虽然我满头问号,但是我是真的佩服这个毅力(你干点啥不好...)。
    3dwelcome
        9
    3dwelcome   82 天前   ❤️ 10
    早就有老外吐槽过,"纯粹的程序员“都是凭爱好在写代码,而且都是上班写自己的代码,而且还不会很专注于一个商业项目,兴趣点总是在变。

    你没办法让聪明人长时间 CRUD 。想了一下,好像有那么一点点道理。
    e583409
        10
    e583409   82 天前
    纯粹的程序员 定义是什么?
    我现在慢慢发现自己喜欢上写代码 同时功利一点为了面试 开始刷 leetcode 半年刷了 190 道题
    写的总结 https://mp.weixin.qq.com/s/0YqBCiTcRtk6hijGE7RfOw
    wxw752
        11
    wxw752   82 天前
    「天下无贼」
    ace12
        12
    ace12   82 天前 via Android
    @securityCoding 有时候还是能学到一些技巧的
    luozhiyun
        13
    luozhiyun   82 天前   ❤️ 5
    我感觉是为了兴趣看源码比较好。我现在在看一个框架或技术的源码之前会想,如果是我来做这件事,那么我会怎么做,会怎么实现。看到精妙的实现方案会惊叹,Woo ~ 这个不错,然后记录下来。慢慢的就形成了一篇篇的分享。
    现在我在研究 TiDB,想看看它是如何做分布式数据库的,感兴趣的不妨一起看看: https://www.luozhiyun.com/archives/category/%e5%90%8e%e7%ab%af/tidb
    terranboy
        14
    terranboy   82 天前   ❤️ 1
    学学别人怎么写的 怎么思考的 不是挺好吗
    kensoz
        15
    kensoz   82 天前
    大多数公司都是业务代码,crud,有几个项目组需要搞懂源码级别的需求。
    所以说看源码就是为了面试,除了你真的在工作中需要用。
    极少数人说兴趣爱好,自我提升我信,但是大部分都是抱着或许面试用得着的心态来学。
    h82258652
        16
    h82258652   82 天前   ❤️ 2
    我看源码是为了魔改...
    coderluan
        17
    coderluan   82 天前
    纯粹的程序员应该在思考啥?

    "今天午饭吃啥"
    LowBi
        18
    LowBi   82 天前 via Android
    思考怎么做产品
    CodingNaux
        19
    CodingNaux   82 天前
    为了面试去看源码,那也能从中学习,这也挺好
    成年人的世界不是只有对与错
    成年人的世界不容易,世道艰难
    不要问为啥,这么做肯定有其原因,问就是卷
    bigNewsMaker
        20
    bigNewsMaker   82 天前
    都是带着目的去看源码,搞不懂有的人还看出优越感了
    Jooooooooo
        21
    Jooooooooo   82 天前
    应该思考怎么把业务做好啊, pm 提需求, 要在实现需求的基础上, 以程序员的视角看有没有可能做的更好.
    charlie21
        22
    charlie21   82 天前
    让他们把精力投入到无穷无尽的看源码过程之中 这很 OK
    avastms
        23
    avastms   82 天前   ❤️ 2
    你看,我今天带着批判的目光去看 Midway.js ,看看阿里这帮人做出了啥破玩意,
    我发现文档里面,他们的 @Query 装饰器,竟然可以不用手动指定,而是自动取得参数的名字。
    这是装饰器 API 中没有提供的,按道理只能取得参数的顺序,而不能取得参数的名字,这是不能实现的,我很好奇他们是怎么做的,甚至觉得是文档写错了。
    所以我下载了这个项目的源码,找到了 Query 装饰器的实现。
    你猜他怎么干的? 原地取得这个方法并给他 toString,拿到源码后正则匹配。
    还能这么 xjb 干,我也是服了。
    Oktfolio
        24
    Oktfolio   82 天前
    我都看我目前需要的,比如 Spring Security 因为要去做改动,所以看了。
    Spring 我就没去看,然后面试过不了......
    littlewing
        25
    littlewing   82 天前
    现在很多人写代码似乎都是为了钱,纯粹的程序员应该在思考啥?
    hdfg159
        26
    hdfg159   82 天前 via Android
    追随自己的兴趣去看源码,自然而然的想去读,看看别人的优雅写法和实现
    avastms
        27
    avastms   82 天前
    @avastms BTW 这样做是严重不可以的,因为这限制了被装饰的函数必须是原函数,而不能是被二次封装二次装饰的函数,是短视而破坏整体性的 API,为后来的开发埋坑,谁写的这个代码,工资-1
    auh
        28
    auh   82 天前
    程序员要没有那点工资,有几个这么激动的?之前是硬件专业,很后悔,毕业出来做软件了。没兴趣。天天都是那么一点点框架,真不知道有啥意思。
    avastms
        29
    avastms   82 天前
    @avastms BTW2,又看了一下文档,竟然参数装饰器由编译器确保在原函数声明后第一个运行,这样做问题竟然真的是不大的,只要参数装饰器没有多个且不嵌套就可以了,行,牛逼,工资-0.5 吧
    DeWjjj
        30
    DeWjjj   82 天前 via Android
    写什么框架看什么框架。
    leven87
        31
    leven87   82 天前
    主要还是借鉴别人的思想,用在自己的项目中
    bojue
        32
    bojue   82 天前
    感觉还是解决方案的积累,看总比不看的好
    icyalala
        33
    icyalala   82 天前
    纯粹的程序员在思考:
    这个变量该怎么命名?
    我到底为什么要写代码?
    晚上该吃什么?
    tcpdump
        34
    tcpdump   82 天前
    就算你是天赋异禀的天才程序员,是需要解决实际业务问题的,而不是炫技的。
    HiShan
        35
    HiShan   82 天前   ❤️ 1
    这题目就有矛盾的。

    为了面试而看源码? 不是就是一种纯粹吗?
    xiaket
        36
    xiaket   82 天前
    有哪些源码看了可以帮助面试的, 干了这么多年活还真不知道.
    no1xsyzy
        37
    no1xsyzy   82 天前
    请先界定纯粹,或者说先界定不纯,你要把什么排除在外。

    @avastms 这听着像是因为 Java 缺少 macro 。
    www5070504
        38
    www5070504   82 天前
    应该是在思考这作者到底为什么要这么写吧
    ChoateYao
        39
    ChoateYao   82 天前
    看源码是为了了解别人实现,把别人的变成自己的。

    为了面试看源码,没有实践思考大部分都是为了看而看,就好比设计模式,多少人看了又看就是很少应用到自己项目里面。
    qiaobeier
        40
    qiaobeier   82 天前   ❤️ 1
    我认为王小波算得上是纯粹的程序员。
    HolmLoh
        41
    HolmLoh   82 天前   ❤️ 1
    看大型开源框架的源码对大部分人的日常开发没什么鸟用
    日常开发不同于开源的框架,框架为了保证拓展能力必然会写的极其的绕,举个例子就是 spring bean 的生命周期,光是创建到销毁就分了 7 步,一般的业务开发写成这样不是自讨苦吃吗,这也为什么有人说 Java 人都被设计模式荼毒的原因
    aguesuka
        42
    aguesuka   82 天前
    面向未来编程. 比如说 JetBrains 的 Arend 语言.
    https://arend-lang.github.io/
    ericgui
        43
    ericgui   82 天前
    用到啥看啥,比如我最近要用到 rc-table 和 rc-calendar,我考虑自己发包,毕竟不敢把自己托付给福报长,但 又不得不用,于是只好 fork 一份,自己维护了。这就要去阅读源码了,那我是不是可以宣称,我阅读过 ant design 的源码?

    阅读源码这个事,也要看投入产出比,也要看是要学习的目的,是真的要用到,还是要了解茴字有几种写法

    而我最近在详细研究我司的现有代码,其实已经真的也都是收获非常大的,毕竟看完了,就能立刻用得到

    所以个人的提高,只是“阅读”源码也没什么 p 用
    ca1123
        44
    ca1123   82 天前
    这说明面试还不错啊
    ipwx
        45
    ipwx   82 天前
    只是阅读源码效率极低。要从读源码开始,争取进步到看 API 就能猜出怎么实现的程度。
    wfd0807
        46
    wfd0807   82 天前
    真正的程序员在思考怎么赚钱 DOGE
    hhyyd
        47
    hhyyd   82 天前
    就像小时候学写作文,先是读优秀课文作文等,做些摘抄什么的。从整段背诵,到运用名言名句,再到考试独立完成一篇作文。多读课文,读诗词名句,优秀作文。都是必要的积累。

    至于是考试前突袭背几篇拿高分,还是长期培养阅读的习惯,熟好熟坏,不言自明。
    namelosw
        48
    namelosw   82 天前   ❤️ 1
    很多人的层次还谈不上思考「纯粹程序员」的问题,思考的更多是吃饭,所以。

    我个人理解的「纯粹程序员」就是跳出已有框架,更多思考计算本质的人。

    其实「纯粹程序员」一直存在,在计算机出现之前就已经有了,比如早期的 Haskell Curry, Alonzo Church, Alan Turing,或者后来的 John McCarthy, Alan Kay, Tony Hoare 等等。写业务的程序员固然重要,但是一个业务程序员消失了就会有人做他的工作,一个公司消失了就会有其他公司填补它的市场。但是这些推动业界发展的关键人物没存在过,我们现在可能还没有电脑 / 写二进制 / 写 Fortran 等等。

    当然也不用非得只思考本质不干活,很多大佬也是工业界出来的,比如 Joe Armstrong 在爱立信搞的 Erlang 其实是在不知道 Actor 的情况下独立实现了它。

    我感觉 SICP 里面的比喻很恰到好处:我们现在看待计算机就跟古埃及人看待几何一样 — 那个时代大部分和几何相关的工作者更关注的是怎么用标尺,量角器这些「工具」,而我们回头看那个时代的时候根本不会关心这些工具,而是会认为他们发现背后的几何原理拥有重大意义。那么以同样的方式思考,远未来的人回头看 20 ~ 21 世纪的计算机科学 / 编程,更关注的显然不是 M1 或者 Rust,而是更本质的「计算」本身。

    如果只是想找一些更纯粹的问题思考的话,看源码不如做一做 Nand to Tetris 这种项目,走马观花地做一遍下来你就会有很多好奇的方向,和你比较感兴趣的抽象层,和很多「为什么不」「如果这样的话」之类的问题可以深入。
    kongkongyzt
        49
    kongkongyzt   82 天前
    很多时候看源码既不是为了面试或者是提高自我能力, 而是看这东西到底咋实现的, 为了追踪问题而去看源码
    ReferenceE
        50
    ReferenceE   82 天前 via Android
    ?面试不至于看源码吧
    看源码主要是思考和使用
    例如,释放类时都会调 IDeposited 接口
    没人会关心 runtime 中,deposited 各个 service 的顺序是什么
    charlie21
        51
    charlie21   82 天前
    你用你用的工具,古埃及人用古埃及人的工具,你们都不关心它的意义,只想准确正确交工然后早点下班回家吃饭。

    没人要的 “意义” 就应该烂在地里,参考 古希腊哲学起源 ..

    希腊哲学是从关心世界的根源即本原开始的,如泰勒斯的“水”、阿那克西曼德的“无限”、阿那克西米尼的“气”、毕达哥拉斯的“数”、赫拉克利特的“火”
    http://db.cssn.cn/sjxz/zxqksjk/ztjj/201906/t20190610_4914802.shtml
    simo
        52
    simo   82 天前
    纯粹的程序员都在思考怎么 v2 发问和作答,我们都很纯粹
    xloger
        53
    xloger   82 天前
    而且很多为了面试“看源码”的,大多看的还是网上别人发的源码分析文章。

    别人说看 Android 系统源码时我都会问怎么看的,IDE 点进去看的只是一部分源码,完整的是得自己额外下源码的,没说这个过程的,可以想象出他们是怎么“看源码”的了。

    我关于 Android 本身的源码,印象比较深的一次是一个 Activity 关闭后没有及时调 onDestory,网上搜索无果,但是看到 Logcat 上看到了一条日志,然后就源码查这个日志,看怎么处罚这个条件,检查到最后知道是 handler 里有消息没处理完,再一验,是其他同事不小心在某些情况下会死循环反复发 Message 。
    框架的源码,我一次是用 Glide 解析 Gif,一部分 Gif 用默认的加载方法不会动。我怀疑是 Glide 解析这个文件把它当普通文件识别了,也许是我生成的 Gif 头文件信息不对之类的。也看了一会源码,不过时间紧张最后直接在应用层加了个判断了。

    纯粹的程序员看源码,我觉得分为两个情况:
    1 、抱着解决某个问题的角度,去阅读分析这个问题是怎么产生的,该怎么解决。
    2 、觉得这个功能实现得很棒,很厉害,去研究学习怎么设计怎么实现的。
    nicocho
        54
    nicocho   82 天前
    最近准备,看了好多源码。
    刚好来个新需求,我借鉴了源码里的设计方式,学以致用?感觉挺好的,
    KouShuiYu
        55
    KouShuiYu   82 天前
    + 学习
    + 借鉴
    + 文档不够详细
    wobuhuicode
        56
    wobuhuicode   82 天前
    面试现在不是都刷题的吗?
    读源码来面试不靠谱吧。
    ily433664
        57
    ily433664   82 天前
    早上吃什么?
    中午吃什么?
    晚上吃什么?
    sjzjams
        58
    sjzjams   82 天前
    如果真的是认真看源码那就不用为面试担忧了,提高在不知不觉中,看源码看算法都是给自己开拓思路
    fyxtc
        59
    fyxtc   82 天前
    @securityCoding 极端了,阅读代码本身就有足够的含量,问题是是否看的是优秀的代码以及是否理解透彻
    RainCats
        60
    RainCats   82 天前
    在中国,纯粹的程序员大概饿死了
    shangfabao
        61
    shangfabao   82 天前
    我的有时候看源码是因为一些开源的文档里写的不清楚
    xbdsky
        62
    xbdsky   82 天前
    思考怎么找对象
    suotm
        63
    suotm   82 天前
    define "纯粹程序员"?
    feather12315
        64
    feather12315   82 天前 via Android
    弄懂黑科技怎么实现的
    jiayong2793
        65
    jiayong2793   82 天前
    架构师思考的是需求和方案,程序员只思考代码
    westoy
        66
    westoy   82 天前
    当然在思考, 晚饭吃什么
    snappyone
        67
    snappyone   82 天前
    思考不懂的东西,然后到处找答案
    songlinliee
        68
    songlinliee   82 天前
    学模电的时候会先从二极管三极管的原理开始讲。
    但是最后学到后面的章节其实能理解特性就行。
    所以学会基础的目的是为了忘记基础?
    fgk
        69
    fgk   82 天前
    应该是为了看作者的思路、编码风格影像才深刻
    ClayStan
        70
    ClayStan   82 天前
    @czfy 辞职,然后来开源社区(前提是不缺钱
    ylsc633
        71
    ylsc633   82 天前
    1. 看别人的项目

    目的: 学习别人的写法, 看看他们怎么写项目的, 有没有值得学习的地方, 代码是否比我的优雅,我需要进步,不断学习才能进步

    2. 看编程语言底层源码

    目的: 比如我写 go, 看底层源码, 对面试肯定有好处, 但主要是 能看到底层实现, 可以让自己少踩一些坑(比如 map,看了源码知道 有并发读写问题,底层实现的时候有异常抛出, 比如一些并发原语,底层实现是 noCopy 如果传递的话,可能有一些意想不到的问题出现), 另外,看底层如何实现也是十分有意思的, 比如互斥锁, 什么时候自旋,什么时候会进入饥饿模式, 什么时候退出等等

    但是因为个人基础一般,能力有限, 只能尽量去看
    railgun
        72
    railgun   82 天前
    不是为了 debug 我才懒得看开源的代码
    akira
        73
    akira   82 天前
    就和你做数学题的时候是一样的,
    不会做的时候 ,看看别人是怎么解题的
    会做的时候,看看别人的思路和自己的有什么不同
    oldmanong
        74
    oldmanong   82 天前 via iPhone   ❤️ 1
    我一般是遇到异常报错或者 bug 才去看源码,一边口吐莲花一边看,效果还特好
    kingfalse
        75
    kingfalse   81 天前 via Android
    唯一的用处就是面试,别的都是扯淡,其他的不都得面试过了再说遇到遇不到
    zhw2590582
        76
    zhw2590582   81 天前
    对我来说源码看过很容易忘,但作者写代码的思路就会保留下来,挺有用
    undefine2020
        77
    undefine2020   81 天前
    @3dwelcome 那看来只有发达国家的程序员和我们的 x 二代程序员有资格当“聪明人”了
    scemsjyd
        78
    scemsjyd   81 天前 via Android
    我看源码纯粹是想知道代码底层怎么实现的,写代码的时候心里有数。不然用错了,都不知道。不知道大家的想法是什么样的?
    Marszm
        79
    Marszm   81 天前
    可以找漏洞。。干安全的最喜欢审计源码了。
    纯粹的程序员,可能思考如何让程序改变世界。
    mikulch
        80
    mikulch   81 天前
    @avastms 阿里的项目是这样子的吧,正常操作了。
    zjq07
        81
    zjq07   81 天前
    我只是想知道 TM 的为什么报错
    FreeEx
        82
    FreeEx   81 天前
    个人为了学习看源码我觉得很好,但是面试的时候问源码就很操蛋了,哪个框架是一下子变成现在这个样子的?都是一点点慢慢发展的,为了面试使劲背 xxx 为什么这么设计,下一个版本变了又要换一种背法了。
    hu8245
        83
    hu8245   81 天前
    @securityCoding 哈哈哈,真相了。边抄边说妙啊妙啊,真是妙蛙种子吃着妙脆角妙进了米奇妙妙屋,妙到家了
    lifesimple
        84
    lifesimple   81 天前
    面向工资编程 怎么能说没有意义呢🐶
    Akiya
        85
    Akiya   81 天前
    遇到第三方库出的问题的时候,只能自己去看源码了啊
    james122333
        86
    james122333   81 天前 via Android
    @HolmLoh

    然而即便是如此扩展能力也是差强人意
    只是从难写变成还可以 一个特殊虚求基本上就趴了 或者绞尽脑汁费脑力体力才想出
    james122333
        87
    james122333   81 天前 via Android
    @james122333 需求
    james122333
        88
    james122333   81 天前 via Android
    @jiayong2793

    因为程序员是接触代码第一线
    当然考虑有所不同
    m30102
        89
    m30102   80 天前
    驴拉磨只是为了前面那根胡萝卜,有没有纯粹的驴?
    ychost
        90
    ychost   80 天前
    源码一般是出问题的时候才去看,但是面试不看八股文看什么呢,项目水分成分更大
    MarkLeeyun
        91
    MarkLeeyun   75 天前
    @czfy 30 年前有个贝尔实验室,啊哈哈哈哈。
    MarkLeeyun
        92
    MarkLeeyun   75 天前
    @tcpdump 对,屠龙之技罢了。。
    MarkLeeyun
        93
    MarkLeeyun   75 天前
    @simo 啊这,让我想起了知乎。
    关于   ·   帮助文档   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   813 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 20:54 · PVG 04:54 · LAX 13:54 · JFK 16:54
    ♥ Do have faith in what you're doing.