-
编程语言的发展
语言的发展方向:功能更强、性能更高、更易于使用。
-
当前主流语言简析
2021年2月份 TIOBE 编程语言排行榜
基本对比
语言 | 优势 | 不足 | 主要平台 |
C | 贴近硬件、历史悠久、支持广泛 | 易出错,开发效率较低 | 设备 |
Java | 生态好,简单,跨平台 | 需要虚拟机, 语法不够简洁, 发展较慢 | 服务端、安卓 |
Python | 生态好, 简单,跨平台 | 性能偏低 | 服务端、运维工具 |
C++ | 功能强大 | 易出错, 开发效率低 | 系统语言 |
C# | 语法简洁,易读性好,跨平台,支持广泛,迭代快 | 需要虚拟机 | 服务端、PC、安卓、iOS |
Javascript | 语法简单,前端必备,NodeJS生态 | 有历史包袱,单线程 | 浏览器、服务端 |
Go | 简洁高效 | 需要虚拟机 | 服务端 |
Kotlin | 语法优美,完美替代Java。安卓开发首选语言 | 需要虚拟机 | 安卓、服务端 |
Rust | 提供无虚拟机的内存安全 | 年轻 | 发展中 |
开发语言选择
公司选择开发语言:
功能强,人才多,成本低,开发效率高,运行效率高
个人选择开发语言:
符合公司需要,开发效率高,少加班
学校与公司的差异
学校: 一个c语言的例子:
i++;
++i;
两者有什么区别?
公司: 禁止使用 ++i !
原因: 容易混淆的语法,尽量不用。 不要纠结于几个CPU时钟周期的差异,降低程序员的脑力负担,专注解决实际问题, 而不是调试各种语法陷阱。
语言的发展又一趋势: 减少语法陷阱!
进程、线程、协程
谁能讲一下?
进程的内存占用在 MB级别, 新建进程和切换进程,消耗巨大。
线程的内存占用在 KB级别, 新建进程和切换线程,消耗比进程要小很多很多, 但是当并发量巨大时, 也会成为系统的一个重要负担。
进程和线程,都是操作系统级别的。
协程是语言级别的,协程比线程轻量的多, 是现代语言处理高并发场景的非常好的选项。
是否支持协程, 是衡量现代语言的重要指标。
对协程支持的比较好的主流语言: C# 、Kotlin
虚拟机简单讨论
谁能讲一下?
虚拟机主要作用:屏蔽平台差异, 管理内存。
程序员可以通过程序控制虚拟机。
Java/C# 字符串拼接, StringBuilder, StringBuffer的差异?
C#各版本的主要特性
1.0 - Java的基本功能 + 事件 2002年
2.0 - 泛型。 Java很晚才支持泛型,而且支持的不彻底(类型擦除) 2005年
3.0 - Lambda (高级函数) 2008年
4.0 - 动态类型,命名和可选参数 2010年
5.0 - 异步方法(协程) 2012年
6.0 - Roslyn ,nameof, 自动属性初始化 2015年, .net core 1.0
7.0 - 模式匹配, 元组, 局部函数,default 2017年
8.0 - 默认接口成员, 模式增强, 索引和范围 , 2019年