前言
又是一年開學(xué)季,回想去年,還是新生的我踏入校園,雖然腳下的路走得踏實(shí),但是夢想的路,卻很迷茫。
熱愛編程,卻不知道如何入門,這大概是很多新生共同的疑惑,距離開學(xué)已沒多久,我?guī)У膶W(xué)弟學(xué)妹一只手已經(jīng)數(shù)不過來,總是給他們講著一樣的東西,突然想到,為何不直接把經(jīng)驗(yàn)寫下來,讓他們慢慢看,既能培養(yǎng)他們的自學(xué)能力,也可省下我的一些時間
編程其實(shí)并不難,先理解下面幾組概念
概念
文件、文件夾、路徑
很多同學(xué)使用的電腦都使用的是Windows系統(tǒng),文件是依據(jù)后綴名分類的,不同后綴名代表不同類的文件,雖然這樣理解沒有錯誤,但其實(shí)是條彎路,沒必要這么麻煩,文件就只簡單的分為兩類,文本(字符)文件 和 二進(jìn)制文件,雖然文本文件也是二進(jìn)制儲存的,但是它的內(nèi)容是人類能看懂的字符,比如英文,中文,或者其他有意義的符號集,這些符號雖然人類能看懂,但是電腦不認(rèn)識,電腦只知道電路的開閉,也就是1和0,二進(jìn)制文件就是人類看不懂但是電腦看得懂的文件,也就是全是010101的文件。
文件夾顧名思義就是用來裝文件或文件夾的,這個很好理解。
路徑,文件和文件夾儲存在硬盤中,硬盤可以理解為一座大城市,文件和文件夾就視作房屋,想要在一座城里找到具體的某一間房,當(dāng)然要知道這間房的具體地址才行,不然一間一間地去排查嗎,這個地址,也就是所說的路徑,想要在硬盤中找到某個文件或文件夾,就需要知道它們的路徑才行。
編輯器、編譯器、編程語言
前面說了文件分兩類,一類是人能看懂但是電腦不能看懂的,一類是電腦能看懂人看不懂的。寫代碼,其實(shí)就是在編輯一個文本文件,會使用到編輯器,我們寫的代碼當(dāng)然能看懂是什么意思,但是電腦不懂代碼是什么意思,那么想要讓電腦知道代碼具體的意思,就需要一個“中間人”來做翻譯,這個“中間人”就是編譯器
所以,編輯器是用來編輯文本文件的(也可以編輯二進(jìn)制文件)
編譯器是用來將文本形式的代碼轉(zhuǎn)換成對應(yīng)的機(jī)器碼的(轉(zhuǎn)換過程就叫做編譯)
編程語言有很多種,如 C/C++、 Golang、 Java 等等,但實(shí)際都是殊途同歸,不同語言適用的場景不同罷了,不同語言之間的根本區(qū)別,其實(shí)就是對應(yīng)的編譯器(靜態(tài)語言是編譯器,動態(tài)語言是解釋器)不同,所以想使用一門語言進(jìn)行編程,只需要有語言對應(yīng)的編譯器(解釋器)就行了
圖解
一些簡單的概念講了,可能會有些難以理解,下面就配合圖片來解釋,形象一點(diǎn)
PS:好用的編輯器推薦,Sublime Text,VS Code,Atom,非圖形界面編輯器Vim(神器,強(qiáng)推)
PS:經(jīng)常聽到的IDE這個詞,其實(shí)是 Integrated Development Environment(集成開發(fā)環(huán)境)的縮寫,也就是 編輯器 + 編譯器 + 許多提高效率的小工具
完整流程圖示
Mac
- 輸入
cd Desktop
并敲一下enter鍵 - 輸入
touch hello.c
并敲一下enter鍵,可以發(fā)現(xiàn)桌面上多了一個叫做test.c的文件hello.c -
使用文本編輯器打開這個文件當(dāng)然,用其他的編輯器也都是可以的
-
在打開的編輯窗口里面輸入下面圖示內(nèi)容注意其中的符號都是半角符號
- 輸入完成后,保存(command + S),然后關(guān)閉窗口
- 在剛才的終端窗口中輸入
gcc -Wall hello.c -o hello
并敲一下enter鍵
可以發(fā)現(xiàn)桌面上出現(xiàn)了一個hello文件,就是剛才用gcc編譯出來的可執(zhí)行文件 - 再在終端中輸入
./hello
并敲一下回車鍵
可以看到,終端中輸出了Hello World字樣
如果上面這些步驟都能夠理解,那么相信你應(yīng)該知道如何在Mac上進(jìn)行簡單的編程了
Windows
- 安裝編譯器
- 新建文件
- 編輯文件
- 編譯生成可執(zhí)行文件
- 測試運(yùn)行
Linux
Linux 和 Mac 都是有強(qiáng)大的終端的,操作基本一致,參照Mac
編程語言特點(diǎn)介紹
學(xué)校開設(shè)
咋們系大一上學(xué)期開設(shè)C++的基本語法課程,只講 類和對象(不包括) 之前的內(nèi)容,但推薦自己把全書看完,全書因?yàn)閮?nèi)容淺顯易懂,對自己要求高的同學(xué),建議一周閱讀完,能力有限的同學(xué),建議兩周讀完,讀完后進(jìn)行自學(xué)(如果不知道讀完之后學(xué)什么,可以聯(lián)系你們的學(xué)長)。
大一下學(xué)期開設(shè)Java課程,講的內(nèi)容也只是基礎(chǔ)語法。
學(xué)習(xí)完一門語言的基礎(chǔ)語法后推薦學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)和算法
C
- 接近底層,可以在裸機(jī)上跑
- 高級語言中效率最高,達(dá)到匯編的80%
- 面向過程
- 沒有GC,很多指針需要自己釋放,需要程序員很細(xì)心
C++
- 萬能的
- 面向?qū)ο?/li>
- 標(biāo)準(zhǔn)庫
- 大量的三方庫
Java
- 完備的類庫
- 優(yōu)秀的生態(tài)
- Apache、Alibaba 等優(yōu)秀公司
- 用戶基數(shù)大
- JVM 各種配置
- 運(yùn)行在虛擬機(jī)上,跨平臺
PHP
- 動態(tài)編程語言
- 編程范式難以統(tǒng)一
- 面向?qū)ο蟛糠衷O(shè)計(jì)過于復(fù)雜
- 對 MySQL 支持好
- 解釋執(zhí)行,需要單元測試覆蓋率保證
JavaScript
- 優(yōu)秀的生態(tài)
- 全棧
- EggJS/Ant Design/Element UI
- 函數(shù)第一,相對不易理解
- 語言規(guī)范仍在快速發(fā)展
Python
- 科學(xué)計(jì)算
- 數(shù)據(jù)分析
- 人工智能
- 動態(tài)語言
Golang
- 靜態(tài)類型
- 編譯完成的二進(jìn)制對系統(tǒng)零依賴
- 代碼規(guī)范統(tǒng)一
- 簡化到極致的并發(fā)模式,內(nèi)建的 HTTP 支持
- 促進(jìn) Docker、云的發(fā)展
- 面向接口
書籍推薦
編程語言入門
《The C Programming Language》
數(shù)據(jù)結(jié)構(gòu)與算法
《算法導(dǎo)論》《大話數(shù)據(jù)結(jié)構(gòu)》《算法》(第四版)《算法競賽入門》(第一二版)
計(jì)算機(jī)理論
《深入理解計(jì)算機(jī)系統(tǒng)》《計(jì)算機(jī)組成原理》《編譯原理》
網(wǎng)絡(luò)
《TCP/IP詳解》(卷一二)《計(jì)算機(jī)網(wǎng)絡(luò)(自頂向下)》《圖解HTTP》
數(shù)據(jù)庫
《數(shù)據(jù)庫系統(tǒng)概論》
Linux
《鳥哥的Linux私房菜》《深入理解Linux內(nèi)核》《Linux內(nèi)核源碼解析》