當前位置:首頁 » 編程軟體 » 歸納變數編譯原理

歸納變數編譯原理

發布時間: 2025-05-05 13:06:59

編譯原理常用的查填表技術有哪些它們各自的特點是什麼

解答如下:
技術: 刪除公共子表示式;復寫傳播;刪除無用代碼;代碼外提;強度削弱;刪除歸納變數;合並常量。
編譯原理是計算機專業的一門重要專業課,旨在介紹編譯程序構造的一般原理和基本方法。內容包括語言和文法、詞法分析、語法分析、語法制導翻譯、中間代碼生成、存儲管理、代碼優化和目標代碼生成。 編譯原理是計算機專業設置的一門重要的專業課程。編譯原理課程是計算機相關專業學生的必修課程和高等學校培養計算機專業人才的基礎及核心課程,同時也是計算機專業課程中最難及最挑戰學習能力的課程之一。編譯原理課程內容主要是原理性質,高度抽象。

⑵ 想要學習怎樣編寫程序和製作軟體

你既然喜歡編程,就應該認認真真的學習一門語言,先從VB開始,VB是比較好的入門語言,可視化的,比較簡單,是非常好的入門語言。書籍最少應該准備兩本,不可能一本書籍會包含VB的所有內容,在看書的時候,可以交叉的看,一本書籍中沒有講到的內容可以在另一本中看到,這樣對學習是很有好處的,也能保證所學知識的完整性。學編程是一個很漫長的過程,不要著急,要理論與實踐想結合,常式書籍也是很重要的,看源代碼對學習也是很有幫助的,等你學完這門VB語言之後,學習別的語言是非常簡單,可以嘗試c語言,按照C——C++——VC的順序學習,有助於知識的連貫性,我也希望你能學好的。

學習C語言,譚浩強的《C程序設計》是一部非常好的C語言書籍,學習程序設計是一個非常漫長的過程,不要著急,一本書多看兩遍三遍,學會交叉學習法,在學習C的過程中,可以看看數據結構,編譯原理,操作系統等書籍,對編成都是很有幫助的。最開始學習的時候,先不要編一些比較大的程序,多編一些小程序,比如數組運算,字元組合等等,指針是C語言的精華,是比較復雜的部分。如果有一天你能熟練駕馭指針的操作了,我相信你,你一定能學習好C語言的。

我是2001年接觸編程的,剛開始只是大概了解一下,並沒有進行比較深入的學習,我是從VB開始入門的,學了1年多,然後轉入C語言,按照C——C++——VC的順序學習,C學了兩年,現在開始學習C++,C++的學習是很有難度的,類,標准庫,多態,繼承等等比較抽象難道懂的概念,雖然他秉承了C語言的風格,但是有很多很多是C語言不具備的,要多看書,上機實踐也是必不可少的。《C++編程思想》,《C++標准庫》,這些書都非常好,內容也很全面,常式書籍也是必不可少的,多看源代碼對編程是很有幫助的,也會少走很多彎路。總之,C++的學習是一個比較漫長的過程,大概需要兩年的時間,這只是底限,如果想學通,學精,還需要更多的時間。

我向你推薦一些C++經典書籍:

c++程序設計教程
c++編程思想
c++大學教程
c++程序設計語言
數據結構演算法與應用c++語言描述
c++標准模板庫------自修教程與參考手冊
泛型編程與STL
深度探索c++對象模型
設計模式---可復用面向對象軟體的基礎
重構---改善既有代碼的設計
Essential c++
Effective c++
More Effctive c++
C++ primer

前五本應該屬於入門書籍,後面的屬於學習難度比較大的,想提高C++的編程能力,看看這些書籍有好處。建議你把編程思想這本書多看看。多做練習題,對提高編程水平的幫助是很大的。

其實語言是相通的,一門語言學會了,學習其他語言就比較容易了。

業界有這樣一種說法,因為java這門語言包含了C++的一些特性,掌握了C++,就等於掌握了JAVA的80%,

在掌握了C++之後(我說的掌握指的是,可以熟練用C++編程序了,並沒有要求你完全掌握C++的所有部分,沒有人能達到這一點,因為C++太龐大了,如果能堅持不懈的學習C++兩年到三年的時間了,你就可以學習其他的語言了)可以試著學習一些其他的語言,如JAVA,VC++等等比較復雜的語言.

這時候可以說你已經對程序設計語言有個大體的認識了,可以明確自己學習的方向,根據自己的學習情況而定,是學習一些自己比較感興趣的語言啊(從興趣出發),還是為了找工作啊,開始進行更深入的學習.比如學習windows下的框架編程和.net編程等等比較復雜的語言.

如果是為了找工作的話我建議你學好C,C++,JAVA三門語言.

在我國目前的軟體開發行業中,北方C,C++,JAVA的需求量是非常大的.南方以VB為主.

關於英語對學習程序設計有沒有幫助的文章這個話題已經有很多人議論過了,我個人建議把計算機專業術語弄明白了就可以了,你可以買一本計算機英語教程看一看,對程序設計是有幫助的。其實程序設計當中的英文都是一些非常簡單的,如for,else,while.......並沒有太高深的,而且學習程序設計不像學習網路,如CCNA這類認證需要掌握大量的英文。但是在學習程序設計的時候身邊有兩個工具應該足夠了-----------金山詞霸,計算機詞典。相信你一定能學好程序設計的。

學習數學和學習程序設計有一個共同點------鍛煉邏輯思維能力。在程序設計的學習中涉及到數學的地方並不多,所以也沒有必要去認真的學習數學也可以學好程序設計的。

如果你是一個肯吃苦,肯用心學習程序設計的人,具有堅持不懈的精神的人,我相信,只要你認認真真去學,即使你的英語數學水平再差,你也一定能夠學好程序設計的。

我是一名大三的學生,我也正在學習C++這門語言,一年多的時間,學習的感覺真的很累的,希望能和你成為朋友!

