1.应用场景
目的就是想更加清楚地知道编程语言的分类,弄清楚一直以来的困惑. 建议阅读<<计算机组成原理>><<操作系统>>等相关书籍 |
2.学习/实践
1. 文档
2. 整理输出编程语言层出不穷, 如果想弄清楚这到底是怎样的一回儿事儿, 就必须要将其发展的历史理清楚. 这里要插入一段话,— 因为为了避免你总想学很多的编程语言
2.1 简述
2.2 软件分类
2.3 编程语言发展的三个阶段
2.4 分类
2.5 编译器
2.6 编译器演进
2.7 编程语言发展趋势
后续补充 … |
3.问题/补充
1.何为脚本语言/span>
08 | 操作系统内核与编程接口-极客时间2. 先有编程语言,还是先有操作系统;对于第一个问题:先有编程语言,还是先有操作系统/p> 这个问题的答案比较简单,先有编程语言。 之所以有这个疑问,是因为两点: 其一,大部分人习惯认为运行软件是操作系统的责任。少了责任方,软件是怎么跑起来的实际上软件跑起来是很容易的,看 BIOS 程序把控制权交给哪个软件。 其二,大部分常见的应用程序都直接或间接依赖操作系统的系统调用。这样来看,编程语言编译出来的程序是无法脱离操作系统而存在的。 但是实际上常见的系统级语言(比如 C 语言)都是可以编写出不依赖任何内核的程序的。
3. 编程语言怎么做到自举的(比如用 C 语言来实现 C 语言编译器);从鸡生蛋的角度,编译器的进化史应该是这样的: 先用机器码直接写第一个汇编语言的编译器,然后汇编语言编译器编出第一个 C 语言编译器。 有了 C 语言编译器后,可以反过来用 C 语言重写汇编语言编译器和 C 语言编译器,做更多的功能增强。 这个过程理论上每出现一种新 CPU 指令集、新操作系统,就需要重新来一遍。但是人是聪明的。所以交叉编译这样的东西产生了。 所谓交叉编译就是在一种 “CPU + 操作系统” 架构下,生成另一种 “CPU + 操作系统” 架构下的软件。 这就避免了需要把整个编译器进化史重新演绎一遍。 可以详细看上面 2.6 4. 对于第三个问题:操作系统能够做到自身迭代本操作系统(自举)么/h3>当然可以。 通常一门新的操作系统开发之初,会用上面提到的交叉编译技术先干出来,然后等到新操作系统稳定到一定程度后再实现自举,也就是用本操作系统自己来做操作系统的后续迭代开发。 5. 交叉编译不是很理解
6. cpu不需要检查是否发生了中断,它的原理类似于开关和灯泡的关系,当开关合上,灯泡就会亮,灯泡不需要定期检查开关是否合上了
7. 晓凉优秀的架构设计能带来的好处可能超出架构师最初的预想,例如Linux系统的容器特性,现在成了云计算领域的重要基础技术,成就了一个领域。基于前辈大师的优秀架构,现在的信息世界才能如此生生不息。优秀的架构不仅能解决当前的实际问题,更具有理论上的优雅,像一种真理,可照亮未来。 8. 行者关于动态库,是不是可以理解为:提供动态库不是操作系统的责任(因为其他语言完全可以通过系统调用来自己实现动态库的功能),只是操作系统为了方便其他语言(减少不必要的冗余)而做的多余的事/p> 9. Geek_gooy前面提到: 操作系统与我们编写的软件并不同属一个进程,两边的内存地址空间都是独立的。 后面提到: 当然你可能要问:既然操作系统内核和我同属一个地址空间,…… 老师,这是不是矛盾啊间的解释看不懂,求形象举例。
10. 行者有个疑问,CPU怎么区分操作系统和常规软件,从而做到给予不同软件的CPU权限BIOS在决定将软件运行权时就直接交给该软件(OS)所有权限的吗/p> 11. 幻灰龙跨语言交互能增加理解,特别是有虚拟机的语言之间,例如在C#或者Java里跟Lua交互。
12. 看啥看看不懂 原文提到:动态库本质上是实现了一个语言无关的代码复用机制。它是二进制级别的复用。 我理解是:无论是c语言,还是其他语言,都可以调用同一个动态库从而完成系统调用吗/p> |
4.参考
C语言 – 介绍_william_n的博客-CSDN博客 C语言这么厉害,它自身又是用什么语言写的码农翻身-CSDN博客 编程语言的发展史 – KAMNA – 博客园 机器语言与汇编语言_Sucker For Pain-CSDN博客_机器语言和汇编语言 汇编语言和机器语言是一一对应的吗/p> 计算机和编程语言的发展历史 计算机组成原理-王道考研系列 汇编语言从0开始 到C语言 – 易云课堂 |
后续补充
…
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!