MOS:COMP

本頁的目的，是為電腦科學、軟體、網際網路及資訊科技等領域之條目提供基本的格式指引。在遵循此指引的同時，也應該遵循格式手冊的其它方針與指引。

在編輯與電腦科學相關公司、產品或服務之商標名稱時，請遵照維基百科的商標相關方針與指引。

**維基百科不是字典**。使用者應盡量將相同性質之科技相關術語或產品整合為較完善、優質的文章，而不是建立大量的小作品。

### 產品目錄

任何介紹產品的條目皆應包含其開發背景及版本更迭。但是，維基百科不是目錄也不是資訊收集處，因此不應將該產品的每一次更新或版本更迭全部列出。基本上，只需要包含一定程度的資訊，能讓讀者大致了解該產品的演進歷程即可。如需列出產品的所有版本，可以在維基數據處編輯對應資料項的「軟體版本」屬性。

同時，也不要直接將產品諸多特色以列表形式呈現，因為表列的資訊可能會過期，或因為協助廣告或宣傳嫌疑而遭到移除；另外，請儘量不要使用模稜兩可的時間詞，如「近年來」及「今日」等。

### 產品的命名

在為產品條目命名時，應建立其最常用名稱之重新導向頁面。

大多數的軟體供應商會使用兩種方式為產品系列中的某一特定版本命名：

1. 以**版本號**命名，如 **iOS 11**、**iOS 12** 等。
2. 以**特定名稱**命名，如 **Windows XP**、**Windows Vista** 等。

不過電子遊戲業界則不同。大部分的電子遊戲標題中帶有的數字，是用以表達前作及續作之間的關係，而**不只是單純的版本號**。例如，《**超級瑪利歐兄弟 3**》跟《**超級瑪利歐兄弟 2**》為前後作關係，是兩款完全不同的遊戲。不過有些時候電子遊戲發行商仍會使用版本號以區別特定更新版本，例如《**終極動員令：紅色警戒 2**》**v.1.008** 就單純只是《終極動員令：紅色警戒 2》的更新補丁而已。

在描述產品時請儘量使用其**最常使用的名稱**，如應使用 **Windows XP** 而不是 Windows 5.1 或 Windows NT 5.1。另外，請不要混用版本號及特定名稱，如應避免使用 Windows v6.0 或 Windows 6 指代 **Windows Vista**。同時，維基百科也禁止自創縮寫。

### 服務包

服務包是程式的更新、修復和補丁的合輯，基本上以獨立安裝套件之形式發布。使用者在編輯相關條目時，應清楚區分服務包與產品用詞。

在描述服務包本身時，應列出該服務包之**全名**，例如：

* **Windows XP Service Pack 2**
* **WinZip 9 Service Release 1**

在描述已安裝服務包的產品時，建議使用「 **（已）安裝『服務包名稱』的『產品名稱』** 」，例如：

* **（已）安裝 Service Pack 2 的 Windows XP**
* **（已）安裝 Service Release 1 的 WinZip 9**

此外，在有需要時，可將軟體版本號簡寫，例如：

* **Windows XP SP2**
* **WinZip 9 SR-1**

請儘量只使用上述其中一種方式撰寫條目。若過度混合使用，將導致不熟悉科技術語的讀者無法區分服務包及產品兩者之間的差別。若參照來源中同時使用多種描述方式時，請盡量減少文章中的用詞差異，並詳細描述每一用詞所指物件。

### x86 與 IA-32

在撰寫電腦相關條目時，請謹慎使用「x86」一詞，因為其定義可能根據文章性質而有所不同。廣義的 x86 是指由英特爾首先推出，其它廠商隨後跟進研發的一種中央處理器指令集架構。x86 又根據所使用的位元組字長不同，分為採用 32 位元架構的 IA-32 與採用 64 位元架構的 x86-64，其中 IA-32 因其高普及率成為「x86」的代名詞。不過，在撰寫條目時，仍應將用詞區分清楚。

### 32 位元與 64 位元

請勿使用**任何**關於位元組字長，如「32 位元」、「64 位元」等用詞描述特定軟硬體架構。由於這些用詞之定義過於模糊不清，若使用容易造成讀者誤解。

