跟我學java編程—簡單了解程式語言

2021-01-08 米粒教育

語言是人類交流的工具,是人們溝通的主要表達方式。不同的民族有不同的語言,每種語言有自己的語法規則和詞彙,只有在規定的語法規則和詞彙範圍內,人們才可以相互理解之間的對話和語句文字要表達的內容。超出這個範圍,就會出現語言理解困難現象,例如:不同語言之間的人對話就會發生理解問題,就需要翻譯人員的協助才能完成正常交流。

程式語言是人類與計算機的交流工具,為了讓計算機能夠準確無誤地完成任務,人們需要使用計算機能夠讀懂的語言與之交流,編制任務指令交給計算機,計算機才能夠按部就班地執行指令,完成人們交給的任務,編寫計算機指令的語言就是程式語言。

程式語言和人類語言一樣,不是先天就有的,是隨著科技和計算機技術的發展,人們為了更好地控制計算機,幫助人們完成更多任務,提高編程和工作效率而不斷對語言進行創新、完善和改進而來的。最初的程式語言是機器語言,也是計算機唯一能直接讀懂的語言。計算機只能識別二進位代碼,所以機器指令也是由二進位代碼組成的,所謂的機器語言,就是直接用二進位代碼編寫計算機的指令序列(程序)。

假設編寫一個計算直線方程的程序,給出方程的斜率、變量係數和變量X的值,求Y值,將計算結果存儲到以Y為地址的存儲單元中。

直線方程為 Y = AX + B,其中A、X、B已經分別存儲到A、X、B存儲單元,機器指令可以直接尋址到該存儲單元。A單元的存儲地址為26H,X的存儲地址為34H,B的存儲地址為36H,Y的存儲地址為56H,其中26H、34H、36H、56H均為16進位,該算法流程圖見1-13圖。

圖 1-13 計算直線方程流程圖

根據流程圖編寫的機器指令序列(參考了IBM-PC指令集,可能有出入,主要是為了說明程式語言的演變過程):

(1)1011 AX 26H

存取指令,讀取指定地址26H的存儲內容到AX寄存器;

(2)1001 34H

乘法指令,將34H存儲地址的內容與AX寄存器內容相乘;

(3)1011 26H AX

存取指令,將AX寄存器內容存儲到26H地址的存儲單元;

(4)1011 AX 36H

存取指令,讀取指定地址36H的存儲內容到AX寄存器;

(5)0011 AX 26H

加法指令,將AX寄存器內容和26H地址存儲內容相加;

(6)1011 56H AX

存取指令,將AX寄存器內容存儲到56H地址的存儲單元。

上面就是用機器語言編寫的計算直線方程的計算機指令序列,是不是特別難記、難懂,完全是看天書的感覺。為了提高編程的工作效率,在1949年,人們將助記符和機器代碼關聯起來,並編寫了轉換程序,轉換程序可以把助記符轉換為機器代碼,這就是彙編語言。

根據流程圖編寫的彙編程序指令序列(參考了IBM-PC指令集,可能有出入,主要是為了說明程式語言的演變過程)。

(1) MOV AX A

存取指令,讀取A地址的存儲內容到AX寄存器;

(2) IMUL X

乘法指令,將X存儲地址的內容與AX寄存器內容相乘;

(3) MOV A AX

存取指令,將AX寄存器內容存儲到A地址的存儲單元;

(4) MOV AX B

存取指令,將B地址的存儲內容讀取到AX寄存器;

(5) ADD AX A

加法指令,將AX寄存器內容和A地址存儲內容相加;

(6) MOV Y AX

加法指令,將AX寄存器內容存儲到Y地址的存儲單元;

用助記符代替了機器碼,編程是不是相對簡單了一些,轉換程序可以幫助編程人員從繁重的機器碼編寫勞動中解脫出來,轉換程序也稱之為彙編編譯程序,其工作原理如下圖所示:

圖 1-14 彙編編譯程序原理圖