好了,說了這么多,可以參考一下,為自己做個學習計劃,要對自己有信心,最後祝你在學習編程的道路上走的更好更遠,祝你學有所成!!

⑶ 如何才能快速學會編程

認為這門專業很有發展前景,但是卻很高深,因而望而卻步。我從事IT行業多年了,我想以我對專業的理解來和大家聊一聊,與這些熱愛IT行業的朋友共同探討一下編程的奧妙。 進入IT界並不困難 認為進入IT行業困難可能是由以下幾個原因造成的: 1.缺乏信心,中途放棄 認為自己能力不夠,苯。有一些人是非常聰明,但是多數人的IQ都差不多,之所以很多事情沒有做好,可能是其他原因。 認為自己基礎差。其實,只要設置合理,完全可以很快的把基礎知識掌握好 北大青鳥APTACH的課程起點非常的低,適合各種層次的學員學習。 2.切入點錯誤 學習是一個循序漸進、由易到難的過程。很多朋友都選擇了一個很難的目標,但是這個目標是要有其他計算機知識做基礎的,而你又沒有掌握,所以就會學習困難甚至不能學習下去。我個人認為北大青鳥APTACH的課程設置非常合理,適合學員快速的掌握。 3.學習方法不對 掌握好的學習方法,就有事半功倍的效果。我學習編程,包括現在大多數的程序員、軟體工程師,他們的知識都是自己拿書看出來的,當時沒有條件參加學習班學習。所以速度比較慢。一慢,就影響自信心,所以很多人就堅持不下去了。成功的比較少。所以參加一個好的學習班很有必要,北大青鳥APTACH的課程是從印度,包括國際上多年實踐、提煉出來的,加上老師根據自己多年的經驗把一些合理的方法傳授給大家,避免大家走彎路,快速成功。 學習編程最重要的是堅持 計算機編程水平是長期練習出來的,學習編程的最好方法是學習——模仿——創造 當你寫程序寫到一半卻發現自己用的方法很拙劣時,請不要馬上停手;請盡快將餘下的部分粗略的完成以保證這個設計的完整性,然後分析自己的錯誤並重新設計和編寫 設計程序開始時候確實不容易;自己程序設計水平是在不斷的編程實踐中完善和發展的; 每學到一個難點的時候,嘗試著對別人講解這個知識點並讓他理解——你能講清楚才說明你真的理解了; 請不斷的對自己寫的程序提出更高的要求,哪怕你的程序版本號會變成Version 100. XX; 保存好你寫過的所有的程序——那是你最好的積累之一; 勤於思考,掌握精髓 要想成為一名優秀的程序員,最重要的是掌握編程思想、找到編程感覺,而不是死記硬背語言本身。所以,從某種角度上講,很多語言是一致的。學會了C++,JAVA也能夠很快上手。我們面對新的編程語言時,只需簡單了解該語言的語法特點,就可以輕松應對和應用了。一名程序員的高級境界,是在反復的實踐、觀察、分析、比較、總結中潛移默化積累的,絕不是一篇文章或者兩三小時的講解就能夠說清楚的。 要學會編程思想、找到編程感覺,必須從實實在在的編程實際工作中去實踐和體驗。不少朋友在學習編程時只簡單地學習語法、結構,枯燥而且目的性也不強,會大大降低初學者的興趣和學習效果。而一般的書籍,也只從語言本身去講解語法和舉一些針對這些語法的應用例子,跟使用說明書沒有太大差別,沒有起到灌輸編程思想,培養編程感覺的作用。正因為如此,許多大學生雖然在學校學過C語言,但他們之中少有真正精通C語言的編程者,只是簡單了解些語法罷了,許多重要的知識點都含糊不清。 其實,在學習編程過程中,我們不必等到什麼都完全明白了才去動手實踐,只要明白了大概,就要敢於自己動手去體驗。有些人覺得以前從來沒做過而不敢自己單獨動手去做,非要等到什麼都明白後才敢動手實踐,這樣是很難取得進步的。誰都有第一次,有些問題只有通過實踐才能明白,也只有實踐後才能把老師和書本上的知識變成自己的,高手與專家都是這樣成才的 北大青鳥APTACH的課程注意實踐和方法,著重培養學員能力,舉一反三。使學生在學習中不斷的歸納總結,推理和論證。 培養自己綜合能力代碼規范現在的編程,基本都是集體協作的過程,個人英雄時代已經過去。記住,你寫的程序別人是要看的,所以時刻注意代碼的書寫格式和變數的命名,力求規范。規范的書寫代碼顯示了良好的編程素質,越是大型的電腦公司就越重視。 具有整體觀程序員做的往往是部分,但是對整體有感覺就更好了突出重點突出全面上一定要有重點 培養自學能力 自學能力對工作後更重要善於交流和別人交流效果要好博覽群書,廣泛了解業界動態,跟上時代發展

⑷ 學計算機專業要看哪些專業書

學計算機專業要看哪些專業書

