最近有大一新生跟我说:自己想做码农,于是找了一个老师的团队进去敲代码,感觉能学到很多东西,但是自己完全对算法、计算理论、线性代数这些理论知识无感,感觉课程能混及格就好了,那些理论的东西不要学太多太深。大家怎么看这个问题呢?其结论就是,我提倡的CLRS、GSLA、CSAPP、SICP、ITOC等等都被打入了“大黑书”系列,不在其学习计划之中。

我作为老师,当然不认同他的看法。只是,如果我说我的看法,通常都会被认为太过理想化,太过于站着说话不腰疼,因为我完全没有就业压力,与社会脱节......所以,我把这个问题转给各位已经毕业的同学,无论你们在大厂小厂做IT,或者在其他的非IT就业岗位,都可以就自己的状况、经历说说自己的看法。

当然,任何人的意见都欢迎,包括在读大学生的意见。而且,特别欢迎反对我的意见,最好能用自己的经历来反对学习大黑书。

    说下我身边的情况吧。本人目前大三(浙江某双非本)
    身边的人主要分为一下三类

    1. ACM竞赛。
    2. 学科竞赛(挑战杯 互联网+之类的)。基本都是老师有较为成熟的项目,需要开发一个APP或者网站来实现相关功能。
    3. 跟着老师的团队做实验,课题等,「产出」论文。

    我觉得在大多数人看来,参加这些带来的产出更加直观(奖学金各种荣誉评比,简历中竞赛科研经历的履历,对求职考研帮助更大),反观「大黑书」,即使投入时间去学,带来的直接收益看起来也没有那么大。不符合「主流」价值观,所以现在的风气就是大家都去加入老师团队卷比赛,卷科研。几乎没什么人认真去学CS以及数学的一些核心课程。
    个人觉得学习「大黑书」系列还是需要良好的氛围,不然孤军奋战还是很容易中途放弃的。

      alkaidcc 确实,这个情况与SCNU的状况非常类似,也是校方大力提倡的模式。

      Bintou 找了一个老师的团队进去敲代码,感觉能学到很多东西

      这是错觉,要搞明白为什么会产生这种错觉,很重要。但是强行论述它是不好的想法,好像有点不太礼貌,我想先知道他为什么会这么想(手动狗头

      Bintou
      不是吧,不是吧,做码农而已,学这么多干嘛,不是会CV会调参就好了?
      像我就是看了这几本大黑书,都做不成码农了,唉,反对,必须反对!
      🐶

      优秀教科书不受欢迎国内大学生欢迎,我认为:

      • 个人英文能力太差(或者说没能从考试向英语转到专业向英语)没法看原版,只能找点二流翻译来看、读起来一点都不信达雅
      • 不知道课后有哪些练习题可做、有哪些答案可参考、哪些好程序可以做实验?只把书读了一遍没味道、缺乏学习激励反馈
      • 大环境把人安排得明明白白,从早到晚就像狱友一样打卡、听训、去活动,没有自由的精力去钻研好书,有些地方不旦没有读书交流会、学风还是个问题

        LittleboyHarry 个人英文能力太差(或者说没能从考试向英语转到专业向英语)没法看原版,只能找点二流翻译来看、读起来一点都不信达雅

        非常同意,翻译版确实一点都不信达雅,跟同学讨论过这个问题,之前看《Operating System Concepts》的译版,看的云里雾里,索性去看原版了,原版就思路比较清晰。

        大三狗已经准备开始重学GSLA了,后悔大一时没好好学

        关于“大黑书”的作用,记得以前已讨论不少,特别是 这个关于 CLRS 的话题。抓住技术发展浪潮冥冥中围绕着的脉络、以不变应万变,才不至于浮萍一般随风飘摇。

        另外想补充一点是,大一大二是为数不多可以很容易静下心去做些什么的时间,往后随着年岁的增长、承担越来越多责任,像这样单纯做些什么事情也变得越来越困难。

        想起我有一段时间连续几个周末都在写 Web 开发 这个 wiki,但没什么回应,怀疑是不是自己写的太长导致难以阅读,一度有放弃的念头。后来开始在深圳遇见了一些同样在持续学习的朋友,才慢慢有了一点力量去坚持一下。

        也分享下许嵩的一段话:

        面对正见偏见高见愚见照单全收并怡然自得,是二十多岁做事情时应该炼成的本事。再之后一步,是不再在内心定义这些对立面和极性,消解分别。遇到通常被认为是愚昧可笑的人也不再产生智识层面的优越感,而是略过。遇到打扰当然可以反击,但大部分时候没那个必要,小事情,略过就可以了——真正的那种略过而不是心理战术上的蔑视。

        目的是保持对自身所做事情的专注。一生并没有多长——十几岁二十出头的青春少年不大会察觉到这一点,但如果是经历过一些重大变故的孩子则会对此有感触。在有限的生命里怎么样把握住时间专注做点自己喜欢做的、对别人也有点价值的事情,是我们应该时常自查的。

        ——刚才在Vae+看了一些少年之烦恼帖子之后想说的

        7 天 后

        转专业的同学都认为当年学的这些“无用之识”非常有价值。

        但是掰个手指头算,回馈周期确实到了一年半,这个时间对于某些人来说确实是很难以接受的。

        目前因这些“大黑书”基础,得到了无论是社会环境评价还是个人学术兴趣非常好的机遇,但是还没成定稿,等事成再与各位分享。

        能说的,只是平级跨转学校所谓“基地班”,去年保研情况是24保16。升学压力顿时小了很多,每天可以多看看文献,再学点“无用之识”。

        在这个“极少数的极少数特殊情况”中,“无用之识”给了我很大的帮助。不过一开始也不是为了这个才学这些。

        但是不可否认,即便在这所谓“最好的学院”,有很多人还是被眼前效益蒙蔽住了……我谓之“瞎卷”,等被卡脖子的事后只能回头来外部归因,觉得外校看“本科第一学历”,觉得学校没有提供足够良好的平台。

        或许各有各的说法,但是,我一个只学半个月的学生,能在一批学了一年的学生中,实验报告拿了A+,公开展示再次筛查还没降等第,被作为范例分享。可能,对于“基础”的学习,确实是什么地方出了问题。

        1 个月 后

        说实话,以前我也会说打牢基础很重要,大黑书很重要,学校的项目没啥用blabla
        但是随着工作年限的增加,其实我越来越不确定了。
        可以确定的是,如果能耐心地读完大黑书,(特别是)做对应的习题和项目,那对技术水平应该是有不少提高的。但是如果以成为优秀的软件工程师为目标,我并不十分确定这样是不是非常高效的办法。
        a)你能坚持下来吗?
        b)光啃书用处不大,你能很好地实践吗?

        Peter Norvig(google AI的Director,人工智能专家)写过一篇很有名的文章:https://norvig.com/21-days.html
        总的来讲,他的建议还是编程实践最最重要:
        If you want, put in four years at a college (or more at a graduate school). This will give you access to some jobs that require credentials, and it will give you a deeper understanding of the field, but if you don't enjoy school, you can (with some dedication) get similar experience on your own or on the job. In any case, book learning alone won't be enough. "Computer science education cannot make anybody an expert programmer any more than studying brushes and pigment can make somebody an expert painter" says Eric Raymond, author of The New Hacker's Dictionary. One of the best programmers I ever hired had only a High School degree; he's produced a lot of great software, has his own news group, and made enough in stock options to buy his own nightclub.

        就编程实践而言,我觉得加入google这样的公司(或者实习),看看真实世界的软件工程是怎样的,真实的工业代码是怎么写的,怎么通过code review,unit test,monitoring etc保证软件质量,是非常有帮助的。但是这就有点何不食肉糜了。。。
        而如果加入学校的项目团队的话,不得不说很多时候项目团队水平还是不太高,应该多少会有帮助(毕竟多写代码肯定比不写好),但是帮助多大也是令人存疑的。

        如果想寻找优秀的项目,我有两个建议(不确定是否完全可行,因为我自己没有实践过):
        a)参与网上高质量的公开课,特别是操作系统,编译原理,数据库,计算机网络,这类有编程大作业的课程。一般来说这种大作业的代码量都相当大。
        b)考虑加入一些质量较高的开源项目,读一读别人的代码,看别人怎么做的,并且尝试做一些贡献?
        至于读书,当然是有用的,但是还是那句话,一切都要落实到编程实践上,学习CSAPP是为了让你写出更高效正确的代码,学习SICP是让你更好地做抽象(从而做出更好的软件),学习计算理论是为了让你知道什么问题可以不能解决,什么问题很难解决,使得你在编程的时候不会陷入死胡同。

          qzhouayi 我有点不明白的是,为什么你最后的那结论依然支持你对第一句话的“越来越不确定”。想来想去,只有一个理由。第一句话中“打牢基础很重要,大黑书很重要”加了一个可能的限定条件:不编程。而最后一句话中关于CSAPP、SICP、TOC的学习都限定一句话“一切都要落实到编程实践上”。如果在第一句中也有这个限定,你的越来越不确定应该可以释怀。

          过去15年,我对我教过每一个班级都会说的一句:无论你在CS学院是什么方向、什么专业,你首先应该是一个程序员。虽然我从来没有教过任何一门编程课。客观说,能接受我这句话的人不多。毕竟,每一年几百号学生,真正想做程序员的并不多,实际上,做了程序员的也不多。因此,我在说这句话的时候本来就具有很大的风险,甚至得罪了不少的老师。因为,很明显,在网络工程专业这些年依然保留着”网络工程不需要编程“的流毒。

          “一切都要落实到编程实践上”,我非常认同!

          基本上就是您说的这样。
          这里主要是想反对有些人这样一种高高在上的心态:”我读的都是高深的大黑书,读完特别牛,他们做项目的都没技术含量。”
          说到底,在公司里,我只在乎你能不能写出好的代码,能不能做出好的软件,我不关心你读过什么书,甚至不关心你有没有cs学位。编程需要大量的练习,那种一字一句读完大黑书就很牛这样的心态是不可取的。
          但是如果你抱着,读书是为了更好的编程,并且大量地实践,那这样的学习是很有帮助的。

          编程,编程,一定要大量地练习!
          (顺便说一句,准备算法竞赛对应的练习有帮助,但是远远不够,然而有些同学把它当成了全部。。)

          十分赞同楼上观点。
          六年前买的《算法导论》到现在也没翻几页,因为厚度实在让没耐心的劝退了。

          Bintou 那些理论的东西不要学太多太深

          但这话感觉会把路走窄

            3 个月 后

            zgz 我觉得倒是不会,关键在于立足于自身,能有持续动力走下去,在某些方向稳住以后,仍然是有机会继续去靠近核心,然后再去找到新的可能。在互联网与开源社区的加持之下,计算机领域跨领域高质量的信息也越来越丰富了,可以相对轻松地去支持这个过程。

            说下自身的情况,广东专,软件大一。
            个人因为听了yjango博士的学习观,就神往与人工智能的方向
            各位大大可以聊一下你们了解的人工智能的东西吗,谢谢各位

              Sofiya_ 现在人工智能方向所指的范围非常大,不同子方向的研究范围、研究方法可以相差很大。所以说单说人工智能的东西很难说是一个什么东西,指称不清晰。比方说问siri一个问题,就涉及到语音识别与转写、开放式问答系统、语音生成等方向,语音处理就涉及许多相关的深度学习技术。而开放式问答系统涉及更多的子问题,比如实体识别、关系抽取和知识库问答等等。
              大一的话先好好学习打好基础,课余可以看看自己感兴趣的入门资料。之前论坛也有一些这些方面的讨论贴,可以参考:https://0xffff.one/d/1078-yan-yi-de-xiao-mi-mang/2

                Sofiya_
                我所理解的人工智能,首先是要从2019年参加上海举办的世界人工智能大会说起,那个暑假真正开拓了我的眼界,事实证明,在接下来的几年大学生活中,我经常性在包括但不仅限于我校的科研项目中看到大会的影子。

                那次大会设计项目极广,有南大周志华教授现场讲解他的梯度提升决策树理念,了解到人工智能算法的桎梏;有上交大将图像识别算法结合人工智能,与产业结合,用来剔除残次品;有云拿科技的神奇的无人超市,事实上里面结合了计算机视觉、深度学习、多传感融合等多个领域,能精准识别顾客的行为(我当时还偷偷塞了一瓶快乐水到我书包里,结果被“识破了”);还有很多我说不完的见识。所以我认为人工智能的应用场景和其实质是两个大方向,你得先把握住。

                然后时间来打2019 下半年那会进入我校科研实验室做数据处理。在经历了半年的“数据清洗”工作,连人工智能算法毛儿都没碰到的情况下,我主动退出了项目组。事后我分析了我的情况,首先,我没有特别扎实的数理基础,此外也没有系统的培养,只能去做体力劳动。我能体会到你神往的那种感觉,因为当时幼小的我确实深深被震撼了。但是我还是想给你泼上冷水,看清现实,扎扎实实去走自己的路。弄明白你是真正想要追寻 人工智能算法的本质,还是想做应用的开拓者。会用算法去实现产品落地。这两个方向都是很了不起的。

                1 年 后

                © 2018-2025 0xFFFF