Skip to content

TIP

一些杂七杂八的 不知如何分类 便临时放在这里

Debug和Release有什么区别

  • 在发布版本的构建过程中,编译器会应用他认为合适的优化。因此构建结果通常会更小,运行速度也更快
  • 另一方面由于编译结果与源代码完全不匹配,所以调试难度会增加

驱动

  • 驱动程序可以使硬件设备正常工作,相当于硬件的接口,操作系统只有通过这个接口,才能控制硬件设备的工作

编程语言 和 技术栈

编程语言: 程序员与计算机沟通的桥梁,通过编写代码来实现特定的功能 技术栈: 一组协同工作的技术、工具和框架的集合,用于构建和运行应用程序

两者的区别:1、 包含关系: 编程语言是技术栈的一部分,但技术栈远不止编程语言 2、 侧重点: 编程语言关注的是代码的语法和语义,而技术栈关注的是整个应用程序的构建和运行 3、 抽象层次: 编程语言是一种相对底层的工具,而技术栈是一种更高层次的概念,它将各种技术整合在一起,提供了一个完整的解决方案 4、 抽象比喻:编程语言 好比是建造房屋的砖块,是构成建筑的基本单元 技术栈 好比是一整套的建筑工具和材料,包括砖块、水泥、钢筋、脚手架等,以及施工图纸和施工规范

编程语言是技术栈中的一个重要的组成部分,但它们并不是同义词。技术栈是一个更广泛的概念,它涵盖了整个软件开发过程中的各种技术和工具。选择合适的技术栈对于开发高质量的应用程序至关重要。

技术栈中的很多部分确实是由编程语言开发出来的。这就像一栋大楼,编程语言是建造大楼的砖块,而技术栈就是整栋建筑。

举个例子:前端框架(如 React,Vue): 这些框架本质上就是用 JavaScript(一种编程语言)写成的。它们提供了一套规则和组件,帮助开发者更高效地构建用户界面 后端框架(如 Django,Ecpress.js): 同样,这些框架也是用特定的编程语言(Python, JavaScript)写成的。它们提供了处理请求、响应、数据库交互等功能的工具。 数据库管理系统: 虽然数据库的底层实现可能涉及到多种编程语言,但数据库的查询语言(如SQL)本身就是一种专门用于操作数据的语言

所以,编程语言和技术栈之间的关系可以总结为:

1、 编程语言是基础: 他们是构建技术栈的基石 2、 技术栈是集合: 他们将多种编程语言、框架、工具等组合在一起,形成了一个完整地解决方案 3、 相互依存: 编程语言用来开发技术栈,而技术栈又为编程语言提供了一个应用的场景

为什么技术栈中需要多种语言? 不同层次的需求: 不同的技术栈组件有不同的复杂度和功能。例如,底层的操作系统可能用 C 语言编写,而上层的应用可能用 PythonJavaScript 编写 历史原因: 很多技术栈是随着时间的推移逐步演化而来的,不同的组件可能使用不同的编程语言

编译型语言(Compiled Languages)

解释: 编译型语言是指源代码在运行之前由编译器(Compiler)翻译成机器码(也称为目标代码),然后计算机的处理器直接执行这些机器码。

特点: 一次编译,反复执行:编译型语言的代码在运行之前必须通过编译器进行翻译,编译后的可执行文件不再需要源代码,直接可以运行。 运行速度快:由于编译后的机器码直接运行,程序的执行速度通常比解释型语言快。 调试复杂:由于编译型语言经过编译生成二进制文件,调试时需要回到源代码进行修改,并重新编译,调试相对复杂。 常见编译型语言: C、C++、Go、Rust、Fortran、Pascal

优点: 性能高:编译后生成的二进制文件可以直接在目标机器上高效执行。 安全性强:源代码可以在编译后不再公开,保护了程序的源代码不被轻易查看。

缺点: 移植性较低:编译后的机器码与具体的硬件和操作系统相关,需要为不同平台重新编译。

解释型语言(Interpreted Languages)

解释型语言是指源代码不经过事先的编译,而是由解释器(Interpreter)逐行读取并直接执行代码。这意味着每次运行时,解释器都会逐行翻译和执行代码。

特点逐行执行:解释器逐行读取源代码并即时翻译成机器码,因此代码在每次运行时都需要解释。 运行速度较慢:由于解释器逐行翻译代码,相对于编译型语言,其运行速度通常较慢。 调试方便:解释型语言通常支持即时调试和修改,调试更加方便和灵活。

常见解释型语言:Python、JavaScript、Ruby、Perl、PHP

优点平台独立性强:解释型语言通常可以跨平台使用,只要有对应的解释器,程序就能在不同的平台上运行。 灵活性高:无需编译,修改代码后可以立即运行,非常适合快速开发和调试。

缺点性能较差:由于代码在每次运行时都需要逐行解释,运行速度比编译型语言慢。 发布不便:解释型语言需要附带源代码运行,发布时容易泄露源代码。

混合型语言(Hybrid Languages)

混合型语言结合了编译和解释的特点,通常先将代码编译为一种中间代码(Intermediate Code),然后由解释器或虚拟机执行这个中间代码。

特点编译为中间代码:源代码首先被编译为一种平台无关的中间代码(如字节码),中间代码不是机器码,无法直接在硬件上运行。 虚拟机执行:编译后的中间代码由虚拟机(如Java虚拟机JVM或Python虚拟机)进行解释或即时编译(JIT,Just-In-Time Compilation)为机器码。 平衡性能与跨平台性:通过中间代码的方式,混合型语言在性能和跨平台性上实现了平衡。 常见混合型语言:Java、C#、Python(通过字节码)、MATLAB 优点平台独立性:由于中间代码与具体硬件无关,程序可以在不同的系统上运行,只要有相应的虚拟机或解释器支持。 性能较好:通过JIT编译技术,虚拟机在执行时可以将中间代码编译成机器码,从而提升运行速度。 缺点启动速度慢:初始运行时,由于需要将代码编译为中间代码并进行解释,启动速度可能较慢。 复杂性增加:虚拟机和解释器的引入使得系统架构复杂,增加了程序运行时的资源占用。

类型执行方式优点缺点代表语言应用场景
编译型语言先编译为机器码,再执行运行速度快,性能高编译过程复杂,移植性差C、C++、Go、Rust适合高性能需求的系统编程、嵌入式开发、游戏开发等领域。
解释型语言逐行解释源代码并执行开发灵活,跨平台方便运行速度慢,源代码需要暴露Python、JavaScript、PHP适合快速原型开发、脚本编写、动态网页开发等场景。
混合型语言先编译为中间代码,再解释或JIT执行平衡了性能和跨平台性,具有灵活性和高效性启动速度慢,系统架构复杂Java、C#、Python(字节码)适合大型企业级应用、跨平台开发,既需要性能又要求良好跨平台性的场景。