計算機專業是一個大的門類,主要看你想學哪個專業方向。如果想學廣告設計方面,可以從平面設計photoshop開始學;如果想學網路技術方面,可以選擇一些網頁編輯、動畫方面的書緝;如果想學程序設計方面可以選JAVA等方面書……
學習計算機讀哪些書有什麼用
1,高等數學:為了及格,同時幫助概率及格
2,概率:為了證明高等數學可以幫助及格
3,線性代數:如果你學習計算機圖形學,就是opengl/direct3d的話,裡面的3d模型的空間坐標用矩陣來表示的,如果你需要把它們進行投影,疊加,移動,就需要矩陣乘法/變換/轉置等等,所以還是很有用的
4,離散數學:主要是給你打下計算機數據模型的理論基礎。裡麵包含集合,數,圖,等等,更重要的是如果你以後要搞研究,研究0錯誤程序,就是完全沒有bug的程序,就需要用它上面的推導理論來對程序經行證明。如果你要通過系統分析員,這個也是要考試的
5,數字電路/計算機組成/計算機技術:如果你是一個很深入的程序員,你會問:為什麼瀏覽器可以顯示那麼多東西->有語言->語言是怎麼開發的->高級語言->高級語言怎麼完成的->匯編->匯編怎麼來的->固化/機器語言->機器語言如何能操縱計算機->在節拍電路的干預下,內部晶元的結構把0/1字元串解碼,操作累加器,匯流排,內存做不同的操作那好,這個過程差一個東西都不可以,如果你只學習裡面的高級語言部分,那豈不是神龍見首不見尾,感覺很不爽???所以你要能自己做一個計算機出來才好!
數字電路是學習門電路組成的,就是如何把流動的電信號保持下來,同時讓他們有規律地變化

計算機組成是讓你用門電路來設計內存/cup/時鍾等等

計算機技術是讓你綜合學到的東西,做一個簡單的計算機出來。

有了哪些知識,當然還要包括編譯原理,軟體工程,操作系統,資料庫,網路,你學習其他的語言,什麼vc/vb/deliphi等等,每種語言不超過3個月你就是高手。你要學windows程序,要用api,只需要15天就可以作出像模像樣的東西。當然,我這里是指語言本身而言。有了這些基礎和語言掌握的熟練,你想學資料庫編程,好,復習一下資料庫的課程,查閱一下sql的語法,1天就有眉目了。你要學網路編程,選擇一種庫,看看文檔,明白函數的用法,也就是一兩天的問題。等你做出點東西,有了信心,你也就有了經驗。這個時候去明白j2ee/. 等等的frame work,就很容易了。參看以下design pattern,你也就胸有成竹,做個小組長也可以。再過幾年,有了機會,說不定就當了manager,等了到了三十多歲,你不想干軟體了,你有計算機組成的基礎,找幾個高手帶你一下,你可以去做單片機的匯編語言編程,可以去做embeded system
所以,學好了基礎,也就是厚積薄發,後面你想怎麼發展都可以!

學了數字電路才知道,原來很神秘的電腦是由一些觸發器,邏輯門組成的,把它們集成再集成,就成了電腦了,解碼器,全加器,計數器......
CMOS不過就是一種存儲器,BIOS不過就是面向硬體的一種已編好的子程序,(和C的庫函數差不多,我認為)學好了匯編,我可以自己編(還讓我花了30人民幣,買了一本CMOS設置書,認為它很高深莫測)

不學好C,怎麼學好WINDOWS程序設計,怎麼能做一個優秀的程序設計人員
不學好前人花幾十年時間總結出來的數據結構,你的進步能有多快,那是讓你踩在巨人的肩膀上。(你要是天才,我就沒話說了,不過要是學了,你會更天才)

這是我自己經歷的一點學習基礎課的過程,它給我解疑釋惑,當然這些問題在行家眼裡可能不值一哂,但它是每一個新手必經的過程。
更為關鍵的是,基礎課給了我們最核心的知識,讓我們能在離開學校後有繼續學習的能力。它給了我們一個知識結構,讓我們能在他的基礎上擴充,把新的東西加入自己的知識框架中,這是基礎課重要的意義所在。很多人提到基礎學好之後,學習新東西很快,就是這個道理。
不可否認的是,基礎課很枯燥,很費勁。但這要看你怎麼去看它,你想一想,學好了他,就能抓到計算機的本質,能讓他對你俯首帖耳,這難道還不夠激動人心嗎?老在別人的基礎之上作設計,卻不懂所以然,不悶嗎?
既然討論的題目是給在校大學生一點建議,那我也說一點兒。

先說技術層面的,在學好專業課的基礎上看一些學校里不講的新知識,新技術,能促進你的融會貫通,但不可本末倒置。

再說最關鍵的,最想說的,請在校的學生們珍惜你的時光,不要都去打了游戲,談了戀愛,時光寶貴,機會難得。
我經常對自己說,如果再讓我上一次學,我會......
可是不會了,我只好對自己說,如果我現在再不學,就會......
於是我努力去學,邊工作,邊學習,捨不得丟掉一節課,在校的學生們可能無法體會聽老師講課的幸福,自學時怎麼也搞不清的東西,老師一句話就茅塞頓開,老師那清晰的思路也讓你受益匪淺(在這里應該感謝那些老師們,雖然他們有些時候的簡略很讓人惱火)。但越學,心裡越沒底,有太多的東西我都沒學好,更有很多東西根本就不知道,正所謂皓首窮經。
我不時的咒罵自己的懶惰,也許是過於愚笨,努力不夠,學習計算機也有三年多了,直到現在,我才覺得自己開始了解計算機,才明確了方向。
我從文科轉入這一專業,而且也不小了,就憑著我對計算機有著強烈的興趣。他是人類智慧的體現,程序設計更是一種藝術,他能讓我們的才華得到充分發揮,我會繼續努力下去的,雖然有些遲了,但為了不更遲。
希望在校的學生們能多珍惜一些時間,不要比我還遲。

