图说编程 计算机语言bk 编程语言bk 编程语言排行榜

编程语言(programming language),是用来定义计算机程序的形式语言。它是一种被标准化的交流技巧,用来向计算机发出指令。一种计算机语言让程序员能够准确地定义计算机所需要使用的数据,并精确地定义在不同情况下所应当采取的行动。

最早的编程语言是在电脑发明之后产生的,当时是用来控制提花织布机及自动演奏钢琴的动作。在电脑领域已发明了上千不同的编程语言,而且每年仍有新的编程语言诞生。很多编程语言需要用指令方式说明计算的程序,而有些编程语言则属于声明式编程,说明需要的结果,而不说明如何计算。

编程语言的描述一般可以分为语法及语义。语法是说明编程语言中,哪些符号或文字的组合方式是正确的,语义则是对于编程的解释。有些语言是用规格文件定义, 例如C语言的规格文件也是ISO标准中一部份,2011年后的版本为ISO/IEC 9899:2011,而其他语言(像Perl)有一份主要的编程语言实现文件,视为是参考实现。

编程语言俗称“计算机语言”,种类非常的多,总的来说可以分成机器语言、汇编语言、高级语言三大类。电脑每做的一次动作,一个步骤,都是按照已经用计算机语言编好的程序来执行的,程序是计算机要执行的指令的集合,而程序全部都是用我们所掌握的语言来编写的。所以人们要控制计算机一定要通过计算机语言向计算机发出命令。 目前通用的编程语言有两种形式:汇编语言和高级语言。

所以有那么多种不同的编程语言存在的原因是,编写程序的初衷其实也各不相同;新手与老手之间技术的差距非常大,而且有许多语言对新手来说太难学;还有,不同程序之间的运行成本(runtime cost)各不相同。有许多用于特殊用途的语言,只在特殊情况下使用。例如,PHP专门用来显示网页;Perl更适合文本处理;C语言被广泛用于操作系统和编译器的开发(所谓的系统编程)。

虽然大多数的语言可以既可被编译又可被解译,但大多数仅在一种情况下能够良好运行。在一些编程系统中,程序要经过几个阶段的编译,一般而言,后阶段的编译往往更接近机器语言。这种常用的使用技巧最早在1960年代末用于 BCPL,编译程序先编译一个叫做“0代码”的转换程序(representation),然后再使用虚拟器转换到可以运行于机器上的真实代码。这种成功的技巧之后又用于Pascal和P-code,以及Smalltalk和二进制码,在很多时候,中间过渡的代码往往是解译,而不是编译的。

如果所使用的翻译的机制是将所要翻译的程序代码作为一个整体翻译,并之后运行内部格式,那么这个翻译过程就被成为编译。因此,一个编译器是一个将人可阅读的程序文本(叫做源代码)作为输入的数据,然后输出可执行文件 (object code)。所输出的可执行文件可以是机器语言,由计算机的中央处理器直接运行,或者是某种模拟器的二进制代码。

如果程序代码是在运行时才即时翻译,那么这种翻译机制就被称作直译。经直译的程序运行速度往往比编译的程序慢,但往往更具灵活性,因为它们能够与执行环境互相作用。

汇编语言的实质和机器语言是相同的,都是直接对硬件操作,只不过指令采用了英文缩写的标识符,更容易识别和记忆。它同样需要编程者将每一步具体的操作用命令的形式写出来。汇编程序通常由三部分组成:指令、伪指令和宏指令。汇编程序的每一句指令只能对应实际操作过程中的一个很细微的动作。例如移动、自增,因此汇编源程序一般比较冗长、复杂、容易出错,而且使用汇编语言编程需要有更多的计算机专业知识,但汇编语言的优点也是显而易见的,用汇编语言所能完成的操作不是一般高级语言所能够实现的,而且源程序经汇编生成的可执行文件不仅比较小,而且执行速度很快。

脚本语言(Script language,scripting language,scripting programming language)是为了缩短传统的编写-编译-链接-运行(edit-compile-link-run)过程而创建的计算机编程语言。此命名起源于一个脚本“screenplay”,每次运行都会使对话框逐字重复。早期的脚本语言经常被称为批量处理语言或工作控制语言。一个脚本通常是解释运行而非编译。

虽然许多脚本语言都超越了计算机简单任务自动化的领域,成熟到可以编写精巧的程序,但仍然还是被称为脚本。几乎所有计算机系统的各个层次都有一种脚本语言。包括操作系统层,如计算机游戏,网络应用程序,字处理文档,网络软件等。在许多方面,高级编程语言和脚本语言之间互相交叉,二者之间没有明确的界限。

