以下纯粹是个人的猜想,大部分纯属胡扯。

1,计算机从硬件开始,通电之后加载计算机操作系统,操作系统开始控制计算机的硬件,显示器,键盘,提供画面与操作给人。

2,计算机操作系统功能上应该都是大同小异的,比如unity引擎用C#写一段操作内存与线程的代码可以打包发布到window,Android,ios上,就说明这3种操作系统都提供内存操作与线程操作,且都可以内存泄漏,线程死锁。

3,计算机语言,对于计算机语言,比如Python,首先需要一个编辑器或者是IDE,然后操作系统会运行.py的文件,这时需要Python的运行环境,这个运行环境应该就是居于操作系统写出来的一个解释器,将.py文件解释成计算机可以识别的2进制代码。而Python的库就是居于操作系统提供的API编写的。而.Net则是为多个语言提供运行环境以及库,用于语言之间的交流以及语言调用操作系统函数,已到达控制计算机硬件的目的。

学习一门语言应该是学习语言的运行环境即:语言的规则与库,比如C#,C#里的int是一个结构体,委托是一种类型,而库则是使用这套规则编写的一些类,这些类有使用系统API的,也有纯粹使用语言规则编写的。

4,unity引擎,使用windows操作系统的文本编辑器,调用windows操作系统的API,以及编译器,就可以创造出一款名字叫做unity的引擎,双击即可打开unity引擎,unity引擎下可以创建文本,创建一个以.cs结尾的文本,使用unity自带的IDE即Mono,或者使用文本编辑器,打开这个.cs的文件,写入操作内存与线程的代码,然后使用unity打包成windows下的软件或者Android下的apk,在这个过程里,unity调用了自己的库,调用了.net的库,然后通过编译器,创造了不同操作系统下的软件,其中unity的库与.net的库都是居于操作系统的API编写的,以到达操作硬件的效果。

问题来了,假如.net的库是居于windows操作系统的API写出来的,那为什么可以在Android操作系统下操作Android的硬件呢?C#调用.net的库,然后编译成IL中间代码,在编译时,因为选择的是Android平台(提供android sdk),所以将IL编译成Android平台可以识别代码,因为居于Android系统实现了.net的库,也就是.net的库移植到了Android平台。如果想要打包成ios的app,这需要在mac操作系统下,因为ios操作系统并没有提供系统调用的模块。

unity打exe,apk,app,ps3等。
unity打任何一个平台下的包都需要提前准备好相应的模块,比如apk包需要android sdk与jdk,android sdk :相当于安卓机器的操作系统,提供系统调用。jdk:就是java开发工具包,这个包中提供了java语言的类库,安卓应用又需要用到java语言,java语言又需要底层的java类库,这些类库就被封装在jdk中。

unity通过Mono实现了自己跨平台的能力,将unity勾选为android平台或者其他平台时,在Mono中运行的应该是CIL,而在本地(windows,Android,ios)运行的是被编译后生成的原生指令。

unity在windows和mac上都存在,但是mac上的unity与windows上的unity是不同的软件,因为操作系统不一样,但是操作系统提供的API大同小异。

关于C#:C#是跨平台跨语言的,猜想.net内部应该提供多种不同语言的编译器或者是解释器,然后由某个框架控制,当一种语言里出现另一种语言的嵌套代码时,就调用相应语言的编译器或者解释器,因为都统一生成中间语言代码。跨平台应该也是一样,猜想.net内部应该存在多种语言在多个不同平台操作系统都实现了同一套不同语言对应得库,所以某种语言(如C#)才能跨语言跨平台。

5,软件是如何操作硬件的。计算机的硬件上使用机器雕刻了一些公式,这些公式是固定不变的,当电流走过去时,公式开始起作用,比如GPU上雕刻了一些矩阵运算的公式,比如主板上雕刻了通电后需要做些什么的公式。点击计算机开关按钮,计算机通电,电流走到主板,主板上的公式开始生效,按下f12你就可以进入操作界面,比如安装操作系统。接上U盘,U盘上的程序开始加载到计算机的内存中,开始控制计算机所有的硬件,U盘上的程序提供安装操作系统的功能,将操作系统装上。重新启动计算机,计算机通电,电流走到了主板,主板上的公式开始去硬盘的分区依次去找操作系统的标记,找到后将操作系统的内核加载到计算机的内存中,然后操作系统开始控制整个计算机的硬件。

总结就是:
语言需要编辑器编写,需要编译器编译,需要库函数提供便捷的操作来操作硬件,而库又来自于操作系统的API,而操作系统又大同小异,所以一个库如果同时支持不同的操作系统,即一个库在不同的操作系统都有实现相同的内容,那这个库就是跨平台的,这个库支持的语言就是跨平台的语言,这个语言创建的软件就可以很方便的在不同平台运行,这里面可能会有小的差异,因为操作系统毕竟还是不同的。

参考以下内容:
1,https://bbs.csdn.net/topics/391991089?page=1 C#.net真的可以开发安卓应用程序吗?
可以开发,而且编译结果是原生的手机安卓和苹果程序,并不是通过虚拟层来模拟的。

2,你去查一查Mono,是将.net framework移植到linux,iOS,Unix等平台下的一个开源项目,现在它早就已经成功移植到安卓上,而Mono平台下可以使用C#开发,当然也就意味着C#可以再安卓上开发程序了!