下來如果覺得自己接受能力強的話就可以開始學C語言了(注意不是C++),如果感覺有困難也可以先學Pascal過度一下。還有很重要的一點就是千萬不要一開始就學VB,DELPHI,VC之類的東西,這些東西在一開始學會對你造成很壞的影響。有可能會把你引入另外一個錯誤的學習方向而忽略了真正應該掌握的東西。學C主要是學過程話的程序設計,學會把自己的程序分成許多的函數(或過程),養成良好的編程習慣。這時可以多看一下高人的程序,不一定要懂意思,主要是學會別人程序的格式(比如變數如何起名,怎麼劃分函數)。除開掌握基本的控制流語句外,應該學習一些很簡單的I/O函數和數學函數。C的學習主要是你舍棄原來BASIC程序那種把所有語句積成一大堆的風格,要學會使用函數,提高代碼重用性。對於指針之類的東西如果實在看不懂可以先不去管,到後面會有辦法。當你能夠比較自如的用C編寫一些小的計算程序時,你就可以開始你的數據結構的學習了(數學的學習主要是在學校,自己要多用心)。數據結構你可以一點一點漫漫看,並不需要專門空出一段時間來專門研究,這樣的目的是讓你能夠很好的掌握它,要學會用數據結構的知識來規范自己的程序設計和提高程序的效率。學完C我認為接著最好學習匯編。這個或許有許多人都會反對,然而我個人認為這樣是很好的。從最基本的DOS匯編開始,買本《IBM PC匯編程序設計》(清華黃皮)一定要一點一點吃透,實在看不懂就跳,反復的嚴讀是一定可以看懂的。匯編是一定要掌握的,因為它涉及到很多最基本的知識。掌握了匯編和對I/O有了個很徹底的認識後,應該去學編譯原理。這個東西並不要精通,但是一定要知道,在大腦里要有一個這樣的概念,這對你對程序語言的控制能力都有很大的幫助。這樣最基本的學習就算完成了。一般智力正常的人前一段東西應該都是可以掌握的。接著後面的學習就要看你自身的造化了。這個時候你應該研究一下數據結構,不要分散自己學習的注意力,要知道數據結構是異常重要的(相信我,絕對沒錯)如果你覺得自己已經對於樹,連表,堆棧之類的東西和排序,遞歸之類的演算法已經十分清楚,就可以開始學習C++了。學習前一定要有個正確的認識,那就是C和C++是兩個不同的東西。學習C++是為了學習面向對象的程序設計,這個時候你對於指針應該也能夠掌握了(有匯編的基礎),主要抓住C++和C相比的一些新特性,對於多態之類的特性要注意理解掌握,如果沒有搞懂就堅決不要往下學習。一些基本的概念掌握以後可以看一些別人設計的程序,學習別人怎麼利用面向對象的方法來設計程序的。這個東西也是人之間拉開檔次的一個環節,可以和數據結構放在同等重要的地位。我就見過有的人都大學畢業了還搞不懂virtual到底是怎麼一回事情。其實我認為學到這里你已經為你成為一個優秀的程序員打下了很好的基礎,你已經能夠應用C++,懂得面向對象程序設計,對數據結構掌握很好,掌握匯編和編譯原理。接下來的學習就是基於操作系統平台的了,一般是先學windows(Microsoft畢竟是老大),先學win32 api,搞請windows基本消息機制和原理,有匯編基礎基本上不會碰到什麼困難。
其實只要會了API,其餘什麼MFC,VCL都是囊中之物了,都不過是對於API的封裝而已。VC,C++Builder都可輕松拿下,這只是開發工具的問題。以後的OLE(ActiveX),.NET,資料庫就要看自己的發展方向而定了。我在這里強調的是前面的基本能力的學習,後面操作平台雖然知識體系龐大,然而畢竟比較死,更好掌握。最後編程能力的高低主要還是有以下幾點決定:1。編程的習慣 2。數學能力(包括邏輯思維,分析問題的能力) 3。對數據結構的認識能力 4。經驗的多少(包括多使用語言的掌握能力)
學習編程的道路是充滿艱辛,漫長而曲折的,作者羅列了一堆自己知道的編程方面的知識,並且給出了一個具體的順序,所謂先學什麼,後學什麼;沒學會什麼,就一定不要去學另一個什麼.....其中很多內容有一些道理。但是總是難逃片面。

從入門到精通一類的東西看的太多了,難道真的憑借一本書就能從一個電腦盲編程精通的專家了么。我鄭重的建議那些想「速成」高手的人,放棄你的想法吧。一個計算機專業的本科生,要花上4年時間才能畢業,需要學習的專業知識豈是一朝一夕就能掌握的。就算去除一些公共課所佔用的時間,我覺得要入計算機行業這個「門」,至少需要兩年的時間。兩年後才能說,對計算機有一些了解了,知道了計算機的基本組成原理,對時鍾晶振,中斷晶元有一定了解,用匯編簡單控制8259編程。也知道了一些計算機程序設計語言方面的原理,掌握了一倆門傳統的樣板編程語言,了解了i++和++i對於VC的編譯器來說意味著什麼,有了一些數據結構方面的認識,能把現實生活中的一些問題用程序模擬出來。

但這一切也不過是剛剛入門而已,只是打基礎。至於以後再學習Windows系統原理,消息機制,掌握這個類庫,那個類庫;抑或是研究linux內核,進而了解嵌入式系統開發工具和方法,那要看個人喜好了。我只是舉幾個例子,但是隨便那個,要敢說自己已經完全掌握,至少還要幾年吧。

如果上面的東西中有的已經很精通了,可以稱為專家了,那麼恭喜你,你可以考慮把這些東西再總結,提升一個層次,從系統架構角度回顧一下要實現某個需求,通常需要使用什麼技術,多少人,多長時間來開發,成本多少,收益多少,風險又有多少,還可以總結出一些控制軟體開發進度的方法,生成軟體的方法,人們把這些方法歸納起來叫做軟體工程。而你,也應該是一個項目經理了吧。

如果這些東西都學會了,再次恭喜你,你可以考慮能不能把現有的客戶拉到自己身邊來,找個人給自己投資,成立自己的軟體公司。成為浩浩盪盪的軟體創業者中微不足道的一員。

