编程是计算机自动化任务的核心
据推测,这些任务通常由人工手动完成
人类通过键盘,鼠标以及与控制台或窗口管理器的交互来使用计算机。
但很少有语言内置了为这些基本计算对象提供接口的功能。
一个值得注意的例外是autohotkey,一种Windows上的开源语言,提供内置函数,允许以下简单任务:
*获取像素信息
*获取鼠标位置
*键盘宏
*模拟击键
*模拟鼠标点击
*窗口管理
请参阅rosettacode上的示例。
在linux上已经进行了各种尝试,其中许多尝试在没有解释的情况下被停止。 一个是非活动的tcl库:android。搜索android,lang:tcl
的谷歌代码答案 0 :(得分:4)
我写了Web服务器代码。没有人与代码交互。它只是Apache的许多复杂插件。
“人类通过键盘,鼠标以及与控制台或窗口管理器的交互来使用计算机。”
在我的情况下这完全是假的。 “用户”通过HTTP发送请求。没有键盘,没有鼠标,没有控制台,没有窗口管理器。
用户可能正在使用某种奇特的GUI,但这对我或我的软件无关紧要。我看到的只是HTTP GET和POST请求。纯文字。
“但很少有语言内置了为这些基本计算对象提供接口的函数。”
正确。我对键盘,鼠标,控制台或窗口管理器没用。
答案 1 :(得分:4)
所有个人计算平台都有可以执行此操作的库。
问题在于需要在所有系统上标准化用户交互。 Java尝试了这一点,没有取得很大的成功。其他图书馆或多或少都有成功,Qt可能是迄今为止最有前途的图书馆。
当然可以为包含所有UI基础知识的单个平台编写语言。也可以使用GUI和库来伪造它。但是,有充分的理由需要一种可在任何主要平台上使用的语言,无论是否有GUI。
答案 2 :(得分:2)
我怀疑这个前提是否属实。 Java可以做到这一切,除了“窗口管理”,因为我不知道这是什么意思。
如果你不能用c#做这件事,我会感到惊讶。
如果有许多语言无法做到这一点,我猜这是因为如果不将语言与操作系统联系起来就很难做到这一点。
答案 3 :(得分:2)
首先,我想你在问为什么编程语言的标准库没有窗口管理器的内置接口。语言本身及其库非常不同。
一个重要原因是便携性。如果编程语言库中的特定功能太多,将其移植到其他系统将更加困难。例如,I / O,数学函数,字符串,各种数据结构和相关算法都是通用的,几乎可以在任何计算机上运行。
但是像窗口管理器,GUI等等,它们很多更特定于某些平台,这就是为什么它们不包含在标准库中的原因。这就是使C / C ++如此便携的原因。
答案 4 :(得分:1)
没有任何人机接口设备交互的计算机执行的任务数量超过了由人类直接驱动的任务。
答案 5 :(得分:1)
编程语言尝试(或者至少目前正在尝试)与平台独立。在.net中的示例中,您必须引用一些Win32 api来执行上面指定的一些操作。将它内置到核心编程语言模型中,.net将与操作系统过于耦合,因此,创建Mono对应设备将太繁琐。
关于击键,宏和一些东西,我现在正在做的最简单的方法是真正的vbscript或者在powershell中:)