> 原文出处:http://dbarobin.com/2012/04/04/breif-talk-on-primary-programming-language/
> 作者:温国兵
# 程序员的奋斗史(一)浅谈几种主要编程语言
## 目录
[TOC=2,2]
## 写在前面
经常听到有人在抱怨这个语言哪里哪里不好,那个语言又是如何的优秀。对于这样的牢骚,我只是一笑而过。
就我而言,语言只是工具,没有好坏之分。只要你采用相应的语言,完成对应的工作,那你的目标就完成了。我们无需抱怨这种语言的缺点,而是应该抱有接受的态度。任何语言的存在都有它的合理性,如果不合理是不会经受住时间的考验的。世间之物都具有双面性,只是看利多还是弊大。如果一个东西是十全十美的,那我毫不犹豫的告诉你,一种情况是它不存在,另一种情况是你还没发现它的缺点。
每种语言都有自己得天独厚的优势,当然缺点同时伴存。C语言是计算机界的常青藤。C语言执行效率高,用于写底层的驱动那是再适合不过。指针是C语言的精华。而C++是很强大的,只要你是个高手,你几乎可以利用C++完成任何事情。当然虚函数是C++的精华。Java取消了指针,这是应该喜还是忧。喜的是,没有C或者C++那种对内存繁琐的操作,而且也降低了很多致命性的错误发生的概率。忧的是,效率大打折扣,采用虚拟机的方式使得Java有跨平台的特性,必然会使得效率降低。另外一个方面,你借别人的东西使用(内存),是不是应该还回去呢?从这一方面考虑,C或者C++的设计思想更有意义。经常关注TIOBE世界编程语言排行榜,Java已经有很久排名第一,我觉得这样的排名只是看看而已,无需过多的信奉。下面看看几种主要语言的优缺点。
## C语言
**C语言的优点:**
* 简洁紧凑、灵活方便
* 运算符丰富
* 数据结构丰富
* C是结构式语言
* C语法限制不太严格,程序设计自由度大
* C语言允许直接访问物理地址,可以直接对硬件进行操作
* C语言程序生成代码质量高,程序执行效率高
* C语言适用范围大,可移植性好
* C语言有一个突出的优点就是适合于多种操作系统,如DOS、UNIX,也适用于多种机型
* 有效地将一个较复杂的程序系统设计任务分解成许多易于控制和处理的子任务,便于开发和维护
**C语言的缺点:**
* C语言的缺点主要是表现在数据的封装性上,这一点使得C在数据的安全性上做的有很大缺陷,这也是C和C++的一大区别。
* C语言的语法限制不太严格,对变量的类型约束不严格,影响程序的安全性,对数组下标越界不作检查等。从应用的角度,C语言比其他高级语言较难掌握。
* 可重用性差
* 数据安全性差
* 难以开发大型软件和图形界面的应用软件
* 把数据和处理数据的过程分离为相互独立的实体
* 当数据结构改变时,所有相关的处理过程都要进行相应的修改
* 每一种相对于老问题的新方法都要带来额外的开销
* 图形用户界面的应用程序,很难用过程来描述和实现,开发和维护也都很困难
## C++
**C++优点:**
* 可扩展性强
* 高效 简洁 快速
* 可移植性
* 面向对象的特性
* 强大而灵活的表达能力和不输于C的效率
* 支持硬件开发
* 程序模块间的关系更为简单,程序模块的独立性、数据的安全性就有了良好的保障
* 通过继承与多态性,可以大大提高程序的可重用性,使得软件的开发和维护都更为方便
**C++缺点:**
* 比较底层,易用性不是很好
* 多重继承和友元机制
* 标准库涵盖范围不足
* 开发周期长
* 非并行
* 掌握有难度
* 粒度封装不够
## Java
**Java的优点:**
* 简单性
* 面向对象性(面向对象的程度可以达到95%)
* 健壮性
* 跨平台性
* 高性能(自动垃圾回收机制)
* 多线程
* 动态性
* 安全性
**Java的缺点:**
* 跨平台是它最大的优点也是最大的缺点
* 复杂性(做一个项目需要很多的知识,涉及面广)
## 写在后面
很多时候,一种语言的优点很可能是它的缺点,缺点又可能是它的优点。这主要看你是从哪方面去考虑。这就印证了那句话,凡事没有必然。
不管是哪种语言,就像文章开头所言,只要你采用他达到你想要的,那就成功了。无需过多在意它的缺点,更无需赞扬它的优点。所以网上那些关于哪种语言更好的口水仗,我只能说这样的争斗毫无意义。
**语言只是工具,没有好坏之分。**
–EOF–
- (一)浅谈几种主要编程语言
- (二)今天你跑步了吗
- (三)谈时间
- (四)兴趣是第一驱动力
- (五)谦逊才是王道
- (六)我们是需要团队合作精神的
- (七)沟通交流、表达能力的重要性
- (八)懒人造就方法
- (九)分享是种美德
- (十)谈项目管理
- (十一)我们是群居动物
- (十二)谈信念
- (十三)我为什么不考研
- (十四)谈态度
- (十五)谈性格
- (十六)谈习惯
- (十七)父母
- (十八)人活着,只是一种态度
- (十九)因为爱情
- (二十)沉思录(一)关于博客和思想
- (二十一)我们的大学观
- (二十二)《中国合伙人》联想录
- (二十三)做自己 最真实
- (二十四)写在大三结束之际
- (二十五)情绪与生活
- (二十六)迷失的朋友
- (二十七)谈谈英语学习
- (二十八)寒门再难出贵子?
- (二十九)分享我的时间管理-半小时管理法
- (三十)近期微信公众平台更新文章集锦
- (三十一)人在囧途之应聘篇(一)
- (三十二)人在囧途之应聘篇(二)
- (三十三)人在囧途之应聘篇(三)
- (三十四)人在囧途之应聘篇(四)
- (三十五)人在囧途之应聘篇(五)
- (三十六)人在囧途之应聘篇(六)第一季终结篇
- (三十七)大学断代史(一)开篇
- (三十八)大学断代史(二)我与数据库的故事
- (三十九)大学断代史(三)我和知乎邂逅
- (四十)大学断代史(四)我与博客
- (四十一)大学断代史(五)我的娱乐方式
- (四十二)大学断代史(六)我与图书馆
- (四十三)大学断代史(七)在实验室的日子与我的学业
- (四十四)大学断代史(八)大学的友谊
- (四十五)大学断代史(九)独自南下的岁月
- (四十六)大学断代史(十)给学弟学妹们的忠告-终结篇
- (四十七)工作三个月小结