接触编程已三年有余,所学的程序设计语言,也有五六种之多。一般来说,对于每一门新程序设计语言,我们写的第一个程序,无非是输出“hello world”。在这里,我归纳了用我所学过的几种程序设计语言编写的“hello world”程序:C、C++(Win32)、C++(托管)、C#.NET、VB.NET、JAVA以及适用于8086CPU的汇编语言。根据这几个程序,来谈谈我对程序设计的理解。
为了增强可比性,下列程序均为控制台应用程序。其中C、C++(Win32)、C++(托管)、C#.NET、VB.NET程序在Visual Studio 2010环境下编译通过,JAVA程序在JRE1.6环境下通过编译,8086汇编在masm环境下通过编译。
C:
#include<stdio.h>
#include<stdlib.h>
int main()
{
printf("hello world\n");
system("pause");
}
C++:
#include<iostream>
using namespace std;
int main()
{
cout<<"hello world"<<endl;
system("pause");
}
运行效果如下图
C++托管
using namespace System;
int main(array<System::String ^> ^args)
{
Console::WriteLine(L"Hello World");
return 0;
system("pause");
}
C#:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("hello world");
Console.Read();
}
}
}
VB.NET:
Module Module1
Sub Main()
Console.WriteLine("hello world")
Console.Read()
End Sub
End Module
.NET环境下,运行效果如下:
JAVA:
class hello
{
public static void main(String args[])
{
System.out.println("hello world");
}
}
JAVA环境下,其运行效果与.NET相同。
8086汇编语言:
assume cs:code,ds:data
data segment
db 'hello world!',0
data ends
code segment
start:
mov ax,data
mov ds,ax
mov si,0
mov dh,8
mov dl,3
mov cl,2
call show_str
mov ax,4c00h
int 21h
show_str: ;显示字符串子程序入口
push ax ;与pop指令结合进行相关寄存器的保护工作
push dx
push cx
push es
push di
push si
mov ax,0b800h ;子程序体
mov es,ax
sub ax,ax
mov al,160
mul dh
sub dh,dh
add dl,dl
add ax,dx
mov di,ax
mov al,cl
sub cx,cx
next:
mov cl,[si]
jcxz sret
mov es:[di],cl
mov es:[di+1],al
inc si
add di,2
jmp short next
sret:
pop si
pop di
pop es
pop cx
pop dx
pop ax
ret ;子程序返回
code ends
end start
运行效果如下:
由上面,我们可以看到,8086汇编语言,实现起来最麻烦。它是通过对寄存器中数据的赋值以及地址的传递,来实现字符串的输出。当然,汇编语言属于低级语言,它的应用主要限于底层开发,如果对程序运行效率有较高的要求,我们可以适当采用汇编指令。
其它的高级语言的语句都较为精炼。对于C++和托管C++的区别,主要有以下:标准的C++,适用的函数都是Win32API,而进行托管扩展后的C++,适用的是.NET类库。这两者各有好坏,托管C++编写的程序只能运行于相应的.NET Framework环境下,这点和JAVA比较类似。而标准的C/C++,又称为MFC,直接调用系统Win32API函数,所编写的程序,可以运行于所有的Windows系统中,其缺点是学习起来,难度较高。
对于VB.NET和C#.NET的区别,仅限于语法方面,和托管C++一样,用这两种语言开发的程序,只能运行在.NET Framework环境下,它的优点是快速开发,利用微软已经定义好的类库,提高开发效率。可以说,没有了.NET Framework,VB.NET和C#.NET什么事都干不了。
对于JAVA语言,我觉得和C#非常相似,当然,JAVA的特点是跨平台。在所有安装了JRE环境的系统中,我们都能运行JAVA程序。而.NET程序,其运行平台只能局限于Windows系统。正式这一特性,JAVA被广泛用于网络应用程序的开发。
对于我来说,我对.NET有着比较浓厚的兴趣,特别是当我第一次接触微软的Visual Studio 2010的时候,它强大的IDE开发环境吸引了我,当我成功开发出两代图书管理系统后,我觉得.NET的最大特色就是快速开发,用它来编程,再也没有C++那么枯燥,那么深奥。
当然,我只是个初学者,只是以刚入门的角度来认识以上几种流行的程序设计语言,好多方面还理解不到位,相信随着学习的深入,我能学好.NET。
2011年5月20日星期五