提高你的程序员修养:MIT课程missing semester

MIT课程 missing semester

之前在油管看到推荐了MIT的一个课程 Missing Semester,本来以为就是普通的课程视频,但是刷了两节之后发现这课还是有它的独特之处,所以在这里整理、放上一些我的理解。

这门课程不是那种一个学期的大课,它只是MIT寒假小学期的,一门由三个博士生讲授的一门 工具课,讲一些对计算机相关学生来说非常有用的工具和服务,总的来说,能让你的工作流更加高效。如果充分应用这门课,可以让你在操作上更像一个专业人士。

这是课程页面地址: https://missing.csail.mit.edu/ ,甚至还有好心人提供了中文版翻译。

工具课的意义

因为我一直在建筑学院里,所以我也说说我原专业的感受。这种工具类的课程可能对所有专业都很有必要,这里就看看建筑和计算机。

在学习设计的时候,其实花了大功夫进去学了很多的软件,甚至有种上完课就学了个软件的错觉。而这些软件在学校里是不会教的,本科在工大的时候我询问过韩昀松老师,他的意思是一个课程如果不教授设计的原理知识,而去上具体的软件操作,在学校的教学意图上就说不过去。我感觉正是这种把课程立意拔高的要求,使得一些必要技术的教学缺失了。(虽然我觉得根本问题是设计本质和设计工具过于割裂了)

而建筑学之于PS、AI、CAD、Rhino 就相当于计算机之于这门课程的内容。有人可能会感觉这种工具课没有什么存在的必要,它只是一个工具。对空间设计而言,SU和Rhino对于设计的推敲和帮助绝不是简单的 表现工具 能概括的。对于CS而言我接触不深,但是仍然感受到了 vim 和 tmux 对于效率的提高,更遑论 shell各类工具 和 git 对于工作流的帮助。因此这门工具课还是值得新手一看。

不过学科性质不同,设计内容的产出极度依赖 PS、AI、CAD 等生产工具。建筑学院如果不会Adobe你课设可能就挂了,因此逼迫我们花了相当长的时间去学习各类表现、建模的技术。相比而言计院作业,如果你愿意,拿记事本写也没人管。因此这门课更多的是引入这些工具,帮助你提高自己的效率。这门课的安排本来也蛮合理的,只是小学期的几个课时,配一些练习,下面就来讲讲它具体内容是哪些。

具体内容

我刷了一遍2020版本的课程,有11次lecture,大致讲了几个重要方面:工具、工作流和一些细碎较为不能分类的知识点。

一是在类unix系统上能够使用的各类工具

  • shell 和 shell 工具

    讲解shell 的基本命令,对我来说重要的是输入输出流和管道,虽然在学校课程中用到一些,但是从来没有搞清楚。

    还有shell脚本和诸如 man、grep、history等各类工具。

  • 编辑器 (vim)

    主要讲解vim,了解过使用过vim也不必跳过,因为vim实在是比较博大精深,或许看一遍又会发现新的技巧

  • 版本控制 (git)

    之前只是直接使用git,看了视频才知道git居然还可以以树状显示log

    视频里较为详细地讲解了git的一些数据结构,算是更加清晰地了解了。所以结论:git 也值得一学,可以找推荐里的Go Git那本书看一下。

  • 命令行环境

    解释了progress的存在,以及介绍了工具 tmux,这是我第一次使用tmux,之前只是听人介绍过,没有使用。要是当时做一些大数据实验的时候有tmux就不至于七八个窗口来回切换了,相信这个是和vim一样能极大提升工作效率的工具。

    正式介绍 Dotfiles 和 SSH,明确了一切可配置。网页上的lecture notes里有更多更详细的介绍

  • debugging 和 性能分析的工具

    其实也介绍了很多工具,介绍了日志和各类调试器。

    介绍了profiler等性能调试工具,用这些工具完成事件分析、可视化和资源监控等任务。

另外则是与其相配合的工作流

  • data wraggle

    讲解了利用管道、sed、正则表达式、awk等在命令行下如何整理数据。

    在最后的Q&A 中也提到如果要做一些更加复杂的操作python可能更加适合一点,vim macros的使用也是很便利的。

  • 元编程

    介绍了如何用make构建系统、介绍了依赖管理、持续集成系统和测试的类型

还有一些其他的内容

  • 安全、密码和其他内容

    对称加密和非对称加密以及它们怎么综合在一起使用,以及一些和安全有关的话题

    最后一节课的内容,课名叫做 Potpourri,是一些零碎的应用点。

体会

在以前,我曾经为了搞懂怎么把 vim 的设置保存下来而研究了一个下午,但其实只要有人跟我说一句 “有个配置文件.vimrc,你需要改那个” 就行了。所以对初学者来说,有效的指引是非常有必要的。我感觉这门课的指引是非常棒的,但是它只是一个指引而已,一个类unix系统下你所能运用的工具和方法的罗列。专精仍要继续投入时间。而课程最后还有一次答疑,回答了不少常见问题,新人也值得一看。另外它有配套的练习,我可能会再写一篇文章来讲它的课后练习。

除了练习之外,网页上的lecture notes也值得一看,既可以作为补充阅读,甚至可以用来查询工具的用法。它对 vim、tmux、git 等工具用法进行了罗列,非常贴心。总的来说非常推荐,一个礼拜里每天花一小时看看视频,回头做一些练习,就能较全地了解unix系统下编程所需要的工具。

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值