哈哈,又是一個系列。系列的東西好寫,也好讀,它可以比單篇的文章更系統(tǒng)的了解一個領域,當然文字會多些。但只要作者控制的好,可以讓讀者少受很多罪。很明顯,我就是這醬紫的作者:)
廢話不多說,進入正題。
寫在前面
文章受眾定位于對程序員世界頗為好奇,但又無機會接觸的人群,可能會是老師、快遞、財務或是尚未就業(yè)的學生,不一而足。文字盡量淺顯易懂,以便讓更多的人理解程序員的世界。
既稱“世界”,自然繁而雜,故而文中所寫,多是傳統(tǒng)意義上的概念,加之眼界所限,所以有很多地方會有很多地方并不嚴謹,歡迎指出。
有哪些稱謂
程序員,正統(tǒng)的名字應該是軟件工程師,自嘲的說法是程序猿;女性從業(yè)者偏少,會被尊稱為“程序媛”;加班累慘的時候會自詡為碼畜、碼奴或是碼農(nóng)。
做什么的
程序員的主業(yè)自然是寫程序,又稱編程,寫的內容即為代碼。代碼是一行行的字母、數(shù)字、標點等字符,是沒有什么用的,需要相應的工具進行二次加工才能成為軟件。
好比烤肉串,需要準備簽子、肉串、調料,把肉串用調料腌好再用簽子串起來,這這時還不能吃,需要生火烤一段時間才能享用。
來個類比:
簽子 + 肉串 + 調料 = 肉串(不能吃)
字母 + 數(shù)字 + 標點 = 代碼(不能用)
肉串 + 烤爐 = 熟串(好吃)
代碼 + 工具 = 軟件(好用)
歸根結底,程序員最終的產(chǎn)出就是軟件。
軟件有哪些種類
軟件,某些場景下也叫做應用。根據(jù)使用場景的不同,分為如下幾種類型:
桌面應用
大多運行在傳統(tǒng)的臺式或筆記本電腦上,比如瀏覽器、Word、殺毒軟件等。
承載著這些應用軟件的操作系統(tǒng),也是軟件的一種,比如微軟的Windows、蘋果的OS X、多用于服務器的Linux等。移動應用
Android和iOS,是最常用的移動操作系統(tǒng),在其上運行的APP,像微信、地圖、支付寶、各類游戲,可以歸為移動應用。網(wǎng)絡軟件
門戶網(wǎng)站(如網(wǎng)易)、搜索引擎(如百度)、博客(如我的blog)、微博(新浪微博),這些都屬于網(wǎng)絡應用。嵌入式軟件
這類應用最沒存在感,像最常見的石英鐘、遙控器、微波爐,里面都運行著軟件,再稍微專業(yè)點的單反相機、無人機,當然也離不開應用軟件的支撐。綜合類軟件
實際上我們日常接觸的軟件,更多的是上面幾種的綜合體。比如微信,它有網(wǎng)頁版可以歸為網(wǎng)絡應用、有移動客戶端,還有桌面版。
軟件與硬件有什么關系
正如擼串需要配啤酒,軟件的運行也離不開硬件的支撐,比如電腦、手機、遙控器。軟件的豐富多彩,讓死氣沉沉的硬件“活”了起來
簡單地說,軟件和硬件有如下關系:
軟件獲取硬件數(shù)據(jù)
軟件控制硬件動作
一個典型的例子:你用遙控器把電視靜音,需要按下靜音按鈕;遙控器內置的軟件收到按鈕按下的事件,并判斷出是靜音按鈕,這是一個軟件獲取硬件數(shù)據(jù)的過程;軟件知道了你的意圖,根據(jù)事先編好的邏輯,控制遙控器的紅外管發(fā)出靜音指令給電視,這是一個軟件控制硬件動作的過程。
如何把軟件“裝”進硬件
絕大部分的軟件是運行在芯片上的,而平時我們所接觸的硬件,是由芯片和其他外圍設備組成的。把軟件和硬件結合,實際上就是把軟件“裝”進芯片的過程。
說要把軟件“裝”芯片,總共分幾步?根據(jù)是否有操作系統(tǒng),分兩種情況。
一種是有操作系統(tǒng)的,比如要在手機上安裝微信,需要將安裝包下載到手機上,并進行安裝操作。這是利用操作系統(tǒng)提供的接口進行的安裝。
另外一種是沒有操作系統(tǒng)的,需要有專門的軟件寫入設備作為輔助,比如遙控器里的程序。
編程語言是什么
通過上面的解釋,你大概可以明白程序員可以把普通字符轉化成軟件并進而為你提供服務,簡化的過程如下:
字符 → 代碼 → 軟件 → 與硬件結合 → 完成任何你可以想象的功能
這其中最基礎的,是字符轉化為代碼的過程,編程語言就是這個轉化過程的規(guī)則。
說起來有點繞口,我們還是舉個例子吧。幾乎所有編程語言的啟蒙書里第一個例子都是輸出“hello world”的,這是因為它是世界上的第一個程序。
C語言的版本是這樣式兒的:
#include<stdio.h>
void main() {
printf("Hello World!\n");
}
而JavaScript語言的版本則是這樣的:
<script>
alert('Hello World!');
</script>
可以看到,按照編程語言的書寫規(guī)定,字符順利的編程了一行行的代碼。
既然同樣是語言,就可以和我們平時說的中英文就對比來理解,只不過一個是用來編程的,一個是用來說話的。
abcd等26個字母,可以組成中文的拼音,也可以組成英文的單詞;在編程語言里,除了26個字母外,還有0-9的數(shù)字、大小括號等諸多字符,眾字符齊心協(xié)力,可以組合出豐富多樣的語言來。
那么可以組合出多少種編程語言呢?通過維基百科,我們可以查詢到600多種。這當然和5000余種的人類交流語言不可匹敵,但也足夠讓程序員頭大了。
何以會發(fā)明如此多的語言,是因為不同的語言有不同的功用。比如C語言,常用在嵌入式應用中,而HTML語言,則多用在網(wǎng)頁展示中。
如何了解更多
上面羅列了一些關于程序員和軟件的碎碎念,如果你想了解更多關于程序員,甚至將找個程序員做男/女盆友,可以通過如下幾個途徑:
- 找個程序員做朋友,向他請教問題,最好不要在半夜打擾他,因為他正在寫代碼的勁頭兒上
- 在程序員扎堆的論壇里,如oschina、csdn等,說一句“PHP是世界上最好的語言,沒有之一”,然后會有一群人湊上來和你的解(si)釋(bi)
- 繼續(xù)保持關注本系列