我已经编程了几年,我知道如何使用预先存在的/标准库创建自己的复杂方法。我总是想知道(例如Java)在Java中创建JFrame对象时如何创建JFrame?如何使用标准代码(无库)来编写GUI或复杂的操作,如创建文件,读取文件等。
如果我们使用的所有这些现有方法都可以与我们用于构建金字塔的构建块进行比较。这些块是如何创建的? (我的意思是技术上)。没有标准库的编程语言是变量,循环和数学(甚至数学函数都是由某人创建的)。
基本问题是Java或C或任何其他语言(例如在Windows上运行时)通过调用Windows .dll库来创建窗口和其他复杂操作来完成所有操作吗?
如果是这样,那么在操作系统中如何使用常规变量,循环等创建这些复杂的操作/方法/函数。
我对编程的理解存在差距。 我理解计算机读取二进制(电=开/关),有人制作汇编/汇编程序,将二进制转换为更易读的代码,从处理器中的不同寄存器移动数字,这可以导致基本的数学运算,加法运算,减法运算,乘法运算,分数运算。我理解的差距是从大会跳到像C这样的高级语言,它保存变量,循环,创建GUIS,操作系统。
答案 0 :(得分:2)
我试图在这里(非常)粗略说明AFAIK
gcc -S source.c -o assembly.s
)因此,当您从Java创建GUI时,它实际上是要求您的窗口管理器以“绘制一个20x20矩形,角为圆形,半径为5px ”的形式创建GUI,通过它的本机方法调用,窗口管理器将此请求转发给操作系统进程,通过驱动程序将相应的指令转发到控制单元,然后强大的CU将向监视器发送一些信号,为相应的像素着色,让您感觉GUI。
我知道我会像回答一个简单的问题和一个报道的题外话题得到很多的回报:P
答案 1 :(得分:1)
您的问题的答案非常广泛和通用,但我认为答案涉及了解操作系统的作用。程序无法执行操作系统不允许执行的操作,并且从程序的角度来看,操作系统始终存在已定义的接口。此接口可能非常低级,如通过中断进行系统调用,或者可能处于Win32 API中的更高级别。这有很多与硬件和驱动程序有关,因为没有硬件就无法输入和输出程序,硬件是通过操作系统从最终程序中抽象出来的。例如,nVidia提供了由许多API抽象的Windows驱动程序:OpenGL,DirectX,WPF等;如果你知道通过系统调用对视频卡驱动程序的低级别访问,你可以编写自己的API。任何语言(如Java或C)都必须使用这些接口。
我希望有帮助...