從C語言實戰談C語言編程,談談C/C加加今後發展!
通過實戰,講C語言,談編程,這是系列文章的兩個主要內容。
一、學前要思考
從今天開始,我會按照我的想法一步一步地談論如何編程。可能我的想法和你不太一樣,和其他人不太一樣,這不奇怪,每個人都有每個人做法和想法嘛。我從不是照書宣講,但也不隨便亂講,我還是有系統的、有針對性的、把自己對編程的看法呈現給你們與你們交流。不要拒絕新的嘗試、試試聽聽別人想法,說不定會有一些收穫。
我想問一下讀者,當你要學一門新的語言的時候,你應該首先考慮什麼?你應該怎麼學?你怎麼才算學好了?。你會考慮這些問題嗎?如果你從不考慮這些問題,不知道怎麼去考慮,那我第一課就要告訴你,要學會思考。一個程序員不善於思考就不會是一個好的程序員,記住要學會思考,不習慣也要習慣。
如何思考?思考什麼?學一門語言首先要把學習一門語言當做一個整體來思考。在學之前就要考慮好,為啥要學?怎麼學?學什麼?學多長時間?學到什麼程度?
很多過來的程序員在學習語言的時候,由於沒有很好考慮這些問題,急於編程序、急於看到程序運行出來的結果,或者一切順其自然,沒有急迫感,邊學邊做,若干年後也不知道自己到底學的怎麼樣。這些是我最不願意看到的。
1、 為啥要學?
我認為這個問題一定要從實用主義出發,一定要學了有用。比如,工作需要、找工作需要、做自己項目的需要。總之能夠在近期帶來經濟效益的,可以考慮去學。那些因好奇、因升級、因流行、因新品、因技術而去學則不要浪費時間去學,最多去了解就行了。而如果為了興趣,這個就要考慮了,可以考慮比較一兩個有用的程序語言去學習。人的時間本來不多,而程序員的時間更是不多而且珍貴,所以要珍惜使用。
2、 怎麼學?
我看到大部分人都是找本書,先看,再試,不懂網上去查,是向書學習,向網學習的個人學習。這種方法一定學出來的是一個平均水平的程序員。我提倡的是不要看書(這個方法我在《程序員成長路線圖:從入門到優秀》一書中專門說過),找人學。通過向別人學習,可以加快學習的進程、找到學習的重點、避免無謂的自己長時間查出錯原因,更重要的是培養程序員團隊意識,通過與其他人的交流,取長補短,共同進步。有些同學會說:「我找不會編程的人呀,向誰去學呀?」我只能說,現在會編程的人很多,只要你用心找,一定會找到的。至於人家肯不肯教你,那就要看你的了。
分享之前我還是要推薦下我自己建的C/C++開發學習群:【二四八,八九四,四三零】,都是學C/C++開發的,如果你正在學習C/C++ ,小編歡迎你加入,今天分享的這個案例已經上傳到群文件,大家都是軟體開發黨,不定期分享乾貨(只有C/C++軟體開發相關的),包括我自己整理的一份2018最新的C/C++零基礎資料和C/C++進階教程,歡迎進加入前面我寫過一篇文章談了自己的C/C++學習經驗(我學C/C++的經驗),裡面談到"技巧宛如一顆一顆珍珠",後台有好幾個小夥伴留言,能不能分享一些技巧. 其實我的企鵝號裡面多多少少分享過一些,今天我分享一些自己私藏的非常不錯的技巧和代碼給大家,希望對大家有用!
C/C++遊戲編程比較系統的學習路線
c語言入門 程序設計-演算法-運算符-順序 分支 循環結構。C語言精通 數組-函數字串符
-指針-構造類型-預處理-存儲管理-文件操作-數據結構。c++入門 面對對象編程-類和對象-運算符重載
-派生於繼承,異常處理技術-C++語言 11標準-數據結構-(雙向鏈表-雙向隊列-樹-圖)。c++精通
stl標準模板庫(容器-迭代器-演算法)正則表達式-boost標準模板庫-socket網路編程-大型企業項目實戰:
-員工信息管理系統-推箱子-俄羅斯方塊-伺服器-播放器-人工智慧。windows高級工程師:win32/mfc
-windows高級編程-QT框架編程-大型企業級項目實戰項目(人臉識別-車牌識別-區域網遠程監控-等項目)
linux系統應用程序開發-linux內核構架研究-linux頂級網路伺服器開發及搭建。大型企業項目實戰
(linux內核高級虛擬內存驅動設計-linux網路間諜系統軟體-linux內核網路數據劫持-linux網路閱讀系統開發
等等)上述學習6個月時間左右,如果一天高效率用6個小時學習,加油奮吧,騷年們!
3、 學什麼?
一個語言就像一個大海,你都不知道這個海有多大,有多深,所以,我們如果像平常一樣,去喝幾口海水,是喝不光的。因此,我們更重要的是要掌握喝海水的方法,而不是喝了那幾口海水。學什麼一般人很難說的清,因為,他們面對的無邊的海水。我則更注重方法,我初步總結了一下要學會:
1) 語言環境的安裝
2) 編輯源程序
3) 編譯源程序
4) 運行程序
5) 語言的語法
6) 調試
7) 語言中的架構
8) 語言中重要的系統調用和引用
9) 打包安裝程序製作
我希望能在文章全部發表完成之後,能把這個列成一個表格,便於記憶和學習。其他細節的東西可以不要過多考慮。
4、 學多長時間
學多長時間的確是因人而異,有的人基礎好一些,經驗多一些,腦筋活一些,有人帶一些,學的就快一些。而有的人則相反,則要慢一些。一般情況下,一個月到二個月就能學的不錯了。
5、 學到什麼程度
語言學習無止境,學2年學10年都不能學透的。我還是提倡實用,只有學了以後,能滿足工作要求就行了,就可以告一個段落了。以後,在工作中,可以隨機地學,慢慢積累。
可能有些網友對上面要思考的問題,不太重視,感到學程序那需要考慮這些東西,學編程就是要學語法、學調用就行了。而根據多年的體會,我認為語言本身的語法、函數、調用反而不太重要,那是死的東西,跑不了。而學會思考,學會從流程上學習編程則是重中之重。
二、hello world編程
好吧,再說思考,大家可能會把我扁死不可。我把這次我的C語言的環境告訴大家:AIX操作系統、ORACLE資料庫。AIX可以看成是傳統的UNIX環境,是面向命令行編輯、編譯、運行(不是面向windows)。其實,各行C語言的環境大同小異,大家可以根據自己的環境做適當的調整。如果網友準備好了C語言環境後,我們就可以開始C語言實戰了。
我還是不能免俗,還是照顧到急於看到C語言程序的朋友們,開始我的helloworld編程。
我用vi 編輯了a.c 這個helloworld程序,編譯,並運行。
其流程如下:
1、 編輯a.c
1.在系統命令行鍵入
Vi a.c
2.編輯a.c
#include 「stdio.h」
main()
{
fprintf(stdout,」hello world! 」);
exit(0);
}
2、 編譯a.c
在系統命令行鍵入
cc a.c
3、 運行a.out
在系統命令行鍵入
./a.out
4、 顯示結果
hello world!
好了。第一C語言程序編出來了,運行出來了。你們也可以試試。也算是會編C語言了。
接下來我們要對這個程序進行思考了:
1、 這個程序功能比較簡單,但是,你的重點不要放在程序的功能上。而是放在一個語言的流程上。記住這個流程是:
2、 大家注意了沒有我的源程序名是a.c,而不是取helloworld.c。這關係到源程序取名問題,下次抽空談。
3、 大家注意了沒有這個程序的可執行文件名為a.out,而不是a.exe或a
這個也值得談一談。這個和編譯有關,下面在談編譯的時候,會詳細談的。
4、 大家注意了沒有,運行這個程序的時候,a.out前加了./。這也是一個技巧。在有時候,明明看到目錄下有這個可執行文件就是執行了別的文件。這是保證就是執行當前目錄下的可執行文件的。因為,操作系統在接受命令行命令的時候,是會按照命令路徑的順序去找這個文件的,而當前目錄一般是放在bin目錄之後的。這個命令路徑是放在path環境變數。
5、 關於a.c中每一行程序放在下次再談吧。這次重點還是在流程,希望大家記住我們上學時候學到的東西:
總之,通過本文,如果你記住了程序員要思考,要思考為啥要學?怎麼學?學什麼?學多長時間?學到什麼程度?牢記編程流程: 就算及格了。我對編程十分強調基礎,強調原理,對編程要做到知其然,知其所以然。編程不要急,慢慢來,要克服自己自發的想當然的慾望,克服基於編程的那種衝動,多思考、多思考,這樣你的編程基礎才能打得牢,你今後的編程水平才能有很大的提高。


TAG:冷漠丶 |