admin管理员组

文章数量:1794759

各种编程语言的适用范围

各种编程语言的适用范围

各种编程语言的适用范围

自1956年第一门高级语言Fortran诞生至今,历史上出现过的各类计算机编程语言总和已超过1500种,但今天还流行的并不多。相当一部分人在初学编程时都会问:我该学什么语言?

我认为:某种程度上,语言没有明显优劣,只有适合还是不适合,擅长与否。有的语言就是要比其他语言更适合某个领域,更能作出产品来。本文主要梳理一些类语言工具和TIOBE榜上一部分语言的适用场景,希望能成为一份粗略的编程语言选择指南。(排名没有先后)

类语言工具

下面四个不算编程语言,但又有些类似高级语言的用法,是非常好的工具。

Tex (1) 高德纳开发,排版工具,追求高质量必不可少,漂亮的ConTeXt也很好。 (2) 适用于书籍,报刊,杂志,论文,报告等等文档的排版。 (3) 详细内容请看另一篇博文Tex排版系统及其衍生系列产品的简介

Awk (1) Unix/Linux系统工具,字节流数据处理,按列处理数据

Sed (1) Unix/Linux系统工具,字节流数据处理,按行处理数据

Grep (1) Unix/Linux系统工具,文档搜索,以文档为单位

TIOBE Index收录编程语言的适用范围

下面是其中的44种语言。

Assembly (1) 木马,病毒 (2) 底层,硬件控制 (3) 优点:快,能控制底层;缺点:学习难度大,不直观

C (1) 木马,病毒 (2) 编译器,调试器 (3) 工程控制领域,机器人 (4) 驱动程序,航空飞行器 (5) 类Unix操作系统,嵌入式 (6) 交换机,路由器,防火墙 (7) 优点:快,能控制底层;缺点:学习难度大,内存泄漏

C++ (1) 木马,病毒 (2) 编译器,调试器 (3) 游戏引擎,服务器 (4) 数据库,安全协议 (5) 图像处理,虚拟现实 (6) 图形用户界面,网络 (7) 科学计算,人工智能 (8) 音视频处理,压缩技术 (9) 优点:面向对象,可扩展;缺点:学习难度极大,内存泄漏

Rust (1) 系统,网络 (2) 游戏,嵌入式 (3) Web开发,桌面GUI (4) 优点:安全;缺点:学习难度大

Go (1) 服务器,数据库,容器 (2) 分布式大型系统,云平台 (3) 优点:并发,分布式,Web时代的C;缺点:括号不能换行,缺少库

Dart (1) 物联网 (2) Web,服务器 (3) 优点:移动开发,Fuchsia系统钦定语言;缺点:运行时环境大

Java (1) 大数据和科学应用 (2) 桌面应用,Web应用 (3) 软件工具,交易程序 (4) 企业级应用,安卓应用 (5) 优点:跨平台可移植,高性能;缺点:复杂臃肿

Python (1) 木马,病毒 (2) 大数据,云计算 (3) 量化金融,运维 (5) 图像,音视频处理 (4) 科学计算,Web开发 (6) 网络爬虫,人工智能 (7) 优点:简单易学,各种库多,缺点:速度慢,老是重构

JavaScript (1) 网站前端,Web应用 (2) 网站后端,浏览器插件 (3) 前后端(Node.js/Deno) (4) 优点:功能强大,简单;缺点:依赖浏览器

WebAssembly (1) 浏览器使用 (2) 优点:高性能,支持多种语言;缺点:类型检验严格

TypeScript (1) 应用级的JavaScript开发语言 (2) 优点:支持js,兼容第三方库;缺点:学习有难度

HTML (1) 网页生成 (2) 电子书制作 (3) 优点:跨平台;缺点:浏览器兼容麻烦

Kotlin (1) 安卓官方开发语言 (2) 优点:兼容Java,节省代码;缺点:编译慢

Swift (1) IOS及OS X开发 (2) 优点:安全,快;缺点:版本不稳定

Objective-C (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在未来可能会火起来。

本文标签: 适用范围编程语言