※ 引述《Emacs (打馬小蝦兵)》之銘言:
: 有人說不算
: 有人堅持算
: 到底它算不算程式語言呢?
: 我個人是覺得:不算
: 它比Scripting language還沒資格被稱作程式語言
嚴格的來說,不能稱之為程式語言的只有一種,叫做 Shell
(command.com、sh...)
還有的,就是一些內建功能很多的指令,讓你誤以為它是一種 language,像是 awk.
要去區分它是不是一種程式語言的標準,就看它是否要經過 parsing.
編譯式語言透過 compiler parse(e.g fortran、alog)
直譯式語言透過 interpreter parse(e.g. basic)
語法、運算子、命令等,都要經過查驗並轉譯才能執行.
最早 Computer 不能與使用者互動,因為沒有鍵盤,
所以不能用鍵盤喇叭嘴,只能用卡片喇叭嘴
因為有了 shell,所以開始可以接受鍵盤輸入,進行一些即時的工作.
然後為了不想每次,任何時間,都得做一些無腦的重複性工作,
所以可以進行一些指令的編集(.sh、.bat),然後傻瓜式執行,這就是 script 的由來.
寬鬆的解釋, script 是指不須經過像 compiler 那樣嚴格的先期過程(compiling),
輸入了就可以馬上 run.
而 shell 經由內建的函式、命令式去接受指定的參數並進行指定的工作,
如果內建的函式、命令式沒有對應的指令,就去外部找(e.g. del -> deltree),
如果輸入的參數不是內建的可接受項目,可能就會直接噴 error 給你看.
所以精確的說,我們會說 shell script, 而不是 shell programming.
而直譯式程式語言因為也不用經過 compiler 的先期驗證,
所以後來有些人,會稱它是 Scripting Programming,
但是它原本是叫做 Interpreter Language,而不是 Scripter/Scripting Language.
有一本書,作者群連這都搞不清楚,竟然還可以出到第二版,
書名叫做 菲絲恩教你學會 Python...
HTML 有 parse 它的語法 interpreter,所以,不嚴格的說,它是一種程式語言.
不過, Emacs 就真的不是 Language,最原始的 Emacs from MIT,只不過是個 editor...