彙編代碼完成後,需要運行編譯程序,將彙編代碼轉換為機器代碼,由於不同CPU架構的計算機,其提供的指令集不同,支持運行的機器代碼也不同,因此,要運行在不同CPU架構的計算機上,就需要運行支持該CPU架構的彙編編譯程序。例如IBM-PC機採用了Intel X86系列處理器,單片機一般採用ARM架構的系列處理器,如果要讓編寫的彙編程序運行在IBM-PC機上,就需要調用支持IBM-PC指令集的彙編編譯程序,如果要讓編寫的彙編程序運行在ARM架構的計算機上,就需要調用支持ARM指令集的彙編編譯程序。

彙編語言相對機器語言來說,編程效率和可讀性都有了較大提高。但編寫程序還是過於繁瑣,並且彙編語言對應一條條指令集,當指令集改變時,就得修改相應彙編語言,導致其可移植性和維護性很差,不能跨平臺使用。為了解決這個問題,計算機工程師們繼續創新和改進程式語言,隨著計算機技術和科技的發展,計算機對語言的處理能力進一步提高,計算機工程師試圖用人們能夠容易識別和易懂的語言去編寫程序,在20世紀50年代,出現了第一批高級語言,包括FORTRAN 、LISP、COBOL等語言,隨後相繼出現了C語言、C#、Java、PHP、Perl等高級語言。

高級語言的優點是其語法和結構更類似漢字或者普通英文,並且由於遠離對硬體的直接操作,使得一般人經過學習之後都可以掌握編程技術。

● 根據計算直線方程流程圖編寫的C語言程序

void line(double a,double x,double y)

{

a = ax;

y = a + b;

}

● 根據計算直線方程流程圖編寫的Java程序

public class LineQuation

{

void line(double a,double x,double y)

{

a = ax;

y = a + b;

}

}

Java語言和C語言都屬於高級語言,其語法和規則有相同之處,但也有很大的不同,Java是面向對象的語言,C語言是函數式語言,Java是編譯兼解釋性語言,C語言是編譯性語言,關於語言的特性面會有陸續介紹。

我們寫程序用的是高級語言,要讓我們寫好的程序能夠在計算機上運行,就必須要把高級語言轉換成計算機能夠理解的機器語言,該轉換程序稱為該語言的編譯程序,例如C語言的轉換程序可以稱之為C語言編譯程序,C語言編寫的程序編譯為Windows程序的工作過如下圖所示:

圖 1-15 編譯性語言編譯過程

編寫完成的C語言原始碼,首先經過編譯預處理器規範代碼和預編譯,然後通過編譯器轉換為彙編代碼,再由彙編器轉換為機器代碼,最後由連結器將有關的機器代碼文件進行相互連結,構建Windows程序。

程式語言是人們與計算機的交流工具,各種程式語言語法規則雖有不同,但其核心思想都是人們通過程式語言來控制計算機,讓計算機幫助人們解決各類問題。學習程式語言的目的是掌握利用計算機解決問題的能力,包括分析問題、算法設計、數據架構等能力,有了這些能力,只要學會一種程式語言,其它語言都可以無師自通。後面的學習過程,也重點講述分析問題、解決問題的能力。

(1)請簡要敘述高級語言、彙編語言、機器語言的區別。

(2)請描述C語言的編譯過程。

(3)彙編程序編譯的機器代碼為什麼不能運行在不同CPU架構的計算機上?

