一、起因
下午,我開啟 noi 官網準備報名 csp j/s,一看官網展板:“noi linux 2.0 釋出” 我就興奮了起來。(9 月 1 日起開始使用,
也就意味著 csp j/s 使用 noi linux 2.0)
啪的一下很快啊,我點選了這個圖片連結。
一看這個配置:Ubuntu 20.04.1、vscode、sublime、code::blocks、gcc-9,
同時也去除了辣雞 IDE(GUIDE)。
相比於之前的 noi linux,這簡直是天堂啊!
回想去年參加 csp,使用的是老版的 noi linux,回想起來真是一把辛酸淚啊:那個老舊的 Ubuntu 14.04、莫名其妙卡死的桌面、
不能稱之為 IDE 的 IDE(GUIDE)、gdb 崩潰......我當時用的 emacs 和 vim(emacs稍微好一些,但是我比較習慣 vim),比賽前
還特意查了 vim 的用法、背了配置檔案。真是難以言表。
難道 CCF 終於瞭解到 OIer 們的痛點了嗎?他終於醒悟了嗎?
二、安裝系統
抱著試試看的心態,我下載了 noi linux 2.0 的 iso 檔案(3.4G),使用 VirtualBox 安裝了虛擬機器(vmware 我感覺不好用),
當然也可以實體機安裝雙系統,網上教程一大堆,自行搜尋。
這裡注意,新的 Ubuntu 20.04 是 64 位系統(32位的可以歇歇了),RAM 最少需要開 2048 MB(否則系統無法啟動)。
安裝系統就一路預設(一開始語言選的是中文,後來我後悔了,最好選英文),鍵盤佈局選擇 Chinese - Chinese 就行。
大概 20 分鐘左右系統安裝完成,重啟後彈出虛擬光碟機進入系統。
三、使用系統
整個系統給我第一眼的印象感覺還行(可以在桌面右鍵點選
更換桌布),但是系統似乎沒有網路模組,所以無法聯網。
點選左下角的點,開啟 VS Code、Terminal、Sublime Text、Code::Blocks。我寫了一份測試程式碼(本人 C++ 黨)。
#include <cstdio>
#include <cctype>
#include <vector>
using namespace std;
#define reg register
// 快讀模板
int readInt() {
reg int x = 0, f = 1; char ch = getchar();
while (!isdigit(ch)) { if (ch == '-') f = -1; ch = getchar(); }
while (isdigit(ch)) { x = x * 10 + ch - 48; ch = getchar(); }
return x * f;
}
int main(void) {
freopen("test.in", "r", stdin);
freopen("test.out", "w", stdout);
vector<int> v;
int n = readInt();
for (reg int i = 0; i < n; i++) v.push_back(read());
for (auto el& : v) printf("%d ", el);
puts("");
fclose(stdin); fclose(stdout);
return 0;
}
儲存在 ~/test.cpp
同時建立 ~/test.in 並輸入以下內容
5
1 2 3 4 5
在終端中輸入
$ g++ test.cpp -o test -std=c++11 -O2 # C++11 和 O2 優化
$ ./test
開啟 ~/test.out 檢視,輸出為:
1 2 3 4 5
VS Code、Sublime Text、Code::Blocks 我都進行了測試,並得出以下結論:
- VS Code 預設安裝了 C/C++、Python、Pylance、Jupyter 外掛,但是由於 C/C++ 外掛安裝後需要從 github 下載依賴檔案,而系統又無法聯網,所以 C/C++ 外掛基本無用,這也導致了 VS Code 在 noi linux 下尷尬的境地。(但是不得不說 VS Code 在其他地方非常好用,平常用來寫程式碼非常方便,同時跨平臺支援,上手難度非常低,想使用的話教程網上都有)所以在這裡不推薦使用 VS Code。
- Sublime Text 是另一款輕量化編輯器,和 VS Code 一樣顏值高,在 noi linux 下有 C++ 的語法提示,同時支援單檔案編譯,其萬能搜尋欄(Ctrl+Shift+P)也是非常順手。推薦使用 Sublime Text。
- Code::Blocks 是一款 C/C++ IDE(整合開發環境)。同時可以支援 C++ 語法提示,支援單檔案編譯,但是顏值非常樸素(
與 Dev-C++ 類似)。Code::Blocks 跨平臺支援,使用難度低,可以平時在其他系統使用。推薦 Code::Blocks。 - Vim/Emacs 上手難度較高,簡潔高效,但是在不熟悉其快捷鍵的時候效率非常低。所以這裡並未使用 Vim/Emacs 進行測試。
建議平時刷題的時候使用 Code::Blocks,可以拋棄老舊的 Dev-C++ 了。
小提示:Linux 的命令列非常高效,建議熟練掌握其常見命令,有時甚至在比賽時可以救你一命(親身經歷)
四、總結
noi linux 2.0 相比舊版本做了很大的改動,其使用更加方便,更加適合 OIer。
程式設計工具建議使用 Code::Blocks 和 Sublime Text。兩者都有較好的語法提示和單檔案編譯功能。
CCF 終於開竅了!