在多數情況下，32 位元及 64 位元分別是指採用該長度位元組之中央處理器架構中最常用者，即 IA-32 及 x86-64（又稱 x64）。但由於兩者皆不是唯一採用 32 及 64 位元的架構，因此不能用以代稱「32 位元」及「64 位元」中央處理器。在撰寫條目時，應清楚列明特定架構名稱。

正確用法舉例：

* 「此程式支援 **x64** 架構之中央處理器。」
* 「至於產品的 **IA-64** 版本⋯⋯」
* 「⋯⋯**專為 Zilog Z80 及與其相容的中央處理器**設計的.z80 格式⋯⋯」

錯誤用法舉例：

* 「此程式支援 _64 位元_架構之中央處理器。」
* 「至於產品的 _32 位元_版本⋯⋯」

### Linux 與 GNU/Linux

請使用「Linux」而非「GNU/Linux」描述以 Linux 核心為基礎的作業系統。GNU/Linux 一詞應**僅**用於描述特定作業系統和部分 Linux 發行版。

儘管自由軟體基金會建議使用 GNU/Linux 為 Linux 的標準譯名，但維基社群基於名從主人原則，在參考諸多可靠來源及長時間的多方討論之後，決定**否決**自由軟體基金會之主張，選擇以 Linux 作為維基百科內的通用譯名。

### 任何主張都要有來源佐證

在維基百科中，任何主張都**必須有可靠來源佐證**，包括軟體的發售時間、大小、支援語言及開發時所使用的程式語言等。有些主張看似「不必證明」，因而容易被編輯者所忽略，包括「**支援多種語言**」、「**以 C++ 語言撰寫**」及「**在 Windows 環境中開發**」等。

### 用詞的搭配

請不要刻意在條目中使用贅詞或艱澀難懂的字彙。維基百科的目標是讓讀者閱讀資訊時感到舒適，而**不是**成為線上權威學術期刊。若無必要，請勿使用罕用或具違和感的同義詞，因為**沒有必要**。

常見情形如下：

* 已經被被開發者或著作權所有者忽略，因此不再進行銷售或提供技術支援的電腦軟體應稱為「**已被廢棄的軟體**」（abandonware），而不必使用「_已被忘卻的軟體_」（forgottenware）等具不必要文學意涵的用詞。
* 描述「產品的生命周期結束時，供應商停止行銷、售後服務等行為」的術語應稱為「**停止支援**」（discontinuation）而非「_丟棄_」（abandonment）。
* 電腦程式「**運行於作業系統中**」（run under），而非「_運行於作業系統上_」（run up）或「_運行於作業系統下_」（run down）。
* 電腦程式「**自使用者帳號中**」（in/within the context of a user account）存取資料，而非「_自使用者帳號上_」（on）、「_自使用者帳號下_」（under）、「_自使用者帳號裡_」（inside）或「_自使用者帳號外_」（over）存取資料。儘管這些詞語在口語或非正式場合使用是沒有問題的，但典範條目標準建議使用較精準的詞彙。
* 儘管都是「碟」，但「**光碟**」（disc）與「**磁碟**」（disk）採用的讀取結構完全不同，前者使用光學雷射掃描，後者則使用磁性媒介讀寫，請多加注意。

### 描述口吻

請避免使用過去式描述具有存在事實的事物。

錯誤用法舉例：
System Software 6 _曾是_由蘋果電腦開發，並_曾_發行於麥金塔平臺上的作業系統。

上述用法會讓讀者認為 System Software 6 這個作業系統現在已經「不是由蘋果電腦開發」、「不是發行於麥金塔上」了；但事實上作為已經發售的作業系統，其開發者及發行平臺皆已成為**既定事實**，並不會隨時間經過而改變。若必須要表達該事實已經發生，則應使用適當的**年代**表述。

正確用法舉例：
System Software 6 **是**由蘋果電腦開發，並**於 1988 年 4 月**發行在麥金塔平臺上的作業系統。

