Java匹馬行天下之學編程的起點——走進編程的殿堂

  • 2019 年 10 月 3 日
  • 筆記

學編程的起點——走進編程的殿堂

前言:

知其然,知其所以然,努力固然重要,但是思維的提升會讓你事半功倍,我會用我花費時間換來的“思維”帶更多的朋友入門,讓你們明明白白學編程,學編程,不迷茫。

轉變思維,走進編程

話接上文,在上一篇文章《編程常識知多少https://www.cnblogs.com/zyx110/p/11451084.html中主要對“軟件”二字進行了一些解釋,其中也穿插解釋了一些硬件方面的知識,我想看過的朋友應該有了一定的了解。上文中我提到軟件是由人類編寫而成,那現在出現個問題是人類是如何編寫軟件的呢?我就開門見山了,軟件是由“編程語言”編寫而成,之前說大學會學什麼,現在跟你說,編程語言是必學的。編程語言是最重要的,但對新手來說也是最不容易理解的。下面我會對“編程語言”做詳細的解釋。

編程語言

編程語言,看到這幾個字後不要急着看官方定義,首先顧名思義,自己先理解,我來說說我對編程語言的理解吧:一眼掃過去,你看到的是“語言”二字,對語言大家都不陌生,語言是人類最重要的交際工具,是人們進行溝通的主要表達方式,像漢語、英語、法語、俄語等都是世界上的主要語言。既然語言是用來溝通交流的,那“編程語言”也不例外,區別在於像漢語、英語等這些語言是人與人進行交流的語言,而“編程語言”是人與計算機進行交流的語言,只是溝通對象不同。那再說計算機,它其實本質上就是電流加一堆硬件(我覺得可以這樣理解),如果沒有電流,計算機就像桌子椅子一樣,它不是“活”的東西,有了電流,它才能“活”起來。那這電流是怎麼讓這一堆硬件“活”起來的呢?比如展現出我們現在所看到的豐富多彩的文字、圖片,那它是如何做到的呢?其實當時這個涉及計算機的這些先賢們也遇到過這個問題,他們考慮我怎麼能讓這些硬件動起來,怎麼讓我的電流給它驅動起來?也是他們進行思考,最後終於思考出來了,電流其實可以表示兩種狀態,高電壓和低電壓兩種狀態,而現在電流有很多條,也就是說有很多的高電壓和低電壓,那我把這個高電壓低電壓的這種實際的物理現象用人類所能理解的數字關聯起來,叫數字關聯,高電壓是1,低電壓是0,這樣有個強制規定的話,就可以跟我們人類的語言有了一定的關聯關係,而這兩種1,0的狀態也能被計算機所識別,計算機本質上其實就是像1010這樣的一堆組合干各種事情,那到此為止,我們可以說能用1010這樣不同的狀態跟計算機進行溝通了,具體怎麼溝通聽我在這瞎掰也沒有任何意義,所以一定要制定規則,比如所1011010這一堆數據表示打開音樂,1111000101這一堆數據表示打開文件,等等吧,這是我瞎說的,主要體會精神,這就代表你把無序的0101狀態給規則化了,研發一種語言你必須定義規則,就像研發英語要定義主謂賓語法一樣的道理,那現在我們把0101組合成不同的序列定義相應的規則,這樣有了這些規則後我告訴你,最古老的計算機語言就出現了,有了規則它就能稱之為語言了,這個最古老的語言就叫機器語言

 

機器語言

其實看了上面我瞎掰扯的這些,你大概明白其實機器語言說白了就是一堆0101的組合,然後把0101的組合規則直接給你通過在芯片燒制的時候,也就是把這些規則直接刻在芯片上了,那電流這麼走,十個燈一塊亮,就代表要播放聲音了,另外幾個燈要是一起亮,就代表要打開文件了,這就是機器語言。機器語言作用是直接跟硬件打交道,所以計算機能夠很好的理解,因為這就是它的天生語言。但是計算機能很好的理解,但人卻不能很好的理解,像0101這樣的組合有很多,人理解起來很費勁,要是來個複雜點的動作,五十一百個0101組合在一塊,你就頭疼了,而且你還有可能寫錯,一寫錯就導致整個就完蛋了,你要是想排錯,就得數哪個1是不是排錯位置了啥的,這就讓人頭大了。說到這你明白,機器語言的出現雖然能讓計算機幹事情了,但是人與計算機的這種溝通效率是極低的,你可能在草稿上寫一個月終於寫出來計算機能理解的五句話,打開一個文件,播放一個音樂,然後關了,你寫這些耗時不說還怕寫錯,所以效率是特別低下的。科技要發展,所以人們就要進步,要想辦法讓人與計算機之間的溝通效率更高,就把語言提升了,像之間那種0101的組合程序員不需要死記硬背了,把那難記的一堆0101組合變成一個對應的人能理解的英文,比如說,我們運算時需要加減乘除,如果用機器語言描述加號,要表示成1010001111就如說就這些吧,是不是很難記,那現在把這一串機器語言變成人能理解的英文單詞ADD,就是把這個0101組合變成了英文,你只要在鍵盤上敲出了相對應的英文,它就自動給你翻譯成0101這樣的機器語言,然後讓計算機去執行,這個東西就叫做彙編語言。

