记得歌手陈琳曾经在1993年发行了第一张专辑《你的柔情我永远不懂》,创造了150万张的销售纪录,里边的主打歌——我的柔情你永远不懂,多年以后才发现是写给C#运行原理的,因为原理总是伤不起~
你的柔情我永远不懂
我无法把你看得清楚
你的柔情我永远不懂
感觉进入了层层迷雾
你的柔情我永远不懂
雾中的梦想不是归宿
你的柔情我永远不懂
我等待着那最后孤独
没有心思看你装糊涂
 ......
这个你,我想换做C#运行原理更合适吧,呵呵,我不得不说,没有一点点防备,你就存在了我深深的脑海里...
 
说到原理这东西,一直都很头大,什么通信原理,自控原理,编译原理,微机原理,伤人的原理是无处不在啊,我们在学校的时候恐怕对这个吐槽的最多了,因为原理这玩意,我们玩不起啊,连教授都没搞明白,你还想咋着,所以这里的原理也是蜻蜓点水而已!
 
我一直在想计算机是属于什么民族的,后来一想应该是土著人,为什么呢,因为老土著只会讲自己的语言,也只懂他们自己的语言,那计算机还不一个德行,就看见机器语言才会两眼放光,什么0101的,你也拿它没辙,反正人家就懂机器语言,而我等程序猿只懂高级语言啊,什么JAVA、C#、C++了,没办法计算机就是不认识啊,那找个翻译应该可以吧,你还别说真有,有个叫做“编译器”的翻译,瞬间就把C#等转换成0101了,我和我的小伙伴们都惊呆了!
 
编译器把0101以文件的形式保存在外存储器中,CPU执行程序时,要把指令读到内存中(你不用担心,是OS搞定的),这些指令都是一条条放好的,然后CPU就是一条条取出执行即可,但是这个指令还是有问题的,为啥?因为CPU和OS一换,瞬间这些指令又变成天书了,他们也有个名字“非托管代码”,没托管的代码伤不起啊!
 
write once ,run everywhere!听过吧,这还真不是吹牛,搞java的最有发言权了,那微软也是不敢示弱的,这套思想他也领会了,而且更强大一点!要支持跨平台和跨语言这一特性,软件工程师写的程序经过编译器生成的结果就不能是依赖于操作系统和计算机硬件的机器指令了,而必须是一种中间的、在所有操作系统和计算机硬件平台上都能执行的代码,这种代码Java称之为ByteCode(字节码),.NET称之为MSIL(微软中间语言)。程序最终还是要靠CPU执行,所以,Java的ByteCode和.NET的MSIL仍然需要最终被翻译成CPU能执行的机器指令,这部分功能由一个运行在特定操作系统之上的软件系统来完成,这个软件系统称为VM(Virtual Machine,虚拟机)。只需要为每种操作系统和特定的硬件平台提供一个虚拟机,就可以让同样一个程序不加修改地在不同的操作系统和硬件结构的计算机上运行。
 
那我们的.NET的虚拟机就是CLR!你只要装了这个东东,原则上是可以跨平台的!这种运行在CLR上面的代码就是托管代码,你开发的.NET程序,没有这个CLR的支持,你就运行不了,而要有CLR,你就必须装.NET FrameWork这个实实在在的东东,这个东东才是.NET 的核心!
 
在.NET中,我们还可以在一个程序里边使用多种语言,这依赖于CTS,比如VB和C#,反正最后都是编程MSIL,这个貌似java没有哦,所以搞.NET的也算是搬回了一局啊!
 
值得一提的是,虽然微软自己并不提倡跨平台(跨平台会影响Windows操作系统的市场垄断),但现在已经出现了在Linux操作系统中运行和编辑.NET程序的平台,就是Mono平台。 该平台包括有C#编译器、公共语言运行时以及相关的一套.NET类库,Mono平台可使开发者开发的.NET应用程序不仅能在Windows上运行,也能在任何支持Mono的操作系统上运行,包括现有的Linux和UNIX操作系统。在Linux下运行的.NET Framework称为MONO,这是一个开源的软件项目,你可以到因特网上搜集它的信息!
 
若要深入理解,有两本书推荐:1、《你必须知道的.NET》 2、《CLR via C#》
 
 
 
 
 

