2014-02-05 186 views
0

我有一個問題,我不確定我的硬件。這裏是:經典翻譯語言

假設您被分配到一些「經典解釋的PL」中編寫程序,該程序具有硬件/操作系統依賴性,最終設計爲在三種不同的硬件/操作系統環境中運行(例如X,Y和Z )。將有多少個不同版本的最終代碼?

如果有多個版本,您作爲用戶程序員必須做什麼來創建多個版本?如果只有一個版本,還有誰需要或不得不做些什麼才能使這個版本在所有三種環境中都能正常工作?

我傾向於認爲會有一個,因爲解釋器啓動並處理用戶程序。這是正確的嗎?任何幫助將不勝感激。

回答

1

這是一個觀點,可能是更正確的。例如,Python解釋器運行在各種各樣的機器上,但您的代碼(特定於平臺的模塊)的目標機器是Python「虛擬」機器,因此您可以在許多不同的平臺上運行相同的代碼。

在那裏做了所有繁重工作的人是Guido本人,或者更一般地說,是在每個平臺上實施翻譯的人。


其他的觀點是,有可能是這將需要你調整平臺的微妙變化。假設解釋器在兩個平臺上運行,一個是800x600屏幕,另一個是1920x1024屏幕。

因此,即使有可能是一致的plot命令,在不同的分辨率可能需要您的一些情報,以適應特定的機器。

在這種情況下,你可能想抽象屏幕特定的分辨率,使您的虛擬屏幕爲4096×4096,並具有打印時縮放到實際分辨率。

例如:

# Virtual plot, x and y are both 0-4095 
def plot(x,y): 
    # Get physical screen dimensions. 

    actualWidth = getSysData ("screenwidth") 
    actualHeight = getSysData ("screenheight") 

    # Convert virtual co-ordinates to physical ones. 

    x = x * actualWidth/4066 
    y = y * actualHeight/4066 

    # Plot the physical ones. 

    sysplot (x, y) 
0

原則上,你將能夠保持一個代碼樹程序適用於所有平臺。

但是,您的部分代碼可能仍然是平臺特定的。這是因爲即使像Python這樣的程序通常被認爲是跨平臺的語言也有特定於平臺的模塊。例如。 subprocess module具有一些操作系統特定的功能。此外,還有一些完全針對操作系統的模塊(例如windows module)。

作爲一個程序員,你將不得不確保任何特定於平臺的部分很好地包裹在模塊與一個定義良好的API,以便可以通過等同功能的代碼在不同的平臺來代替。您也可能希望避免使用過於針對特定平臺的功能(例如,使用上面提到的Windows模塊可能會讓您的程序移植到不同的平臺上很困難)。

請注意,您不一定必須使用解釋型語言來創建跨平臺程序。解釋型語言確實使它更容易,但編譯語言如C仍然完全可能。儘管C被普遍認爲是一個低層次的語言,它實際上是designed to be cross-platform

儘管低級別的能力,語言旨在 鼓勵跨平臺編程。

+0

請注意,雖然您可以使用C編譯語言編寫跨平臺代碼,但一般情況下,您需要重新編譯針對每個不同平臺的代碼。這與編譯爲虛擬機的解釋語言或語言不同,在這種解釋器/虛擬機中,必須爲每個平臺重新編譯解釋器/虛擬機,但用戶程序通常可以在任何地方運行。 –