计算机语言有哪些(你知道几个计算机语言?)

计算机语言有哪些
我曾不止一次的在多种不同的场合说过,语言只是工具。当时的理解现在看来是有些片面的,这个片面不是指的这句话的意思不对,而是指自己对计算机语言的理解还比较肤浅。
如果是以前你问我为什么?我一定会回答,所有的语言底层逻辑的计算机实现都是一样的,计算机的底层原理一样,所以不论什么语言,只是在向计算机表达的时候不一样,底层实现原理一样,真正计算机执行的时候,是完全一样的。所以语言只是工具。当然这样说来也没错,但是对语言的理解就有点过于简单了。要是再多问一句,那既然底层都是一样的,为什么会出现这么多不同的计算机语言呢?据统计,到目前为止,计算机语言至少在260+种以上。但真正实际生活中大家接触到的语言或者说是听说过的语言也不上十种吧。
如果来尝试回答这个问题,第一印象可能就是找出不同的语言,把特性找出来 ,然后一一对比,然后列出相同点与不同点,也就对比出来了各种语言的区别吧。但是我前段时间看到一句话:程序员是在创造虚拟的世界。每个程序员都是在用不同的语言创造虚拟的世界的物体,不同的语言体现出来他们对这个世界的认知,或者说是他们看待这个世界的方式。
这句话,提炼一下,就是他们的世界观。我们用不同的语言,其实是在使用语言过程中的世界观不一样。当然这里的世界观不是我们现实社会的世界观,如前面说了,是构建这个虚拟社会的世界观。
上次面段话,仔细去思考,这真是直击计算机语言的本质啊。我们平时不停的学习的对比的,其实不过是语言的一些特性,而这些特性只不过是语言的表象而已。当我们把视界放的更大一点,我们先不去关注如何使用语言进行编程,我们拉长到计算机语言发展的历史长河中去看语言的不同的时候,你会发现,原来我们每天使用的计算语言去编程的时候,仅是对语言的特性的使用而已,离懂语言还相距很远。
这篇文章,我也不会详细的去说明每种语言的真正本质不同的地方,因为语言太多,一则无法一一详尽的描述出来每个语言在本质上的大的差别,另则个人也没有去详细的了解每一个语言。本章,我们先来了解一下计算机语言发展史上的几个较大的阶段。
第一代也就是机器语言阶段。这一阶段当时人类还处在寄希望于在机器解决了自动化的情况下,通过某种形式来解决人机交互,也就是让人类可以给机器下命令的阶段。当时这些概念来自于数学领域。图灵提出来了图灵机的概念,实现图灵机也就实现了人机交互的自动化。所以后来,凡是能称之为计算机语言的,首先必须是图灵完备,也是基于此概念而来。(注:这里省略了ada和他的老师基于分析机和数学理论提出的概念)再后来,计算机面世以后,打孔带也就是当时的编程了。也可以视为是计算机语言了。
第二代是汇编语言阶段。随着人们通过机器语言写的程序与机器交互的过程中,机器语言越来越难以记忆,并且容易出错,出错后问题也难以查找,为了提高效率,人们想到一种把机器语言转换为可以简单识别的语言,方便人类记忆与修改。所以发明了汇编语言,汇编语言实现的功能很简单,它通过机器的翻译器来实现汇编代码与机器语言的转换。不再有其他更多的功能。
第三代是高级语言阶段。看前面两个阶段,语言还一直处在机器视角去看问题解决问题。到了第三阶段,人们开始从人类的视角来看待编程问题。发明了越来越多的类人类语言。这种语言的就是站在人类自然语言的角度去设计语言。在语言与机器语言间通过编译器和优化器来实现从人类自然语言到机器语言的转换。目前绝大数据,我们还处在这一阶段的语言里面,比如目前比较流行的c语言、c++语言、 java等第四代则是专注于业务逻辑与问题领域。它是在第三代语言的基础上进行抽象提炼而来的。使人类把精力更多的专注在业务逻辑和解决问题的方法中,而不用去考虑机器怎么实现的问题。这类语言比较常见的如sql语言、SAS/SPSS语言等。它一般是为了解决特定领域问题而设计的。
第五代语言则是基于智能化的语言。它的目标是为了实现,计算机在没有程序员的情况下,能根据人类提出问题,并描述解决问题的可行性方法,计算机就能自动求解的语言。让程序不必再去思考如何写程序和实现算法。目前第五代语言主要应用于人工智能领域的研究,如Prolog/OPS5语言等。这一代语言大多基于lisp语言发展而来。
以上,我们先大概的介绍了一下了解计算机语言不同的视角,再简单的总结了一下计算机语言发展的不同阶段和每个阶段解决的主要核心问题。通过以上的介绍,主要是想给大家一个全新的学习语言的思路,不再局限于仅是理解语言的基本特性,而要究到本质去了解一下语言的这些特性背后的本质原因,这样才能在实际编程中,让自己把每个语言的特性应用的得心应手。

 