自學了VB,VC,數據結構,離散,操作系統,資料庫原理等。
開學以來做完了數字圖像處理的所有的實驗--有個別實驗還是很難的。我從paperVC++被逼--也算是熟練(離精通差遠了)而系裡其他的同學卻沒有一個自己全部編出來的,都是抄書的。但並不能說明他們的計算機水平都差,比起編程水平,我更佩服那些真正計算機專家--盡管他們不編程。但是他們的研究成果往往大大幫助我們編程,很多編程思想都是他們過去的研究成果!我們就算編出來了--也就是說明我們有點小聰明,但決不可以和系統完備的大智慧相比!就像我們可以利用數學定理計算一些復雜的數學題目一樣,這沒什麼了不起--真正了不起了還是那些定理提出者,和證明者。這一個學期前我一直想好好地把編程好好學學,可是越來越覺得數學功底不足(當然不僅僅只高數)。現在真佩服那些數學家!真正的計算機專家!過去學數據結構時,八皇後,背包,搜索--一直令人頭疼,好像懂,但不爽,記不住。在一個專家(圖靈獎獲得者)的看似簡單思想的指引下--這些演算法統一到了一起-------一切似乎都那麼明了!顯然如果你編程的話也提高編成的水平。還有記得學資料庫原理,開始那段自己在沒有規則指引的條件下想理清楚各種事物的關系時,是那麼的混亂。而有了armstrong公理系統的三條規則---世界就一下子變得清晰!--這個最好的程序員能做到嗎,他也只能每次遇到具體問題,每次發揮它聰明去理關系,也難保不出錯,還要累死大量腦細胞!
既然讀研究生,重點在思想。但我有自知之明,我們那麼好的功底,也許以後就是編編程序,難弄出這種精華的東西,但是注重思想的學習-會對學具體知識起到巨大指導作用。所以我不會覺得編程水平低的就不行--很可能比程序高手的價值高很多倍!
但迫於個人造詣和以後就業的壓力,還是把流行技術性的東西掌握一下好。
說到底,要想成為優秀的程序員,還是要注重基本理論的學習。

終於點到題目上來了。大多數的人都希望自己的東西能夠馬上跑起來,變成錢。這種想法對一個已經進入職業領域的程序員或者項目經理來說是合理的,而且IT技術進步是如此的快,不跟進就是失業。但是對於初學者來說(尤其是時間充裕的大中專在校生),這種想法是另人費解的。一個並未進入到行業競爭中來的初學者最大的資本便是他有足夠的時間沉下心來學習基礎性的東西,學習why 而不是how。時髦的技術往往容易掌握,而且越來越容易掌握,這是商業利益的驅使,為了最大化的降低軟體開發的成本。但在IT領域內的現實就是這樣,越容易掌握的東西,學習的人越多,而且淘汰得越快。每一次新的技術出來,都有許多初學者跟進,這些初學者由於缺乏必要的基礎而使得自己在跟進的過程中花費大量的時間,而等他學會了,這種技術也快淘汰了。基礎的課程,比方數據結構,操作系統原理等等雖然不能讓你立馬就實現一個linux(這是許多人嘲笑理論課程無用的原因),但它們能夠顯著的減少你在學習新技術時學習曲線的坡度。而且對於許多關鍵的技術(比方Win32 SDK 程序的設計,DDK的編程)來說甚至是不可或缺的。

一個活生生的例子是我和我的一個同學,在大一時我還找不到開機按紐,他已經會寫些簡單的匯編程序了。我把大二的所有時間花在了匯編,計算機體系結構,數據結構,操作系統原理等等這些課程的學習上,而他則開始學習HTML和VB,並追趕ASP的潮流。大三的時候我開始學習Windows 操作系統原理,學習SDK編程,時間是漫長的,這時我才能夠用VC開發出象模象樣的應用程序。我曾一度因為同學的程序已經能夠運行而自己還在學習如何創建對話框而懊惱不已,但臨到畢業才發現自己的選擇是何等的正確。和我談判的公司開出的薪水是他的兩倍還多。下面有一個不很恰當的比方:假設學習VB編程需要4個月,學習基礎課程和VC的程序設計需要1年。那麼如果你先學VB,再來學習後者,時間不會減少,還是1年,而反過來,如果先學習後者,再來學VB,也許你只需要1個星期就能學得非常熟練。
幾個重要的基礎課程

計算機操作系統原理-我們的開發總是在特定的操作系統上進行,如果不是,只有一種可能:你在自己實現一個操作系統。無論如何,操作系統原理是必讀的。這就象我們為一個晶元製作外圍設備時,晶元基本的工作時序是必需了解的。這一類書也很多,我沒有發現哪一本書非常出眾。只是覺得在看完了這些書後如果有空就應該看看《Inside Windows 2000》(微軟出版社,我看的是E文版的,中文的書名想必是Windows 2000 技術內幕之類吧)。關於學習它的必要性,ZDNET上的另一篇文章已經有過論述。

數據結構和演算法-這門課程能夠決定一個人程序設計水平的高低,是一門核心課程。我首選的是清華版的(朱戰立,劉天時)。很多人喜歡買C++版的,但我覺得沒有必要。C++的語法讓演算法實現過程變得復雜多了,而且許多老師喜歡用模塊這一東西讓演算法變得更復雜。倒是在學完了C版的書以後再來瀏覽一下C++的版的書是最好的。

軟體工程-這門課程是越到後來就越發現它的重要,雖然剛開始看時就象看馬哲一樣不知所雲。我的建議是看《實用軟體工程》(黃色,清華)。不要花太多的時間去記條條框框,看不懂就跳過去。在每次自己完成了一個軟體設計任務(不管是練習還是工作)以後再來回顧回顧,每次都會有收獲。

Windows 程序設計-《北京大學出版社,Petzold著》我建議任何企圖設計Windows 程序的人在學習VC以前仔細的學完它。而且前面的那本《Inside Windows 2000》也最好放到這本書的後面讀。在這本書中,沒有C++,沒有GUI,沒有控制項。有的就是如何用原始的C語言來完成Windows 程序設計。在學完了它以後,你才會發現VC其實是很容易學的。千萬不要在沒有看完這本書以前提前學習VC,你最好碰都不要碰。我知道的許多名校甚至都已經用它作為教材進行授課。可見其重要。