**命令列範例**指的是一段程式或者 shell 命令的具體用法，使用者可以將其輸入電腦終端或者命令提示符執行。本章節描述這些範例，以及其他命令列內容的格式規範。

### 通用指引

當提供命令列範例時應當保持清晰和簡單。這不僅會顯得更專業，同時也防止讀者產生困惑。下面的指南界定了什麼是清晰，簡單的範例。

* 命令列的例子應當採用等寬字型。對於行內的代碼，應該使用 `<code>`（有時要配合 `<nowiki>`）。對於多行的代碼塊，應該使用 mediawiki 語法，在行前加一空格；或者也可以使用 `<pre>` 生成不帶維基文字支援的代碼塊。對於 Unix shell，也可以使用 `<syntaxhighlight>` 的 `lang="shell-session"` 突顯。
* 維基百科不是一個展示作者的個人偏好的媒介。因此除非有必要，否則不應包含任何環境變數，日期，工作目錄，使用者名稱或主機名稱。
* 術語：_選項 (option)_ 是一種開關（一些修改一般行為的命令） 。_參數 (parameter)_ 是一個特定值，如檔案或主機名稱。_參照 (argument)_ 這個詞是用來指任何空格分隔的字串按照命令的名字，其中包括選項和參數。
* 列舉參照時，應注意保持簡單。不加解釋地定義參照會混淆讀者。
* 維基百科不能取代手冊頁。條目不應該列出與命令相關的整個選項列表，除非這樣的選項非常少，或者這樣的描述方式是絕對必要的。
* 當指定參數時，應當使用合理的名稱來指代他們。這些名稱應該使用斜體，不應包含空格（空格通常用來分隔命令列的多個參照，使用空格會導致混淆）。以下是一些例子：

```
(提示符) command _parameter-name_
```

```
(提示符) command _parameterName_
```

```
(提示符) command _parameter\_name_
```

```
(提示符) command _parametername_
```

* 一致性是很重要的。不要在同一個條目里同時使用上述四種方法來命名參數，以免混淆讀者。
* 非必須並且可以完全省略的參照應放在方括號[ ]中。
* 有很多方法指定重複的參數。以下兩個是最常見的：

```
(提示符) command _parameter0_ [.. _parameterN_]
```

```
(提示符) command [_parameter_ ...]
```

### 具體平臺指引

#### DOS、Windows、OS/2

目前最常見的 DOS 平臺是 Windows 平臺下的 MS-DOS。因此，僅在 MS-DOS 下適用的例子一般不需要特別說明。但是，如果該實例僅針對某個特定版本的 MS-DOS，那麼應當標明相關資訊。如果已知其他的 DOS 平臺下該範例有不同的效果，也應當加以說明。
適用於 DOS 命令列的例子應遵循下列額外的指導方針：

* 程式或命令名應全部大寫。
* 標準的 MS-DOS 風格的選項（例如 / C，其中 C 可能是其他字元）也應該大寫，除非它們是區分大小寫的。
* 程式名稱應當附加適當的檔案副檔名，以與內建的命令名稱相區別。如果某些版本的 MS-DOS 中不包含某個特定的程式（如 MOVE.EXE 或 EDIT.COM），那麼應當註明包含這些程式的版本。

#### 類 Unix 系統

* 大部分類 Unix 系統的命令實際上都是可執行檔。Shell 內建的命令（如 cd 和 history）也在我們討論的範圍內。
* 類 Unix 系統中常見的 Shell 相互之間有著一定的差異。因此，與特定的 Shell 相關的命令或者實用程式（如 for 迴圈或者流特性）應當儘可能地避免。
* 如果為了正確地作出說明必須使用一串與特定 Shell 類型相關的命令，那麼你應當同時提供類 ALGOL 的 sh，ksh 和 bash 代碼，以及 C 語言風格的 csh 和 tcsh 代碼。兩者的語法沒有差別時無需這麼做。
* 類 Unix 系統中的大部分命令都是全部使用小寫字母的。然而，由於 shell 和操作環境區分大小寫的特性，應注意大小寫格式與命令或檔名匹配。如果有必要，建議使用標題錯誤模板。
* 通常情況下需要權限的命令與不需要權限的那些應當加以區別。如果某個命令確實需要特定權限，那麼應當給出一份免責聲明指出在無限制的權限下執行命令所具有的風險。
* 在某些情況下，命令列參數很可能包含一些 shell 元字元（如萬用字元等）。在這種情況下，明智的做法是在例子中使用引號，以防止使用者收到讓他們感到奇怪或者毫無來由的錯誤。

