各个流行语言优缺点对比及其适用场景

文章目录

  • 主流编程语言排行榜
  • Python
  • PHP
  • Golang
  • Java
  • C
  • C++
  • C#

主流编程语言排行榜

以下是TIOBE发布的2019年1月份的编程语言排行榜,我只截取了前20。TIOBE编程语言排行榜是编程语言流行趋势的一个指标,每月更新,这份排行榜排名基于互联网有经验的程序员、课程和第三方厂商的数量。排名使用著名的搜索引擎(诸如Google、MSN、Yahoo、Wikipedia、YouTube以及Baidu等)进行计算。请注意这个排行榜只是反映某个编程语言的热门程度,并不能说明一门编程语言好不好,或者一门语言所编写的代码数量多少。

这个排行榜可以用来考查我们的编程技能是否与时俱进,也可以在开发新系统时作为一个语言选择依据。
各个流行语言优缺点对比及其适用场景_第1张图片

Python

它很容易上手,作为解释型非编译的脚本语言来说,优缺点也很明显。

优点 缺点
简单,易掌握,带来了巨大生产力 执行速度低于编译型语言,Python3和2不兼容
易于学习,广泛的工具及功能库(特别是人工智能方面) 代码不能加密,很多时候必须开发源码
移植性很强(包括嵌入式产品),粘合剂语言(不同语言高效拼接,组合使用) 线程不能利用多CPU,GIL即全局解释器锁,任何时刻仅有一个线程在执行

目前很多人工智能的算法都是用Python来实现的,在AI的领域Python的地位还是很高的。

PHP

它也很容易上手,也是解释型非编译的脚本语言。

优点 缺点
简单,易掌握,开发速度快 对多线程、核心异步网络的支持不太好
框架多,开源项目多 目前只支持web开发,对桌面应用和手机应用支持不好
有很多公共类库和插件 提供的数据结构和函数的接口粒度比较粗

目前PHP更适合需要快速开发的Web程序,业务开发、快速实现的利器。

Golang

简称Go语言,它是一个有动态语言感觉的静态语言,写起来的效率很高。

优点 缺点
简单,易掌握,开发速度快,效率高 软件包管理不支持版本,有时候升级容易导致项目不可运行,所以需要自己控制相应的版本信息
可直接编译成机器码,不依赖其他库,glibc的版本有一定要求,部署就是扔一个文件上去就完成了 垃圾回收器(GC)不太完善,同时并发很大的情况下,处理很大的日志,GC没有那么快,内存回收也不是很给力
内置Runtime,支持垃圾回收,并行和并发效果很好 goroutine(协程)的调度时机,具体什么时候会被执行,是不确定的,会导致逻辑出错

Go的开发者包括Unix的创始人和C语言的创始人,更适合高并发的网络程序和本地程序。

Java

Java的热度一直让它处于编程语言排行榜首位的位置的面向对象的静态语言。

优点 缺点
市场需求旺盛,国内外大公司岗位多,就业容易,有大量的开源库 对内存的使用率高于C++
Google的Android是目前人气最高的移动平台,Java是Android的语言基础 Java程序启动时间较长
一次编写,到处运行,强大的可伸缩性,多样化和功能强大的开发工具支持 Java学习的复杂性越来越高,由于无法定义一个好的标准开发框架,每个程序员来到新的公司时必须先了解框架,延缓了开发的时间

Java更适合做Android开发,以及比较大的项目的后台开发。

C

C语言是一门面向过程的静态语言。

优点 缺点
代码量小,运行速度快,功能强大 危险性高,开发周期长
语法机制灵活,可以直接访问硬件 复用性差,维护性不高,扩展性不高,可读性不高
几乎现代编程语言都脱胎于C语言,被誉为“上帝语言” 不具备运行时的检查机制

C更适合广泛应用于计算机的底层开发,例如系统软件:编译器,JVM,驱动,操作系统内核,还有各种嵌入式软件,固件等。

C++

C++是C语言的继承,是一门面向对象的静态语言。

优点 缺点
运行效率高,高效安全 内容较多,学习难度大
跨平台性非常好,几乎所有处理器和操作系统都支持C/C++ 为了满足程序的复用性和可读性,往往程序尺寸比较大,同比其他语言代码量大
C++功能在C的基础上增加面向对象的特点,代码可读性好,复用性高,运行效率高 相对java来说,没有垃圾回收机制,可能引起内存泄漏,更依赖程序员手动释放

C++对程序员的要求较高,学好了是“万金油”。前至各种客户端,后至网络编程,硬件底层。因为C++是广博的,它涵盖面如此之大,让它如何能简单。

C#

C#是微软公司发布的一种面向对象的静态语言。

优点 缺点
类库多,上手快,利于快速开发 性能上的匮乏
全面集成.Net库,不仅仅是一个语言,更像是一个极具匠心的产品 移动平台和硬件领域的比较乏力
相比java,有更先进的语法体系(后生的,很多语法都是其它语言的改进) 作为微软的产品,到了非微软的操作系统上,很多framework里面的类库就不好使了

C#目前更适合于Windows的桌面应用开发,在web开发也有市场。

你可能感兴趣的:(//其它)