計算機語言是程序員和計算機溝通的橋樑,旨在實現人的意志和算法。程序員
彙編語言的變量個數是有限的,就是寄存器的數量。其餘語言因爲命名的限制,變量的命名也有不一樣的風格。 Lisp 語系的命名最爲靈活。boolean? float->int one-two 均可以用於變量的名字。算法
常量也是一種變量,只是對變量命名的一種保護,表示一旦命名,不能更改,這個保護機制不是變量自己的能力。閉包
Ruby 用首字母大寫的形式命名類常量,命名空間常量。Perl 語言用前導 $ 來表示標量,也就是容納一個固定值的容器,而 NEWLISP 則用 $ 表示全局變量。函數
因爲循環,函數的設計,須要大量的變量資源,許多變量名稱被反覆的使用,爲了讓這些變量名稱彼此不衝突,許多語言使用了局部變量。Javascript 的局部變量只存在於函數的設計中,而 大部分的高級語言則在循環,閉包,類聲明之間,命名空間聲明之間,都自動設置了局部變量的能力。工具
也有一些語言用特殊的聲明來區分全局變量和局部變量,而臨時變量(Perl5中的 local )則是另一種局部變量的變種。設計
循環 幾乎全部的語言都會有循環處理一段代碼的能力,除了最原始的彙編語言。沒有循環能力的語言是用 goto 程序指針跳轉的能力來實現循環。而條件設置是全部語言的基本特性,就好像變量設計同樣。甚至 Arm 彙編語言每一條語句都暗含了一個條件設置。X86的每條語句一樣暗含了一個條件位的保護。指針
命名空間 命名空間是變量設計的一種演化,是高級語言的一個特性。對象
函數設計 幾乎全部的語言都有函數設計的能力,但一些函數式語言爲了彰顯本身函數設計的能力,甚至聲明不存在變量,其實這是扯淡,它們所說的消除了變量,只是消除了一個命名變量被賦值兩次或以上的能力,這是做繭自縛的作法,雖然自得其樂,但卻嚴重限制了語言的靈活性。由於這些人把程序員當成了不被信任的對象。實際上,程序員纔是語言的設計者,使用者和靈魂,而不是相反。ip
計算機語言做爲表達程序員思想的工具,應當有最精巧的設計,無限升級的可能。不少語言在發明的時候,就讓人看到了消亡的樣子,這樣的語言只會是曇花一現,終將消失在計算機語言的歷史長河中。資源
道可道,非長道。也許被表現出來的語言,都不是真正能長久的語言,事實真是這樣嗎?