3,https://zhidao.baidu.com/question/1178974132899706539.html c#真的可以跨平台吗
从理论上说,C#是完全可以跨平台的。因为c#是借助.Net平台运行的,c#代码会被编译生成为MSIL,即微软中间语言,类似于Java的字节码,.Net是根据MSIL来执行的,而不是像C语言那样直接生成本地代码。C语言之所以无法跨平台,是因为进行与系统有关的操作的时候需要调用系统提供的函数,并编译成为本地代码,就是执行时可以直接运行的代码。所以按理来说,只需要提供能够运行在不同操作系统中的.Net平台,就可以实现跨平台运行。可是,微软在.Net跨平台方面做得并不好,导致C#的跨平台性并不好。希望能帮到你。
所谓的跨平台不单是说象JAVA这类一次编译到处运行,只要一套代码通过编辑可跨平台运行就算。win32这些才是真正的不跨平台

4,C#是一个程序设计语言,是运行在.net CLR上的,用于创建应用程序的高级语言。

5,https://www.cnblogs.com/0kk470/p/7468054.html Unity跨平台的机制原理

6,http://www.360doc.com/content/17/0701/16/5109282_667999950.shtml# 软件是怎样控制硬件的?看评论

7,https://blog.csdn.net/qq_15267341/article/details/51791304 SDK和JDK区别

计算机的运作流程的个人感想相关推荐

  1. 简述 OAuth 2.0 的运作流程

    本文将以用户使用 github 登录网站留言为例,简述 OAuth 2.0 的运作流程. 假如我有一个网站,你是我网站上的访客,看了文章想留言表示「朕已阅」,留言时发现有这个网站的帐号才能够留言,此时 ...

  2. OAuth2基本概念和运作流程

    OAuth2基本概念和运作流程 OAuth(开放授权)是一个关于授权的开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方 ...

  3. 计算机开机启动流程详解

    一.BIOS 1.BIOS是什么 BIOS:基本输入输出系统(Basic Input Output System),它是一组固化到计算机内主板上一个ROM(Read-Only Memory)只读存储器 ...

  4. 【华为云技术分享】解析数据治理在过程可信变革中的运作流程

    摘要:本文针对"数据牵引改进,工具固化规范"这一思路在业务团队落地过程中的动作流程进行详细阐述,并明确了支撑整个流程的关键角色定义和组织运作形式. 目的 为实现云服务开发的过程可信 ...

  5. 某大型银行深化系统技术方案之六:系统架构之运作流程

    传送门☞Android兵器谱☞转载请注明☞http://blog.csdn.net/leverage_1229 系统的运作流程中,用户登陆.各服务组件之间都是在单点登录(SSO)认证体系下,用户只需登 ...

  6. java计算机毕业设计工作流流程编辑OA系统MyBatis+系统+LW文档+源码+调试部署

    java计算机毕业设计工作流流程编辑OA系统MyBatis+系统+LW文档+源码+调试部署 java计算机毕业设计工作流流程编辑OA系统MyBatis+系统+LW文档+源码+调试部署 本源码技术栈: ...

  7. 厦门大学2022年计算机考研复试流程

    厦门大学计算机考研复试会在复试分数线公布之后,也就是大约3月下旬左右,学院会单独组织并发布复试通知.具体复试时间以学校官网公布信息为准! 2022年厦门大学计算机考研复试流程(参考于2021年) (1 ...

  8. JCL,JES运作流程

    作业控制语言JCL是用户与操作系统的接口. 与ISPF相比, 1,可以执行一些特别的工作. 2,对于重复度高的工作,JCL比较方便. JES的运作流程: 1,input 输入 2,conversion ...

  9. 形象的解释一下ERP系统的运作流程

    ERP英文全称Enterprise Resource Planning ,中文翻译为企业资源计划系统,是指建立在信息技术基础上,以系统化的管理思想,为企业决策层及员工提供决策运行手段的管理平台也就是E ...

最新文章

  1. access两字段同时升序排序_7 天时间,我整理并实现了这 9 种常见的排序算法
  2. 全局变量名为 param1 var param1Value = webBrowser1.Document.InvokeScript(eval,new String[]{ param1}).To...
  3. 对象映射工具AutoMapper介绍
  4. 前端学习(2245)vue值造轮子之需求设计
  5. 计算机知识竞赛主持人开场词,护理竞赛主持人台词:主持人开场白台词
  6. 公司新来了个00后测试卷王,老油条表示是真干不过,已被……
  7. 关于如何在Android、Java等非微软平台上建立高信任的SharePoint应用程序
  8. 排序系统 c语言程序设计,c语言程序设计(排序算法).docx
  9. docker容器中的网络原理(单机模式下的容器网络)
  10. 七日Python之路--第十一天
  11. Thought Works 培训总结
  12. foobar2000的使用
  13. 百度网盘mac损害计算机,百度网盘Mac版
  14. 前国际奥委会主席罗格去世,敬生命!这些残奥特写太戳了
  15. B站云E办Vue+SpringBoot前后端分离项目——MVC三层架构搭建后台项目
  16. 2021csp-j2 题解
  17. 在UC浏览器投放广告的优势、效果!
  18. 如何查看数据库中表的前5行,3-8行,随机3行记录?
  19. 微信小程序商城 (后台JAVA)
  20. 磁悬浮电磁炉问世 能让锅飘起来隔空加热

热门文章

  1. 网络分流器|网络分流器|网络分流采集器的应用领域
  2. python3英文视频课程_Python3国外著名视频教程英文 87课
  3. android arcgis使用自定义图片背景底图(tif图片制作)
  4. jquery获取tr下第某个td的值
  5. 所有系统如何创建宽带连接服务器,Win7系统怎么建立宽带连接?Win7宽带连接的设置方法...
  6. python 天天基金数据接口
  7. 华为机试练习汇总(JS实现)
  8. 微信关注事件bug记录
  9. Linux下shell自动输入密码,shell脚本通过expect脚本实现自动输入密码
  10. 什么情况下,微信聊天里会出现【对方正在输入】,原来如此