你知道几个计算机语言?
计算机语言指用于人与计算机之间通讯的语言。计算机语言是人与计算机之间传递信息的媒介。计算机系统最大特征是指令通过一种语言传达给机器。为了使电子计算机进行各种工作,就需要有一套用以编写计算机程序的数字、字符和语法规划,由这些字符和语法规则组成计算机各种指令(或各种语句)。这些就是计算机能接受的语言。今天小编就给大家讲一下各种比较常见的计算机语言的优点和缺点。
C语言
C语言是Dennis Ritchie在七十年代创建的,它功能更强大且与ALGOL保持更连续的继承性,而ALGOL则是COBOL和FORTRAN的结构化继承者。C语言被设计成一个比它的前辈更精巧、更简单的版本,它适于编写系统级的程序,比如操作系统。在此之前,操作系统是使用汇编语言编写的,而且不可移植。C语言是第一个使得系统级代码移植成为可能的编程语言。
优点:有益于编写小而快的程序。很容易与汇编语言结合。具有很高的标准化,因此其他平台上的各版本非常相似。
缺点:不容易支持面向对象技术。语法有时会非常难以理解,并造成滥用。
移植性:C语言的核心以及ANSI函数调用都具有移植性,但仅限于流程控制、内存管理和简单的文件处理。其他的东西都跟平台有关。比如说,为Windows和Mac开发可移植的程序,用户界面部分就需要用到与系统相关的函数调用。这一般意味着你必须写两次用户界面代码,不过还好有一些库可以减轻工作量。
C++
C++语言是具有面向对象特性的C语言的继承者。面向对象编程,或称OOP是结构化编程的下一步。OO程序由对象组成,其中的对象是数据和函数离散集合。有许多可用的对象库存在,这使得编程简单得只需要将一些程序“建筑材料”堆在一起(至少理论上是这样)。比如说,有很多的GUI和数据库的库实现为对象的集合。
优点:组织大型程序时比C语言好得多。很好的支持面向对象机制。通用数据结构,如链表和可增长的阵列组成的库减轻了由于处理低层细节的负担。
缺点:非常大而复杂。与C语言一样存在语法滥用问题。比C慢。大多数编译器没有把整个语言正确的实现。
移植性:比C语言好多了,但依然不是很乐观。因为它具有与C语言相同的缺点,大多数可移植性用户界面库都使用C++对象实现。
汇编语言
汇编是第一个计算机语言。汇编语言实际上是你计算机处理器实际运行的指令的命令形式表示法。这意味着你将与处理器的底层打交道,比如寄存器和堆栈。如果你要找的是类英语且有相关的自我说计算机语言
明的语言,这不是你想要的。 特别注意:语言的名字叫“汇编”。把汇编语言翻译成真实的机器码的工具叫“汇编程序”。把这门语言叫做“汇编程序”这种用词不当相当普遍,因此,请从这门语言的正确称呼作为起点出发。
优点:最小、最快的语言。汇编高手能编写出比任何其他语言能实现的快得多的程序。你将是利用处理器最新功能的第一人,因为你能直接使用它们。
缺点:难学、语法晦涩、坚持效率,造成大量额外代码—不适于心脏虚弱者。
移植性:接近零。因为这门语言是为一种单独的处理器设计的,根本没移植性可言。如果使用了某个特殊处理器的扩展功能,你的代码甚至无法移植到其他同类型的处理器上(比如,AMD的3DNow指令是无法移植到其它奔腾系列的处理器上的)。
Pascal语言
Pascal语言是由NicolasWirth在七十年代早期设计的,因为他对于FORTRAN和COBOL没有强制训练学生的结构化编程感到很失望,“空心粉式代码”变成了规范,而当时的语言又不反对它。Pascal被设计来强行使用结构化编程。最初的Pascal被严格设计成教学之用,最终,大量的拥护者促使它闯入了商业编程中。当Borland发布IBMPC上的TurboPascal时,Pascal辉煌一时。集成的编辑器,闪电般的编译器加上低廉的价格使之变得不可抵抗,Pascal编程了为MS-DOS编写小程序的首选语言。然而时日不久,C编译器变得更快,并具有优秀的内置编辑器和调试器。Pascal在1990年Windows开始流行时走到了尽头,Borland放弃了Pascal而把目光转向了为Windows编写程序的C++。TurboPascal很快被人遗忘。
基本上,Pascal比C简单。虽然语法类似,它缺乏很多C有的简洁操作符。这既是好事又是坏事。虽然很难写出难以理解的“聪明”代码,它同时也使得一些低级操作,如位操作变得困难起来。
优点:易学、平台相关的运行(Dephi)非常好。
缺点:“世界潮流”面向对象的Pascal继承者(Modula、Oberon)尚未成功。语言标准不被编译器开发者认同。
.移植性:很差。语言的功能由于平台的转变而转变,没有移植性工具包来处理平台相关的功能。
VisualBasic
优点:整洁的编辑环境。易学、即时编译导致简单、迅速的原型。大量可用的插件。虽然有第三方的DirectX插件,DirectX7已准备提供VisualBasic的支持。
缺点:程序很大,而且运行时需要几个巨大的运行时动态连接库。虽然表单型和对话框型的程序很容易完成,要编写好的图形程序却比较难。调用Windows的API程序非常笨拙,因为VB的数据结构没能很好的映射到C中。有OO功能,但却不是完全的面向对象。
移植性:非常差。因为VisualBasic是微软的产品,你自然就被局限在他们实现它的平台上。
Java
Java是由Sun最初设计用于嵌入程序的可移植性“小C++”。在网页上运行小程序的想法着实吸引了不少人的目光,于是,这门语言迅速崛起。事实证明,Java不仅仅适于在网页上内嵌动画—它是一门极好的完全的软件编程的小语言。“虚拟机”机制、垃圾回收以及没有指针等使它很容易实现不易崩溃且不会泄漏资源的可靠程序。
虽然不是C++的正式续篇,Java从C++中借用了大量的语法。它丢弃了很多C++的复杂功能,从而形成一门紧凑而易学的语言。不像C++,Java强制面向对象编程,要在Java里写非面向对象的程序就像要在Pascal里写“空心粉式代码”一样困难。
优点:二进制码可移植到其他平台。程序可以在网页中运行。内含的类库非常标准且极其健壮。自动分配合垃圾回收避免程序中资源泄漏。网上数量巨大的代码例程。
缺点:使用一个“虚拟机”来运行可移植的字节码而非本地机器码,程序将比真正编译器慢。有很多技术(例如“即时”编译器)很大的提高了Java的速度,不过速度永远比不过机器码方案。早期的功能,如AWT没经过慎重考虑,虽然被正式废除,但为了保持向后兼容不得不保留。越高级的技术,造成处理低级的机器功能越困难,Sun为这门语言增加新的“受祝福”功能的速度实在太慢。
移植性:最好的,但仍未达到它本应达到的水平。低级代码具有非常高的可移植性,但是,很多UI及新功能在某些平台上不稳定。
创作工具
多数创作工具有点像VisualBasic,只是它们工作在更高的层次上。大多数工具使用一些拖拉式的流程图来模拟流程控制。很多内置解释的程序语言,但是这些语言都无法像上面所说的单独的语言那样健壮。
优点:快速原型—如果你的游戏符合工具制作的主旨,你或许能使你的游戏跑得比使用其他语言快。在很多情况下,你可以创造一个不需要任何代码的简单游戏。使用插件程序,如Shockware及IconAuthor播放器,你可以在网页上发布很多创作工具生成的程序。
缺点:专利权,至于将增加什么功能,你将受到工具制造者的支配。你必须考虑这些工具是否能满足你游戏的需要,因为有很多事情是那些创作工具无法完成的。某些工具会产生臃肿得可怕的程序。
移植性:因为创作工具是具有专利权的,你的移植性以他们提供的功能息息相关。有些系统,如Director可以在几种平台上创作和运行,有些工具则在某一平台上创作,在多种平台上运行,还有的是仅能在单一平台上创作和运行。
C#
C#是一种精确、简单、类型安全、面向对象的语言。其是.Net的代表性语言。什么是.Net呢?按照微软总裁兼首席执行官Steve Ballmer把它定义为:.Net代表一个集合,一个环境,它可以作为平台支持下一代Internet的可编程结构。
C#的特点:
1.完全面向对象。
2.支持分布式。
3.自动管理内存机制。
4.安全性和可移植性。
5.指针的受限使用。
6.多线程。和Java类似,C#可以由一个主进程分出多个执行小系统的多线程。
C#是在Java流行起来后所诞生的一种新的程序开发语言。
Python
优点
简单:Python是一种代表简单主义思想的语言。阅读一个良好的Python程序就感觉像是在读英语一样。它使你能够专注于解决问题而不是去搞明白语言本身。
易学:Python极其容易上手,因为Python有极其简单的说明文档 。
速度快:Python 的底层是用 C 语言写的,很多标准库和第三方库也都是用 C 写的,运行速度非常快。 [5]
免费、开源:Python是FLOSS(自由/开放源码软件)之一。使用者可以自由地发布这个软件的拷贝、阅读它的源代码、对它做改动、把它的一部分用于新的自由软件中。FLOSS是基于一个团体分享知识的概念。
高层语言:用Python语言编写程序的时候无需考虑诸如如何管理你的程序使用的内存一类的底层细节。
可移植性:由于它的开源本质,Python已经被移植在许多平台上(经过改动使它能够工作在不同平台上)。这些平台包括Linux、Windows、FreeBSD、Macintosh、Solaris、OS/2、Amiga、AROS、AS/400、BeOS、OS/390、z/OS、Palm OS、QNX、VMS、Psion、Acom RISC OS、VxWorks、PlayStation、Sharp Zaurus、Windows CE、PocketPC、Symbian以及Google基于linux开发的android平台。
解释性:一个用编译性语言比如C或C++写的程序可以从源文件(即C或C++语言)转换到一个你的计算机使用的语言(二进制代码,即0和1)。这个过程通过编译器和不同的标记、选项完成。
运行程序的时候,连接/转载器软件把你的程序从硬盘复制到内存中并且运行。而Python语言写的程序不需要编译成二进制代码。你可以直接从源代码运行 程序。
在计算机内部,Python解释器把源代码转换成称为字节码的中间形式,然后再把它翻译成计算机使用的机器语言并运行。这使得使用Python更加简单。也使得Python程序更加易于移植。
面向对象:Python既支持面向过程的编程也支持面向对象的编程。在“面向过程”的语言中,程序是由过程或仅仅是可重用代码的函数构建起来的。在“面向对象”的语言中,程序是由数据和功能组合而成的对象构建起来的。
可扩展性:如果需要一段关键代码运行得更快或者希望某些算法不公开,可以部分程序用C或C++编写,然后在Python程序中使用它们。
可嵌入性:可以把Python嵌入C/C++程序,从而向程序用户提供脚本功能。
丰富的库:Python标准库确实很庞大。它可以帮助处理各种工作,包括正则表达式、文档生成、单元测试、线程、数据库、网页浏览器、CGI、FTP、电子邮件、XML、XML-RPC、HTML、WAV文件、密码系统、GUI(图形用户界面)、Tk和其他与系统有关的操作。这被称作Python的“功能齐全”理念。除了标准库以外,还有许多其他高质量的库,如wxPython、Twisted和Python图像库等等。
规范的代码:Python采用强制缩进的方式使得代码具有较好可读性。而Python语言写的程序不需要编译成二进制代码。
缺点
单行语句和命令行输出问题:很多时候不能将程序连写成一行,如import sys;for i in sys.path:print i。而perl和awk就无此限制,可以较为方便的在shell下完成简单程序,不需要如Python一样,必须将程序写入一个.py文件。
独特的语法
这也许不应该被称为局限,但是它用缩进来区分语句关系的方式还是给很多初学者带来了困惑。即便是很有经验的Python程序员,也可能陷入陷阱当中。
运行速度慢:这里是指与C和C++相比。