上面的幾門課程我認為是必學的重要課程(如果你想做Windows 程序員)。

對於其它的課程有這樣簡單的選擇方法:如果你是計算機系的,請學好你所有的專業基礎課。如果不是,請參照計算機系的課程表。如果你發現自己看一本書時無法看下去了,請翻到書的最後,看看它的參考文獻,找到它們並學習它們,再回頭看這本書。如果一本書的書名中帶有「原理」兩個字,你一定不要去記憶它其中的細節,你應該以一天至少50頁的速度掌握其要領。盡可能多的在計算機上實踐一種理論或者演算法。

你還可以在CSDN上閱讀到許多書評。這些書評能夠幫助你決定讀什麼樣的書。

日三省乎己
每天讀的書太多,容易讓人迷失方向。一定要在每天晚上想想自己學了些什麼,還有些什麼相關的東西需要掌握,自己對什麼最感興趣,在一本書上花的時間太長還是不夠等等。同時也應該多想想未來最有可能出現的應用,這樣能夠讓你不是追趕技術潮流而是引領技術潮流。同時,努力使用現在已經掌握的技術和理論去製作具有一定新意的東西。堅持這樣做能夠讓你真正成為一個軟體「研發者」而不僅僅是一個CODER。

把最多的時間花在學習上
這是對初學者最後的忠告。把每個星期玩SC或者CS的時間壓縮到最少,不玩它們是最好的。同時,如果你的ASP技術已經能夠來錢,甚至有公司請你 *** 的話,這就證明你的天份能夠保證你在努力的學習之後取得更好的收益,你應該去做更復雜的東西。眼光放長遠一些,這無論是對誰都是適用的。

相信你已經能夠決定是否學習C#或者什麼時候去學它了。

學計算機專業的需要看哪些書籍呢?

高中起點計算機本科:
1. 計算機科學與技術專業:C語言程序設計、計算機組成原理、數據結構、操作系統、
微機原理及匯編語言、計算機網路、計算機系統結構、軟體工程、面向對象程序設計等。
2. 計算機軟體專業:面向對象程序設計、計算機組成原理、操作系統、數據結構、計算
機網路、軟體工程、編譯原理、分布式系統、軟體項目管理、Oracle資料庫系統等。
3. 電子商務專業:管理學原理、電子商務、物流管理、計算機網路、供應鏈管理、電子商務平台及核心技術、國際商務管理、電子商務案例分析、商務網站建設等。
專科起點計算機本科:
1. 計算機科學與技術專業:計算機組成原理、數據結構、面向對象程序設計、操作系統、計算機系統結構、軟體工程、資料庫原理及應用、計算機網路、嵌入式系統與結構等。
2. 計算機軟體專業:操作系統、數據結構、面向對象程序設計、計算機原理及系統結構、資料庫系統、JAVA程序設計、計算機網路、軟體工程、中間件技術、信息系統集成等。
3. 電子商務專業:管理學原理、資料庫原理及應用、管理信息系統、金融學、電子商務平台及核心技術、物流管理、計算機網路、人力資源管理、供應鏈管理等。

自考計算機專業該看哪些書呢

自考計算機專業的科目你可以到當地的自學考試辦公室買一本《自學考試報考指南》,裡面你所在省的所有自考專業及科目都有!

學計算機專業的都有哪些專業書本?

c語言 c++ java(譚浩強的不錯) ~~~~~~~~~~~~~~~操作系統,數據結構,linux,軟體基礎,計算機網路(自頂向下那本不錯)~~~~~~~~~~~~~

大學計算機專業應該看哪些書

作為過來人,我建議你應該先好好保持英語,至於計算機專業方面的書籍,現在沒必要去看,看看計算機概論就夠了,了解計算機的構造,現在可以想想你要走什麼方向,計算機領域很廣,要是全部按照學校的授課方式,你什麼都要去學,但是後果是你什麼都不精通,找工作沒有絲毫用處。建議你選好具體方向,然後專門研究那個方向,當然,知識嘛,多多益善,但是要有主次

非計算機專業自學計算機編程入門需要看哪些書?

首先計算機基礎要弄清楚,如果對計算機很熟悉,這個可以跳過。
之後是最重要的,就是C語言。基本上計算機編程都是C語言,有的就算不是,一理通百理,學好了C語言,其他的都不在話下。這個是最重要的。
然後是資料庫,這個和C語言來說,就相當簡單了。

急!計算機專業考公務員的話考些什麼內容,還有要看哪些專業書??

國家公務員考試科目:
1. 內容。公共科目包括行政職業能力測驗和申論兩科。有關情況詳見《中央機關及其直屬機構2016年度考試錄用公務員公共科目考試大綱》。
報考中央對外聯絡部、外交部、教育部、商務部、國家外國專家局、全國友協、中國貿促會等部門日語、法語、俄語、西班牙語、阿拉伯語、德語、朝鮮語(韓語)等7個非通用語職位的人員,還將參加外語水平考試,考試大綱請在相關招錄部門網站查詢。
報考中國銀監會及其派出機構、中國證監會及其派出機構特殊專業職位的人員,還將參加專業考試,考試大綱請在考錄專題網站,中國銀監會、中國證監會網站分別查詢。
省公務員考試:大多數省份是考公共科目包括行政職業能力測驗和申論兩科。

遼寧移動計算機專業面試需要看哪些書,計算機專業面試主要考哪些題?萬分感謝!

本人廣東移動員工。資料庫、還有JAVA和C++語言很重要!另外,掌握基本的測試原理和技術也會幫助不少。
移動校招錄取的學歷一般要求研究生以上,當然大牛的本科生也會考慮!
移動目前最缺牛的系統架構師!不是哪個省缺,我能告訴你全網都缺!
所以如果有系統項目經驗,會加分不少!
希望能幫到你!

