客户端

程序语言之争

所在版块: 原创 2017-11-02 10:28 [复制链接] 查看: 3190|回复: 0
随着海外租车检索模块上线,在浩瀚的互联网世界,我又增加了一项新的项目实践经验:java。至此,在互联网后端开发语言的版图中,已解锁了c++,php,java三大主流语言。今天这期文章,就结合实际项目经验,谈谈程序设计语言之争。
在程序猿生物群中,流传着一个经典段子,如果想让一群程序猿吵起来,只需发这样一段话:“PHP是最好的语言”。当然这只是个段子,语言其实并无优劣之分,只是各自适合不同的场景而已。在讨论具体的设计语言之前,有必要先深入认识一下程序设计语言的本质,尤其是它跟自然语言的本质区别。

语言的本质是表达信息,让信息传递。 自然语言是人与人之间的信息表达,程序语言是人与机器之间的信息表达。程序语言表达的是执行信息,自然语言除了表达执行信息外,还可以表达情感信息。比如,我们会用自然语言表达,“我今天很开心”,但你无法用让计算机表达它今天是不是很开心。好了,这一段其实就想说明一点:所有的程序设计语言,都是人类向计算机表达执行信息的语言,它包含三个关键要素:人,机,执行。比较不同程序语言的差异主要看两个方面:1.人的表达效率,2.机器的执行效率。
如果把人的要素去掉,让机器评选最好的语言,那肯定是机器指令代码或者稍微差一点的汇编语言。在计算机诞生之初,程序猿就是这样来“迁就”机器的。但今时今日,人的因素显然不能忽略。这就是高级程序设计语言产生的原因。下面就讨论下互联网后端开发使用的几种主流语言。


C++:面向内存规划的语言
        我一直把c++作为程序语言中最高的内功心法来看待。它能帮助程序猿打通计算机专业的奇经八脉。记得当年大学一年级就开始学习C++程序语言设计这么课。因为它是后面其他计算机专业课程的基础,比如数据结构与算法,编译原理,操作系统等。可见只有专业基础足够扎实的程序猿才能用好这门语言。
        C++语言之所以难以掌握,我觉得核心原因是,与其他高级语言相比,它是面向内存规划开发的。在开发过程中,程序猿需要自行管理和规划内存空间,这就要求程序猿对计算机的内存格局充分了解。优秀的C++程序猿,可以根据业务特点来规划内存资源,开发出高性能的运行程序。因此C++特别适用于需要对内存资源精打细算的场景,典型的场景如嵌入式开发。可以你会问,现在互联网服务器的硬件性能已经非常高了,还有必要精打细算吗?确实对于小型Web系统开发而言,PHP+MySQL就能搞定了。但互联网后端开发场景有一个特点,问题规模可能非常大,比如对上百亿条记录的检索。这时哪怕每条记录节省一个byte,乘上规模基数后就能节省上G的资源。所以在对性能要求比较高的场景,C++还是首选语言。
        但内存规划既是C++的优势,同时也是劣势。它的表达效率太低了:程序猿想让计算机取买东西,还得告诉它带几个袋子,每个袋子里放什么东西。接下来就看一门高效率表达的语言:PHP。
PHP:面向结果与变化的语言
       PHPHypertext Preprocessor写,翻译成中文是超文本预处理器。从名称可以看出,PHP设计之初就是面向超文本开发的。超文本是什么?通俗地将就是Web页面。PHP的核心就是面向web结果开发。理解这一点并不难,只要说一下php中的array就能明白了。
       Array在其他语言中表达线性连续顺序存储的数据结构,但是在PHP中,它是一个万能结构,所有数据都可以往里面塞。使用Array时,程序猿只需要考虑里面有哪些字段,不用考虑这些字段如何存储。本质是什么?程序猿可以非常高效的表达。
另外,与C++相比,PHP是解释执行的,它不需要先编译成机器码再执行。它的好处代码即时生效,但这对计算机并不友好,因为计算机在执行时需要先做一次源码翻译。
   PHP的典型应用场景就是互联网系统的站点层,就是进入web后端系统的第一层。用于快速影响和匹配前端页面结果和变化。
Java:面向工程规划和标准化的语言
        Java程序猿可能是最喜欢谈工程架构的程序猿了。主要原因是Java在开发之初就是先做好工程结构规划:源码放哪,配置放哪,测试代码放哪,哪个目录是业务层,哪个目录是视图层…。
        Java开发的另一个特点是标准化:把代码配置化,自动化。做Java开发通常会有这样一个感觉,写配置多于写代码,IDE自动生成的代码多于自己手写的代码。与其说是编写代码,不如说是在组装代码。
        Java为什么会有这些特点呢?我觉得它是想解决大型项目的解构与组装的问题,解构的基础就是架构,组装的核心是标准化。本质上,它是解决工业化时代的核心问题:分工与协作。所以在面对企业级应用,需要许多名程序猿协作开发的大型项目时,Java是首选语言。

最后简单总结下:
1.      程序设计语言是人类向计算机表达执行信息的工具。        
2.      c++要求程序猿做好内存规划,对机器而言是优势,但对人而言这是劣势。适用于对内存资源精打细算的开发场景。   
3.      php是面向结果与变化的语言,它能让程序猿向计算机最快的表达执行信息,并且可以“说完就做”。   
4.      java是面向工程架构和标准化的语言。它解决大型工程的分工协作问题。   

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码关注微信公众号

QQ|Archiver|手机版|小黑屋|mwt-design ( 沪ICP备12041170号-1

GMT+8, 2025-4-4 07:29 , Processed in 0.074898 second(s), 29 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回列表