初识计算机语言

来源:互联网 发布:ubuntu libxml2 dev 编辑:程序博客网 时间:2024/06/05 09:09

     语言是沟通的重要工具,计算机语言是人与计算机沟通的工具。

                                                                                                                         ——Who says

前言

计算机语言大概有一百多种,我们常使用的计算机语言有十几种。我们学习一门新的语言时,总是乐意与自己已经掌握的语言进行比较学习,这样可以大大提高我们的学习效率。所以在这里我们将尽量抽象的概括大部分计算机语言的共性和特性,让初学者对计算机语言世界有一个全局的认识。在这里不讨论具体哪种语言更加优秀或更加流行,因为任何一个事物存在就有存在的价值和理由,有兴趣的朋友可以登录http://www.tiobe.com/index.php/tiobe_index网站浏览最新的计算机语言流行指数。

 

语言流行的决定因素

一门语言是否能够流行起来,大致由三个因素决定:

1、  完备性:即功能是否完备,是否可以实现和描述目标领域中各种开发需求。如:C作为系统级应用开发利器,基本能够实现所有系统级功能。

2、  便利性:即使用是否方便,是否有易用的开发工具和完整详细的开发文档,得到了多少软件库开发商的支持。如:JAVA不仅有方便的Eclipse集成开发工具和持续的文档支持,而且得到了很多专业的第三方开发商的支持,大家常用的DOM4J/LOG4J等软件包使开发人员提高了工作效率。

3、  通用性:即是否可以在多个平台使用,JAVAC对各种操作系统都有很好的支持,当然也可以是操作系统对这些语言的支持。

也许英语也是在这三个方面表现突出,而使英语在全世界得到认可和广泛推广的吧。

 

计算机语言组成

    每种语言都要自己的特性和特定的应用领域,同时也存在很大的共性。我们可以从一下三个方面来观察学习:

1、语言主要由以下五种元素组成:标识符、关键字、数据类型、运算符和分隔符。这五种元素有着不同的语法含义和组成规则,它们互相配合,共同完成语言的语意表达。当你学习几种语言后,你会发现原来大同小异。如classint bool float if else while&||等等,只你要你掌握了一门语言都会很熟悉,在不同语言中不仅长相类似,而且意义也非常相似。

2、语言用来表达我们的思想,计算机语言告诉计算机要做什么,如果计算机语言不执行或计算机不能执行,对与计算机语言来说那就没有意义。所以你用计算机语言所描述的指令需求,必须是计算机平台能够执行的。所以掌握计算机语言除了学习基本元素组成的语法和语义外,你还必须了解它有哪些指令功能,语言的指令功能并非来源于本身,而是取决于它在执行于什么平台,这个平台为它开放了什么功能接口。

3、我们的中文有了基本语法和语义后,随着语言的发展就会形成很多词组、成语、谚语来丰富我们的语言,简化我们的表达方式,让我们更加容易理解和使用。计算机语言也一样,有了语言的基本元素和执行平台提供的基本功能接口后,语言的开发团队和第三方团队在这些基础上开发出新的功能包来简化我们开发工作,如算法库,日志包、输入输出包、网络协议包、系统开发框架等。大家熟悉的CLIBSTL库、BOOSTACERMIISTRUTSSPRING等都是此类吧。

 

计算机语言分类

这里按语言在计算机系统中所处的位置来分,可以分为5类:

 

语言分布图

1、  基于操作系统的语言:这部分又分为解释性语言(Python/Perl/Ruby…)和编译性语言(C/C++/VB/Delphi/Objective-C/Pascal…)。这些语言可以直接调用操作系统提供的接口功能(C/C++甚至可以获得硬件的操作权),但需要得到操作系统的支持。一般解释性语言对通用操作系统都有很好的支持,基本能够实现跨平台运行。但对于编译性语言就没有那么幸运,不仅仅大多都受限具体某一操作平台,而且就算C/C++这种跨平台语言需要对特殊功能进行跨平台处理和本地编译。

为什么不包括ASM,汇编语言是基于高级语言与硬件指令系统之间的低级语言,所以不在我们讨论范畴。

2、  基于虚拟机(Virtual Machine)的语言:这部分语言运行在虚拟机之上,能够实现大部分系统级的功能,但所有功能都是基于虚拟机的,所以无法直接调用操作系统接口和硬件接口。跨平台的差异化处理都由虚拟机来完成,所以可以一次编译,处处运行。CLR虽然不是真正意义上的虚拟机,但非常接近,所以基于之上的C#也归为此类。

3、  基于WEB容器(Web Container)的语言:这部分是由WEB容器来控制解析的动态语言,除了具备基本的数字和字符处理功能外,还可以操作Web服务提供的与WEB浏览器交互的相关接口。如:PHPASPJSP等。

4、  基于WEB浏览器(Web Browsers)的语言:这部分语言的功能依赖于浏览器的支持程度,所有功能由浏览器解析执行。如:VBScriptJavaScriptHTMLCSS等。

5、  基于数据库系统的语言:这部分语言可以对数据库系统中的数据进行相关处理操作,如关联查询、增删改等。如:SQLPL/SQL等。

 

怎样掌握一门语言

通过上面的介绍,貌似学习一门语言很简单,是的我也觉得很简单。但这不是重点,是否掌握了一门语言,取决于你是否能够利用这门语言帮助你的客户解决问题。

有一个大病初愈的病人从朋友那里得知多吃些水果,可以加快病情恢复,就去咨询医生吃哪些水果好。这个时候医生详细了解病人的病情后,告诉病人的家人多买些苹果给病人早上吃。在这个过程中医生是用英语告诉病人家人“apple”,还是用德语说是“apfel”已经显得不重要,重要的是医生要通过病人的病情分析出病人需要补充哪些元素,哪些水果中含有这些元素比较丰富,确定了是吃苹果比较好。但苹果还有红苹果、青苹果、甜苹果、酸苹果之分,而且吃的时间也有讲究。从这个故事可以看出,我们要解决问题,首先必须准确的理解客户的需求,基于我们对语言功能特点的了解,分析出解决的方案并利用语言精确的表达。

我们说一个优秀的C++程序员,不是说他对C++语法了解有多深和对C++特性了解有多少,是说他能够很好的理解用户需求并采用合适的算法和模式通过C++实现用户需求。他有很好的沟通能力,在客户需求领域对业务知识有较高的造诣,对计算机组成原理有很深的理解,对操作系统原理了如指掌,精通数据结构和通用算法... 是的,除了专业的业务知识外,貌似都是我们大学里面的基本课程,原来是掌握计算机语言的基础,而且是关键。

 

本文是个人对计算机语言的一点浅薄认识,如果你不小心看到了,还请多批评指教,谢谢!

原创粉丝点击