[上一篇在這]what's going on??
----------承上----------
【Part 2. 程式的星球】
如果把整個程式的領域比喻成星球,它是什麼模樣?
這個星球上有許多島嶼,島嶼的大小、形狀都不太一樣,而島嶼之間隔著稱為乙太的海。
而所謂乙太的海,也就是「乙太網路」,各個網路之間相連,就成了今天大家熟悉的網際網路。
每個島嶼的地層都長得差不多,由內到外是:硬體層->2進位0101層->Virtualization虛擬層->Driver核心驅動層->Library溝通控制層->API應用服務提供層->Framework應用框架層->App應用程式層。
而其中,從Driver到API就是我們熟悉的「作業系統」。Windows、Android之類的~
不同的程式,它的建構深度也不相同,有的就是在App層、有的可能由上到下深入至API層、或者更深。其實,上面所說的地層,除了硬體層外,全部都是軟體,沒錯,包括作業系統也是一種軟體喔!並且,雖然地層有個一般的組成狀態,但是是可以堆疊的喔~ 應用程式之上還可以有應用程式,例如:瀏覽器本身已經是一個程式,建構在作業系統的程式之上,並且在瀏覽器之上還可以再跑另外一個應用程式。
由此可知,程式並沒有規定要寫在哪一層,作業系統之上、執行環境平台、瀏覽器之上等等。而程式建構在不同的體系結構上來執行,決定了該用什麼程式語言去實作它。因為,不同層可以接受、理解的語言也不盡相同~
當島嶼之間需要溝通,除了上述的乙太網路之外,還有一個關鍵:協定。
常聽到的例如HTTP、FTP、TCP/IP...
而島嶼之間的溝通,經常會有發出要求、接收資訊的情況,因此各個島嶼也會因為各種事件中扮演的角色不同,而有不一樣的定位,就是我們常聽到的伺服端、客戶端。
客戶端,就是提出要求並接收資訊、與使用者互動的一方,又稱為前端(front-end)。
伺服端,主要是接收要求並提供資訊、控制資料輸出的一方,又稱為後端(back-end)。
在一些企業中,前端指的是與客戶端互動的伺服器、後端指的是存取資料的伺服器,為了簡化稱呼,將所有與客戶端有關的程式通稱為前端。而所謂跟使用者互動的程式,範圍其實很廣,在以前剛開始有電腦的年代,命令提示字元那種文字介面,就是前端了,後來慢慢發展出視窗環境,後來才是Web、App。
後端的伺服器技術也很多元,主流的有Apache、IIS、Tomcat;而後端的程式語言有PHP、C#、Java、Python、Ruby等。
容易搞混的是「前端/後端 v.s. 前台/後台」
前端後端上面已經解釋過了。那什麼是前台後台?
可以想像成舞台表演中,前台就是會讓使用者、觀眾看到的那一面,後台可能會有各式各樣的道具、工作人員支援,以讓前台能夠順利的演出、滿足使用者或觀眾。所以以程式來說,前台就是使用者會接觸到的介面,後台則是開發人員或管理人員或接觸到的,可能是管理權限、資料庫等等。
前/後端、前/後台,是不一樣的~ 在以前搞不清楚,都交互著亂用,現在終於知道其實是不一樣的定義囉~
【每日一句】If you stumble make it part of the dance.
[下一篇在這]keep going on...