拥抱 NOILinux

拥抱 NOILinux


蒋炎岩

南京大学计算机科学与技术系

jyy@nju.edu.cn

蒋炎岩 (南京大学计算机科学与技术系)
拥抱 NOILinux

Linux...

听起来就很可怕

  • “另一种操作系统”
  • “完全不一样”

那为什么还要用呢?

蒋炎岩 (南京大学计算机科学与技术系)
拥抱 NOILinux

ChatGPT 的回答

在算法竞赛中使用 Linux 而不是 Windows,这个决定可能基于几个原因,每个原因都有其独特的意义和好处。以下是一些可能的原因:

  1. 性能和稳定性:Linux 系统通常被认为比 Windows 更稳定和高效。在处理大量计算和数据时,Linux系统的性能表现往往更好。这对于算法竞赛中需要快速和准确计算的场景尤其重要。

  2. 开发环境和工具:Linux 提供了大量的编程工具和库,这些工具和库通常是开源的,易于安装和使用。对于算法竞赛,这意味着参赛者可以轻松地获取和使用各种编程语言和工具,如 GCC/G++, Python, Java 等,以及调试工具如 GDB 等。

  3. 命令行界面:Linux 的命令行界面(CLI)为用户提供了强大的控制能力。在算法竞赛中,熟练使用命令行可以帮助参赛者更快地编译、运行程序,以及执行其他任务,如版本控制和文件管理等。

蒋炎岩 (南京大学计算机科学与技术系)
拥抱 NOILinux

ChatGPT 的回答 (cont'd)

  1. 一致性和兼容性:在算法竞赛中,使用 Linux 可以确保所有参赛者在相同或类似的操作系统环境下工作,这有助于减少因操作系统差异导致的问题。此外,许多编程竞赛和在线评测系统的服务器都运行在 Linux 上,使用 Linux 可以减少代码在本地和服务器上运行时的兼容性问题。

  2. 教育目的:对于学习计算机科学和软件工程的学生来说,熟悉 Linux 操作系统是一项宝贵的技能。通过在算法竞赛中使用 Linux,参赛者不仅能提高他们的编程能力,还能学习如何有效地使用 Linux 系统,这对他们未来的学习和职业生涯都是有益的。

  3. 开源文化:Linux 和许多 Linux 上的工具都是开源的,这与算法竞赛中分享知识和协作解决问题的精神相契合。使用 Linux 可以让参赛者更深入地了解开源文化,并鼓励他们贡献自己的代码和解决方案。

蒋炎岩 (南京大学计算机科学与技术系)
scale
拥抱 NOILinux
蒋炎岩 (南京大学计算机科学与技术系)
拥抱 NOILinux / 使用 NOILinux

使用 NOILinux

蒋炎岩 (南京大学计算机科学与技术系)
拥抱 NOILinux / 使用 NOILinux

Don't Panic

它还是一个很正常的操作系统

  • 虽然经过了裁剪,几乎没什么 “功能” 了
  • 同学们的好奇心:遍历图形界面

另一方面,还是很全面的!

  • 有 Python
  • 有全套命令行工具
    • 水面下的冰山
    • 例子:strace “打开” 程序执行
蒋炎岩 (南京大学计算机科学与技术系)
拥抱 NOILinux / 使用 NOILinux

命令行工具?

你的编译运行流程是什么样的?


UNIX Philosophy

  • 做一件事、并且做好
  • 以文本接口协作

程序员的宿命:每时每刻都在编程

  • 自动化我们的流程
  • 自动运行测试
蒋炎岩 (南京大学计算机科学与技术系)
拥抱 NOILinux / 使用 NOILinux

听说有 Python?

那太好了

  • 让我们实现一个对拍吧

功能

  • 自动运行样例
  • 自动对比程序输出
蒋炎岩 (南京大学计算机科学与技术系)
拥抱 NOILinux / 在 Linux 下编程

在 Linux 下编程

蒋炎岩 (南京大学计算机科学与技术系)
拥抱 NOILinux / 在 Linux 下编程

最重要的事情说三遍

使用 Visual Studio Code

使用 Visual Studio Code

使用 Visual Studio Code

NOILinux-Slim (大家用的版本)

  • 已经移除了 Geany
蒋炎岩 (南京大学计算机科学与技术系)
拥抱 NOILinux / 在 Linux 下编程

Visual Studio Code

看似可怕

  • 英文界面
  • 弄不懂的复杂功能

实际简单

  • 生于 2015 年新时代的现代编辑器
  • 人类友好
蒋炎岩 (南京大学计算机科学与技术系)
拥抱 NOILinux / 在 Linux 下编程

基本原则

1. 如果有需求,就一定能做到

(当然,有时候需要插件;比赛环境可能就不行了)


2. 如果能做到,就一定好找到

(这一点才是最有趣的)

蒋炎岩 (南京大学计算机科学与技术系)
拥抱 NOILinux / 在 Linux 下编程

你只需要记住一个快捷键

Ctrl + Shift + P

Ctrl + Shift + P

Ctrl + Shift + P

  • 以及 Ctrl + P (可以通过 Ctrl + Shift + P 到达)

Chat is all you need

  • 虽然现在还没有那么 “智能”
    • 很快就会来了
蒋炎岩 (南京大学计算机科学与技术系)
拥抱 NOILinux / 在 Linux 下编程

Chat with Ctrl-P

如果能做到,就一定好找到

让我们试一试

  • 想要格式化程序?
  • 想要编译运行程序?
  • 想要调试程序?
蒋炎岩 (南京大学计算机科学与技术系)
拥抱 NOILinux / 在 Linux 下编程

有用的隐藏功能

常用的功能都应该有快捷键

  • 然后呢?
    • 我们可以遍历所有有快捷键的功能
    • 我们可以查看所有能赋予快捷键的功能
    • 这就理解了 vscode

想快速切换到命令行?

  • 试一试查找 “terminal” 相关
  • 我们的流程效率提高了很多
    • Ctrl-Shift-b 编译;Ctrl-` 切换到终端/切回
蒋炎岩 (南京大学计算机科学与技术系)
拥抱 NOILinux / 在 Linux 下编程

Tasks

现在我们知道有个概念叫 “Task”

  • Build 是一个 task
  • 那我们能不能设计自己的 task 呢?
    • 运行每个样例
    • 检查是否正确

需要一点 “依葫芦画瓢”

  • 一些基本知识
    • JSON 的语法
    • 路径和文件系统的概念
蒋炎岩 (南京大学计算机科学与技术系)
拥抱 NOILinux / 在 Linux 下编程

小结

在 Linux 下编程:用 Visual Studio Code

  1. 如果有需求,就一定能做到
  2. 如果能做到,就一定好找到

两个提示

  • 用好 Ctrl + Shift + P
  • 用自己喜欢的编程流程
    • 这是说给在现场听课的老师们的
    • 认识到自己的无知;终生学习
蒋炎岩 (南京大学计算机科学与技术系)
拥抱 NOILinux / 总结

总结

蒋炎岩 (南京大学计算机科学与技术系)
拥抱 NOILinux / 总结

总结

一个更 “Computer Science” 的思考方式

  • UNIX Philosophy:协作,而不是隐藏
  • 有上手的门槛,但 “编程” 是我们的归宿

Visual Studio Code: 一个好用的现代编辑器

  • 如果有需求,就一定能做到
  • 如果能做到,就一定好找到
蒋炎岩 (南京大学计算机科学与技术系)
拥抱 NOILinux / 总结

End.

蒋炎岩 (南京大学计算机科学与技术系)