计算机教育中缺失的一课

最近看到知乎一个热门话题

61ca29bae275a10329ced0237ec80af0.png

在传统的计算机科学课程中,从操作系统、编程语言到机器学习,这些高大上课程和主题已经非常多了。然而有一个至关重要的主题却很少被专门讲授,而是留给学生们自己去探索。这部分内容就是:精通工具

这些年,我们在麻省理工学院参与了许多课程的助教活动,过程当中愈发意识到很多学生对于工具的了解知之甚少。计算机设计的初衷就是任务自动化,然而学生们却常常陷在大量的重复任务中,或者无法完全发挥出诸如 版本控制、文本编辑器等工具的强大作用。效率低下和浪费时间还是其次,更糟糕的是,这还可能导致数据丢失或 无法完成某些特定任务。

这些主题不是大学课程的一部分:学生一直都不知道如何使用这些工具,或者说,至少是不知道如何高效 地使用,因此浪费了时间和精力在本来可以更简单的任务上。标准的计算机科学课程缺少了这门能让计算 变得更简捷的关键课程,工欲善其事,必先利其器,要做好一件事,工具也是非常重要。

大家不要小看这些东西(工具),可能你的工作时间大部分都是这些工具不熟练导致的,一个编译问题可能要花费你几天的时间,数周的挫折感甚至会打击大部分新人信心。

命令行与 shell 工具

如何使用别名、脚本和构建系统来自动化执行通用重复的任务。不再总是从文档中拷贝粘贴命令,不要再“你忘了执行这个命令”、“你忘了传那个参数”,学习makefile的语法,熟悉gcc常见命令,学习常见的shell命令和编程,可以帮助自己提高工作效率。

版本控制

如何正确地使用版本控制git或者svn,利用它避免尴尬的情况发生,记录自己每一次修改,防止丢失劳动成果,与他人协作,并且能够快速定位有问题的提交不再大量注释代码。不再为解决 bug而找遍所有代码。不再“我去,刚才是删了有用的代码?!”。

文本编辑

不论是本地还是远程,如何通过命令行高效地编辑文件,并且充分利用编辑器特性。不再来回复制 文件。不再重复编辑文件。我们可以用vim/Emacs这种经典专业文本编辑工具,也可以用有名集成开发环境:vscode ,Eclipse, IntelliJ IDEA等。初学者可以用集成开发环境,如果是Linux后台开发,我建议还是用Linux上开发工具比较好。

远程服务器

使用 SSH 密钥连接远程机器进行工作时如何保持连接,并且让终端能够复用。不再为了仅执行个别命令总是打开许多命令行终端。不再每次连接都总输入密码。不再因为网络断开或必须重启笔记本时就丢失全部上下文。我们可以tmux来保持远程服务器的会话存在,并使用mosh来支持网络漫游和断开连接。

查找文件

如何快速查找你需要的文件。不再挨个点击项目中的文件,直到找到你所需的代码。我们可以通过find快速查找文件,通过rg找代码片段。我们也用到了fasd快速cdvim最近/常用的文件/文件夹。

数据处理

如何通过命令行直接轻松快速地修改、查看、解析、绘制和计算数据和文件。不再从日志文件拷贝粘贴。不再手动统计数据。不再用电子表格画图。学会grep,awk,sed,tr等常见文本处理命令的常见用法。

虚拟机

如何使用虚拟机尝试新操作系统,隔离无关的项目,并且保持宿主机整洁。不再因为做安全实验而意外损坏你的计算机,保证环境干净独立,不再有大量随机安装的不同版本软件包。

安全

如何在不泄露隐私的情况下畅游互联网。不再抓破脑袋想符合自己疯狂规则的密码。不再连接不安全的开放 WiFi 网络。不再传输未加密的信息。

结论

如果学校没有专门课程,或者已经工作了, 我建议大家多实践,在做demo,实验,工作时候,遇到了就多花时间学习一下,多尝试用工具进行自动化,优化自己开发效率。

这里我推荐麻省理工学院的一个免费课程,涵盖各项对成为高效率程序员至关重要的主题。这个课程实用且具有很强的实践性,提供了各种能够立即广泛应用解决问题的趁手工具指导,提供了全部课程的录制视频与相关资料。

https://missing.csail.mit.edu/2019/

中文版本:

https://missing-semester-cn.github.io/

80e6826e1c72d586f5436112689d6a56.png

精通这些工具不仅可以帮助您更快的使用工具完成任务,并且可以帮助您解决在之前看来似乎无比复杂的问题。

欢迎加入极客星球圈子,分享多年工作经验和基础技术深度理解,内核,软硬结合,高性能编程,性能优化,后台开发核心技术,扩展视野,直播分享,面试问题,项目训练和指导,问题答疑,可以帮助想进各类大厂(芯片,自动驾驶,嵌入式,互联网等)制定学习路线和学习帮助, 可以分享各种不同公司宝贵的职场工作经验, 项目经验,普升经验,希望少走弯路,做得更好。

dae9256879ea01edc70490577dff11c2.png

详细点击查看-> 极客星球

详细了解-->>后端集训营|突飞猛进

dd12a1d9ffde01cfcb0e6d62b4ebaacc.jpeg

并发/并行技术全景指南


83875ce8a21f1e81fdc2b643d9eb17d8.jpeg

Linux调度系统全景图

3bf34ea0e11609ee1ebea0c3200dd925.jpeg

我对"Linux内存系统"的理解


b167fea6d42d285be3ce9690821205a3.jpeg

如何才能掌握所有的编程语言



看完一键三连在看转发点赞

是对文章最大的赞赏,极客重生感谢你741a825f374bd7c361953cd875983a17.png

推荐阅读

80a1a859eff933d8ee5e1ea58b834631.jpeg

定个目标|建立自己的技术知识体系


a64cb86db026c53c321eb6c8a6262855.jpeg

大厂后台开发基本功修炼路线和经典资料

14cd963c98589bd9c979df41fda38f03.jpeg

难走的路,从不拥挤

感谢一键三连在看转发点赞

82230d9e6a44e77027023015a2960429.png

点个 在看展示你的技术态度

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值