各种编程语言的适用范围从1956年第一种高级语言Fortran诞生到现在,历史上出现的各种计算机编程语言的总和超过1500种,但今天不太流行。 相当一部分人开始学习编程时会问:“我应该学习什么语言?
从某种意义上说,语言没有明显的优劣,我认为只是适合还是不适合,擅长还是不擅长。 根据语言的不同,比其他语言更适合某个领域,可以制作产品。 本文主要梳理了一些类语言工具和TIOBE排行榜的部分语言的应用场景,希望能成为一个粗略的编程语言选择指南。 (排名没有优先顺序)
类语言工具下的四个不是编程语言,但也有类似高级语言的用法,是非常好的工具。
Tex
(1)黄金德纳的开发、排版工具、追求高质量必不可少。 漂亮的打底裤也很好。
)2)适用于书籍、报纸、杂志、论文、报告等文件的排版。
)3)详情请参阅另一博文Tex排版系统及其衍生系列产品简介
Awk
)1) Unix/Linux系统工具、字节流数据处理、逐列数据处理
Sed
)1) Unix/Linux系统工具、字节流数据处理、逐行数据处理
Grep
) Unix/Linux系统工具、文档搜索、文档单元
TIOBE Index中包含的编程语言适用于其中44种语言。
Assembly
)1)木马、病毒
)2)底层、硬件控制
)3)优点:快速、可控底层缺点:学习难度大,不直观
C
)1)木马、病毒
)2)编译器、调试器
)3)工程控制领域,机器人
)4)司机、飞机
)5)类Unix操作系统,嵌入式
)交换机、路由器、防火墙
(7)优点:快速、可控底层缺点:学习难度大,内存泄漏
C++
)1)木马、病毒
)2)编译器、调试器
)3)游戏引擎、服务器
(4)数据库、安全协议
)5)图像处理、虚拟现实
)6)图形用户界面、网络
(7)科学计算、人工智能
(8)音视频处理、压缩技术
(9)优势:面向对象、可扩展劣势:学习难度极大,内存泄漏
Rust
)1)系统、网络
)2)游戏、嵌入式
)3) Web开发,桌面GUI
)4)优势:安全劣势:学习难度大
Go
)1)服务器、数据库、容器
)2)分布式大型系统、云平台
)3)优势:同时、分布式、网络时代的c; 缺点:括号不能换行,库不足
Dart
(1)物联网
)2) Web、服务器
)3)优势:移动开发,钦定Fuchsia系统语言; 缺点:运行时环境大
Java
(1)大数据和科学应用
)2)桌面APP、网络APP
)3)软件工具、交易程序
)4)企业APP,安卓APP
)5)优势:跨平台可移植,高性能优势:复杂臃肿
Python
)1)木马、病毒
)2)大数据、云计算
)3)量化金融、运维
(5)图像、音视频处理
)4)科学计算、网络开发
)6)网络爬虫、人工智能
(7)优势:易学,各种库多,劣势:速度慢,净重构
JavaScript
(1)网站前端、网络APP
)2)站点后端、浏览器插件
(3)前后端(Node.js/Deno ) ) ) )。
)4)优势:强大、简单劣势:依赖浏览器
WebAssembly
)1)浏览器的使用
)2)优势:高性能、支持多种语言的优势:类型检查严格
TypeScript
(1) APP应用级别的JavaScript开发语言
(2)优势:支持js,与第三方库兼容的劣势:学习困难
HTML
(1)网页生成
)2)电子书制作
)3)优势:跨平台优势:浏览器兼容性麻烦
Kotlin
)1)安卓官方开发语言
)2)优点:与Java兼容,代码节约缺点:编译慢
Swift
)1) IOS及OS X开发
)2)优势:安全、快捷; 缺点:版本不稳定
Objective-C
r> (1) IOS平台软件开发(2) 优点:库丰富;缺点:不支持重载,多重继承
PHP
(1) 网站开发,电子商务
(2) Web应用,企业级应用
(3) 微信开发,客户端界面
(4) 优点:上手快,框架成熟;缺点:慢,应用单一
Shell
(1) 类Unix系统中,自动化脚本
(2) 优点:简单,高效;缺点:IO性能,效率不高
PowerShell
(1) 自动化脚本,可调用.Net和COM对象
(2) 优点:功能强大;缺点:不兼容老版
Ruby
(1) Web开发
(2) 优点:简单,正则;缺点:慢
Perl
(1) Unix系统维护,CGI脚本
(2) 邮件文本处理和FTP自动化
(3) 数据库通信,Web站点维护自动化
(4) 优点:简单,正则;缺点:写大程序很麻烦
R
(1) 自动化报告
(2) 生物医学领域
(3) 数据挖掘,统计分析
(4) 优点:简单,本身小;缺点:大文件处理差
Julia
(1) 科学计算,数据处理,仿真
(2) 优点:支持python库和R库;缺点:启动需预热
Lua
(1) 游戏脚本,内嵌脚本
(2) 优点:小,快;缺点:重复造轮子,nil值问题
MATLAB
(1) 人工智能
(2) 数值计算,仿真模拟
(3) 优点:矩阵,仿真强;缺点:慢,软件太大
Fortran
(1) 科学研究,物理
(2) 优点:快;缺点:太老,生态不好
SQL
(1) 数据库
(2) 优点:安全;缺点:慢,可移植性差
C#
(1) Windows桌面应用,Web应用
(2) 优点:分布式,面向对象;缺点:复杂
Visual Basic
(1) 木马,病毒
(2) 可视化程序设计
(3) 优点:小;缺点:无继承
COBOL
(1) 银行,保险,金融
(2) 优点:数据处理高效;缺点:老
Delphi
(1) 木马,病毒
(2) 桌面开发,数据库开发
(3) Web服务,游戏控制软件
(4) 优点:简单,控件丰富;缺点:死了
Pascal
(1) 编程竞赛,算法研究
(2) 优点:语法严谨;缺点:语法严谨
D
(1) Web开发
(2) 优点:效率高,和C/C++交互容易;缺点:缺乏企业支持
Scala
(1) 大数据,Web服务
(2) 优点:生态丰富,扩展性强;缺点:学习曲线陡峭
Clojure
(1) 游戏后端
(2) 自动化测试,黑盒测试
(3) 优点:简单,实用;缺点:要懂Java
Groovy
(1) Java的替代品
(3) 优点:比Java灵活;缺点:性能损失
Lisp
(1) 人工智能
(2) 优点:符号推演;缺点:能教学用
Scheme
(1) 科学计算
(2) 优点:简单,移植性好,理解语言本质
Haskell
(1) 函数式编程
(2) 优点:惰性求值;缺点:复杂
Prolog
(1) 不用于开发软件
(2) 逻辑编程,用于挖掘关系
(3) 优点:培养逻辑;缺点:慢
Erlang
(1) 游戏网页,高并发
(2) 优点:灵活;缺点:数据抽象弱
PostScript
(1) 印刷机,打印机使用
(2) 优点:设备无关;缺点:贵
Scratch
(1) 儿童编程语言
(2) 优点:简单;缺点:简单
VHDL
(1) 电路设计
LabVIEW
(1) 图形化编程语言,产生框图程序
(2) 测量,控制系统,快速工程化实践
一般人用得到的语言估计就这些,每门语言的适用领域不一定写全了,但是大体不会错。个人感觉 Go,Rust,WebAssembly,Dart在未来可能会火起来。