在本機安裝 8th

了解如何在本機安裝 8th,讓你在自己的電腦上解 Exercism 的練習


安裝 8th

8th 是以單一個包含所有內容的 ZIP 檔案散布的,裡面含有你所下載版本所支援之所有平台的 8th 版本。你的 8th 版本只授權給你個人,不得分享。

取得 zip 檔案

從 取得 8th 頁面開始,

  • 在表單中填入你的姓名和電子郵件,並選擇免費版。你必須接受 8th 授權條款。
  • 8th-dev 會寄一封電子郵件來驗證你。點擊註冊郵件裡的連結。
  • 8th-dev 會為你製作專屬的 zip 檔案,並寄一封相關的電子郵件給你。請在那封郵件裡尋找「download here」連結。

安裝

要使用 8th,你需要把 zip 檔案解壓縮到任何你能存取的資料夾。

zip 裡包含了幾個資料夾:

資料夾 說明
bin 所有支援平台的 8th 執行檔
docs 手冊與教學
libs 8th 支援函式庫(8th 程式碼)
samples 補充教學與手冊的範例程式碼
keys 內含你的金鑰與註冊資訊的「id.blob」

Pro+ 使用者請注意:id.blob 裡的加密金鑰對你所下載的每一個 8th 版本都是獨一無二的,而且它們在建置經過加密、可部署的應用程式時相當重要。如果你把 8th 移出它的散布套件,讓它找不到 id.blob,那麼當你執行 8th -v 時,它會回報 custid: id.blob?,提醒你它找不到識別資訊。

不論你在哪個平台上開發,都能產出 8th 所支援之任何平台的應用程式。

解壓縮 zip 檔案後,你就可以直接執行 8th。舉例來說,如果你在 64 位元 Linux 上把它安裝在 /opt/8th,那麼你應該可以輸入 /opt/8th/bin/lin64/8th 並附上任何你想要的參數,它應該就能正確運作。在 macOS 或 Windows 上也照著做。

把 8th 執行檔所在的資料夾加入你系統的 PATH 環境變數,就能讓你只要輸入 8th,而不必輸入完整的路徑。

使用 8th

8th 本身是一個命令列程式,並不打算讓你用點擊桌面圖示的方式來啟動。你可以用它建立可以那樣啟動的一般 GUI 程式,但 8th 編譯器本身是一個 CLI(命令列介面)程式。

如果你在 Windows 上執行,並使用 MSys 或 Cygwin shell,那麼你可能還需要使用可免費取得的 winpty 程式,你的主控台模式程式才能正常運作。較新版本的 Windows 10 似乎不需要這麼做。

如果你在 MacOS 上執行,請閱讀這篇 8th 論壇文章。

8th 命令列看起來像這樣:

8th [options] [[-f] file...] [-e 'code'...]

其中 [-f] file 選項的意思是「解讀該檔案的內容」,而 -e code 的意思是「解讀那段特定的 8th 程式碼」。這兩個選項都可以在命令列上重複指定,效果會累加。換句話說:

8th -f first.8th -f second.8th

會先解讀 first.8th 這個檔案的內容,然後解讀 second.8th 的內容。請注意,如果你只想執行一個 8th 檔案,不需要寫 8th -f first.8th,只要改成輸入 8th first.8th 就好。

以下是 8th 所能理解的所有 CLI 選項:

選項 說明
-b 呼叫 bin/build 工具
-D dir 把 homedir 設為 dir(預設依作業系統而定)
-e str 把字串 str 解讀為 8th 程式碼
-ee str 把字串 str 解讀為 8th 程式碼,之後結束
-f nm 解讀名為 nm 的檔案
-g 啟用 SED 除錯/檢查
-G 設定所需的 GL 版本(例如 3.1)
-h 顯示說明
-H N 把主控台歷程記錄大小設為 N 行(預設:100)
-k N 把資料堆疊與 r-stack 大小設為 N 個項目(預設:128K)
-l 顯示更多除錯資訊
-r N 把回呼資料堆疊大小設為 N 個項目(預設:256)
-s N 把遞迴堆疊大小設為 N 位元組(預設:0,表示系統預設)
-S 列出偵測到的 SDL 驅動程式,然後結束
-v 印出 8th 版本並結束
-vv 與 -v 相同,但附上供除錯用的額外資訊
-x 關閉堆疊型別與邊界檢查
-z 開啟資料項目計數
-Z 類似 -z,但會納入「debug/allocs」函式庫
-? nm 印出名為「nm」項目的說明
-- 表示 8th 選項結束

一般而言,你應該不需要用到 -k、-r 或 -s 這些選項;它們只是在你覺得有用時提供,例如一次在堆疊上放 128K 個項目太少時(老實說,如果真是這樣,你該改的是你的演算法……)。

如果你發現自己經常使用命令列參數,可以直接用「shell script」(在 macOS 或 Linux 上),或「batch file」(在 Windows 上,也叫做「command file」)來以你偏好的選項啟動 8th。

你也可以在 app:datadir 資料夾裡建立一個名為 settings.8th 的 8th 原始碼檔案。如果它存在,8th REPL 會在啟動時載入它,並印出相應的訊息。基於安全理由,打包後的應用程式不會尋找或載入這個檔案。

要結束 8th,可以執行下列任一操作:

  • 輸入 bye 並按 ENTER 。這會告訴 8th 正常結束
  • 輸入 1 die 並按 ENTER 。這會告訴 8th 異常結束,並把狀態碼 1 回傳給作業系統
  • 連續快速按兩次 Ctrl+C,或按一次 Ctrl+D。兩者都會告訴 8th 立即結束
  • 在執行中的應用程式裡,呼叫 throw 會引發例外。如果你是從 8th 主控台執行,大多數情況下會回到那裡;如果你執行的是檔案或打包後的應用程式,則會印出訊息並終止應用程式。

執行 8th 程式

8th 可以用幾種模式執行你的程式:

模式 說明
interactive 直接啟動 8th,在主控台輸入你的程式碼
script 把程式碼放進文字檔,然後用 8th mycode.8th(舉例)來執行。請見下方的提示……
app 用 build script(或 -b CLI 選項)把你的程式碼轉換成打包的應用程式

Pro+ 使用者:你可以建立加密的應用程式,幫助嚇阻駭客和其他心懷不軌的人。

在後兩種情境中,你的程式碼必須是純文字檔案(例如,不是文書處理格式)。任何輔助檔案都應該放在與程式碼相同的資料夾,或它的子資料夾裡。你可以藉由呼叫 app:asset 在 8th 中存取這些其他檔案。

所謂的「app」是一個獨立程式,像目標平台上任何其他程式一樣自行執行,不需要透過命令列由 8th 來執行。如前面所提,內容可以加密,以幫助嚇阻駭客。製作獨立應用程式的細節可以在使用 build 工具的那一節找到。

提示:如果你在 macOS、Linux 或 RPI 系統上執行,可以藉由以下方式讓你的 script 像一般系統命令一樣執行:

  • 把檔案設為可執行:chmod +x scriptname
  • 把程式碼的第一行改成:#! /usr/bin/env 8th
  • 確保 PATH 上有相關的 8th 執行檔

這對打包後的 appdata 也適用,所以如果你用 bin/build 建立了執行檔,也可以用同樣的方式使用它產生的 appdata,做法如下:

cat - path/to/appdata > newappdata
#! /usr/bin/env 8th<ENTER><CTRL+D>
chmod +x newappdata