非計算機專業學習JAVA看哪些書

零基礎學Java》和 《JAVA編程基礎、應用與實例》

要學計算機專業需要了解哪些知識?需要看哪些書?

計算機也有很多專業,比如軟體工程、硬體方面的、網路工程、或者是綜合的計算機科學與技術。等等。看書,想計算機體系結構,操作系統什麼的。

⑸ 編譯原理全部的名詞解釋

書上有別那麼懶!。。。。
編譯過程的六個階段:詞法分析,語法分析,語義分析,中間代碼生成,代碼優化,目標代碼生成
解釋程序:把某種語言的源程序轉換成等價的另一種語言程序——目標語言程序,然後再執行目標程序。解釋方式是接受某高級語言的一個語句輸入,進行解釋並控制計算機執行,馬上得到這句的執行結果,然後再接受下一句。
編譯程序:就是指這樣一種程序,通過它能夠將用高級語言編寫的源程序轉換成與之在邏輯上等價的低級語言形式的目標程序(機器語言程序或匯編語言程序)。
解釋程序和編譯程序的根本區別:是否生成目標代碼
句子的二義性(這里的二義性是指語法結構上的。):文法G[S]的一個句子如果能找到兩種不同的最左推導(或最右推導),或者存在兩棵不同的語法樹,則稱這個句子是二義性的。
文法的二義性:一個文法如果包含二義性的句子,則這個文法是二義文法,否則是無二義文法。
LL(1)的含義:(LL(1)文法是無二義的; LL(1)文法不含左遞歸)
第1個L:從左到右掃描輸入串 第2個L:生成的是最左推導
1 :向右看1個輸入符號便可決定選擇哪個產生式
某些非LL(1)文法到LL(1)文法的等價變換: 1. 提取公因子 2. 消除左遞歸
文法符號的屬性:單詞的含義,即與文法符號相關的一些信息。如,類型、值、存儲地址等。
一個屬性文法(attribute grammar)是一個三元組A=(G, V, F)
G:上下文無關文法。
V:屬性的有窮集。每個屬性與文法的一個終結符或非終結符相連。屬性與變數一樣,可以進行計算和傳遞。
F:關於屬性的斷言或謂詞(一組屬性的計算規則)的有窮集。斷言或語義規則與一個產生式相聯,只引用該產生式左端或右端的終結符或非終結符相聯的屬性。
綜合屬性:若產生式左部的單非終結符A的屬性值由右部各非終結符的屬性值決定,則A的屬性稱為綜合屬
繼承屬性:若產生式右部符號B的屬性值是根據左部非終結符的屬性值或者右部其它符號的屬性值決定的,則B的屬性為繼承屬性。
(1)非終結符既可有綜合屬性也可有繼承屬性,但文法開始符號沒有繼承屬性。
(2) 終結符只有綜合屬性,沒有繼承屬性,它們由詞法程序提供。
在計算時: 綜合屬性沿屬性語法樹向上傳遞;繼承屬性沿屬性語法樹向下傳遞。
語法制導翻譯:是指在語法分析過程中,完成附加在所使用的產生式上的語義規則描述的動作。
語法制導翻譯實現:對單詞符號串進行語法分析,構造語法分析樹,然後根據需要構造屬性依賴圖,遍歷語法樹並在語法樹的各結點處按語義規則進行計算。
中間代碼(中間語言)
1、是復雜性介於源程序語言和機器語言的一種表示形式。
2、一般,快速編譯程序直接生成目標代碼。
3、為了使編譯程序結構在邏輯上更為簡單明確,常採用中間代碼,這樣可以將與機器相關的某些實現細節置於代碼生成階段仔細處理,並且可以在中間代碼一級進行優化工作,使得代碼優化比較容易實現。
何謂中間代碼:源程序的一種內部表示,不依賴目標機的結構,易於代碼的機械生成。
為何要轉換成中間代碼:(1)邏輯結構清楚;利於不同目標機上實現同一種語言。
(2)便於移植,便於修改,便於進行與機器無關的優化。
中間代碼的幾種形式:逆波蘭記號 ,三元式和樹形表示 ,四元式
符號表的一般形式:一張符號表的的組成包括兩項,即名字欄和信息欄。
信息欄包含許多子欄和標志位,用來記錄相應名字和種種不同屬性,名字欄也稱主欄。主欄的內容稱為關鍵字(key word)。
符號表的功能:(1)收集符號屬性 (2) 上下文語義的合法性檢查的依據: 檢查標識符屬性在上下文中的一致性和合法性。(3)作為目標代碼生成階段地址分配的依據
符號的主要屬性及作用:
1. 符號名 2. 符號的類型 (整型、實型、字元串型等))3. 符號的存儲類別(公共、私有)
4. 符號的作用域及可視性 (全局、局部) 5. 符號變數的存儲分配信息 (靜態存儲區、動態存儲區)
存儲分配方案策略:靜態存儲分配;動態存儲分配:棧式、 堆式。
靜態存儲分配
1、基本策略
在編譯時就安排好目標程序運行時的全部數據空間,並能確定每個數據項的單元地址。
2、適用的分配對象:子程序的目標代碼段;全局數據目標(全局變數)
3、靜態存儲分配的要求:不允許遞歸調用,不含有可變數組。
FORTRAN程序是段結構,不允許遞歸,數據名大小、性質固定。 是典型的靜態分配
動態存儲分配
1、如果一個程序設計語言允許遞歸過程、可變數組或允許用戶自由申請和釋放空間,那麼,就需要採用動態存儲管理技術。
2、兩種動態存儲分配方式:棧式,堆式
棧式動態存儲分配
分配策略:將整個程序的數據空間設計為一個棧。
【例】在具有遞歸結構的語言程序中,每當調用一個過程時,它所需的數據空間就分配在棧頂,每當過程工作結束時就釋放這部分空間。
過程所需的數據空間包括兩部分
一部分是生存期在本過程這次活動中的數據對象。如局部變數、參數單元、臨時變數等;
另一部分則是用以管理過程活動的記錄信息(連接數據)。
活動記錄(AR)
一個過程的一次執行所需要的信息使用一個連續的存儲區來管理,這個區 (塊)叫做一個活動記錄。
構成
1、臨時工作單元;2、局部變數;3、機器狀態信息;4、存取鏈;
5、控制鏈;6、實參;7、返回地址
什麼是代碼優化
所謂優化,就是對代碼進行等價變換,使得變換後的代碼運行結果與變換前代碼運行結果相同,而運行速度加快或佔用存儲空間減少。
優化原則:等價原則:經過優化後不應改變程序運行的結果。
有效原則:使優化後所產生的目標代碼運行時間較短,佔用的存儲空間較小。
合算原則:以盡可能低的代價取得較好的優化效果。
常見的優化技術
(1) 刪除多餘運算(刪除公共子表達式) (2) 代碼外提 +刪除歸納變數+ (3)強度削弱; (4)變換循環控制條件 (5)合並已知量與復寫傳播 (6)刪除無用賦值
基本塊定義
程序中只有一個入口和一個出口的一段順序執行的語句序列,稱為程序的一個基本塊。

