程序員的考試要求:掌握數(shù)制及其轉(zhuǎn)換、數(shù)據(jù)的機內(nèi)表示、算術(shù)和邏輯運算,以及相關(guān)的應(yīng)用數(shù)學基礎(chǔ)知識;理解計算機的組成以及各主要部件的性能指標;掌握操作系統(tǒng)、程序設(shè)計語言的基礎(chǔ)知識;熟練掌握計算機常用辦公軟件的基本操作方法;熟練掌握基本數(shù)據(jù)結(jié)構(gòu)和常用算法;熟練掌握C程序設(shè)計語言,以及C++、Java、Visual
Basic中一種程序設(shè)計語言;熟悉數(shù)據(jù)庫、網(wǎng)絡(luò)和多媒體的基礎(chǔ)知識;掌握軟件工程的基礎(chǔ)知識,了解軟件過程基本知識、軟件開發(fā)項目管理的常識;了解常用信息技術(shù)標準、安全性,以及有關(guān)法律、法規(guī)的基本知識。
我覺得應(yīng)該根據(jù)你的工作需要或者說你的發(fā)展方向而定。
基本上兩大類吧:C/C++和Java。比如,如果你要做企業(yè)級應(yīng)用的你應(yīng)該學習Java和C#;如果你想做嵌入式,那么應(yīng)該學好C語言;其他情況下,在你不知道要做什么之前你可以選擇學習C/C++。
學會這兩大類中的一類,對于你學習其他語言都將是比較輕松,包括腳本語言,動態(tài)語言……1、我的入門是從學習C語言開始的(其實課程是C++),這是我們學校的公共課,我上課比較認真(雖然老師講得很差,而且一段時間后,我就發(fā)現(xiàn)自己的基礎(chǔ)掌握比她好,當然理解深度沒她好),因此,我認為對于完全沒有基礎(chǔ)的人而言,聽別人講比較容易入門。當時的教材是學校自己編的,挺爛的。
建議一(以C/C++為例),對于剛想進入編程的人(就是從來都沒有接觸過編程的人),最好是聽課的方式(自己看的話估計要很慢,而且很痛苦),可以找視頻或者培訓等。C語言推薦入門教材:譚浩強的C語言,最新版是第三版,不過第二版應(yīng)該也可以了(藍色的)。
說明一下:堅決不同意直接看K&R的《The C programming language》,這本書絕對不是初學者可以看懂的,里面講語法的并不多,語法都是合在程序里面講。不過這本書非常好,入門以后一定要看的一本書。
當然可以從C++直接入門,C++之父強烈推薦從C++直接入手。C++推薦入門教材:錢能的C++(紅色的,清華大學出版),這本書第一版不是ISO C++,不過比較經(jīng)典,作者現(xiàn)在也出了第二版了,第二版好像不是太好。
國外的最好的入門教材據(jù)說是:《Acclerated C++》作者是Koenig和Moo夫婦,非常厲害。他們的著作還有《c陷阱與缺陷》《c++沉思錄》。
《Acclerated C++》這本入門的書我沒有看過,我覺得還是先找本國內(nèi)的書好好看,看的差不多了,國外的經(jīng)典書籍隨便看就會覺得很有味道,否則你可能會很受打擊。入門的書至少要看兩三遍(要徹底理解哦 ):)。
如果是C++,我建議后面類的部分至少要理解三到五遍。說明一下,c++模板的部分可以先不用看,如果有興趣的話,等把c++學的差不多了,我覺得可以把模板、STL、泛型編程結(jié)合起來學習,這個又是一個很大的工作量了,又得下很大的功夫。
所以說,C++博大精深啊。建議二、學習過程中要結(jié)合簡單的算法,像冒泡還有類似c語言程序百例這樣的小例子做做;更進一步應(yīng)該做點大一點的項目,最好是控制臺程序。
或者你已經(jīng)著手學習win32、MFC或linux,你也可以結(jié)合平臺做點小的項目。那時我其實并沒有考慮那么多,因為我不是學計算機的,因此我就把參加一些計算機之類的考試當作學習目標。
我當時其實C++語言基礎(chǔ)已經(jīng)很不錯了,但是上機實踐很少(那時我沒有電腦),因此參加省計算機二級,全國計算機三級和全國計算機四級考試,結(jié)果上機都沒有通過。我很郁悶,二級的時候是我不知道怎么樣進那個DOS界面把題目調(diào)出來,三級的時候是很快就編好了,也通過運行了,可是成績出來卻不及格,四級的時候是編好了,可能是我那題目比較難,好像用了兩次循環(huán),結(jié)果那破機器竟然承受不了。
后來一亂就毀了(當然主要是上機太少了)。不過我那些上機都沒有去補考。
二級和三級的時候是自恃水平已經(jīng)遠遠超過考試要求了(^_^,見笑了,可能是因為等級考試還是比較簡單的),四級的時候則因為自己已經(jīng)通過高級程序員考試,覺得補考上機好像沒必要。(我高程和四級都是在2003年考的)。
建議三:定位學習方向(見附錄一)并好好學習計算機基礎(chǔ)知識。在你還不確定學習方向,或者你還在大學本科期間,那么我認為應(yīng)該先把計算機的基礎(chǔ)知識好好學習一下。
我認為計算機必學的基礎(chǔ)課程而且要精學——首先是數(shù)據(jù)結(jié)構(gòu),其次是操作系統(tǒng)、軟件工程,數(shù)據(jù)庫。這四門課不管你將來想從事哪個方向的基本上都會用到。
當然,有時間的話,其他基礎(chǔ)課都是應(yīng)該掌握的,離散數(shù)學、組成原理、體系結(jié)構(gòu)、網(wǎng)絡(luò)、編譯原理甚至跨學科的。方向是很重要的,因為知識其實是無限的,一個小小的領(lǐng)域就夠你研究很久了。
本科生可能還沒有什么方向的感覺,但是到了研究生你一定要清楚自己到底想要做什么,要往哪個方面發(fā)展,不要盲目學,瞎學亂學,否則最后可能看似什么都會,其實什么都不會。我也曾經(jīng)學習過Java一段時間,這篇文章既然是談編程語言的入門學習,我也簡單說一說。
因為有了比較C++扎實的語言基礎(chǔ),所以Java學起來比較輕松。我先找了國內(nèi)一本薄薄的教材很快看了一遍(幾乎都理解,但是只看了一遍),空閑的時間配合清華張孝詳老師的java視頻。
以后其實才算我真正要開始入門JAVA的學習,我用了是《core java》中文第六版(本來想用候捷翻譯的第二版的《Thinking in Java》,發(fā)現(xiàn)被同學弄丟了),這本書我差不多用了20天才把里面的知識都搞懂,當然包括程序風格的模擬,最重要的時我把有關(guān)GUI編程的那三章里面的程序例子幾乎可以默寫出來(當然,那是因為我理解了,其實這樣就變成了我的知識了),里面的API我也記得差不多了。(說明:Java里面的GUI編程沒什么用處了,建議大家先跳過,GUI不是Java的長處,如果以后需要的話再查手冊或者再。
如果你是學生,或者如果你有充足的時間。我建議你仔細的掌握下面的知識。我的建議是針對那些希望在IT技術(shù)上有所成就的初學者。同時我還列出了一些書目,這些書應(yīng)該都還可以在書店買到。說實在的,我在讀其他人的文章時最大的心愿就是希望作者列出一個書單。
大學英語——不要覺得好笑。我極力推薦這門課程是因為沒有專業(yè)文檔的閱讀能力是不可想象的。中文的翻譯往往在猴年馬月才會出來,而現(xiàn)在的許多出版社干脆就直接把E文印刷上去。學習的方法是強迫自己看原版的教材,開始會看不懂,用多了自然熟練。吃得苦下得狠心絕對是任何行業(yè)都需要的品質(zhì)。
計算機體系結(jié)構(gòu)和匯編語言——關(guān)于體系結(jié)構(gòu)的書遍地都是,而且也大同小異,倒是匯編有一本非常好的書?!?0x86匯編語言程序設(shè)計教程》(清華大學出版社,黑色封面,楊季文著)。你需要著重學習386后保護模式的程序設(shè)計。否則你在學習現(xiàn)代操作系統(tǒng)底層的一些東西的時候會覺得是在看天書。
計算機操作系統(tǒng)原理——我們的開發(fā)總是在特定的操作系統(tǒng)上進行,如果不是,只有一種可能:你在自己實現(xiàn)一個操作系統(tǒng)。無論如何,操作系統(tǒng)原理是必讀的。這就象我們?yōu)橐粋€芯片制作外圍設(shè)備時,芯片基本的工作時序是必需了解的。這一類書也很多,我沒有發(fā)現(xiàn)哪一本書非常出眾。只是覺得在看完了這些書后如果有空就應(yīng)該看看《Inside Windows 2000》(微軟出版社,我看的是E文版的,中文的書名想必是Windows 2000 技術(shù)內(nèi)幕之類吧)。
數(shù)據(jù)結(jié)構(gòu)和算法——這門課程能夠決定一個人程序設(shè)計水平的高低,是一門核心課程。我首選的是清華版的(朱戰(zhàn)立,劉天時)。很多人喜歡買C#版的,但我覺得沒有必要。C#的語法讓算法實現(xiàn)過程變得復雜多了,而且許多老師喜歡用模塊這一東西讓算法變得更復雜。倒是在學完了C版的書以后再來瀏覽一下C#的版的書是最好的。
軟件工程——這門課程是越到后來就越發(fā)現(xiàn)它的重要,雖然剛開始看時就象看馬哲一樣不知所云。我的建議是看《實用軟件工程》(黃色,清華)。不要花太多的時間去記條條框框,看不懂就跳過去。在每次自己完成了一個軟件設(shè)計任務(wù)(不管是練習還是工作)以后再來回顧回顧,每次都會有收獲。
Windows 程序設(shè)計——《北京大學出版社,Petzold著》我建議任何企圖設(shè)計Windows 程序的人在學習VC以前仔細的學完它。而且前面的那本《Inside Windows 2000》也最好放到這本書的后面讀。
在這本書中,沒有C++,沒有GUI,沒有控件。有的就是如何用原始的C語言來完成Windows 程序設(shè)計。在學完了它以后,你才會發(fā)現(xiàn)VC其實是很容易學的。千萬不要在沒有看完這本書以前提前學習VC,你最好碰都不要碰。我知道的許多名校甚至都已經(jīng)用它作為教材進行授課??梢娖渲匾?。
上面的幾門課程我認為是必學的重要課程(如果你想做Windows 程序員)。
對于其它的課程有這樣簡單的選擇方法:如果你是計算機系的,請學好你所有的專業(yè)基礎(chǔ)課。如果不是,請參照計算機系的課程表。如果你發(fā)現(xiàn)自己看一本書時無法看下去了,請翻到書的最后,看看它的參考文獻,找到它們并學習它們,再回頭看這本書。如果一本書的書名中帶有“原理”兩個字,你一定不要去記憶它其中的細節(jié),你應(yīng)該以一天至少50頁的速度掌握其要領(lǐng)。盡可能多的在計算機上實踐一種理論或者算法。
你還可以在CSDN上閱讀到許多書評。這些書評能夠幫助你決定讀什么樣的書。
根據(jù)軟考程序員職稱的考試內(nèi)容,我們可以得出,程序員需要具備以下的知識。
但這些只是基礎(chǔ),還要不斷擴展。計算機硬件基礎(chǔ)知識。
1. 計算機科學基礎(chǔ)。1.1數(shù)制及其轉(zhuǎn)換。
二進制、十進制和十六進制等常用數(shù)制及其相互轉(zhuǎn)換。1.2數(shù)據(jù)的表示。
數(shù)的表示(原碼、反碼、補碼表示,整數(shù)和實數(shù)的機內(nèi)表示方法,精度和溢出)。校驗方法和校驗碼(奇偶校驗碼、海明校驗碼)。
1.3算術(shù)運算和邏輯運算。計算機中二進制數(shù)的運算方法。
邏輯代數(shù)的基本運算和邏輯表達式的化簡。1.5常用數(shù)據(jù)結(jié)構(gòu)。
數(shù)組(表態(tài)數(shù)組、動態(tài)數(shù)組)、線性表、鏈表(單向鏈表、雙向鏈表、循環(huán)鏈表)、隊列、棧、樹(二叉樹、查找樹)、圖的定義、存儲和操作1.6 常用算法。算法與數(shù)據(jù)結(jié)構(gòu)的關(guān)系,算法效率,算法設(shè)計,算法描述(流程圖、偽代碼、決策表)2. 計算機系統(tǒng)基礎(chǔ)知識。
2.1計算機基礎(chǔ)知識。2.1.1計算機系統(tǒng)的組成,硬件系統(tǒng)、軟件系統(tǒng)及層次結(jié)構(gòu)。
2.1.3 中央處理器CPU。運算器和控制器的組成,常用的寄存器、指令系統(tǒng)、尋址方式、指令執(zhí)行控處理機性能。
2.1.4 主存和輔存。存儲器系統(tǒng)。
存儲介質(zhì)(半導體、硬盤、光盤、閃存、軟盤、磁帶等)。主存儲器的組成、性能及基本原理。
Cache的概念、虛擬存儲的概念。輔存設(shè)備的類型、特性、性能和容量計算。
2.1.5 I/O接口、I/O設(shè)備和通信設(shè)備。I/O接口(總線、DMA、通道、SCSI、并行口、RS232C、USB、IEEE1394)。
I/O設(shè)備的類型和特性(鍵盤、鼠標、顯示器、打印機、掃描儀、攝像頭,以及各種輔存設(shè)備)。I/O設(shè)備控制方式(中斷控制、DMA)。
通信設(shè)備的類型和特性(Modem、集線器、交換機、中繼器、路由器、網(wǎng)橋、網(wǎng)關(guān))及其連接方法和連接介質(zhì)(串行連接、并行連接,傳輸介質(zhì)的類型和特性)。2.2 軟件基礎(chǔ)知識。
2.2.1 操作系統(tǒng)基礎(chǔ)知識。操作系統(tǒng)的類型和功能。
操作系統(tǒng)的內(nèi)核(中斷控制)和進程概念。處理機管理、存儲管理、設(shè)備管理、文件管理、作業(yè)管理、漢字處理。
2.2.2 程序設(shè)計語言和語言處理程序基礎(chǔ)知識。匯編、編譯、解釋系統(tǒng)的基礎(chǔ)知識。
過程(函數(shù))調(diào)用。2.3 網(wǎng)絡(luò)基礎(chǔ)知識。
網(wǎng)絡(luò)的功能、分類、組成和拓撲結(jié)構(gòu)。網(wǎng)絡(luò)體系結(jié)構(gòu)與協(xié)議(OSI/RM,TCP/IP)。
2.4 數(shù)據(jù)庫基礎(chǔ)知識。數(shù)據(jù)模型,ER圖。
數(shù)據(jù)操作(關(guān)系運算)。數(shù)據(jù)庫語言(SQL)。
2.5 多媒體基礎(chǔ)知識。多媒體基礎(chǔ)概念,常用多媒體設(shè)備性能特征,常用多媒體文件格式類型。
3.軟件開發(fā)和運行維護基礎(chǔ)知識。3.2 軟件需求分析、需求定義及軟件基礎(chǔ)知識。
結(jié)構(gòu)化分析概念(數(shù)據(jù)流圖(DFD)、實體關(guān)系圖(ER))。面向?qū)ο笤O(shè)計、結(jié)構(gòu)化設(shè)計基礎(chǔ)知識。
模擬設(shè)計、代碼設(shè)計、人機界面設(shè)計要點。3.3 程序設(shè)計基礎(chǔ)知識。
結(jié)構(gòu)設(shè)計程序設(shè)計,程序流程圖,NS圖,PAD圖。程序設(shè)計風格。
面向?qū)ο笤O(shè)計基礎(chǔ)知識、可視化程序設(shè)計基礎(chǔ)知識。3.4 程序測試基礎(chǔ)知識。
黑盒測試、白盒測試、灰盒測試基礎(chǔ)知識。4. 安全性基礎(chǔ)知識。
安全性基本概念。加密與解密基礎(chǔ)知識。
5. 標準化基礎(chǔ)知識標準化基本概念6. 信息化基本知識。有關(guān)的法律、法規(guī)要點。
7. 計算機專業(yè)英語??荚嚳颇?:程序設(shè)計。
1. 內(nèi)部設(shè)計1.1 理解外部設(shè)計。1.3 物理數(shù)據(jù)設(shè)計。
確定數(shù)據(jù)組織方式、存儲介質(zhì),設(shè)計記錄格式和處理方式。2. 程序設(shè)計。
2.1 模擬劃分(原則、方法、標準)。3. 程序?qū)崿F(xiàn)。
3.1 編程。編程方法和標準。
程序設(shè)計語言的使用。4.程序設(shè)計語言(C語言為必選,其他語言可以任選一種)。
4.1 C程序設(shè)計語言(ANSI C標準)。程序結(jié)構(gòu),語法,數(shù)據(jù)類型說明,可執(zhí)行語句,函數(shù)調(diào)用,標準庫函數(shù),指針。
4.2 C++程序設(shè)計語言(ANSI C++標準)。C++和面向?qū)ο蟪绦蛟O(shè)計,語法和程序結(jié)構(gòu),類、成員、構(gòu)造函數(shù)、析構(gòu)函數(shù)、模板、繼承、多態(tài)。
4.3 Java程序設(shè)計(Java 2)。語言機制(程序結(jié)構(gòu)和語法,類、成員、構(gòu)造函數(shù)、析構(gòu)函數(shù)、繼承、接口)。
4.4 Visual Basic程序設(shè)計(Visual Basic 6.0)。用戶界面設(shè)計。
根據(jù)軟考程序員職稱的考試內(nèi)容,我們可以得出,程序員需要具備以下的知識。
但這些只是基礎(chǔ),還要不斷擴展。 計算機硬件基礎(chǔ)知識。
計算機科學基礎(chǔ)。1.1數(shù)制及其轉(zhuǎn)換。
二進制、十進制和十六進制等常用數(shù)制及其相互轉(zhuǎn)換。1.2數(shù)據(jù)的表示。
數(shù)的表示(原碼、反碼、補碼表示,整數(shù)和實數(shù)的機內(nèi)表示方法,精度和溢出)。校驗方法和校驗碼(奇偶校驗碼、海明校驗碼)。
1.3算術(shù)運算和邏輯運算。計算機中二進制數(shù)的運算方法。
邏輯代數(shù)的基本運算和邏輯表達式的化簡。1.5常用數(shù)據(jù)結(jié)構(gòu)。
數(shù)組(表態(tài)數(shù)組、動態(tài)數(shù)組)、線性表、鏈表(單向鏈表、雙向鏈表、循環(huán)鏈表)、隊列、棧、樹(二叉樹、查找樹)、圖的定義、存儲和操作1.6 常用算法。算法與數(shù)據(jù)結(jié)構(gòu)的關(guān)系,算法效率,算法設(shè)計,算法描述(流程圖、偽代碼、決策表)2. 計算機系統(tǒng)基礎(chǔ)知識。
2.1計算機基礎(chǔ)知識。2.1.1計算機系統(tǒng)的組成,硬件系統(tǒng)、系統(tǒng)及層次結(jié)構(gòu)。
2.1.3 中央處理器CPU。運算器和控制器的組成,常用的寄存器、指令系統(tǒng)、尋址方式、指令執(zhí)行控處理機性能。
2.1.4 主存和輔存。存儲器系統(tǒng)。
存儲介質(zhì)(半導體、硬盤、光盤、閃存、軟盤、磁帶等)。主存儲器的組成、性能及基本原理。
Cache的概念、虛擬存儲的概念。輔存設(shè)備的類型、特性、性能和容量計算。
2.1.5 I/O接口、I/O設(shè)備和通信設(shè)備。I/O接口(總線、DMA、通道、SCSI、并行口、RS232C、USB、IEEE1394)。
I/O設(shè)備的類型和特性(鍵盤、鼠標、顯示器、打印機、掃描儀、攝像頭,以及各種輔存設(shè)備)。I/O設(shè)備控制方式(中斷控制、DMA)。
通信設(shè)備的類型和特性(Modem、集線器、交換機、中繼器、路由器、網(wǎng)橋、網(wǎng)關(guān))及其連接方法和連接介質(zhì)(串行連接、并行連接,傳輸介質(zhì)的類型和特性)。2.2 基礎(chǔ)知識。
2.2.1 操作系統(tǒng)基礎(chǔ)知識。操作系統(tǒng)的類型和功能。
操作系統(tǒng)的內(nèi)核(中斷控制)和進程概念。處理機管理、存儲管理、設(shè)備管理、文件管理、作業(yè)管理、漢字處理。
2.2.2 程序設(shè)計語言和語言處理程序基礎(chǔ)知識。匯編、編譯、解釋系統(tǒng)的基礎(chǔ)知識。
過程(函數(shù))調(diào)用。2.3 網(wǎng)絡(luò)基礎(chǔ)知識。
網(wǎng)絡(luò)的功能、分類、組成和拓撲結(jié)構(gòu)。網(wǎng)絡(luò)體系結(jié)構(gòu)與協(xié)議(OSI/RM,TCP/IP)。
2.4 數(shù)據(jù)庫基礎(chǔ)知識。數(shù)據(jù)模型,ER圖。
數(shù)據(jù)操作(關(guān)系運算)。數(shù)據(jù)庫語言(SQL)。
2.5 多媒體基礎(chǔ)知識。多媒體基礎(chǔ)概念,常用多媒體設(shè)備性能特征,常用多媒體文件格式類型。
3.開發(fā)和運行維護基礎(chǔ)知識。3.2 需求分析、需求定義及基礎(chǔ)知識。
結(jié)構(gòu)化分析概念(數(shù)據(jù)流圖(DFD)、實體關(guān)系圖(ER))。面向?qū)ο笤O(shè)計、結(jié)構(gòu)化設(shè)計基礎(chǔ)知識。
模擬設(shè)計、代碼設(shè)計、人機界面設(shè)計要點。3.3 程序設(shè)計基礎(chǔ)知識。
結(jié)構(gòu)設(shè)計程序設(shè)計,程序流程圖,NS圖,PAD圖。程序設(shè)計風格。
面向?qū)ο笤O(shè)計基礎(chǔ)知識、可視化程序設(shè)計基礎(chǔ)知識。3.4 程序測試基礎(chǔ)知識。
黑盒測試、白盒測試、灰盒測試基礎(chǔ)知識。4. 安全性基礎(chǔ)知識。
安全性基本概念。加密與解密基礎(chǔ)知識。
5. 標準化基礎(chǔ)知識標準化基本概念6. 信息化基本知識。有關(guān)的法律、法規(guī)要點。
7. 計算機專業(yè)英語。考試科目2:程序設(shè)計。
1. 內(nèi)部設(shè)計1.1 理解外部設(shè)計。1.3 物理數(shù)據(jù)設(shè)計。
確定數(shù)據(jù)組織方式、存儲介質(zhì),設(shè)計記錄格式和處理方式。2. 程序設(shè)計。
2.1 模擬劃分(原則、方法、標準)。3. 程序?qū)崿F(xiàn)。
3.1 編程。編程方法和標準。
程序設(shè)計語言的使用。4.程序設(shè)計語言(C語言為必選,其他語言可以任選一種)。
4.1 C程序設(shè)計語言(ANSI C標準)。程序結(jié)構(gòu),語法,數(shù)據(jù)類型說明,可執(zhí)行語句,函數(shù)調(diào)用,標準庫函數(shù),指針。
4.2 C++程序設(shè)計語言(ANSI C++標準)。C++和面向?qū)ο蟪绦蛟O(shè)計,語法和程序結(jié)構(gòu),類、成員、構(gòu)造函數(shù)、析構(gòu)函數(shù)、模板、繼承、多態(tài)。
4.3 Java程序設(shè)計(Java 2)。語言機制(程序結(jié)構(gòu)和語法,類、成員、構(gòu)造函數(shù)、析構(gòu)函數(shù)、繼承、接口)。
4.4 Visual Basic程序設(shè)計(Visual Basic 6.0)。用戶界面設(shè)計。
聲明:本網(wǎng)站尊重并保護知識產(chǎn)權(quán),根據(jù)《信息網(wǎng)絡(luò)傳播權(quán)保護條例》,如果我們轉(zhuǎn)載的作品侵犯了您的權(quán)利,請在一個月內(nèi)通知我們,我們會及時刪除。
蜀ICP備2020033479號-4 Copyright ? 2016 學習鳥. 頁面生成時間:2.690秒