还剩1页未读,继续阅读
文本内容:
计算机教育中不可缺少工具教育目录
1.必须精通工具
1.命令行与shell工具
11.版本控制
22.文本编辑
23.远程服务器
24.数据处理
25.虚拟机
36.安全
3.结论
3.必须精通工具在传统的计算机科学课程中,从操作系统、编程语言到机器学习,这些高大上课程和主题已经非常多了然而有一个至关重要的主题却很少被专门讲授,而是留给学生们自己去探索这部分内容就是精通工具这些年,我们在麻省理工学院参与了许多课程的助教活动,过程当中愈发意识到很多学生对于工具的了解知之甚少计算机设计的初衷就是任务自动化,然而学生们却常常陷在大量的重复任务中,或者无法完全发挥出诸如版本控制、文本编辑器等工具的强大作用效率低下和浪费时间还是其次,更糟糕的是,这还可能导致数据丢失或无法完成某些特定任务这些主题不是大学课程的一部分学生一直都不知道如何使用这些工具,或者说,至少是不知道如何高效地使用,因此浪费了时间和精力在本来可以更简单的任务上标准的计算机科学课程缺少了这门能让计算变得更简捷的关键课程,工欲善其事,必先利其器,要做好一件事,工具也是非常重要大家不要小看这些东西(工具),可能你的工作时间大部分都是这些工具不熟练导致的,一个编译问题可能要花费你儿天的时间,数周的挫折感甚至会打击大部分新人信心.命令行与shell工具如何使用别名、脚本和构建系统来自动化执行通用重复的任务不再总是从文档中拷贝粘贴命令,不要再“你忘了执行这个命令”、“你忘了传那个参数”学习makefile的语法熟悉gcc常见命令学习常见的shell命令和编程,可以帮助自己提高工作效率版本控制如何正确地使用版本控制git或者svn利用它避免尴尬的情况发生,记录自己每一次修改,防止丢失劳动成果,与他人协作,并且能够快速定位有问题的提交不再大量注释代码不再为解决bug而找遍所有代码不再“我去,刚才是删了有用的代码?!”
2.
2.文本编辑不论是本地还是远程,如何通过命令行高效地编辑文件,并且充分利用编辑器特性不再来复制文件不再重复编辑文件我们可以用vim/Emacs这种经典专业文本编辑工具,也可以用有名集成开发环境vscodeEclipseIntelliJIDEA等初学者可以用集成开发环境,如果是Linux后台开发我建议还是用Linux上开发工具比较好
2.
3.远程服务器使用SSH密钥连接远程机器进行工作时如何保持连接,并且让终端能够复用不再为了仅执行个别命令总是打开许多命令行终端不再每次连接都总输入密码不再因为网络断开或必须重启笔记本时就丢失全部上下文我们可以tmux来保持远程服务器的会话存在,并使用mosh来支持网络漫游和断开连接查找文件如何快速查找你需要的文件不再挨个点击项目中的文件,直到找到你所需的代码我们可以通过find快速查找文件,通过rg找代码片段我们也用到了fasd快速cd并vim最近/常用的文件/文件夹
2.
4.数据处理如何通过命令行直接轻松快速地修改、查看、解析、绘制和计算数据和文件不再从日志文件拷贝粘贴不再手动统计数据不再用电子表格画图学会grepawksedtr等常见文本处理命令的常见用法
2.
5.虚拟机如何使用虚拟机尝试新操作系统,隔离无关的项目,并且保持宿主机整洁不再因为做安全实验而意外损坏你的计算机,保证环境干净独立,不再有大量随机安装的不同版本软件包
2.
6.安全如何在不泄露隐私的情况下畅游互联网不再抓破脑袋想符合自己疯狂规则的密码不再连接不安全的开放WiFi网络不再传输未加密的信息
3.结论如果学校没有专门课程,或者已经工作了,我建议大家多实践,在做demo实验,工作时候,遇到了就多花时间学习一下,多尝试用工具进行自动化,优化自己开发效率这里我推荐麻省理工学院的一个免费课程,涵盖各项对成为高效率程序员至关重要的主题这个课程实用且具有很强的实践性,提供了各种能够立即广泛应用解决问题的趁手工具指导,提供了全部课程的录制视频与相关资料。