千里之行始于足下

几种编程语言的简单理解

Posted on By Peter Yang

最近有兴趣想多了解一些编程语言或平台方面的内容,主要关注了时下比较流程的语言,.net,java,python,Ruby on Rails,Perl等。下面先分别简介下。

.Net

.Net框架是Windows研发出来的跨语言解决方案。它的核心是CLR(公共语言运行库),这是微软发布的CLI(公共语言基础结构)规范的一个实现。CLI分为两部分,一个是CIL(公共中间语言),另一个是CTS(公共类型系统)。可以想象,基于公共类型系统,.net就可以把其下的各种语言中的数据类型翻译为公共数据类型,再将其翻译为公共中间语言,就可以实现跨语言的互通。本来程序就基本等于数据+流程逻辑,两部分都使用了公共规范进行约束后,实现互通性就有可能了。这也是契约式编程的一种思想体现吧。

.Net框架下的语言,在生成时,编译器将其翻译为中间语言,在执行前即时编译(即JIT方式)调入内存并运行。此外,.Net的运行时环境与Java虚拟机还是比较相像的,都是基于堆的内存管理机制,托管模式下没有C风格指针(非托管代码可以使用);都有类型系统,.Net称为元数据,Java就是一系列的Class类型的对象实例。这样的结构使其很方便能够支持反射这样的机制,使程序可编程灵活性有很大提高。

Java

Java是目前最流行的语言之一,它的优点就是跨平台和移动性。它是基于Java虚拟机的架构,Java源程序被翻译为.class文件的字节码,Java虚拟机接受这些字节码流,解析并生成相应的类型数据并从main方法开始运行。至于源代码的连接加载等操作完全交给虚拟机去处理。Java和.Net很像,按语言来说,Java和C#的语法结构就很像,而C#又是.Net下最有方便的语言。只不过.Net主要还是基于Windows的实现,而Java虚拟机有多个操作系统的实现。前者关注点在跨语言,后者关注点在于跨平台。

Python

Python是一种相当年轻的语言,它发展的很快,用户量不断增多。这种语言给我的印象就是对编码风格要求很高(原本就是靠缩进来约束程序块的)。这样坏处就是写代码就得格外小心,好处就是写出来的代码普遍风格较好,易于理解。有强大的代码库可以使用,支持很多上层语言的特性。目前似乎作为脚本语言使用的较多(经常看有人用它和Perl比),但本身是一种通用型的语言,也可以支持图形开发。

它的运行原理与Java大致相同,也有虚拟机,执行时将源码翻译为中间语言,再加载到虚拟机上去执行。Python可以支持源码直接运行,但其背后仍然是先执行了将源码转换到中间代码的过程,然后再解释执行。当然为了效率,也可以将源码事先翻译为.pyc字节码文件,再解释执行(这就和Java比较像了)。和Java相比,我认为Python的优势在于它的易用性,代码写出来很简洁,支持高端特性,动态类型,作为上层语言是个很不错的选择。

简单理解就是简单理解,现在主要关注点就在这里。以后有机会的话,再深入一些细节吧。

有关这几种语言的详细介绍网上有很多详细资料,需要使用时再查阅吧,这里就不罗列了。