### 提供範例輸出

為一個命令提供輸出範例是一種保守的做法。這種情況下應當給出在終端中實際鍵入的完整的命令和所有的參數。命令的輸出因此將只依賴於執行環境和其他變數。依順序使用標籤 `pre``nowiki` 可以確保輸出文字的格式正確。

### 使用範例

#### DOS

* DOS 預設命令 DIR，這用於列出檔案和資料夾:

```
> DIR [_options_] [_pattern_ ..]
```

* MS-DOS （其行為類比了先前版本 DOS 的功能）上的程式 MOVE.EXE：

```
> MOVE.EXE _source_ _target_
```

#### 常規 Unix

* 用 Unix 風格系統上的 ls 命令列出檔案和目錄：

```
$ ls [_options_] [_file_ ..]
```

* 用 mkfs 命令建立新的檔案系統，通常需要一定的權限：

```
# mkfs [-t _fstype_] [_fs-options_] _device_
```

* wget 程式，GNU 實用工具之一，根據給出的 URI 取得檔案。URI 可以包含 shell 的元字元，因此參數需要加引號以防止出錯。

```
$ wget [_options_] '_URI_'
```

#### Shell 特性

* sh/ksh/bash 中內建 if 結構的語法異同：

```
$ if _command_ ; then _command_ ; .. ; fi
```

在 csh/tcsh 中:

```
% if (_expression_) then _command_ ; .. ; endif
```

#### 輸出舉例

* df 命令的輸出舉例，列出了掛載的檔案系統磁碟空間使用情況：

```
$ df -P
Filesystem          512-blocks      Used Available Capacity Mounted on
/dev/hda2             39331760   7398904  29834768      20% /
```

按照方針，維基百科不是教程，也不是未經篩選的例子收集處。編者應該將頁面上已有的冗餘代碼全部移動至維基教科書的相關頁面。

* 在演算法類條目（如快速排序）中不應用幾種類似的語言重複舉例，而要使用單個語法簡單的流行語言或虛擬碼書寫範例。按照不同程式設計範式實現演算法、分開舉例則一般是可以接受的。編者可以在維基教科書 b: 演算法實現內羅列各種語言的實現。如 b: 演算法實現 / 排序 / 快速排序。避免使用為特定語言、計算平台或編譯器的代碼最佳化而損失可讀性的代碼片段（如 `p[++i]=xxx;`），請在維基教科書中詳細介紹此類代碼片段。
* 在命令列程式的條目中的例子語言（csh、bash、cmd…）不同常常是 Shell 命令語言的不同。這不屬於程式本身的功能，也須節制加入。
* 在電腦語言條目（如 Python）中不應使用大段代碼來介紹該語言的語法。最好只保留該語言的 helloworld 程式範例，並使用文字或列表來說明該語言所支援的語法特性（如迴圈、函式物件等），並添加內部連結指向那些語法特性。
* 行動程式碼段時要做以下幾件事：
  * 在維基教科書的討論頁張貼來源橫幅。
  * 在條目的外部連結部分使用 {{wikibook}} 模板來指出代碼的位置。
  * 編輯維基數據項，添加跨語言連結，將教科書內的頁面和維基百科條目關聯。

### 公開的 URL

### HTTP 和 HTTPS

一個網站可能同時支援超文字傳輸協定（HTTP）和超文字傳輸安全協定（HTTPS）傳輸協定，即網址以 `http://`／`https://` 開頭。我們建議使用者參照以下模式加入連結：

* 當網站只使用 HTTPS，或同時支援 HTTP 和 HTTPS 時，使用 `https://`。
* 當網站只使用 HTTP 時，使用 `http://`。