CToID#2 之前有段時間想嘗試一下 Lisp 以外的語言,像 Go、Rust 或 JavaScript。我最不習慣的就是沒有 REPL 可以用,每次有個改動都要先編譯,然後再用 terminal 去執行那個編譯出來的程式看結果。而有 REPL 的情況下,我可以直接把我剛剛寫的東西載入進去,然後直接在 REPL 看看結果長什麼樣子。
katzecase print("mock REPL") 之前用其他 IDE 時通常有個 run 按鈕,就 run 一下看 console 就好。 後來換 Emacs 就寫一個快捷鍵 (progn save compile run toggle-console)。 或是就 TDD 跑測試看結果。 我覺得寫測試可以解決絕大多數的問題,剩下是函式的純度太低了。
CToID#2 (^・ω・^)丿 JavaScript 有 REPL 呀 我之前是試用 bun,他的編輯器整合好像沒那麼完善,我得再跳到 terminal 才能用 REPL。 (^・ω・^)丿 至於 Go 跟 Rust 這種需要編譯才能執行的程式語言… 其實 SBCL 也是編譯語言,但他的整體 REPL 互動性跟互動式的 Debugger 可以說是我寫過的所有語言裡最好的。我可以一邊改我的程式碼,一邊觀察那段程式碼如何和其他東西交互。 (^・ω・^)丿 寫久了就看得懂文件,看得懂之後其實你也不太需要 REPL 了 可是 REPL 應該要是開發週期的一部份,你在你程式執行的同時去修改原始碼,進而修改正在執行的程式的狀態,而不需要每次都要關掉舊的程式,使用新的程式碼編譯或執行。我所需要的只有把那一個 function 或什麼東西編譯進正在跑的程式中就可以了。
(^・ω・^)丿 至於 Go 跟 Rust 這種需要編譯才能執行的程式語言… 沒辦法,只能多翻文件。 寫久了就看得懂文件,看得懂之後其實你也不太需要 REPL 了 只要確保 IDE 有足夠能力能提示各個變數的型別,其實就很夠用了 不過 Rust 的型別真的是多到讓人想打人
(^・ω・^)丿 CToID#2 可是 REPL 應該要是開發週期的一部份,你在你程式執行的同時去修改原始碼,進而修改正在執行的程式的狀態,而不需要每次都要關掉舊的程式,使用新的程式碼編譯或執行。我所需要的只有把那一個 function 或什麼東西編譯進正在跑的程式中就可以了。 我覺得你需要瞭解一下 IDE 的 debugger 跟 breakpoint
katzecase CToID#2 可是 run 跟 REPL 不太一樣R 可是他就沒有 REPL ,任何替代的方案當然都會不太一樣R 可是 REPL 應該要是開發週期的一部份,你在你程式執行的同時去修改原始碼,進而修改正在執行的程式的狀態,而不需要每次都要關掉舊的程式,使用新的程式碼編譯或執行。 因為 REPL 修改的成本比較低嗎?重新編譯的速度也算快,是因為那一點速度會打斷思緒,還是你有必需依賴 REPL完成的功能? 我所需要的只有把那一個 function 或什麼東西編譯進正在跑的程式中就可以了。 有沒有個例子說明需求,為甚麼他必需是被編譯進執行中的程式,而不能是重新編譯?
katzecase 我可以一邊改我的程式碼,一邊觀察那段程式碼如何和其他東西交互。 例如新增一個 f ,要測試 f 與 x y z 的交互 在 REPL 中可以直接跑 (map f [x y z]) 編譯可以 print(map(f [x y z])) 我是覺得反正都要測,就乾脆把預期結果也寫起來,有需要直接調用就好 (testing "fx is 1" (is (= (f x) 1)))