【每日一学 20260916】《程序员生存手册》——不同编程语言的特性

2026-09-16 14:18:00
蓉蓉
原创
44

1.编译型语言与解释型语言

明确一门编程语言是编译型还是解释型,是非常基础且有必要的,这对于理解一些程序的深层行为逻辑会很有帮助。对语言设计者来说,编译型和解释型从根本上是语言开发自由度和性能优化能力之间的博弈。

2.类型系统

需要了解编程语言支持哪些数据类型,其中哪些是简单或基础类型,哪些是复杂或复合类型,各个类型之间又有哪些区别等。


抽象来看,类型系统又可以从两个维度来定义。


强类型或弱类型

核心区别在于语言是否偏向于容忍隐式类型转换。一个常见的错误理解:C/C++是强类型语言。实际上,在C/C++中隐式类型转换很常见,所以它们是弱类型语言。与之相对,Python则是强类型语言。


静态类型或动态类型
核心区别在于是否在编译时就能明确每一个变量的类型。对静态类型来说,如果编译时存在类型错误,是无法编译通过的;而对动态类型来说,因为程序运行时才能明确类型,所以类型错误通常不会导致编译出错,错误会在运行时暴露出来。

3.模块系统

如今的高级语言基本都有成熟的模块系统,好的模块系统对构建大型工程项目来说必不可少,它可以大大提高程序的可复用能力和模块化能力。

4.作用域

一个很影响实际开发且与模块系统相关的问题:变量的作用域是怎样的。常见的问题如下。

  • 什么情况下是全局作用域?
  • 什么时候是函数作用域?
  • 块作用域是怎样的?

不过,不同的语言对于作用域的定义和分类可能不同,需要具体情况具体分析。另外,明确语言是静态作用域还是动态作用域也非常重要。


与静态类型和动态类型的区别类似,静态作用域是在书写代码或定义时确定的,而动态作用域是在运行时确定的。


静态作用域关注函数在何处声明,而动态作用域关注函数从何处调用,其作用域链是基于运行时的调用栈的。

5.支持的编程范式与特色

编程语言支持什么样的编程范式对工程项目来说非常重要。例如,面向对象中的封装、继承和多态,对应到编程语言上该如何具体实现;面向过程的语言如何实现并发;等等。了解了这些特色,我们才能更清楚编程语言在工程中更擅长做的事情和更适合的项目。


虽然精通一门编程语言不是一件容易的事情,学习之路任重而道远,但未来是光明的。如果我们想站到精英程序员的队列里,不仅要深入了解某一门编程语言,还要掌握几门其他的编程语言,这样才能完成高水平的开发工作。加油!

来源:《程序员生存手册》
发表评论
通过审核后显示您的意见