脚本编程速度更快,且脚本文件明显小于如同类C程序文件。这种灵活性是以执行效率为代价的。脚本通常是解释执行的,速度可能很慢,且运行时更耗内存。在很多案例中,如编写一些数十行的小脚本,它所带来的编写优势就远远超过了运行时的劣势,尤其是在当前程序员工资趋高和硬件成本趋低时。

脚本语言是一种解释性的语言,例如Python、vbscript,javascript,installshield script,ActionScript等等,它不象c\c++等可以编译成二进制代码,以可执行文件的形式存在.

高级语言所编制的程序不能直接被计算机识别,必须经过转换才能被执行,按转换方式可将它们分为两类:

解释类:执行方式类似于我们日常生活中的“同声翻译”,应用程序源代码一边由相应语言的解释器“翻译”成目标代码(机器语言),一边执行,因此效率比较低,而且不能生成可独立执行的可执行文件,应用程序不能脱离其解释器,但这种方式比较灵活,可以动态地调整、修改应用程序。如较早时期的Qbasic语言。

编译类:编译是指在应用源程序执行之前,就将程序源代码“翻译”成目标代码(机器语言),因此其目标程序可以脱离其语言环境独立执行,使用比较方便、效率较高。但应用程序一旦需要修改,必须先修改源代码,再重新编译生成新的目标文件(* .obj,也就是OBJ文件)才能执行,只有目标文件而没有源代码,修改很不方便。

结构化编程

结构化程序设计提出的原则可以归纳为32个字:自顶向下,逐步细化;清晰第一,效率第二;书写规范,缩进格式;基本结构,组合而成。

结构化的程式是以一些简单、有层次的程式流程架构所组成,可分为顺序(sequence)、选择(selection)及循环(repetition)。

顺序是指程式正常的执行方式,执行完一个指令后,执行后面的指令。

选择结构顾名思义,当程序到了一定的处理过程时,遇到了很多分支,无法按直线走下去,它需要根据某一特定选择结构表示程序的处理步骤出现了分支,它需要根据某一特定的条件选择其中的一个分支执行,选择结构有单选择、双选择和多选弹三种形式。

不断的重复,被称作循环,所以这里的循环结构通常就是用来表示反复执行一个程序或某些操作的过程,直到某条件为假(或为真)时才可终止循环。在循环结构中最主要的是:什么时候可以执行循环?出现哪些操作需要循环执行?循环结构的基本形式有两种。当型循环和直到型循环。

重用测试过代码,如果重用别的程序中的部分越多,您自身的工作也越简单。在面向对象中,重用的过程更为容易一些,因为代码本身的可复用性更高。如果项目的任务不重,程序员之间的协作也更容易。

面向对象的类库中的类和框架能够帮助减轻编程任务。例如,如果您使用了苹果公司提供的软件框架,您就可以和苹果公司的程序员合作。这些框架通常构成了您的程序中比较基础的部分,而您可以把精力放在您最擅长的方面,其它的事情让类库的开发人员去做。因此,您的项目可以更快的做出原型系统,更快的完成,协作方面的问题也更少。

若一个编程语言的语法允许用成对的关键字包围一段程式,形成一个结构,这种编程语言称为有“区块结构”(block-structured),这类的结构包括用ALGOL 68的if..fi包围的程式,或是在PL/I中用BEGIN..END包围的一段程式,或是在C语言中用大括号{...}包围的一段程式。

结构化编程语言

用任何语言都可以进行结构化程式设计,不过一般较常使用程序式的编程语言。早期的结构化编程语言包括ALGOL、 Pascal、PL/I及Ada,不过后来大部份的程序式编程语言都鼓励使用结构化程式设计,有时也会特意的省去一些特性(例如不支援goto指令)使得非结构化的程式设计更加困难。

程序设计理念:1 开发的难易程序;2 执行效率的高低;3 速度和空间的考量;

Objects are composed of both data and operations that manipulate the data.Object-oriented design focuses on the objects and their interations within a problem.Once all of the objects within the problem are collected together,they constitute the solution to the problem.

