Niklaus Wirth是一位計算機科學家,負責研究和教授語言和編譯器的設計。當他設計Pascal語言和編譯器時,他的一些設計目標是使編譯器小巧快速高效,並且對任務進行分區,以便編譯器執行對編譯器來說很容易的事情,程序員做的事情很容易程序員。
爲了符合這些目標,他設計了一個單通道編譯器,它只需讀取一次源代碼,並在第一次通過時瞭解所有內容。他還用一個非常簡單的狀態機設計了一個編譯器:一切都按順序完成,按正確的順序,只按正確的順序。通過這樣做,與C編譯器相比,他非常容易獲得一個非常小巧,快速,高效和正確的編譯器,而C編譯器是非常困難,不正確和低效的編譯器,而FORTRAN編譯器又慢又大。
在程序開始時執行一次靜態常量分配是這些設計決策之一,它允許您編寫小型,快速,高效且正確的編譯器。幾十年前,Borland編寫了一個體積小,速度快,效率高,正確的Pascal編譯器,並且成功地從其他公司(如MS)獲得更昂貴的產品,允許無序聲明和其他通用的以及使編譯器變得更加緩慢和困難的有用選項,但是使編程更容易。
換句話說,MS選擇不同於Borland/Wirth的編譯器和用戶之間的任務劃分。
MS Pascal編譯器在很久以前就被丟棄了。但Borland編譯器繼續作爲Delphi。
計算機現在比以前要快很多,但編寫小型,快速,高效,正確的編譯器的任務仍然相同。新功能不是免費的。增加編譯的複雜性需要付出代價。即使是一個簡單的功能,如果必須從一開始就將其作爲一個例外添加到整個編譯器和語言的設計中,那麼這個功能也很麻煩。
http://docwiki.embarcadero.com/RADStudio/XE4/en/Memory_Management_on_the_Win32_Platform – bummi
你根本就做不到。編譯器不允許它。還有什麼人可以說呢? –
如果你真的想要一致性,犧牲掉純Pascal:http://wiki.oxygenelanguage.com/en/Minor_Language_Differences_compared_to_Delphi :) – lurker