假设,我在这一年,比如说,在1950年代或者1960年代。我没有很多可用的编程语言,比如PASCAL或FORTRAN或ALGOL,而且最近只有#34;计算机鼠标"已经被引入和发明,并且直到最近它们才与计算机一起提供,当连接到我的计算机中的一个特定端口时,我可以看到一个小箭头"在计算机屏幕上(让它甚至是一个CRT屏幕,希望你能放松与实际年表缺乏同步)按照我移动鼠标的方式移动。
现在我想拥有可以控制屏幕上鼠标指针的计算机程序。让我们说我想写一个计算机程序,它将鼠标指针移动到与我移动鼠标的方向相反的方向或计算机程序将鼠标屏幕上的指针冻结几秒钟或者当鼠标移动到屏幕的特定部分时,用于更改鼠标指针形状的计算机程序。
鉴于此要求,我的语言将如何与系统交互以控制鼠标指针。是否会更改我的语言编译器以添加更多指令(或方法或函数),这些指令将产生控制鼠标指针的机器代码?
答案 0 :(得分:2)
你的方式错了。鼠标硬件和鼠标指针之间没有直接的硬件连接 - 必须有软件渲染指针以响应鼠标移动。如果您希望指针的行为不同,那就是不同的软件,而不是另一个软件层。
软件编写的语言在很大程度上是无关紧要的,但系统级代码通常用系统级语言编写。在您讨论的时代,通常是汇编代码/机器代码。当时任何有用的高级语言都可以调用机器代码子例程来支持可扩展性。
答案 1 :(得分:1)
假设,我在这一年...... 1950年代或1960年代 我没有很多编程语言的设施 现在我想拥有可以控制鼠标指针的计算机程序
...我的语言将如何与系统交互以控制鼠标? 是否会更改我的语言编译器以添加更多指令......?
我想是的。
那些年来更多"刚性"比今天;例如,您无法从供应商处购买计算机并从其他供应商处附加硬盘。为计算机提供的编程语言或多或少采用相同的方法;简而言之,一台计算机是一个独特的部分"硬件和软件,所以所需的一切都已经出现在"独特的部分"。
我认为这意味着,如果50台计算机上有鼠标,那么使用它的编程语言会有特殊的指示来应对它。
例如,如果我们查看BASIC语言,我们可以看到PRINT指令最初可以在" teletype"中打印。办法。当用CRT终端取代的电视类型(带有视频的那些,可能有25行80列字符)时,新概念如"光标","清除屏幕","闪烁字符& #34;出现了。开发了管理这些新功能的不同方法:从POKEing值到OS(或固件)位置(低级别),再到使用转义序列(今天仍然使用),但最后现代BASIC包括在语言中对它们的原生支持,如LOCATE和CLS指令,FLASH修饰符和类似的东西。
将用BASIC编写的程序用于机器X,并使其在机器Y上运行并不总是微不足道的:BASIC的太多变种和许多不同的机器使问题复杂化。无论如何,这与我的第一句话是一致的:语言是根据给定的硬件量身定制的,并试图为该硬件提供功能。
幸运的是,事情发生了变化。现在,您可以从供应商处购买硬盘或鼠标,并将其连接到其他供应商的计算机上。由于标准化,这是可能的。语言也一样 - 现在没有人试图开发一种语言来支持计算机的特定功能。相反,语言(和操作系统)倾向于实现各种协议(或标准),让它们与其他软件(软件库,驱动程序,OS服务)互操作)。现代语言专注于明确定义的语法,模型,概念,并且在每种情况下往往都是相同的。也许第一种(使用过的和成功的)语言就是C.在这种语言中,I / O甚至没有被语言本身指定:你在C语言中没有PRINT指令;你有一个标准化的库,它的实现因系统而异,但语言没有。
总而言之,现代语言不与鼠标或其他硬件交互,它们具有让它们与其他软件交互的功能。相反,在50年代,语言的计划与今天不同。
PS:如果有人认为我使用的英语可以改进,可以随时编辑。