11种服务器编程语言对比(附游戏服务器框架) 2020.06

各语言对比

语言版本TIOBE排名垃圾回收类型系统性能Web后端非Web后端特性
Java142
Python3.83动态
C++174不适合
Node.js147*动态
PHP7.48动态不适合
Go1.1412
Ruby2.713动态最低不适合
Rust1.4420不适合独特的内存安全机制
Lua5.438动态不适合通常配合 c/c++ 使用
Erlang2350+动态函数式编程
.NET开发 windows 服务器

* python 为使用 pypy 的性能
* 语言本身的性能主要体现在CPU密集型任务中,且不同类型的任务差距较大,对于IO密集型任务主要考虑是否容易实现高并发

网站语言使用率
在这里插入图片描述

Java

  • 功能强大,类库完善,适合开发各种大型项目,适合多人开发
  • 较好的开发效率和运行性能
  • 新版本解决了 GC 高延迟的问题,可用于开发低延迟服务器
  • Spring Boot 解决了 Spring 过于臃肿的问题,可以快速搭建小型服务器
  • 不支持协程(未来有计划支持,见 Project Loom)

Python

  • 随着机器学习的兴起迅速流行起来,也可以单独作为脚本使用
  • 适合快速搭建中小型服务器
  • 脚本语言的通病,不适合开发大型项目,较难维护和重构
  • 一些服务器使用底层 c/c++、上层 python 开发

C++

  • 系统级编程语言,常用于系统软件或嵌入式
  • 高性能
  • 学习成本高,开发效率低,内存不安全,非常容易写出 bug
  • 曾经是游戏服务器常用的语言(据说腾讯游戏多使用c++),但现在可以用 Java、Go、Rust 等代替
  • 非跨平台,但问题不大,服务器一般是 Windows 开发,Linux 运行,Visual Studio 本身就支持这一点

可以使用 Visual Studio 在 Windows 上编辑、调试 linux c++程序,而程序运行在远程Linux服务器、或Windows 的 linux 子系统中
https://docs.microsoft.com/en-us/cpp/linux/download-install-and-setup-the-linux-development-workload?view=vs-2019

Node.js

  • 使用 js 语言,适合前端人员开发后端
  • 适合做 serverless 开发
  • 除此之外 Node.js 在性能、高并发、易用程度上并没有独特优势

PHP

  • 世界上 80% 的 Web 服务器由 PHP 开发
  • 适合快速搭建中小型 Web 服务器
  • 多使用 Laravel 框架
  • 作为脚本语言,同样不适合开发大型项目
  • PHP7 版本极大提升了性能(仍比Java差很多)

Go

  • 语法简洁、设计良好,易于学习,开发效率高
  • 运行效率较高
  • 便于开发高并发服务器
  • 目前发展很快,很多公司都开始用 Go 开发 Web 服务器 、游戏服务器或系统级应用
  • Go 没有继承只有接口,这不是一个缺点,方法覆盖并不符合里氏替换原则,很难维护

Ruby

  • 适合快速搭建中小型 Web 服务器
  • 使用 Ruby On Rails 框架
  • 脚本语言,做 Web 开发与 PHP、Python 类似
  • 性能很低

Rust

  • Rust 是系统级编程语言,性能可媲美 c 语言
  • 有独特的内存安全机制
  • 微软发现 70% 的操作系统 bug 是空指针等内存安全问题造成的,于是尝试用 Rust 代替 c/c++
  • 可用于开发高性能服务器
  • 学习成本高
  • 类库较少

Lua

  • 脚本语言,可用于扩展 c/c++
  • 常用于编写游戏服务器的上层逻辑

Erlang

  • 函数式语言
  • 便于开发高并发、分布式服务器
  • 常用于游戏服务器、消息系统等

.NET

  • .NET 是一个平台,支持 c#、VB、ASP等语言,有一个类似JVM的公共语言运行库,Web 开发用到 ASP.Net、ASP.Net MVC、ADO.Net 等
  • 用于开发 Windows 服务器,目前也支持跨平台
  • 适合开发大型项目

开源游戏服务器框架

框架语言特点(仅供参考)github star其他
pomeloNode.js易扩展 分布式 适合小游戏10.9k作者为网易
Skynetc lua消息处理框架9.1k作者为网易云风
KBEnginec++ Python适合大型 MMO4k
leafgo游戏框架3.6k
mqantgo分布式微服务框架1.9k
goworldgo分布式1.5k
cellnetgo分布式3.2k
pitayago分布式0.6k
Scutc# Python lua游戏框架1.2k
Cuberitec++Minecraft 服务器3.2k
agonesgo基于k8s 分布式3.2k
NoahGameFramec++ c# lua可扩展 分布式,可用于 MMO MOBA2.5k
ETc#配合 Unity3d 使用3.5k

编程语言族谱

https://www.levenez.com/lang/lang.pdf

在这里插入图片描述

  • 19
    点赞
  • 67
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值