給我分數啊。。。

⑹ 有幾道編譯原理的題目不知道怎麼做了,求教!

1 選A,*與+的區別在於*包含0
2 B
3 D ABb>Abb>abb
4 D
5 B 循環優化的三種重要技術是: 代碼外提;刪除歸納變數和強度削弱。

1 錯
2 對

⑺ (高分)編譯原理的題,求高手,在線等,急急急!!!!!!

太多了,大概看了下考點:

若源程序是用高級語言編寫的,目標程序是 機器語言程序或匯編程序 ,則其翻譯程序稱為編譯程序.

何謂優化?按所涉及的程序范圍可分為哪幾級優化?
答:優化:對程序進行各種等價變換,使得從變換後的程序出發,能產生更有效的目標代碼。
三種級別:局部優化、循環優化、全局優化。

簡述常用的優化技術有哪些?
答:編譯程序中常用的優化技術有:
(1) 刪除公共子表示式;
(2) 復寫傳播;
(3) 刪除無用代碼;
(4) 代碼外提;
(5) 強度削弱;
(6) 刪除歸納變數;
(7) 合並常量。

一個句型中的最左 B 稱為該句型的句柄。
可選項有:
A. 短語 B. 簡單短語 C. 素短語 D. 終結符號

.遞歸下降法不允許任一非終極符是直接 左 遞歸的。

簡單優先方法每次歸約當前句型的 句柄 ,算符優先方法每次歸約當前句型的 最左素短語 ,二者都是不斷移進輸入符號,直到符號棧頂出現 可歸約串 的尾,再向前找到 可歸約串 的頭,然後歸約。

算符優先文法——設有一不含ε產生式的算符文法G,如果對任意兩個終結符對a,b之間至多隻有 、 和 三種關系中的一種成立,則稱G是一個算符優先文法。

常用的中間語言種類有哪幾種?
答:有逆波蘭式、三地址代碼、抽象語法樹和DAG。

⑻ 計算機專業有哪些課程

主要課程有計算機應用基礎、應用文寫作、數學、英語、德育、電工與電子技術、計算機網路技術、C語言、計算機組裝與維修、企業網安全高級技術、企業網綜合管理、windows server 2008操作系統。

還有區域網組建、Linux伺服器操作系統、網路設備與網路技術(主要學習思科、華為公司設備的配置、管理、調試)、SQL Server、網路綜合布線技術、CAD繪圖等。

計算機學科的特色主要體現在:理論性強,實踐性強,發展迅速按一級學科培養基礎扎實的寬口徑人才,體現在重視數學、邏輯、數據結構、演算法、電子設計、計算機體系結構和系統軟體等方面的理論基礎和專業技術基礎。

(8)歸納變數編譯原理擴展閱讀

計算機專業培養目標

本專業畢業生應獲得以下幾個方面的知識和能力:

1、掌握電子技術和計算機組成與體系結構的基本原理、分析方法和實驗技能,能從事計算機硬體系統開發與設計。

2、掌握程序設計語言、演算法與數據結構、操作系統以及軟體設計方法和工程的基本理論、基本知識與基本技能,具有較強的程序設計能力,能從事系統軟體和大型應用軟體的開發與研製。

3、掌握並行處理、分布式系統、網路與通信、多媒體信息處理、計算機安全、圖形圖象處理以及計算機輔助設計等方面的基本理論、分析方法和工程實踐技能,具有計算機應用和開發的能力。

4、掌握計算機科學的基本理論,具有從事計算機科學研究的堅實基礎。

熱點內容
為什麼登錄鴻蒙平板顯示安卓 發布:2025-05-05 16:07:45 瀏覽:911
如何修改股票賬戶登錄密碼 發布:2025-05-05 16:00:34 瀏覽:601
androidudp視頻 發布:2025-05-05 15:49:38 瀏覽:795
阿里雲伺服器突然很卡 發布:2025-05-05 15:33:50 瀏覽:641
c語言方陣 發布:2025-05-05 15:27:12 瀏覽:544
閑魚安卓怎麼開驗貨寶 發布:2025-05-05 15:27:04 瀏覽:805
c語言寫腳本案例 發布:2025-05-05 15:20:07 瀏覽:264
如何編譯php源代碼 發布:2025-05-05 15:17:00 瀏覽:196
安卓手機微信支付如何人臉識別 發布:2025-05-05 14:56:46 瀏覽:129
讓其他電腦能夠進入伺服器 發布:2025-05-05 14:53:45 瀏覽:135