文档章节

浅谈后端语言优缺点

lampbrotherIT
 lampbrotherIT
发布于 2016/08/09 11:07
字数 1666
阅读 12
收藏 0

浅谈后端语言优缺点 兄弟连教育在前不久,回答了一个关于后端语言选型的问题,那么后端语言都有哪些,存在什么样的优缺点?因此兄弟连与大家分享一下心得。

语言优缺点 C/C++ C 语言虽然是非常贴近操作系统的语言,能和操作系统 API 很好的交互,但是 C 语言并没有现代化工程开发所需要的面向对象功能,当然也缺乏泛型之类的功能,如果以 CGI 的形式开发,那么缺点非常明显,这也是第二代后端平台兴起的原因。

C++ 具有现代化工程开发所需要的各种功能,但是它同样有缺点:

缺乏字符串处理,Web 开发最主要的就是字符串的处理,所有的一切几乎都要和字符串打交道,但是 C++ 最差的就是字符串处理,只有 std::string 这个标准库提供的字符串类。用过的基本都知道,这是所有语言中最差的字符串类,缺乏方便的 UTF-8 支持,缺乏正则表达式匹配,几乎什么都缺。 缺乏 Web 标准的支持,我这里说的标准是指语言层面上对 HTTP 协议的支持。Web 是基于 HTTP 协议和 TCP 协议产生的,TCP 协议控制了如何传输,HTTP 协议定义了浏览器和服务端如何通信。而 C++ 极度缺乏这方面的支持,如果需要做非 CGI 开发,只能自己手工处理 Socket 通信。 缺乏 HTTP 框架和业务代码之间的交互标准,框架就算完成了 HTTP 通信部分,也没有一个标准规定框架如何和业务代码交互。不过,实际上 C++ 框架是实现自己的交互流程。但是缺乏规范则是框架稀少的原因。 这三点主要的缺点非常明显的,所以社区都没兴趣给写基于 C++ 的 Web 框架,就算有也是小打小闹。

Java Java 的效率相对于 C/C++ 这种手动管理内存的语言来说是低的,哪怕使用了引用计数,C/C++ 也能把 Java 甩出 N 条街。但是 Java 相对于其他脚本语言来说优势非常明显

强类型、编译型语言,这点就使得 Java 在效率远超动态类型语言,而且在编译时就能发现 bug,不需要等到运行时再去调试,现在的很多 IDE 也能做静态语言分析,不需要编译就能发现语法错误,这就能提升效率。 Java SE 规范,这就让 Java 能像 C/C++ 一样贴近操作系统,自由处理网络相关、IO 相关的内容,功能很强大。 Java EE 规范,完善的规范使得 Java 后端发展有了很好的规范基础,统一的环境。规范让框架和业务代码有了交互的标准(Servlet 脱胎于 Applet,结果 Applet 没什么卵用,反而 Servlet 得到了极大的发展)。 Java 有着最完善的生态链,无论是框架还是编译工具链,模块系统做的非常棒,现代工程所需的各种设计模式都有着很好的实践。除了 Java 以外,JVM 上面还有着更多的语言可以选择。 当然,Java 本身也有很多缺点:

编译型语言开发效率慢 想要上手开发业务容易,但是想要真正懂得 Servlet 和框架如何运行就难了。 语言本身也存在着很多缺点,比如将 C 那里继承过来的类型又重新封装了一次,一些新颖的技术没能第一时间引入,比如 Lambda 这样的到了 1.8 才引入,甚至有人说说,Java 什么都好,除了语言本身。但是它至少比市面上其他语言更能接受。 本身的规范和不够灵活也导致了代码本身很难优化,好的代码和差的代码在一套规则的束缚下实际上性能并没有多少差距,更多的优化被交给了 JVM

PHP PHP 作为一门脚本语言,本身运行效率确实不是很高,但是在 PHP7 平台上,PHP培训已经算是脚本语言中比较高的了,而且在现有的硬件平台上,PHP 本身的效率基本不会成为瓶颈。它作为一门脚本语言也有着很多优势:

天生的模板语言,不需要学习其他的模板语言,提升了开发效率,也提升了运行效率。(比如 CodeIgniter,就大部分框架来说,使用 PHP 作为模板语言能提升效率,但是像 Laravel 这种能对模板编译缓存的另算) 上手容易,生态链也很不错,LAMP、LNMP 这样部署的技术可以说是烂大街了,基本没有学习成本 缺点:

解释型语言,不能常驻内存,巨大的缺陷。 缺乏好用的包管理和命名空间,也缺乏好用的模块系统(Composer 另说)

Node.js Node.js 作为目前比较火热的语言,确实有它的独到之处,这里先列举它的优点:

