2

我正在尝试编写一个在 Windows 和 Mac OS X 上运行的软件。这个软件与 Dropbox 的客户端非常相似。以下是特点:

  1. 用户界面并不复杂。大部分用户操作是配置和监视软件的状态
  2. 需要与系统对话以获取系统的性能,例如 CPU 的利用率、网络带宽的利用率……等等。
  3. 使用尽可能少的系统资源(CPU、内存、IO)

所以我的问题是我应该使用哪种语言和框架。语言/框架应该: 1. 核心代码应该可以在代码级别上在 windows 和 Mac OSX 上重用。代码级别意味着代码可以跨平台运行,但我不介意在每个操作系统平台上重新编译代码

  1. 核心代码层可以很容易地与 OS 特定代码集成,例如 Mac OS 的 cocoa objective-c 代码或 windows 的 C++ 代码。原因是我想通过操作系统特定的语言编写两个不同的 UI 视图层。
  2. 如果代码可以编译为本机指令而不是像 Java 这样的解释性指令,那就更好了。这是性能考虑。
  3. 再次,尽可能快,尽可能小。
  4. 我更喜欢 LISP 系列,但不是必须的。
4

2 回答 2

0

我认为没有简单且“正确”的解决方案。

我相信使用 C++/C 很好:

- you will have to use OS-specific API and code to 'talk to system'
- you would use QT, but you want to use 'as less as possible resources' - this is not about QT

好像不是什么大工程。所以,我认为更好的方法是使用 C++ 甚至纯 C 来开发它(如果你对其中的一个很好的话)。

您可以在单独的函数/类中编写特定于操作系统的代码。然后编写泛型类/函数来进行抽象。

您可以使用#define 和#ifdef 使其跨平台(当然,您必须为每个平台重新编译它)。

如果您需要为 MacOS 和 Win 创建跨平台和非常小的应用程序,我认为这是唯一的方法。

更新

在 LISP 上。首先,它需要一台 LISP 机器。即使你将它为 Windows 编译成 EXE 文件,它也不会像你想要的那样“使用尽可能少的系统资源”。

如果它与 Dropbox 客户端类似,它应该作为服务/守护进程运行——我认为使用 LISP 来完成此类任务不是一个好的选择。

于 2012-10-12T06:45:49.447 回答
0

如果您想要小型和交叉编译,那么 C/C++ 是您最好的朋友,因为很少有其他语言会如此高效和快速。对于简单的 UI,您可以使用C++/Tk,我认为 Tk 有特定于平台的项目,例如 Tk-Cocoa 等。

但是如果你想编写跨平台(即编写一次到处运行),那么寻找基于Java 虚拟机的语言。请注意,一旦启动并运行,JVM 就会快速高效。

JVM 有几种类似 Lisp 的语言,包括 JScheme 和 Clojure。

于 2012-10-12T07:18:16.143 回答