扯扯程序语言

一个经典中的经典程序
#include  < stdio.h >

int  main()
{
    printf(
"Hello World!!! ");
}


第一个写出这个"Hello World"的人真是很了不起,几乎每中编程语言都有一个类似的程序~虽然他只是在屏幕上打印出一个字符串"Hello World"~

OK!下面俺就要说一下什么是程序,当然了那种啥严谨的定义了啥的俺就不说了,书上写的很清楚了~主要是记性不好,外加有点懒,所以就不去拿书本了~~

编程其实就是人跟电脑的交流,而程序就是人给电脑制定好的命令,他只要按照这个来工作就行了。电脑很傻的,除了认识几条特定的指令外啥也不懂~所以要想让这个傻帽干活还真得费点劲~既然电脑很笨,没办法只好让我们这么聪明的人来将就一下,用它能听的懂的指令来命令他了。所以我们只要知道电脑认识什么,然后用他能理解的方式告诉他,就可以让他老老实实的干活了,这家伙有一点好就是从不偷懒~这点貌似比俺好点~这样说来操作一下电脑还不是那么可怕啊~那么下面我们就来了解一下他吧~

既然我们得用电脑认识的命令来命令他给我们干活,OK~第一步我们需要知道这个笨家伙到底认识点啥~坦白点说,电脑其实比你想像的要傻的多,因为他只认识0和1,别的一概不懂~苦恼了吧~当然这点肯定是难不倒聪明人的~不就是二进制嘛,有啥啊~有道理,这个确实没问题,比方3我们用11来表示不就OK了,但是用二进制表示起来确实太长了,为了简单所以又引入了8进制和16进制,这下就稍微简单点了,这些进制们书上介绍很清楚的,俺也不说了~好,这关过了~但是电脑不能只认识数字啊,那还有啥用!电脑认识的其实是指令,我感觉相当于“向左转 180度”,呵呵~也就是说他认识的是,指令+参数。就拿“向左转 180度”中指令是“向左转”参数呢就是“180度”,这样他就知道该逆时针转半圈(貌似成向后转了~)。既然这样那我们下面就可以给他说一下我们要的命令了~让他先给在屏幕上显示个Hello World再说~不过貌似现在我们对他的指令是十窍通了九窍了 —— 一窍不通嘛!他有啥指令也不知道~该如何告诉他指令呢?好吧,下面就先介绍一下~

电脑执行指令其实是电脑的CPU在执行~比如"050500H”(结尾的H表示16进制) ,这个指令CPU认识,他会把自己的累加器里的数字加上5,(详细指令如果不对的话请参照正确的,在此仅为例子)。 这个太抽象了点,要是都用这个东西写程序还不得累死啊,不累死也得烦死~所以就有了汇编语言,把这写指令用字母来取代,比如上面的这个"050500H" 就可以用"ADD AX,5”表示,这样看起来是不是明白点了,AX就是CPU里面的累加器,ADD 就是加指令,而这句话的意思就是把5加到累加器上。到时候用一个工具把这些给换成数字CPU就认识了,而写的这些"ADD AX,5“ 我们人也看的懂~是不是不错啊~所以人们用汇编写程序了,告诉电脑(CPU)你那个寄存器(CPU里面的一个存数字的东西,累加器也是寄存器)中的东西给我挪到这个里面,然后给我加上100,打印一下(打印这个复杂点啊,可不是一个指令能干的了的)。

因为电脑干活又快又不偷懒,所以效率极高啊,很快就有钱了,然后买了个新的电脑,这个电脑用了另一个公司的CPU,为什么?因为他比原来那个快很多啊,而且还很便宜哦~好,那就把原来的程序拿过来吧,运行一下,诶~咋死机了呢?原来这个好的CPU里面没有AX(或者表示AX的数字变了),指令跟原来的也不一样,人家的寄存器叫别的名字(比如,AAA了啥的,总之不是AX),而指令也不再是原来数字表示的了~这可怎么办呢,没办法,重新研究这个CPU的指令吧~总不能放着好的不用吧,然后再给他弄一套"ADD AX,5“(当然可能已经不再这么表示了),所以就出现了各个平台不同的汇编语言~这就出现了一个问题,有好些人是靠给别人写通用程序吃饭的啊,比如写计算器(当然这个貌似赚不到钱),那么就是只要有不同架构的CPU他就得为那个写一套程序,哎呀~这代价高了去了~怎么办呢?预知后事...(谁扔我臭鸡蛋)。好了大不了继续嘛(对了下次别扔这么臭的啊,回去还得洗澡,看来破不了5年不洗澡的纪录了^_^!!!~)!

所以那些写程序的人就想了,这样纯粹就是重复劳动嘛,针对不同平台写不同的程序,只是简单的翻译,一点挑战都没有,不爽~他们就要求那些写汇编程序的人(就是把"ADD AX,5"翻译成机器的二进制指令的程序作者)给弄的智能点,根据不同的CPU了啥的给我翻译成不同的机器代码,我的代码不变,只是重新汇编一下~所以他们这些人就开了个会,然后那写写汇编程序的人就说了,俺做不到,这家伙每个CPU支持的指令集都不一样,格式不一样,连里面的寄存器数量和大小都不一样,你这分明是为难俺嘛。写程序的人想了想貌似也是,各个平台汇编语言貌似就是不太相同,但是也总不能这么下去啊。然后他们想啊想啊想啊想,终于想出来了,我们不直接用汇编写程序,我们按照一定格式来写程序,比如我们要想让一个数加一我们这么写 "++i" ,看到这句话就根据不同的平台先把他翻译成不同的汇编,然后在把他翻译成机器码,这不就OK 了~不错,然后他们就开始写这个高级点的翻译程序,当然了这个已经不是简单的翻译了,是把一些描述转化成了汇编指令,所以起了个名字叫“编译”,而那些把汇编语言翻译成机器语言的东西就叫做“汇编程序”,负责编译的程序就叫“编译器”(其实没那么简单,不过这里还是简单来吧~)。而这种更简单更高级点的描述语法就叫做“高级语言”,因为这个语言电脑是打死也看不懂的,让人(程序员更准确)用的,然后通过编译,汇编来变成电脑认识的二进制程序。而现在我们编程用的语言基本上都是高级语言~~

好了,现在可以看一下开头那个"Hello World"程序了,这个就是用C语言写的最简单的一个程序。这个程序就要先编译一下,(其实还要再连接一下)就可以运行了,计算机就明白了,哦~就是先怎么怎么,再怎么怎么,他就按照步骤执行了一下,你就看到屏幕上打印出来了Hello  World(别看是电脑给打出来的,他其实自己都不知道自己干了点啥,傻吧他~)。

现在的编程语言真是太多了,当然了各有各的领域,不过对于初学程序设计的人来说,我感觉还是C语言好点,他简单,且并没有隐藏太多的细节,在学习中能理解计算机的运行~虽然可能永远都不用C来写程序,但是学习他确实能让你更好的理解计算机程序(设计)。

 PS:写一下自己的认为,如果有不对之处,还请各位看官指正,俺一定尽快更改~~

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值