分享

计算机教育中缺失的一课!

 mynotebook 2023-02-11 发布于湖南

大家好,我是小北。

图片

最近看到一个问题,说为什么大学 C 语言课不顺便教一下 Makefile、gdb 等工具链。

回想了一下,好像确实是这样,以前大一学 C 语言的时候都是直接用 Dev C++/ VS  这样的集成开发工具,不太懂编译、链接,更别说 gdb、gcc了,直到后来学习写 OS 的课程才接触到这些命令行工具,也是看完 CSAPP 才明白链接。

而在很多学校的 CS 课程设置中,会学操作系统、计算机网络、编译原理、数字逻辑、图形学、机器学习等课程,但没有一门课系统的交给我们如何正确高效的使用计算机工具。

比如 shell 脚本、版本控制、Debug、性能探测、常见的 Linux 命令。

像 grep、awk、sed 这些瑞士军刀般的命令其实是极大的提高了我们的开发幸福感。

这一整个主题其实是围绕着计算机生态系统的知识,这门课的缺失导致我们大多数人都是在需要的时候,临时去 Google 上搜,然后跟着别人的命令复制拷贝,解决问题了,这就过了,没解决,那就换个关键词。

这不仅导致效率低下,而且会让我们缺乏系统的软件开发素养,这也是我一直觉得差点意思的地方。

也很难找到一本书或者一门课能够完美的覆盖各个主题,都是在网络上零散的学习一些。

而 MIT 就开了一门叫做 Missing Semester 的课程。

关于如何高效使用这些计算机工具的课程,算是补齐了 CS 教育中缺失的那一课。

我问了很多不同学校的同学,发现国内似乎还没有学校会开设类似的课程,毕竟这玩意不好考试。

总不能默写命令吧?

下面介绍下 MIT 这门课程,官方介绍:

在传统的计算机科学教育中,你有可能会选修大量的课程来教授你CS中的高级主题,从操作系统到编程语言再到机器学习。但在许多院校中,有一个重要的主题很少被提及,而是让学生自己去学习:计算生态系统知识。

多年来,我们在麻省理工学院帮助教过几门课,一次又一次地看到,很多学生对可用的工具知识点都很有限。计算机是为自动化手工任务而生的,然而学生们经常用手来完成重复性的任务,或者未能充分利用版本控制和文本编辑等强大的工具。在最好的情况下,这导致了效率低下和时间的浪费;在最坏的情况下,会导致数据丢失或无法完成某些任务等问题。

这些主题没有作为大学课程的一部分来教授:学生们从来没有被告知如何使用这些工具,或者至少没有被告知如何有效地使用这些工具, 从而将时间和精力浪费在本应简单的任务上。标准的CS课程缺失了关于计算生态系统的关键主题,而这些主题可以让学生的生活变得更加轻松。

为了帮助弥补这个问题,我们正在开设一个课程,涵盖了我们认为成为一名有效的计算机科学家和程序员的关键话题。这门课是实用性和实践性的,它提供了实践性的工具和技术介绍,你可以立即应用到你会遇到的各种情况。

该课程在2020年1月MIT的 '独立活动期 '期间开设---为期一个月的学期,以学生开设的较短的课程为特色。虽然讲座本身只对麻省理工学院的学生开放,但我们将向公众提供所有的讲座资料以及讲座的录像。

官网的课程计划:

图片

这些主题看似不是 CS 专业中最为核心的课程,但却是我们每天开发工作中都会接触的。

高效的掌握这些工具,对我们日常学习、开发、工作都会产生最大的影响,

对于开发来说,这会让我们感觉工作很顺畅,不会写着写着又去谷歌搜索“怎么用命令行分割字符串”、“怎么设置定时任务”类似的问题。

这里介绍几个课程主题:

命令行

命令行可以说是日常开发工作中使用频率最高的工具了。

比如我们可以使用别名、脚本以及构建系统去自动化执行一些周期任务,同时避免在文档中不停地复制粘贴命令,或者「忘记运行某个程序」、「忘记传递某个参数」等。

例如,快速搜索历史记录可以节省大量时间。

下面这个栗子会展示一些使用 convert 命令为 shell 历史记录做索引的相关技巧:

图片

版本控制

版本控制是开发大型软件项目的必备工具。

如何在多人协同开发的项目中协调各个参与者,保持代码及时更新,避免冲突,这都依赖版本控制工具。

版本控制工具也是从集中式诸如 SVN(鹅厂以前使用得多)逐步过渡到分布式的版本控制如 Git。

这门课会教一些比较使用的 Git 知识,比如如何向开源项目共享代码(pull request),如何使用 git bitsect 来查找破坏单元测试的提交,然后用 git revert 去修复:

图片

文本编辑器

文本编辑也是命令行环境下常见的操作,我们通常需要登录到服务器,然后对配置文件、数据文件等做一些修改。

同时,有些人也非常喜欢使用类似的文本编辑工具来写代码,这样基本可以脱离鼠标。

在这门课里也会教授一些高级的 vim 知识,如宏特性等。

比如这个例子展示了如何使用 vim 将 html 的 table 标签转换为 csv 格式:

图片

除了这几类以外,还会讲授到如何使用 tmux 进行多窗口操作,保持服务器登录;fd、rg 等进行文件查找;如何使用命令行快速进行文本数据处理等。

用一门课的时间系统学习换取学习、科研、工作中更高的效率,应该是很划算的。

MIT课程地址: https://missing.csail./

目前国内有小伙伴也把视频配了中文字幕,大家可以去看看:

https://space.bilibili.com/1010983811



    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多