※ 引述《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...