Excel2016打印預覽表格的教程是什么(excel2016怎么看打印預覽)">Excel2016打印預覽表格的教程是什么(excel2016怎么看打印預覽)
1209
2025-04-01
說到在 linux下的編程,很多人會想到用C語言,linux 的內核、shell、基礎命令程序,也的確是用C語言編寫的,這首先證明了一點,C語言很強很通用。
到目前為止,C語言依然壟斷著計算機工業中幾乎所有的系統編程,而且也正因為是C語言,才使得 Unix 以及后來的 Linux 能夠這么廣泛地被人們去研究、去改進、去制作自己的分支,以至于我們能在各種硬件平臺上使用它們。
但是細心的人會發現,Linux 啟動過程中所涉及的各種程序,很少有C語言的痕跡。它們大多是腳本程序。不單單在啟動過程中是這樣,那些用于安裝軟件的工具 yum、apt-get,甚至是 configure 和 Makefile 也都是腳本程序。而且你可能還沒注意到,那些用于系統管理的工具,如配置 ADSL 撥號上網的工具、配置守護進程的工具等,很多也都是腳本程序。
大量使用腳本程序,是所有類 Unix 系統不同于其他系統的一個顯著特征,催生人們在 Linux 中大量使用腳本來編寫程序,并不僅僅是因為腳本對人直觀、容易修改這種顯著特性所決定的。另外一個主要的原因就是 Linux 所支持的腳本語言種類十分豐富。
所有類 Unix 系統所必備的 shell,其本身就是一個強大的腳本解釋器。所以從 shell 誕生的那一天起,shell 就是那些不懂 C 語言,又必須在 Unix 上編寫程序的用戶們的首選工具。
這就給了人們一種新的選擇,使用 shell 編程不用去理會讓人頭暈的指針;shell 程序可以直接利用系統命令來完成一些需要用大量 C 代碼的功能;shell 編程不用去理會數據類型,不用考慮煩人的數值和字符數據的轉換問題;shell 程序同樣提供順序、選擇分支和循環這三種能夠構建任意算法的基礎設施。因此,shell 很快就能夠被非專業用戶所接受、掌握,并編寫出非常實用的程序。
隨著時間的推移,這些非專業用戶想往更高的方向發展,遇到了一些 shell 處理起來會很“蹩腳”的問題,比如分析文本和修改文本(別忘了“萬般皆文本”)。這個時候他們會發現 有 awk 和 sed。也只需要寫幾行腳本就能將這些問題處理得很好。而且它們也跟 shell 配合得天衣無縫?;蛟S這個時候會覺得加入了 awk 和 sed 的 shell 腳本有些難看,不過沒關系,還有 Perl 和 TCL。Perl 天生就是為處理文本而存在的,TCL 也不含糊。
如果覺得這些語言都太老氣了,有些過時了,不要緊,還有 Python、Ruby 等這些現代腳本語言,它們除了不能寫操作系統內核之外,幾乎什么都能干,而且還是面向對象的。
關注微信公眾號【開源Linux】,后臺回復『10T』,領取10T學習資源大禮包,涵蓋Linux、虛擬化、容器、云計算、網絡、Python、Go等書籍和視頻。
不管怎樣,在 Linux 下能夠選擇的腳本語言都是極其豐富的。它們最大的特點就是簡單、好學且資料豐富。簡單就意味著容易維護,好學就容易吸引用戶,資料豐富就不會在解決 bug 上出現障礙。即便是專業的程序員,也會因為這些特點而特別偏好腳本語言,導致的一個結果就是腳本程序在 Linux 中的大爆發。
有讀者可能會問,為什么不選擇 C 語言呢?
C語言并不是最佳選擇
C語言是 Unix 的母語,這是毋庸罝疑的。前面也說過,正是因為有了C語言,才使得 Unix 有了今天的成就。但為什么在 Linux 中有這么多程序,甚至是關鍵程序,不用C語言編寫呢?
腳本程序由于是解釋執行的,在執行效率上自然是會有很大損失的。并且大家都知道,C語言所編寫的程序又是以效率著稱的。但是C語言是一種編譯型語言,要想讓C語言的程序能夠運行,必須經過編譯和鏈接這兩個步驟。
要知道,能夠將由幾十個源代碼文件構成的C語言程序,有條不紊地編譯完成并能最終鏈接成一個可執行程序,本身就是一件費時又費力的事情,如果一旦程序有問題,還必須使用專門的調試工具一點點地去跟蹤判斷,修正之后再重復那些復雜的編譯和鏈接步驟,這又是一個極需技巧的事情。積累并掌握技巧又是一件費時又費力的事情。
在早些年,計算機性能不佳的時候,這些付出或許是值得的。但是放到現在,處理器的速度至少快了幾千倍,內存大了幾千倍,硬盤甚至大了幾萬倍,而價格卻更低了。從經濟角度分析,機器的時間成本早己遠遠低于人的時間成本了。那么C語言在機器效率上的優勢根本沒有任何意義。腳本程序能夠給人節省下來的時間成本,則更具經濟效益。
要論機器效率,匯編語言比C語言要好上幾十倍,但是目前還有誰在用匯編語言編程呢?
C語言在設計的時候,最主要的一個目標就是能夠讓程序員自己處理內存管理的問題。這使得C語言很強大但又太過于靈活,導致了很多陷阱的出現。稍微一不注意,程序中就會存在難以發覺的 Bug,甚至是嚴重的安全漏洞。程序員們大多是要以時間或失敗為代價去積累經驗,才能盡量避免這些問題的發生。而且效率在大多數應用中根本就不是問題,首要的是正確。腳本程序的簡單和直觀正是正確的起點,C語言的靈活卻是錯誤的根源。
但是,C語言并不是一無是處,也是 Unix 的精華。C語言作為通用程序設計語言是所向無敵的。C語言本身也非常簡潔和緊湊,資料豐富且容易學習。C語言之后的少數語言設計,為了不被C語言所吞并,不得不進行大的改動,比如引進垃圾回收機制等,以和C語言能夠在功能上保持足夠距離。也正是因為這樣,C語言始終沒有消失,只是它的光輝在 Linux 中稍稍地被腳本程序所遮擋了一下。
腳本語言也有不足
雖然效率并不是腳本程序的缺點,但是種類過于豐富卻是一個極大不足。編寫一個復雜的應用,往往很難使用一種腳本語言包桿到底,因為腳本語言都有自己適用的場景,為了能夠快速有效地完成某個應用,就需揚長避短,利用多種腳本語言混合編程。
多腳本語言的混合編程是一種知識密集型的編程方法,但不是編碼密集型的(這是能夠被普遍接受的原因)。為了能夠良好地使用這種方法,就要求程序員不僅僅要具備相當數量的多種語言知識,還必須具備能夠判斷這些語言的適用場景、以及如何將它們有效地組合在一起的經驗。
實際上,混合編程并不是腳本語言的專利,任何編程語言都行,只要你能找準那些語言的特點。比如筆者就曾經使用過 Basic 和 C 進行混合編程,去完成一個 DOS 版萬年歷程序。為了支持鼠標點擊操作,用 C 完成了鼠標中斷的處理。余下的部分都用 Basic 來完成。
在 Linux 中大量應用腳本程序的場景,好多都是這種混合編程的典范。比如 Linux 的啟動過程,主程序 init 是用 C 語言寫的,具體到啟動流程的各個環節則是 shell 腳本程序。
關注微信公眾號【開源Linux】,后臺回復『10T』,領取10T學習資源大禮包,涵蓋Linux、虛擬化、容器、云計算、網絡、Python、Go等書籍和視頻。
C 語言 Linux
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。