Obects communicate with one another by sending messages(invoking one another's subprograms).A calss contains fields that represent the properties and behaviors of the calss.A field can contain data values and/or methods(subprograms).A method is a named algorithm that manipulates the data values in the object.A class in the general sense is a pattern for what an object looks like(data) and how it behaves(methods).

Object-oriented design focuses on determining the objects within a problem,and abstracting(grouping) those objects into classes based on like properties and behaviors.

With high-level languages,we employ othe software tools to help with the translation process.Both are compiler and interpreter.

Our pseudocode provided three ways to alter the flow of control of the algorithm:repetition,selection,and subprogram.These constructs are called control structures because they determine the order in which other instructions in a program are executed.

Boolean expressions are used to allow a program to execute one section of code or another(conditional statements) and to repeat a section of code(looping statements).

大家知道世界上最早的编程语言是什么吗?一般认为是1954年开始开发的FORTRAN语言。

然后,仔细想想看,到底什么才是编程语言?如果将对机器的控制也看成是编写“程序”的话,那么编程的起源便可以追溯到杰卡德织机上面所使用的打孔纸带。

1801年,正值工业期间,杰卡德织机的发明使得提花编织的图案可以通过“程序”来自动完成。从前在各个家庭中出现了自动纺织机,用于家庭作坊式的自动纺织生产,而杰卡德织机则相当于是这些家庭纺织机的放大版。我想那些自动纺织机应该也可以通过类似打孔纸带的东西来输入图案,当然,最近的年轻人恐怕没有亲眼见过纺织机吧。

这种用打孔机来控制机器的想法,对各个领域都产生了影响。例如在英国从事通用计算机研发的查尔斯·巴贝奇,就在自制的“分析机”上用打孔纸带来控制程序,遗憾的是,由于资金和其他一些问题,巴贝奇在生前未能将他的分析机制造出来。

不过,分析机的设计已经完成,用于分析机的程序也作为文档保留了下来。协助开发这些程序的,是英国诗人拜伦之女爱达·洛夫莱斯,据说她和巴贝奇是师兄妹关系。如果不算分析机的设计者巴贝——那么世界上第一位程序员实际上是一位女性。为了纪念她,还有一种编程语言是以她的名字Ada命名。

在被称为世界上第一台计算机的ENIAC(1946年)中,程序不是用打孔纸带,而是通过接电线的方式来输入,我总觉得这是一种奴退步。

不过,无论是打孔纸带,还是接电线,都不太可能实现太复杂的程序,真正的程序恐怕还要等到存储程序式计算机出现以后。一般认为,世界上第一台存储程序式电子计算机,是1949年出现的EDSAC。

到了这个时候,所谓的“机器语言”就算正式问世了。当时的计算机程序都是用机器语言来缩写的。那个时候不要说是编译器,连汇编器都没有发明出来呢,因此使用机器语言也就是理所当然的事情了。

说到底,机器语言就是一连串数字,将计算的步骤从指令表中查出对应的机器语言编码,再人工写成数列,这个工作可不容易。或者说,以前的人虽然没有意识到,但从我们现代人的角度来看,这种辛苦简直是难以置信。比如说,把引导程序的机器语言数列整个背下来,每次启动的时候手动输入进去;将机器语言指令表全部背下来,不用在纸上打草稿就能直接输入机器语言指令并正确运行--“古代”的程序员们留下了无数的光辉事迹(或者是传说),那时候的人们真是太伟大了。

然而有一天,有一个人忽然想到,查表这种工作本来应该是计算机最擅长的,那到让计算机自己做不做好了吗?于是,人们用更加容易记忆的指令(助记符)来代替数值,并开发了一种能够自动生成机器语言的程序,这就是汇编器。

汇编器是用来解释“汇编语言”的程序,汇编语言中所使用的助记符,和计算机指令是一一对应的关系。早期的计算机主要还是用于数值计算,因此数学才是主宰。在数学的世界里,数百年传承下来的“语言”就是算式,因此用接近算式的形式来编写计算机指令就显得相当方便。随后,FORTRAN于1954年问世了。FORTRAN这个名字的意思是:算式翻译器(FORmula TRANslator).

也就是说,编程语言是由编程者根据自己的需要发明出来的。早期的计算机,由于性能不足、运算成本高,因此编写和维护都被看成是非人的工作,而编程语言正是其开发摆脱非人性的象征。

其实,由助记符自动生成机器语言的汇编器,以及由人类较易懂的算式语句生成机器语言的编译器,当时都被认为是革新性的技术,被称为“自动编程”。此外,编译器开发技术的研究甚至被视为人工智能研究的一部分。

未来的编程语言可能不会像过去的语言那样,让语言本身单独存在,而是和编辑器、调试器、性能分析器等一切工具相互配合,以达到提高整体生产效率的目的。