彙編語言

對人來講,像用字母表示或者用數字、符號表示這樣的一些符號語言簡單直接、便於記憶,比0101組合表示的機器語言簡單方便了很多,但其實開發效率還是很低,你看下面的圖片,就是用彙編語言寫的,僅僅是在屏幕上打印輸出一句hello world居然要寫這麼多代碼,可見這個效率實在是不怎麼高,你比如所現在開發一個APP三天就能上線了,你要是用彙編語言的話,估計你得寫半年還不一定寫的完(這是我猜的,不要在意真實性,就當是虛構吧),所以人們還要進步,繼續為提高效率而努力。不過人類不愧是高級動物,聰明才智,最後研發出一種語言叫高級語言,這種語言更容易讓人去理解,能使不熟悉具體計算機的人也能很方便的使用計算機,跟計算機更好的溝通交流,比如說之前說的用機器語言表示加號需要1010001111這樣一堆代碼,然後有了彙編語言後只需要記住ADD就可以,但現在有了高級語言後,加號就直接用數學中我們常用的“+”去表示就可以了,這個大家肯定都能明白。

 

 

 

高級語言

彙編語言的一個問題在於需要你自己去調用硬件的各種指令,比如你想播放聲音,播放聲音也是由芯片來控制的,芯片裏面已經燒制了各種指令,你要想播放聲音,就要調各種相應的指令,彙編語言的問題在於它要親自去調,自己去寫代碼去調這種指令,這其實非常複雜,你要想調音卡,就是播放聲音,你還要學習音箱的這個硬件的各種操作指令,你要想顯示屏幕,你還要看顯卡上也就是顯示屏幕上的操作芯片的各種指令,還是蠻複雜的,做這樣的程序員我覺得很痛苦,可能那個時候的程序員都是禿頭(猜的),現在的程序員禿頭的應該沒以前多了,不過掉頭髮另說啊,因為他們學了高級語言,這個高級語言的好處就是讓程序員對底層硬件的各種指令做了封裝,封裝的意思就相當於把那些複雜的東西都給你處理掉了,暴露給你的東西都是非常簡單的,真正實現了你想播放音樂,你就直接寫playMusic(“夜空中最亮的星”);我偶像張傑的一首好聽的音樂就能播放了,這就牛逼了,就算你沒學過編程的人,看了這個指令也知道這是在播放音樂,其實你的這行指令在底層可能給你解析出來了好幾十條彙編的指令,然後又把彙編的指令轉化成0101這種機器指令,但是這些複雜的東西都不需要你來管因為計算機已經幫你封裝好了,你只需要調用一下就OK。有了這樣的高級語言,人類的開發效率才提高起來,然後才能說我想寫一個軟件,然後一周就上線了,就能賣錢了(。。。),這些就是編程語言的一個演化過程,從最早的機器語言到彙編語言再到現在的高級語言,那我們現在聽到的C、C++、JAVA、Python等主流的這些語言都是高級語言,鑒於字數已經達到了三千字,我決定還是放到下一篇再說吧。

 

 

 

 

 

 

                                                               

 

 

*****************************************************************************************************

我的博客園地址:https://www.cnblogs.com/zyx110/

【原創聲明】此篇為作者原創,未經本人同意不得轉載,經本人同意轉載請說明出處。

我不能保證我所說的都是對的,但我能保證每一篇都是用心去寫的,我始終認同“分享的越多,你的價值增值越大”,歡迎大家關注我的技術分享“Java匹馬行天下”和學習心得分享“匹馬行天下”,在分享中進步,越努力越幸運,人生贏在轉折處,改變從現在開始!

支持我的朋友們記得點波推薦哦,您的肯定就是我前進的動力。