经典的口译员语言

时间:2014-02-05 07:29:30

标签: cross-platform software-design

我有一个问题,我不确定我的硬件。在这里:

假设您被分配在一些具有硬件/操作系统依赖性的“经典解释PL”中编写程序,并且最终设计为在三个不同的硬件/ OS环境(例如X,Y和Z)中运行。有多少不同版本的最终代码?

如果有多个版本,那么您作为用户程序员必须做些什么才能创建多个版本?如果只有一个,还有谁还需要做什么才能使这个版本在所有三个环境中都能正常工作?

我倾向于认为会有一个因为解释器启动并处理用户程序。这是正确的吗?任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

那是一个观点,可能是更正确的观点。例如,Python解释器在各种各样的机器上运行,但机器目标与你的代码(尽管平台特定的模块)是Python“虚拟”机器,所以你可以运行相同的代码许多不同的平台。

在那里完成所有繁重工作的人是Guido本人,或者更一般地说,是在每个平台上实施翻译的人。


其他观点是,平台中可能存在微妙的变化,需要您进行调整。假设解释器在两个平台上运行,一个是800x600屏幕,另一个是1920x1024屏幕。

因此,即使可能存在一致plot命令,但不同的分辨率可能需要您的一些智能来调整到特定的机器。

在这种情况下,您可能希望将屏幕抽象为特定分辨率,以便您的虚拟屏幕为4096x4096,并在绘图时将其缩放到实际分辨率。

例如:

# 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)

答案 1 :(得分:0)

原则上,您将能够为所有平台维护程序的单个代码树。

但是,部分代码可能仍然是特定于平台的。这是因为即使像Python那样的程序通常被认为是跨平台的语言也有特定于平台的模块。例如。 subprocess module具有一些特定于操作系统的功能。此外,还有完全特定于操作系统的模块(例如windows module)。

作为程序员,您必须确保任何特定于平台的部件都很好地包装在具有良好定义的API的模块中,以便可以在不同平台上使用等效功能的代码替换。您可能还希望避免使用过于特定于平台的功能(例如,使用上面提到的Windows模块可能会将您的程序移植到不同的平台上。)

请注意,您不一定要使用解释性语言来创建跨平台程序。解释性语言肯定会让它变得更容易,但对于像C这样的编译语言来说,这仍然是完全可能的。尽管C通常被认为是一种低级语言,但实际上它是designed to be cross-platform

  

尽管它具有低级功能,但该语言的目的是为了   鼓励跨平台编程。