相關焦點

  • 日常疑惑:編程學Java還是學C語言?
    這兩門程式語言都是IT行業的寵兒,Java與和C語言各自的技術特點、應用方向上有所不同,沒有伯仲之分,所以這也讓初學者們覺得很難選:應該選擇哪個做為入門語言呢?從學習的難易度上來說,java語言比C語言要簡單。
  • 小速學編程:什麼是程式語言
    >「那吳大哥,我現在就想開始學編程了,我應該怎麼下手?」是說這種程式語言,比機器語言和彙編語言更厲害的意思嗎?」 陳小速充滿了好奇。「這倒不是,」 吳進笑了起來,「高級這個詞其實我覺得並不完全準確,可能用高層會更合適。這裡對程式語言的劃分,其實依據的是它距離CPU的遠近。」 吳進開始了細緻的講解。
  • 程式語言是選擇Java好還是Python好?
    老師傅來說說java和Python,你是不是也較糾結應該選哪個程式語言好,我的粉絲私信我說,他覺Python有趣,但是聽別人說Java更好找工作一些,所以說他來問我到底學什麼好些。JAVA和Python哪個崗位就業多,更好找工作?
  • Java程式語言是什麼
    java是一種計算機語言語言我們說的普通話、英語都是語言,語言是一種交流的工具,語言具有創造性和結構性,並且代表一定的意義。比如我說下課了,大家都明白什麼意思,證明這個語句的意思表達清楚了,正規的語言在交流上是不能有歧義的。計算機編程計算機編程就是:把程式設計師的要求和設想,按照能夠讓計算機看得懂的規則和約定,編寫出來的過程,就是編程。編程的結果就是一些計算機能夠看懂並能夠執行和處理的東西, 我們把它叫做軟體或者程序。事實上,程序就是我們對計算機發出的命令集(指令集)。
  • 自學編程如何選擇程式語言?
    有些人是為了做自己的個人網站,那麼 php 、python作為入門語言其實也不錯,當然如果你想做一個企業級的網站,或者商城一樣的東西,那麼 java可能是最佳選擇,c#寫企業站,也還可以。如果是想了解電子電路,學單片機,那麼 c、c++ 肯定是首選,有些特定環境用彙編可能更直接。
  • 艾編程:轉型IT學什麼語言好,學程式語言為何要重視代碼規範?
    造價轉IT需要注意什麼,先學什麼比較好?屬於零基礎,2019畢業,三本學校,男。自己的想法是先以副業來學習,在合適的時候轉入it行業。1.以副業來學的話應該先學習什麼比較好?2.如果要直接找工作的話先學什麼比較好?造價轉IT需要注意什麼,先學什麼比較好?
  • 最值得學的程式語言是什麼?程式語言通用學習方法分享
    如果您對編程有興趣,想要以後致力於編程這個方向,那是肯定要下一番苦功夫的。說實話沒有一門程式語言是好學的,要是那麼簡單就可以學會了,那是個人就是程式設計師了。最值得學的程式語言是什麼呢?有了方向選擇起來就比較方便了,比如嵌入式的先從C語言入手,後端的選擇java或者php,python等入手,決定因素就是看你能不能堅持。
  • 編程入門學什麼語言好?
    首先應該明確學習程式語言的目的-工作或興趣,這兩者差別比較大!如果是考慮就業問題,那麼根據2019年末的一個流行度調查,關於程式語言的排名,目前前三的分別是:Java(難)C(很難)Python(較難)還有C++、PHP、JavaScript等。
  • 即刻就業:編程學什麼語言好,程式語言有多少種,程式語言怎麼學
    隨著時代的發展計算機進入了每一個家庭,是每個家挺必不可少的工具,這樣各種科技公司也推出了各種程式語言,例如微軟的 C語言 C++ asp.net 甲骨文的 java Android; 蘋果的 OC語言 PHP JS H5 大數據 雲計算等多種語言,供我們學習參考。
  • 跟我學java編程—Java循環結構基本介紹
    前面一章討論了編程中進行判斷的各種方法,然而有些問題僅僅通過判斷還不能解決。某些情況中,為解決一個問題常常需要重複執行一個或多個操作。例如,要求輸出從1—5分別乘以10所得的乘法表,用以前學過的知識編制的程序如示例1所示:示例1:乘法表在D盤Java目錄下,新建「MultipSample.java」文件。用記事本打開「MultipSample.java」文件,輸入以下代碼:代碼結構分析程序編寫了五條語句計算乘積,再編寫另外五條語句顯示這些乘積。
  • 自學編程學什麼語言比較好,編程學習建議
    自學編程學什麼語言比較好,編程學習建議 自學編程受到入門基礎知識的限制,不建議學習一些底層語言,比如C,C++,這兩門語言涉及到的指針,內存的知識非常抽象,很容易反措,並且這兩門語言與底層硬體密切相關,如果沒有系統的學過計算機體系結構的知識,不容易深入。
  • 開課吧:最值得學的程式語言是什麼?程式語言通用學習方法分享!
    如果您對編程有興趣,想要以後致力於編程這個方向,那是肯定要下一番苦功夫的。說實話沒有一門程式語言是好學的,要是那麼簡單就可以學會了,那是個人就是程式設計師了。最值得學的程式語言是什麼呢?有了方向選擇起來就比較方便了,比如嵌入式的先從C語言入手,後端的選擇java或者php,python等入手,決定因素就是看你能不能堅持。就單論語言來說,程式語言基本是獨立的,沒有誰前誰後之說,比如Java和C#,先學哪個都行。
  • Python VS Java 到底誰才是最好的程式語言?
    最新的程式語言流行榜單公布:Python一躍而上成為第一,Java第二,但也出現了下滑的趨勢,從全球範圍來看,Python目前儼然已成為最流行的程式語言,份額在過去的5年中,增長了17.9%那麼,Python和Java二選一,到底該學啥?這個問題是很多初學者都在糾結的。如果你問一名Java程式設計師,肯定會建議你先學Java,因為他們認為Python像個乳臭未乾的黃毛小子。但如果你問Python程式設計師,可能會得到一個完全相反的答案,他們認為Java是刻板囉嗦的老大爺,而人生苦短,我用Python。
  • Java、Python、C語言?5大熱門程式語言,我該怎麼選
    程式語言究竟多少種呢?TOP20△對於程式設計師而言,選擇適合自己的程式語言是很重要的,但對於初學者來說,至今還是有一些疑問:「我該學習什麼程序語言呢?」小卓君這就簡單為大家介紹一下,當下比較熱門的5種程式語言。
  • 我應該先學哪種程式語言?
    一旦你決定學習編程,你會問自己最難的問題之一是:我應該先學哪種程式語言? 讓我們來看看在開始學習之前您可能會遇到的一些擔憂,您必須選擇的程式語言,以及如何決定哪一種適合您。以下是你可能擔心的一些問題(1)這會影響你的編程之路?你可能會覺得,選擇先學習哪一門程式語言非常重要,甚至會影響你之後的編程道路,有這種想法也是正常的。
  • 最常見的網站程式語言
    作為網站SEOer筆者小丹本身對於優化運營技術要優於代碼,但是如果你對網站程式語言一竅不通那麼你只能成為是一個網站編輯而不是一位合格的SEOer。所以今天筆者小丹要和大家放開關於純粹的優化技術而來了解一下目前最常見的網站程式語言,讓我們能夠更好的為網站運營服務。
  • Java編程排行真靠前,不學Java開發從事Java崗位可惜了
    你學Java了嗎?大學畢業找不到工作,學Java真的可以解決我們就業的問題嗎?  零基礎學Java  主流開發語言  根據最新2020年TIOBE程式語言指數排行榜,Java仍然排名前三位。其他程式語言與Java相比,Java語法相對簡單,並且是很多計算機語言的基礎。提到C++語言,很多人發現在使用過程中最容易出現的錯誤就是內存管理,而java有自動垃圾回收器,不用擔心內存。
  • 廣州java語言編程培訓學習周期是多久
    大家對java程式設計師這個崗位已經很熟悉了,java程式設計師的薪資待遇高,市場需求大,是很多朋友都嚮往的工作崗位。要想學習java技術,小編建議大家參加專業的培訓進行系統學習。那麼,廣州java語言編程培訓學習周期是多久?
  • Java 的另一個替代,程式語言 Mirah
    我們有很多程式語言可供選擇- 一些靜態類型,一些是動態類型,...- 這提供了他們自己的獨特優勢。 我們甚至發現Java本身的一些「小變化「,比如文字列表和字符串開關。我們有任何受管理的Runtime的最大、最強的生態系統,數以百萬計的開發者。 但是,缺少了什麼東西。沒有語言看起來能夠取代Java本身。或者說,沒有可以充當Java替身。
  • 跟我學java編程—面向對象的編程思想
    當前軟體開發領域有兩大編程思想,一個是面向過程的編程思想,一個是面向對象的編程思想。依據編程思想的不同,程式語言也分為面向過程的語言和面向對象的語言。Java、NET等是面向對象的語言,C語言、Fortran等是面向過程的語言。