C#运行原理——我的柔情你永远不懂的更多相关文章

  1. Flink 集群运行原理兼部署及Yarn运行模式深入剖析

    1 Flink的前世今生(生态很重要) 原文:https://blog.csdn.net/shenshouniu/article/details/84439459 很多人可能都是在 2015 年才听到 ...

  2. 比特币运行原理[z]

    https://baijiahao.baidu.com/s?id=1581755535769652543&wfr=spider&for=pc 这篇文章主要讲解比特币是什么?它的运行原理 ...

  3. 【原创】分布式之数据库和缓存双写一致性方案解析(三) 前端面试送命题(二)-callback,promise,generator,async-await JS的进阶技巧 前端面试送命题(一)-JS三座大山 Nodejs的运行原理-科普篇 优化设计提高sql类数据库的性能 简单理解token机制

    [原创]分布式之数据库和缓存双写一致性方案解析(三)   正文 博主本来觉得,<分布式之数据库和缓存双写一致性方案解析>,一文已经十分清晰.然而这一两天,有人在微信上私聊我,觉得应该要采用 ...

  4. Hadoop运行原理总结(详细)

    本编随笔是小编个人参照个人的笔记.官方文档以及网上的资料等后对HDFS的概念以及运行原理进行系统性地归纳,说起来真的惭愧呀,自学了很长一段时间也没有对Hadoop知识点进行归纳,有时候在实战中或者与别 ...

  5. iis6.0与asp.net的运行原理

    这几天上网翻阅了不少前辈们的关于iis和asp.net运行原理的博客,学的有点零零散散,花了好长时间做了一个小结(虽然文字不多,但也花了不少时间呢),鄙人不才,难免有理解不道的地方,还望前辈们不吝赐教 ...

  6. ASP.NET Core 运行原理剖析2:Startup 和 Middleware(中间件)

    ASP.NET Core 运行原理剖析2:Startup 和 Middleware(中间件) Startup Class 1.Startup Constructor(构造函数) 2.Configure ...

  7. ASP.NET Core 运行原理剖析1:初始化WebApp模版并运行

    ASP.NET Core 运行原理剖析1:初始化WebApp模版并运行 核心框架 ASP.NET Core APP 创建与运行 总结 之前两篇文章简析.NET Core 以及与 .NET Framew ...

  8. 场景9 深入RAC运行原理

    场景9 深入RAC运行原理 OPS(Oracle Parallel Server)通过磁盘的节点判定数据是否最新   —>   Data Guard   —>    RAC(Real Ap ...

  9. Camel运行原理分析

    Camel运行原理分析 以一个简单的例子说明一下camel的运行原理,例子本身很简单,目的就是将一个目录下的文件搬运到另一个文件夹,处理器只是将文件(限于文本文件)的内容打印到控制台,首先代码如下: ...

随机推荐

  1. 在SpringMVC中 /* 和 / 的区别

    <url-pattern> / </url-pattern>:会匹配到 /springmvc 这样的路径型url,而不会匹配到像 .jsp 这样的后缀型的url. <ur ...

  2. [解决] python WindowsError: [Error 3]

    python 运行出错 WindowsError: [Error ] : 'D:\\\xe7\x81\xab\xe8\xbd\xa6\xe9\x87\x87\xe9\x9b\x86\xe5\x99\x ...

  3. 原本就有mysql,安装phpstudy使用里面自带的mysql导致原来的没服务

    电脑中之前安装了mysql,正常服务中,但做项目的需要,安装了phpStudy,它里面自带了mysql,启动phpstudy里面的mysql后在用原来的就没服务了, 到电脑管理服务中也没有发现mysq ...

  4. 转:西部数据NAS设备hack

    通过该文学习一下常见硬件web漏洞.重点关注一下几个方面: 1.登录验证代码: 2.文件上传代码: 3.system/exec/popen等是否存在注入可能: 4.调用二进制文件: 5.未登陆可以访问 ...

  5. 字符串Hash相关

    其实也并不是什么特别难的算法,但是我个人实在是不太喜欢字符串之类的东西(字符串神马的真的是麻烦),于是一直拖着不想看,然后模板题之类的也懒得做. Hash的思想其实也没什么复杂的,就是给定一系列字符串 ...

  6. 循序渐进PYTHON3(十三) --3-- DJANGO之FORM表单(为自动生成的HTML标签添加样式)

    views.py from django.shortcuts import render,HttpResponse from django import forms import json impor ...

  7. 洛谷——P1692 部落卫队

    题目描述 原始部落byteland中的居民们为了争夺有限的资源,经常发生冲突.几乎每个居民都有他的仇敌.部落酋长为了组织一支保卫部落的队伍,希望从部落的居民中选出最多的居民入伍,并保证队伍中任何2 个 ...

  8. 单能X射线产生方法

    主要是荧光 利用布拉格准则, 关键词如下.. 国内有些专利 monochromating crystal spectrometer 物理实验设备名称翻译 ... 单色光检糖计 monochromati ...

  9. 分解质因数法求最大公约数(javascrip实现)

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  10. poj 3225 Help with Intervals(线段树,区间更新)

    Help with Intervals Time Limit: 6000MS   Memory Limit: 131072K Total Submissions: 12474   Accepted:  ...