用编程语言参加战争,谁会是最强武器?

自从计算机问世,各种编程语言也随之诞生,作为程序猿,Java、Python和C++是必学的三种编程语言,但有时难免疑惑:这三种语言究竟孰优孰劣?

那么不妨读一读这篇文章,小卓用一种别开生面的方式为你解答——"如果用编程语言参加战争,谁是最强武器?"

Java:轻巧灵便的多面手

战场上的Java语言就像美国陆战队标配M4A1步枪

这种轻巧灵便的武器十分贴合Java容易上手的特性,而且威力强劲,在各种战场上都能发挥效用(平台独立和可跨平台赋予Java一次编译、到处执行的特性)各大军队都有配备(是当今应用最广泛的语言之一)还有一个谁也不能比拟的优势(库多!库多!就是库多!)

不过射程和杀伤力偏弱,虽然灵活,但是论攻城掠地还是飞机大炮来的省事儿。

Python:高性能的重武器

Python被昵称为胶水语言,能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起,是一种高性能的重武器。

Python具有丰富和强大的库。应用领域也是非常广泛。而且语言简洁,便于读懂,开发速度快,但因为python属于解释性语言,使用时由解释器解释执行,效率会相对低。

这玩意儿威力强劲,面对大型的物体的修整也是游刃有余,不过对于一些精细的调优工作,反倒是力有余而心不足。

所以常见的一种应用情形是,使用Python快速生成程序的原型(有时甚至是程序的最终界面),然后对其中有特别要求的部分,用更合适的语言改写。

比如3D游戏中的图形渲染模块,性能要求特别高,就可以用C/C++重写,而后封装为Python可以调用的扩展类库。

C++:功能齐全的大杀器

其实C++很像瑞士军刀,而且是其中的巨人军刀。

这把刀什么都有,说明C++是一种功能繁多的语言,能应付各种情况;细致齐全,说明C++是能做细活的语言,但相应过多的工具,也意味着操作更为复杂。

要是换成战场上的武器,C++估计长这样——

一看这只在科幻电影里面出现过的造型就知道威力不一般了。C++真的是一种很强大的语言,高性能且灵活(指针,地址,二维指针,指针数组),而C++继承C的简洁、高效的特点。

提到C++就不能不提到C,C是C++的基础,C语言是一种结构化语言。它层次清晰,便于按模块化方式组织程序,易于调试和维护。

C语言的表现能力和处理能力极强。它不仅具有丰富的运算符和数据类型,便于实现各类复杂的数据结构。它还可以直接访问内存的物理地址,进行位(bit)一级的操作,当然编译效率高也是它的一大优点。

C++对C的类型系统进改革扩充,更加安全也能检查出更多类型错误。更重要的是C++支持面向对象的方法,它所支持的这些面向对象的概念容易将问题空间直接地映射到程序空间,为程序员提供了一种与传统结构程序设计不同的思维方式和编程方法。因而也增加了整个语言的复杂性,掌握起来有一定难度。

而这种强大的语言,确实已经在军用领域运用——譬如美国F-35战机的战斗系统

我们可以看一组数据:

7% 汇编、5% Ada83、35% C++、53% C

wikipedia 词条中也有关于 F-35 软件所用编程语言的介绍:

Much of the F-35's software is written in C and C++ because of programmer availability; Ada83 code also is reused from the F-22.[162] The Integrity DO-178B real-time operating system (RTOS) from Green Hills Software runs on COTS Freescale PowerPC processors.[163] The final Block 3 software is planned to have 8.6 million lines of code.[164]

可以看到,F-35 用到的编程语言,C/C++占了相当大的比重。

其实无论武器有多么强大,决定战争胜败的还是使用武器的人;无论编程语言多么的强大,决定程序好坏的也是编程的人。也只有不断强化自身水平,才能更好的驾驭这些的编程武器——

本文来自企鹅号 - 中软国际教育集团媒体

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏点滴积累

geotrellis使用(十七)使用缓冲区分析的方式解决单瓦片计算边缘值问题

Geotrellis系列文章链接地址http://www.cnblogs.com/shoufengwei/p/5619419.html 目录 前言 需求分析 ...

3006
来自专栏大数据学习笔记

Java程序设计(Java9版):第0章 绪论(Introduction)

第0章 绪论(Introduction) 千里之行始于足下。 —-《道德经》 Man is still the most extraordinary c...

1815
来自专栏企鹅号快讯

Python实现拼图游戏

最近,要说最火的编程语言莫过于Python了。除了占据各种网站编程语言的排行榜之外,最劲爆的消息就是教育部将Python语言纳入计算机等级考试,并且山东某学校已...

2619
来自专栏小樱的经验随笔

牛顿迭代法(Newton's Method)

牛顿迭代法(Newton's Method)                    简介 牛顿迭代法(简称牛顿法)由英国著名的数学家牛顿爵士最早提出。但是,这...

2875
来自专栏HansBug's Lab

洛谷讲课手稿

Hello大家好,我是洛谷的HansBug。首先自我介绍下,我现在在北京航空航天大学,计算机科学与技术专业读大二,我参加过2013-2015年的提高组NOIP和...

3014
来自专栏老九学堂

技术大咖分享:如何评价一段代码?

经常有人微信问老九君,什么样的代码才算是好代码。这个问题其实见仁见智,业内也没有统一的标准可以使用。我仔细梳理了一下自己评价代码的方法,总结了五个评价指标。 规...

3386
来自专栏Sorrower的专栏

算法怎么玩(一): 从直男到渣男

592
来自专栏一个会写诗的程序员的博客

《Spring Boot极简教程》附录3 编程简史附录3 编程简史名词纪要参考资料

1801,Joseph Marie Jacquard用打孔卡为一台织布机编写指令,在提花织布机(或称甲卡提花织布机,Jacquard loom)上,运用打孔卡上...

582
来自专栏ATYUN订阅号

赫尔辛基大学AI基础教程:搜索和解决问题(2.1节)

想象一下你在一个外国的城市,在某个地方(比如一家酒店),想用公共交通工具去另一个地方(比如一家不错的餐馆)。你是做什么?如果你会像许多人一样,掏出智能手机,输入...

1186
来自专栏小小挖掘机

数据城堡参赛代码实战篇(一)---手把手教你使用pandas

小编们最近参加了数据城堡(http://www.pkbigdata.com/)举办的“大学生助学金精准资助预测”比赛,分组第19名的成绩进入了复赛,很激动有木有...

3074

扫码关注云+社区