现代代码体系
### 现代代码体系
- 最早的代码体系:程序员世界使用二进制进行编程或者汇编进行编程,性能最好,最难编写
- 出现操作系统后,程序员使用c c++进行编程, 最终通过编译器编译成机器语言, 不过需要针对不同的cpu进行单独的编译,性能很好,编写ok
- 跨平台后:针对c++需要一次编写 到处编译的问题, java提出了虚拟机的概念, 通过将代码编译为中间字符在虚拟机上运行, 而虚拟机自己会通过判断不同cpu来执行这些中间字符,性能一般,编写ok
- 解释器:连编译也不需要了, 直接解释源代码然后执行, 早期浏览器,性能最差,编写ok
- jit即时编译: 拿到源代码后 立马编译成机器语言, 然后执行,性能媲美java虚拟机,编写ok
### 系统调用库与代码执行环境
- 系统调用库与代码执行环境分别是两个东西,以flutter为例
- flutter引擎属于系统调用库,他提供了所在平台的sdk,动画,图形绘制,网络请求等能力
- Dart虚拟机是负责执行dark程序
- 基础库 dark语言调用flutter引擎的api
- flutter的执行机制,Dart虚拟机拿到dark程序后开始执行程序,如果遇到sdk调用(就是基础库的调用) 则转到flutter引擎去执行。
### flutter架构
- 用户
- dark程序
- dark运行时
- flutter引擎
- 驱动
- 硬件
### 为何痴迷于新造语言
- 理论上c c++已经可以为所有的平台开发程序,本身c++就是跨平台的,为何还要创造新的语言呢?
- 如果使用c++,你需要自己编写相关库和框架,同时还需要为特定平台设计一个开发环境,同时还需要处理不同平台的差异
- 目前除了c++ 并没有出现一个所有人都认可的语言
- 所以 大公司只能自己创造语言,实际上是 帮助开发人员做了 框架和开发环境。使得开发人员不需要关注这些问题。
- c语言由于过于底层(比如指针),没有考虑现代开发特性导致不适合快速开发项目
- c++本身是一门优秀的语言,但是其本身设计和理念过于复杂,导致很难使用
- java简单实用的语言
- c# swift js等针对特定目的而产生的语言
### 为何需要虚拟机
- 虚拟机最初的引入是屏蔽底层的差异性,是的开发人员可以专注于开发
- flutter中本可以不引入虚拟机,因为dark语言可以直接编译成对应平台的二进制, 之所以加入虚拟机是为了调试 http://gityuan.com/2019/10/05/dart_vm/