事件循环 + 异步 IO,这让它在高并发的情况下能大显身手。 JavaScript 易上手,有着活跃的社区和很多的第三方库 常驻内存简直不要太好 可用的模块系统 天生跟 Docker 有缘 前端使用 JavaScript,学习 Node.js 能做到全栈开发 缺点:

也是 JavaScript,JavaScript 是基于原型的语言,从严格上来说并没有真正面向对象,这样也让 JavaScript 在编写业务代码的时候极为困难。 混乱的语言规范,现在并行着 ES5、ES6、ES7,需要 Babel 这样的工具帮忙 在服务端上只存在 CommonJS 模块系统,但是在规范上来说则有很多,准确来说这并不是一个很大的问题,可以忽略 ES5 愚蠢的回调产生的回调地狱,但是 ES6 解决了这个问题,准确来说也不是什么大问题。

Swoole Swoole 跟 Node.js 很相似,相比 Node.js 它在语言层面上比 JavaScript 更加规范好用。但是它存在两个缺点:

文档!文档!文档!重要的事情说三遍。 单纯的 Swoole 扩展基本不能用,必须依赖 Swoole 框架,所以。。。文档!文档!文档!问题还是文档

本文转载自:

共有 人打赏支持
lampbrotherIT
粉丝 2
博文 37
码字总数 50418
作品 0
昌平
论各语言优缺点

老婆要想了解一下各个语言的特点,从网上找了一下,很多内容都比较老了,连delphi,vb这类语言都能夸的天花乱辍的,实在受不了。还是我来总结一下吧 转载请注明:这篇文章写于2016年,免得1...

赵占涛
2016/08/08
69
0
浅谈跨域

对于跨域,我想不必多说,做为前端工程师这是一个重头,只要掌握了相关实现方法则对于实现跨源头资源共享可谓由鱼得水,对于常见的几种方式: JSONP CORS PostMessage 降域 本文会逐一例举,所...

唐正汉
2017/02/23
0
0
佛山巨量数据技术有限公司/bd-shop

BDShop ##交流QQ群:107304892 2017-10-03 半年第一次更新了 修复所有bug 请大家更新一下 BDShop是国内少有前后端完全分离的java商城项目. BDShop 系统简介 BDShop商城系统是B2C模式的电子商城...

佛山巨量数据技术有限公司
2017/04/24
0
0
《浅谈JavaScript系列》系列技术文章整理收藏

《浅谈JavaScript系列》系列技术文章整理收藏 1浅谈JavaScript中面向对象技术的模拟 2浅谈javascript函数劫持[转自xfocus]第1/3页 3浅谈javascript 面向对象编程 4老鱼 浅谈javascript面向对...

开元中国2015
2015/07/27
1K
0
浅谈Kotlin(一):简介及Android Studio中配置

浅谈Kotlin(一):简介及Android Studio中配置 浅谈Kotlin(二):基本类型、基本语法、代码风格 浅谈Kotlin(三):类 浅谈Kotlin(四):控制流 前言:   今日新闻:谷歌宣布,将Kotli...

听着music睡
2017/05/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

ubuntu 18.04 desktop 截图快捷键

如图,点击下方的 add shortcut 为这个快捷键命名 输入截图 command gnome-screenshot -a 设置快捷键 常用为 Ctrl - Alt + a 参考 http://os.51cto.com/art/200903/113091_all.htm...

公孙衍
4分钟前
0
0
一个六年Java程序员的从业总结:比起掉发,我更怕掉队

恍然间,发现自己在这个行业里已经摸爬滚打了五、六年了,原以为自己就凭已有的项目经验和工作经历怎么着也应该算得上是一个业内比较资历的人士了,但是今年在换工作的过程中却遭到了重大的挫...

老道士
6分钟前
0
0
Spacemacs快捷键

由于Spacemacs快捷键太多,为方便使用,将常用的快捷键记录在此。 以下快捷键都是在emacs的evil模式下 Buffers操作 创建名称为<buffer-name>的buffer SPC b b <buffer-name> 从已打开的buf...

yxmsw2007
11分钟前
0
0
GO冒泡,二分查找

package mainimport("fmt")func main() {var arr [5]int = [5]int{11,13,9,2,25}maopao(&arr)fmt.Println("arr = ", arr) //[2 9 11 13 25]findIndex := binaryFind(&arr, 0......

汤汤圆圆
35分钟前
1
0
工作2年半跳槽面试阿里,成功拿到offer,凭什么?

2015年刚毕业的我,进入了一家小小的公司实习工作,在学校学了三年软件开发的我,还是想去寻找一份互联网行业的工作,这样更能学以致用发挥自己的特长。一直到18年三月份,我辞掉已有的工作,...

java知识分子
39分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部