-
編程語言的發展
語言的發展方向:功能更強、性能更高、更易於使用。
-
當前主流語言簡析
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年