0

编程是在计算机上自动执行任务的核心。
据推测,这些任务通常由人手动完成。
人类通过键盘、鼠标以及与控制台或窗口管理器的交互来使用计算机。
但是很少有语言内置了为这些基本计算对象提供接口的函数。

一个值得注意的例外是 autohotkey,它是 Windows 上的一种开源语言,它提供了允许执行以下简单任务的内置函数:
* 获取像素信息
* 获取鼠标位置
* 键盘宏
* 模拟击键
* 模拟鼠标点击
* 窗口管理
请参阅rosettacode上的示例。

linux上有过各种尝试,很多都没有解释就停止了。一个是不活跃的 tcl 库:android. 在 google 代码中搜索 android, lang:tcl

4

6 回答 6

4

我编写网络服务器代码。没有人与代码交互。它只是 Apache 的许多复杂插件。

“人类通过键盘、鼠标以及与控制台或窗口管理器的交互来使用计算机。”

就我而言,这完全是错误的。“用户”通过 HTTP 发送请求。没有键盘,没有鼠标,没有控制台,没有窗口管理器。

用户可能正在使用某种花哨的 GUI,但这对我或我的软件无关紧要。我看到的只是 HTTP GET 和 POST 请求。纯文本。

“但很少有语言内置了为这些基本计算对象提供接口的函数。”

正确的。我没有使用键盘、鼠标、控制台或窗口管理器。

于 2009-06-19T22:01:18.113 回答
4

所有个人计算平台都有可以执行此操作的库。

问题在于,这需要标准化所有系统上的用户交互。Java 尝试了这一点,但没有取得很大的成功。还有其他一些或多或少成功的库,Qt 可能是迄今为止最有前途的库。

当然可以为一个包含所有 UI 基础的单一平台编写语言。也可以使用 GUI 和库来伪造它。但是,有充分的理由需要一种可在任何主要平台上使用的语言,无论是否有 GUI。

于 2009-06-19T22:03:09.703 回答
2

我怀疑这个前提是真的。Java 可以做所有这些,除了“窗口管理”,因为我不知道这是什么意思。

如果你不能用 c# 做到这一点,我会感到惊讶。

如果有很多语言不能做到这一点,我猜这是因为如果不将语言与操作系统绑定就很难做到。

于 2009-06-19T21:53:13.513 回答
2

首先,我想你是在问为什么编程语言的标准库没有内置的窗口管理器接口。语言本身及其库是截然不同的。

一大原因是便携性。如果一种编程语言的库中有太多特定的功能,那么将其移植到其他系统将更加困难。例如,I/O、数学函数、字符串、各种数据结构和相关算法都是通用的,几乎可以在任何计算机上工作。

但是诸如窗口管理器、GUI 等之类的东西,它们特定于某些平台,这就是为什么它们不包含在标准库中的原因。这就是 C/C++ 如此可移植的原因。

于 2010-05-22T21:12:56.837 回答
1

在没有任何人机界面设备交互的情况下由计算机执行的任务数量远远超过由人类直接执行的任务。

于 2009-06-19T21:54:33.370 回答
1

编程语言尝试(或至少目前正在尝试)独立于平台。.net 中的示例,您必须引用一些 Win32 api 来执行您在上面指定的一些内容。将其内置到核心编程语言模型中,.net 将与操作系统过于耦合,因此,创建 Mono 对应物将太乏味。

关于击键、宏和一些东西,我现在做的最简单的方法是真正的 vbscript 或在 powershell 中:)

于 2009-06-19T21:56:57.560 回答