Linux系统安装和基本使用
安装一个Linux操作系统
我们复用PA讲义的内容, 请大家根据PA0安装Linux操作系统.
获取"一生一芯"框架代码
当你阅读PA0讲义, 并进行到获取PA框架代码的部分, 将会有提示框请你返回到此处的讲义内容.
首先请你在github上添加一个ssh key, 具体操作请STFW. 然后通过以下命令获取"一生一芯"的框架代码:
git clone -b master git@github.com:OSCPU/ysyx-workbench.git
获取后, 你就可以回到PA讲义的相应位置, 继续阅读了. 不过你还需要注意:
- 请把
ysyx-workbench
作为PA讲义中的项目目录, 即将PA讲义中的ics2022
看成是ysyx-workbench
- 修改
ysyx-workbench/Makefile
中的学号和姓名时, 学号可先不修改, 等到大家完成预学习之后再修改
这种来回跳转的做法可能会给你带来一些麻烦, 但我们之所以这样做, 是希望把文档看作代码来管理: 我们希望做到类似"一生一芯"讲义调用PA讲义
的效果, 因此我们在PA讲义中尽可能少地提到"一生一芯", 而把"一生一芯"的相关内容都放到"一生一芯"本身的讲义中. 如果不遵守这条原则, 不仅会使我们维护讲义时感到困难, 而且大家阅读讲义时也不知道应该到哪里寻找相关的内容.
安装系统是独立解决问题的最简单的训练
如果你是第一次安装并使用Linux, 你可能会遇到非常多的问题. 不用担心, 因为全世界都在使用Linux, 因此你遇到的问题, 很大概率别人也遇到过, 在互联网上搜索关键字, 很大概率就能找到解决方案.
树立正确的价值观, 接受最大程度的训练
事实上, 你总能耍些小聪明来绕过这些训练, 例如
- 直接使用别人提供的虚拟机镜像或者一键安装配置的脚本, 瞬间完成本小节的任务
- 在网上搜到了所谓的PA攻略, 心里暗暗窃喜
- 找大佬要到了关键代码或者往期代码, 美言曰学习
有同学会觉得, "凭什么不能参考别人的攻略和代码? 我都看懂了啊!" 但从训练的角度来说, "看懂"和"自己独立完成"的效果是天差地别的: 你知道大佬为什么要这样做, 而不是那样做吗? 大佬踩过了多少坑, 这些坑背后是什么道理, 你能看出来吗? 相比于这些几乎躺倒就可以得到的"好处", 你更应该去想一下, 这会让你失去什么. "能抄对也是本事"这种主动降低自己要求的观点, 并不符合我们所提倡的价值观.
事实上, 如果你是初学者, 这些小聪明会给你的训练带来毁灭性的伤害:
- 你参考了这些在这个阶段不应该参考的内容, 它们就会成为你学习的上界, 因为你几乎不清楚它们哪里不好, 从而使得你几乎不会做得比它们更好
- 而且这会让你产生"我学得很好, 我善于学习"的错觉, 你就不会去尝试, 也不知道如何才能做得更好
- 更严重地, 你现在得不到应有的训练, 但将来总要面对那些没有攻略或者参考代码的新问题, 你自然也就无法解决它们
但说实话, 助教团队几乎不存在有效的方法来禁止大家耍这些小聪明. 其实, 这更多是需要大家发自内心去认可和执行的: 当你搜到了一些所谓攻略的时候, 你心里应该想到"阅读它们会降低训练的效果", 然后你主动拒绝它们的诱惑, 坚持自己独立完成实验内容. 这和大家自觉遵守学术诚信是很类似的: 你心里清楚考试作弊是不对的, 然后自发地独立完成考试题目.
事实上, 学术诚信远远不止考试不作弊, 我们推荐大家阅读一下MIT对学术诚信的诠释, 尤其是关于写代码的学术诚信. 在这里, 我们引用其中的一些示例说法(当然我们还是建议大家阅读原版的英文描述):
- 当讲义要求"实现X"的时候, 你必须在不复用任何外部资源的情况下独立实现X
- 分享代码和交换测试用例都是不合适的
你也许会觉得这些奇葩的要求颠覆了你的三观, 但这些准则归根到底是为了让你可以获得预期的训练效果: 不要忘记你是在通过学习提升自己的能力, 而不是交付项目. 如果你能够坚持下来, 你就能成为真正的专业人士.
我能否使用其它Linux发行版?
我们不会强制规定必须使用什么样的Linux发行版, 因此经常有同学提出类似"使用xxx发行版是否会对实验造成影响"的问题. 首先请阅读PA0中关于发行版的提示, 除此之外, 我们大概率无法给出确切的答复, 因为我们大概率没用过.
事实上, 如果你决定使用其它发行版, 你就应该做好解决新问题的准备.
Linux零基础用户入门
我们给大家推荐由中国科学技术大学 Linux 用户协会发起的Linux101, 大家可以挑选自己感兴趣的部分阅读.
命令行的艺术
The Art of Command Line这篇文章总结了很多常用的命令行工具, 也值得大家去阅读.
学习Linux基本使用
我们给大家墙裂推荐MIT的Linux工具使用系列课程: The Missing Semester of Your CS Education中文版. 通过学习这些课程, 你将会了解到如何使用Linux中的工具来方便地完成各种任务, 这将大大提升你的工作效率.
必做题:
- 课程概览与shell
- Shell工具和脚本
- 编辑器 (Vim)
- 数据整理
- 命令行环境
- 版本控制(Git)
包括阅读讲义并完成课后习题. 此外, B站上有这门公开课的视频供大家参考.