扯扯程式語言

2021-04-15 08:40:29 字數 2795 閱讀 8432

乙個經典中的經典程式

#include 

<

stdio.h

>

intmain()

...

第乙個寫出這個"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:寫一下自己的認為,如果有不對之處,還請各位看官指正,俺一定盡快更改~~

關於夢想,隨便扯扯,,,

很少自己談夢想,就是這幾天突然就感覺自己離想要達到的地方越來越遠了,心裡突然有種愧疚,難過,失落,想抽自己!於是就來這寫寫,動動手指。其實吧,本來我乙個學計算機的不該沒事寫什麼部落格,有時間還不如去看看 呢。但是人這個有時候有話不說出來就是不爽,好在csdn上有個部落格能寫寫。順便看看有沒有志同道合...

隨便扯扯東北師大的面試

昨天跑到東北師大招聘會面試,一位面試官問我 說說c 中的屬性,嚴格來講應該是特性 東北師大昨天有個大型的招聘會,今天吉大有,今天的這個我沒去,說說昨天的經歷吧。總的來說吧,計算機的方面的真多,我同學還聽見有人尷尬說,當初學計算機就好,找工作也不會這麼愁了,作為計算機的,說句公道話,計算機專業的就是找...

程式語言

1946年,第一台電子計算機問世,應用領域迅速擴大,軟硬體飛速發展,程式語言相繼問世。程式語言 將自然語言形式化為有格式的語言 1。機器語言 計算機能夠認識的語言 計算機的基礎是數位電路 機器語言就是數位電路裡的電訊號 將在 計算機組成 課程中學習 都是二進位制檔案 一條機器語言成為一條指令 指令是...