众所周知,电子计算机是采用二进制进行运算和通信的。所以不管什么信息包括文字,图片,视图,声音等各种信息在计算机看来是没有任何区别的,都是电平信号的高低。所以对于计算机来说最终执行的命令都是以二进制形式存在的。故理论上任何的自然语言都是可以用来编写程序的,故中文当然可以。但任何自然语言计算机都必须转换成计算机可以理解的二进制代码即电平的高低。
来看一个例子 比如我有如下计算机
其中 i1 i2是两个接收指令的端口 A B C D 为计算机的四个数据端口。
我有一个数据手册如下
当i2=0 ,i1=0时读入A端口的数据,以此类推。当我希望读取C端口的数据的时候我只想要给i2端口一个高电位同时给i1端口一个低电位,即i2=1,i1=0。这样计算机就懂得了我们的想法从而将C口数据读入。
我们发现这样做是很不方便的。我们必须要记住i2 ,i1端口的电位高低的二进制组合才能控制计算机。特别是要求的功能越复杂,这样做难度就越大。比如我希望先读A再读C再读B。那这样我就必须先去查阅指令表、得到00 10 01这么一串数字。程序员来说是极为不清晰的。于是人们就想出给这些命令都取一个名字。比如读取A端口,取名为inA 读B口取名inB。那么在完成上面的先读A再读C再读B的需求时程序就变成了inA inC inB。这样对于写程序的人和后面看这个程序的人都一目了然。则这时的inA inB这种形式的程序语言就是比二进制更高一级的语言了。
刚才说了计算机只能识别二进制,故我们的inA inB肯定是不能直接被机器识别的,故我们就需要翻译,当然可以人工翻译,更简单的就是开发一种专门翻译的工具。这种用来翻译语言的工具就叫命令解释器或编译器。它们被设计来将特定的语言翻译成机器可识别的二进制代码。
因此任何的高级编程语言如java c等都需要编译器将他们编译成最原始的二进制机器代码,然后将他们存在计算机的存储介质中,计算机就可以自动去读取并按指令执行了。