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