所以几天前我在这里询问了C#及其原理.现在,如果可以的话,我还有一些关于某些语言的一般性问题,因为对于像我这样的新手来说,这似乎有点令人困惑.确切地说,我想问更多关于语言功能而不是语法的问题.
老实说,正是这些特殊功能使我感到困扰,并使我感到困惑.例如,C具有其printf(),Pascal具有writeln()等.我知道这些函数在汇编器中的输出基本类似,每种语言或多或少都有其特殊功能.用于控制台输出,用于文件操作等.但是所有这些功能实际上都是其OS API的一部分,因此,为什么在C中区分C标准库函数和(在Windows上)WinAPI函数,甚至连printf()也具有要使用某些Windows功能,请调用其某些功能以在控制台窗口上实际显示所需的文本,因为实际的“显示”是由OS完成的.语言功能和系统API之间的界线在哪里?
现在我不太了解的语言-Python,Ruby和类似语言.更具体地说,我知道它们在编译为字节码方面类似于Java和C#.但是,在构建GUI应用程序方面,我并不理解其功能.我看到了使用Ruby在Linux和Windows上编写GUI应用程序的教程.但这不只是某种升级吗?我的意思是其他教程,似乎这些语言最初是针对小型脚本而不是大型应用程序.
希望您理解我为什么感到困惑.如果您愿意,请帮我解决一下,我没有人要问.
解决方法:
在底部,您拥有OS内核本身-在特殊的cpu模式下运行的代码,该代码允许直接访问原本受保护的资源.除非您是OS开发人员,否则您将永远不必处理此问题.
然后是一条请勿交叉的线,将“内核空间”与“用户空间”分开.您作为“普通”开发人员所做的一切都在用户空间中完成.
OS内核将有限数量的非常基本的功能导出到用户空间中,称为“系统调用”.例如,打开文件,读/写多个字节,然后关闭文件.
由于这些系统调用通常需要某些汇编代码开发人员不想被打扰,因此它们被“包装”在(通常)C代码函数中:open(),read(),write(),close().
现在有两套可供开发人员使用的API:OS API和标准语言API.
标准语言API提供了可在支持该语言的任何平台上使用的功能:fopen(),fputc(),fgetc(),fclose().它还将提供使生活更轻松的高级功能:例如fprintf().
OS API提供了自己的功能集.它们不能移植到其他操作系统,但是使用起来可能更直观,或者功能更强大,或者仅仅是不同的. OpenFile(),ReadFile(),WriteFile(),CloseFile().同样,更高级别的功能可能可用,即PrintLn().
两组函数可能部分地相互依赖,或者直接进行系统调用,但这不会给您带来太多麻烦.但是,您应该事先确定要在项目中使用的功能集,因为将这两个功能集混合在一起(虽然本身并不是一个错误)会打开一堆全新的蠕虫病毒(即潜在的错误).
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。