編譯原理收獲感悟思維提升
A. 如何程序員提高自己的邏輯思維
1、 學習一門腳本語言
可以讓你擺脫對底層語言的恐懼感,腳本語言可以讓你很快開發出能用得上的小程序。實踐項目:
處理文本文件,或者csv (關鍵詞 python csv, python open, python sys) 讀一個本地文件,逐行處理(例如 word count,或者處理log)
遍歷本地文件系統 (sys, os, path),例如寫一個程序統計一個目錄下所有文件大小並按各種條件排序並保存結果
跟資料庫打交道 (python sqlite),寫一個小腳本統計資料庫里條目數量
學會用各種print之類簡單粗暴的方式進行調試
學會用Google (phrase, domain, use reader to follow tech blogs)
為什麼要學腳本語言,因為他們實在是太方便了,很多時候我們需要寫點小工具或是腳本來幫我們解決問題,你就會發現正規的編程語言太難用了。
2、 用熟一種程序員的編輯器(不是IDE) 和一些基本工具
Vim / Emacs / Notepad++,學會如何配置代碼補全,外觀,外部命令等。
Source Insight (或 ctag)
使用這些東西不是為了Cool,而是這些編輯器在查看、修改代碼/配置文章/日誌會更快更有效率。
3、 熟悉Unix/linux Shell和常見的命令行
如果你用windows,至少學會用虛擬機里的linux, vmware player是免費的,裝個Ubuntu吧
一定要少用少用圖形界面。
學會使用man來查看幫助
文件系統結構和基本操作 ls/chmod/chown/rm/find/ln/cat/mount/mkdir/tar/gzip …
學會使用一些文本操作命令 sed/awk/grep/tail/less/more …
學會使用一些管理命令 ps/top/lsof/netstat/kill/tcpmp/iptables/dd…<</p>
了解/etc目錄下的各種配置文章,學會查看/var/log下的系統日誌,以及/proc下的系統運行信息
了解正則表達式,使用正則表達式來查找文件。
對於程序員來說Unix/Linux比Windows簡單多了,學會使用Unix/Linux你會發現圖形界面在某些時候實在是太難用了,相當地相當地降低工作效率。
4、 學習Web基礎(HTML/CSS/JS) + 伺服器端技術 (LAMP)
未來必然是Web的世界,學習WEB基礎的最佳網站是W3School。
學習HTML基本語法
學習CSS如何選中HTML元素並應用一些基本樣式(關鍵詞:box model)
學會用 Firefox + Firebug 或 chrome 查看你覺得很炫的網頁結構,並動態修改。
學習使用javascript操縱HTML元件。理解DOM和動態網頁,網上有免費的章節,足夠用了。或參看 DOM 。
學會用 Firefox + Firebug 或 chrome 調試<</p>
在一台機器上配置Apache 或 Nginx
學習PHP,讓後台PHP和前台HTML進行數據交互,對伺服器相應瀏覽器請求形成初步認識。實現一個表單提交和反顯的功能。
把PHP連接本地或者遠程資料庫 MySQL(MySQL 和 SQL現學現用夠了)
跟完一個名校的網路編程課程,不要覺得需要多於一學期時間,大學生是全職一學期選3-5門課,你業余時間一定可以跟上
學習一個+ Ajax (非同步讀入一個伺服器端圖片或者資料庫內容)+JSON數據格式。
HTTP: The Definitive Guide 讀完前4章你就明白你每天上網用瀏覽器的時候發生的事情了(proxy, gateway, browsers)
做個小網站(例如:一個小的留言板,支持用戶登錄,Cookie/Session,增、刪、改、查,上傳圖片附件,分頁顯示)
買個域名,租個空間,做個自己的網站。
B. 讀書活動個人讀書方法總結
讀書活動個人讀書方法總結
書是智慧的翅膀,書是我們人類最寶貴的財富。在學校組織的營造書香校園系列活動中,為了給學生營造一個書香環境,為了讓每一個孩子都與書交朋友,為了激發他們讀書的興趣,讓他們想讀書、愛讀書、會讀書,從小養成熱愛書籍、博覽群書的好習慣,我班主要做了以下系列工作:
一、閱讀時間,得到保證
1.每兩周安排一節課外閱讀指導課,主要是利用早讀進行必要的指導。
3.回家後學生自主閱讀40分鍾,並做好讀書筆記。基本上每周兩次摘記。
二、為學生提供了閱讀交流和展示的平台
1.生生共讀。每天利用課余時間最少進行四十分鍾的閱讀,並進行讀書心得交流。
2.師生共讀。從老師自身做起,以身作則,每天做到和同學們一起讀書。師生同讀一本書,在班上講故事相互交流。
3.教給學生掌握幾種常見的閱讀方法:一是精讀法,要求每分鍾讀200字以上,理解率在90%以上;二是略讀法,要求每分鍾讀200~400字之間,理解率在80%左右;三是快讀法,能一目十行法,要求每分鍾讀400字以上,理解率達到70%。
4.指導學生針對性的閱讀。
(1)告訴學生讀書要在心中有個自讀提綱:比如①看見了題目你想到些什麼②讀後你知道了什麼還想知道些什麼③你還有哪些不明白的問題要求學生做到眼到心到。
(2)然後重點強化「不動筆墨不讀書」的方法:①圈點勾畫。即用相關的符號在書上記錄下自己閱讀時的見解、感受。②做批註。即在文章旁邊寫出自己的見解和感受。
5.布置實踐性作業,鍛煉實踐能力。為了檢查學生的閱讀質量,開展相應的活動。如利用讀書卡開展「向你推薦一本好書」、「讀書心得」等內容,讓學生聯系實際談讀書心得,大家一起進步。通過讀書筆記、手抄報讓學生展示從課外閱讀中獲取的知識。
三、閱讀內容,得到落實
1、發揮班級讀書角的作用。鼓勵每位學生從家裡拿五本書來,和學生交換看,豐富讀書資源。
2、利用好語文同步閱讀。和課文配套的同步閱讀我們都要求學生能閱讀好。
3、利用好校本教材《國學》,進行經典閱讀。
有付出必有收獲。一學年來,學生讀書並沒有多少可供量化的成果,但從很多學生的寫作水平的逐步提高就可見端倪了。雨果說:「書籍是改造靈魂的工具。」確實好書就如同是好的生活教科書,它能夠教人怎樣做一個正直的人。我相信,隨著時間的推移,只要學生能在老師的引導下,變得熱愛讀書了,變得喜歡思考了,學會怎樣做人了,就是他們讀書後最大的收獲。
個人讀書方法總結2
不過看這個的前提是:每個人的讀書習慣都是不同的,不要隨便「全盤」拿別人的習慣來培養自己的習慣,找到合適自己的才是最重要的。「全盤」二字重點,不要全盤接受別人的習慣。我下面所說的也不一定是讀到我文章的人所需要的。
我的讀書方法,一些是我爸爸培養的,一些是我以後總結的。
1、挑選合適的時間連續閱讀。
我也一樣不推薦計劃閱讀。看了Jun Yang的文章,在這一點有些共鳴。
C專家編程的作者Peter Van Der Linden曾經玩笑的解釋「什麼時候數組與指針相同」這個標題的時候說:
The C Programming Language,第二版(K&R)99頁的底部是:
作為函數定義的形式參數,
然後翻到第100頁,緊接前一句,
char s[]和char* s是一樣的。
嗚呼,真是不幸,這么重要的一句話竟然在K&R第二版種被分別印在兩頁上。
嗯,如果按計劃看這樣的書,恰巧看到99頁,而不看100頁,那麼100頁的關鍵部位豈不是看不到?呵呵,玩笑。
畢竟連續閱讀頭腦才有印象。看書不是鍛煉,看書不是鍛煉記憶力,獲取書本知識不能「量化」。
2、快速瀏覽,然後多看幾遍。
這個是我爸爸在我小時候就給我提的,我接受了這個建議到現在。他給我說:書你一遍看完就掌握其中重要的內容是不現實的。但是在掌握之前要有個大概的印象,掌握這個印象的方法就是快速瀏覽,不要知道某些條目是為什麼,需要研究的重點就記下來,第二次看的時候再去仔細看,能理解多少就是多少,第一次要以看完為目的。而真正掌握,是隨後的通讀,有了第一遍的基礎,隨著看這本書的次數增加,看書速度會越來越快,因為頭腦里早已經知道那些是沒有掌握的,已經掌握的就會快速略過,但是會加深印象。此後可以帶著實際問題從新來翻閱該書,會有更深的理解。《C++Primer第三版》潘愛民老師翻譯的版本,我在2002年購買到現在看了不知道多少遍了。從最初的花了近3個月的瀏覽第一遍,到現在的可以花一天就可以通讀一遍。期間給我帶來了不少好處。
曾經非常非常不待見這種方法,自從親身使用過好感到確實是好方法。特別是一些技術書籍,盡管你第一遍看的很仔細,你仍然不能記住對你來說第一次接觸到的概念,讀多了(可能跟艾賓浩斯曲線有關吧),記住的概念多了,也就更好理解了。
3、學會記憶也要學會忘記。
記住重點,盡量忘記細節。甚至記住哪本書可以找到這個概念就夠了,然後忘記它。每個人對待書的態度不同的,或許與自己的成長經歷有關。我的習慣是,記住重點,想了解細節再去查。學會記住很難,其實學會忘記也很難。有時候記憶是一種負擔,日積月累會很沉重,不用的知識會越來越多,而且書承載的是作者他的想法,看書在吸收知識的時候,無形中也在被作者所「干涉」思想。但模仿的過程是學習的重要過程,但脫離不了模仿就不能成為自己的思想和知識。學會查是一種重要的手段,還是《C++Primer》,前幾天我還就構造函數和析構函數的細節,特別對多繼承的析構函數作為重點仔細看了一下,有時候一些類似常用的概念,有很多種形式,平時也就用最常用的,那些不常用換言之特殊的概念,能查就可以了。嗯,看了Jun Yang的第二點,他說「知識存儲機器」,呵呵有些誇張了。不過也可以理解他這么說,上面我已經提到書本給我們帶來的負面影響了。
「看書」而不是「讀書」,讀書也是中國常用詞語。英語就是read book。很多人都喜歡用嘴去「讀」書,或者邊看書邊自言自語。這是不太好的一個習慣,讀是一種干擾人思維的方式。語言雖然能加深記憶,但會影響思考。
4、不要「太」強迫自己。
不喜歡就不要看,看不進去可以極端的選擇乾脆不看,或者隔一段時間再看,或者靜下心來的時候再看,或者換一本同類的書,按照自己需要的知識點來尋找書籍。曾經和朋友交流過,他說《編譯原理》也就是那本經典的「龍書」,雖然他也知道很好,可怎麼也看不進去,不知道為什麼。但是看《編譯原理與實踐》,他很容易的就看進去了,之後,他根據掌握的編譯原理寫了一個匯編語言的代碼著色器,可以生成UBB代碼和HTML代碼。
我為什麼要突出不要「太」強迫自己這個「太」呢?有時候也需要強迫一下自己,不能太隨性,也得掌握一個度。有時候很重要的概念書籍,看起來是很枯燥的,朋友建議看的書,可能有他受益過的地方。比如我看《Structure and Interpretation
of Computer Programs(SICP)》,就是那位只能看《編譯原理與實踐》的朋友推薦我看的,北大裘宗燕老師已經翻譯為中文版。經典的SICP是用Lisp描述的,一本古老的介紹functional編程的書。看一點就感覺很乏味,但稍微強迫一下自己,就知道這本書的優異之處。我就是看了求解費波那契數列的使用遞歸,以及遞歸優化那一章,對我以後寫任何語言遞歸的分析,受益那是一輩子的。比如C++之父寫的書,就被公認的哲學味太濃,不適合絕大多數人閱讀,但我就很喜歡看,書本就是這樣,因人而宜,就像配偶一樣,自然有適合自己的一位。
5、有時候需要追根溯源一下,有時候需要換一種角度來看書。
下面是來自:Bejarne Stroustrup在《C++語言的設計與演化》裡面有關「引用」這個概念的提出時候的細節,更多的描述見該書裘宗燕老師翻譯的版本第56頁和第57頁:
引入引用機制主要也是為了支持運算符的重載。Doug McIlroy還記的,有一次我向他解釋某個預示了目前運算符重載模式的問題。他用的術語引用挑起了我的思緒,我嘟囔了一聲謝謝就離開了他的辦公室。當我第二天再出現時就帶著已經基本完成的目前模式。Doug使我想起了Algol 68。
現在引用機製得到了大家認可,一些崇尚C語言高效,但有些抵制C++的牛人們也稱贊了它,這是C++優於C的地方。這里不是討論語言的,關於這些我就不再多說了。自從我看了這一段話之後,我頭腦中所記憶的引用的概念就是「為了支持重載運算符而添加的機制」。嗯,現在可以在很多書或者文章里找到解釋這個引用字眼,引用也不僅僅只用在「重載運算符」上。不過追根溯源看了重載運算符這里,什麼時候該用指針,什麼時候該用引用,我自認為寫的代碼里用的還算合適。中國人非常喜歡對某個知識追根溯源,如果時間允許的話這是好事,從源頭找起,更有助於加深理解。
6、做筆記只是手段而不是最終目的,總結為自己的思想才是最重要的。
看書的最終目的,就是吸收書本知識,成為自己的思想。我個人不喜歡做筆記,我也不喜歡批註,我就喜歡一遍遍的看書。但記住,這是我個人的喜好而已,我父親40歲之前看書就喜歡做讀書筆記,而且很喜歡用沒有條格的速寫本做筆記,但是現在年齡大了看書多反而不去做筆記,喜歡小批註。喜歡做筆記的人,一般是喜歡把自己想要知道的重點記錄下來,可以省卻再次閱讀書本的時間。或者用紙張記錄自己的觀點,給自己做自我總結。這是好習慣,但是我自己就是不喜歡,哈哈:)。我喜歡用我頭腦需要的概念在頭腦中總結,哪怕挑重點的再把這本書看兩遍。以前研究COM的時候做過一段時間的筆記,後來逐漸就放棄了。
7、看到好書後不能讀死書,更不能信奉為「天書」。
看書後不能白看,多多的反思自己,然後有批評的眼光看待這本書,看待自己甚至別人的觀點或者代碼。很早就感悟到「適度」的重要性,盡量不走極端,包括批評本身。但不知不覺就會慢慢走向極端,這時需要適度的修正自己,應用書本的知識。我聽到過許多別人的話,比如C/C++已經過時,JAVA才是最先進的,或者C#有多麼多麼先進,或者UNIX哲學一派,面向對象就是些花哨的東西C語言就足夠用了。這類極端的話有些是自己想的,但絕大多數是人雲亦雲的跟風和受書本的影響。說JAVA先進的,我會問他,你能用JAVA寫操作系統嘛?說面向對象花哨的,我會拿出一些C語言很不容易編寫的方面給他看,比如3D游戲。聽到我的話這些人會閉嘴的,總有長處和短處存在。知其然,知其所以然。
8、書面知識是死的,實際應用才是活的,根據自己的需要,活用參考書。
有些書涉及的知識面很廣,比如參考書,通讀真的很難。如果條件允許的話,尋找一些實際的問題看書,會更好的理解。為了工作,我曾經就快速排序做過研究,也和許多朋友交流過。我帶著這個問題翻看了許多演算法書籍,包括《計算機程序設計藝術》《C演算法》《編程珠璣》之類的經典著作,也參考了許多代碼。《計算機程序設計藝術》很厚,我只取其中一章而已,這本書我沒有看完,不過裡面單獨的幾章,我看的很仔細。當然,我沒看完也沒資格給蓋茨發簡歷.
9、給自己定位,你是否適合從書本獲取知識。
我有個朋友,他幾乎不看技術書,但是他的思維很開闊,很容易理解新概念和方法,我只需要和他說一說他隨便上網看看資料就夠了。他做的系統很耐用,我也不容易挑出毛病。看書反而限制他的思維方式,這點我拍馬趕不上,我只能看看書,呵呵。所以說獲取知識並不一定只有看書,朋友們的交流,網路上的論文和資料都是很好的資源。只給自己一個定位,是不是真的適合看書才能增長你的知識。記得以前和tinyfool有過一些交流,此人就是不需要看太多書籍的.人。
10、最好能和作者交流一下。現在互聯網豐富,我們也可以通過郵件和作者交流了。
我研究快速排序的時候,曾經和Julian Bucknall,《Delphi演算法和數據結構》的作者用電子郵件交流過,他給我指出了我理解上的偏差,讓我受益匪淺。高山仰止,外加猜測理解,還不如直接去問作者。
最後,就用《論語》里的那句話來總結一下:學而不思則罔,思而不學則殆。
很贊,其中的幾個建議也是我的習慣.
此外,我在學習一個知識點的時候,心中始終抱著一個目標,就是最終要能寫出一篇很好的survey,這樣一來在閱讀思考的時候總是有意無意地在整理知識的結構,並且往深處想。我的實踐表明這是一個很棒的技巧。
在樓主的基礎上,補充幾個我自己的讀書習慣
1、在看新書的時候,就會拿幾本一起聯合著來看(而不管那其中的某一本書有多經典)。理解->總結->求交集->挑毛病->求證->結論或疑問(算是critical thinking的一種表現吧)
2、經常重復閱讀。就是說,在這次開始讀的時候,不是接著上次停掉的地方讀,而是多向前覆蓋一些,比如:一大段,幾頁,甚至前面的一整章。有時候還隨機地翻開一本書來讀,如果一旦發現找不到感覺,跟不上作者思路,就努力補充知識直到滿意。
3、先在某些人面前表現得"強大"一些,然後為了彌補自己的過度膨脹,就必須要努力加倍地讀書了……百試不爽的辦法,呵呵,從小學時就這樣幹了
我的想法是,有時候換個角度從作者的角度來思考問題,比如說作者為什麼要這么組織結構,作者是怎麼說明某個問題的,這樣思考的話,有時候會有意想不到的收獲:-)
樓主說的很對,最近在看《演算法導論》,症狀基本和你說的差不多,剛開始時雄心勃勃,但過了一陣,效率降低很多,感覺樓主好像在說我,呵呵,開玩笑了。
前一段時間,為了自己的成就感,我只讀書或者說只在意今天讀了多少頁,對於習題,做得不多或者做得不好。因為讀書的時間相對於做題來說少的多,對於《演算法導論》,你一個小時能看不少頁,但當中的習題,有的一個小時根本做不完,因為你得思考。所以讀書時的成就感大受打擊,久而久之,就只看書,不思考了。當然,但我很興奮的讀完一章之後,發現自己的收獲沒有想像中的那麼多。所以現在,自己把讀書分為兩個階段--首先,對於一章,我會不看習題,一口氣把它快速讀完,這可以提高自己的成就感;之後,我會一節一節的細讀、思考和做題,這期間自己的成就感很高(我一看完這一章了,呵呵),不過第二階段的時間不宜過長,否則自己的成就感會降的很低,所以關鍵還得靠努力。這樣用的時間或許很多,但收獲也會很多。以上兩個階段,有點像預習、讀書和復習。當然,這只針對於好書。一般的書,以增長見識為主。
個人讀書方法總結3
一、 存疑。
要帶著質疑的眼光去讀書,不被作者的觀點和思路牽著
鼻子走,任何事情都有特定的環境,任何觀點都是辯證的,任何真理都是相對的,如果不抱著懷疑的眼光去看書思考,就會越看越迷惑,就會「盡信書不如無書」,無法獲得真知。為了存疑,甚至可以強制自己對作者的觀點去攻擊一番,不把作者的觀點駁倒不放手。
二、 精選。
盡量選經典和暢銷書看,對難以讀下去的書盡快丟進垃
圾桶。
三、 系統。
最好成系統地看書,圍繞一個課題看書,在一段時間集
中看某一方面的書,通過對比、聯系、發散、總結,形成對某個問題的較深入和全面的認識;
四、 濃縮。
每看完一本書都要濃縮成摘要,對好書最好回顧,做筆
記寫心得,寫出自己的概括,貼在書前,作為自己以後復習的內容。看一本消化一本,再看其他的書,以達到書越讀越薄、能力越積越厚的目的;
五、 提綱。
但凡看一本書或者一篇文章,務必先看其目錄或結構,
並記憶揣摩這個結構,如果是一篇文章,還可以先考慮一下作者會寫一些什麼。然後再看某段下邊又寫了幾個層次,這樣從宏觀到微觀逐步領會。在讀完之後,再對自己感興趣的內容進行重讀精讀;
六、 復習。
定時對看過的書和文章進行復習。
七、 帶著問題去讀書。
;C. 編譯原理和演算法分析與設計哪個更難
編譯原理和演算法分析與設計相比,演算法分析與設計更難。
演算法分析的話比較偏重整數規劃,數列的求解,組合數學等等,設計那就要靠悟性了,而且要見多識廣,不管你使用的是什麼語言,也不管語言怎麼發展,數據結構是變不了多少的。演算法設計也差不多,幫助你改善解決問題的思維。
演算法分析與設計的內容:
演算法設計與分析是整個CS課程體系當中最為重要的幾門課程之一,因為這門課是現代計算機科學發展的核心課程,和離散數學、數理邏輯四論地位相當,號稱必修中的必修,不過一般CS系不需要學數理邏輯四論,國內大學的四論教學開展的也不多。因此請大家一定要在這門課打好基礎,學好這門課能讓你未來的工作和學習非常輕松。
D. 如何提高編程的思維邏輯能力
想提高編程的思維能力就要把握好編程思維的這四點:
把握好「理解問題——找出路徑」的高效思維過程,它由「分解—抽象—模式識別—演算法」這四個步驟。
1、分解,簡單來說,就是「把復雜的大問題,拆解成更可執行、更好理解的小步驟」,它能鍛煉我們拆解復雜問題的能力。
2、「抽象思維」能力,它能鍛煉我們聚焦重點,忽略無用信息,並抽取關鍵信息的能力。
3、模式識別,就是「如何找出相似的模式,並高效率解決細分問題」,它能極大鍛煉我們規律整合的能力。
4、演算法,就是根據之前一系列對於問題的理解,設計一步一步的解決路徑,並解決整個問題。
反復訓練提升這 4 項重要的思維模式,建立一種真正「抗打」的認知思維和學習能力,酒客快速提高了!
E. 大哥 大姐 求一篇 學計算機新技術的感想作文 我們聽的是演講 == 800字左右 拜託 急用啊 .......謝謝了
1.開場
自我介紹, 簡單講述我大學的學習的歷程,成果和感想。(1分鍾)
我一直都感慨本年級許多同學在大一時因為缺乏好指引,在一開始就對編程很害怕,對計算機的學習沒有開好頭,動手能力長期跟不上,空會理論,不會實踐,一直拖累到大四,最終選擇忍痛考研或者抱怨找工作難。我也幫助過不少在這方面比較弱的同學,但是總是因為基礎沒打好導致難以提高。我也一直希望學校能在大一的時候就讓同學們明白學習的重要性,打好扎實的專業基礎。現在終於有一次這樣的機會站在這里,為指引大家如何在大學專業技術學習的道路上開好頭做點貢獻。
今天我將結合我自身的經歷和我對計算機的理解,我對編程的感悟,我對大學學習的認識,給大家做報告。
首先問三個問題:
1) qq聊天軟體是用什麼語言寫的(第二天要換個問題)
答對的演講結束後留下來,我要親自給他傳授寶貴經驗,沒人答的話,很遺憾
2) 誰玩電腦游戲比較牛
恩,人很多,大家很踴躍,很好
展示下我寫的人工智慧黑白棋游戲,聲明真正的編程高手基本從來不玩游戲
(結合大四同學長期沉迷游戲最後找不到工作的例子,說明一個嚴肅的問題,只會玩游戲沒有用,會做游戲才牛,鼓勵大家努力學習,讓會玩游戲的同學也熱愛編程,最後也能自己寫游戲)
請大家記住:只會玩游戲沒有用,會做游戲才牛
3) 有沒有人對計算機特別感興趣 (為什麼感興趣)
如果有興趣,對學習計算機有巨大的幫助
興趣是最好的老師,鼓勵他們,勉勵其他人,興趣是可以培養的,要學會培養興趣
2.概述
計算機"科學"與"技術" 包含兩個層面
"科學" 指計算機硬體、軟體與應用的理論知識 理論的學習
"技術" 指軟體開發、工程實踐等技能與方法 能力的培養
我主要講的是如何學習技術(計算機技術)
講之前 澄清一個觀點 計算機技術 不等於 編程技術
編程只是一個工具,編程沒學好不代表你技術就學不好
計算機技術應該是與計算機軟體、硬體和網路三個部分相關的各種科技成果和應用的綜合,包括了多媒體,資料庫,操作系統,嵌入式系統,計算機安全,計算機網路,計算機管理和維護,計算機應用,人工智慧,模式識別,管理信息系統等,在我們生活的方方面面計算機技術幾乎無處不在。
(舉幾個例子)在現在社會,它幾乎與我們的生活息息相關。
(大學和高中的學習方式的區別)(學好技術的重要性)
在大學,學習的方式與高中或小學是有很大的區別的,大學更大,大學更自由,不再是完全跟著老師,不再是只要吃透了老師教授的內容就萬事大吉了,從我這一屆的情況看,許多同學特別是女生在大學還沿襲著高中的學習方式,勤奮刻苦,天天自習,非常認真,上課筆記做得秘密麻麻,把理論學得非常扎實,但是卻嚴重地忽略了實踐能力的培養,理論考試分數很高,但課程設計做不出東西來,顯然這種學習方式是不對的,這和高中的偏科又有什麼本質區別呢。
我覺得理論的學習和技術的學習是同等重要的,二者都不應該輕視,沒有側重點是不可能的,至於如何側重,如何在二者之間找到平衡點就取決於你自己的人生目標了。如果你喜歡研究理論,以後想繼續讀研深造可以稍微偏向理論,把理論基礎打得扎實一些,畢業以後可以留校任教或到科研院所去發展。如果你想走技術路線,那麼你就可以稍稍偏向技術,在不落下理論學習的情況下,把技術學好學精,畢業以後可以去IT企業發展,也可以自己創業,有了一身技術不怕沒飯吃。切莫完全忽視技術最後變成書獃子或完全不顧理論最後只是個代碼搬運工。
大家每個人,從現在開始就要下決心學好技術,那麼,如何學好技術呢。
3.如何學好技術
3.1制定好的學習計劃
3.1.1大一大二:打好基礎
3.1.1.1計算機方面的基本技能的學習
包括計算機眾多的應用技術的學習 和 常見的硬體維護
(大家應該盡量多多掌握計算機方面的基本技能,如word excel ppt access* photoshop* flash* dreamveaver* 結合我的經歷講講,我大一在自己沒有電腦的情況下把這些基本全學了 舉一個考研的同學不會在excel里找自己的名字的例子,如果這些最基本的技能都不會,只能說計算機還沒入門)大二有電腦之後,終於有機會整自己的電腦了,要學習常見的常見的硬體維護(系統崩潰了怎麼辦,如何安裝操作系統,如何分區等)
3.1.1.2專業理論基礎和編程基礎的學習
技術是將理論運用到實踐中去,不能輕視理論,沒有理論何來應用。計算機"科學"與"技術" 中的"科學"和"技術"應該是相互依賴和促進的。
先學好《高級語言程序設計》《數據結構》等專業課,理論基礎扎實了,學應用性技術就更容易了
編程基礎:學精C++(為什麼),可以考慮過渡到 java 或 C# (最好只學一個,為什麼)
(編程的學習會在後面再詳細講)
3.1.1.3珍惜這兩年大學自由學習的黃金時間
(曾經和一家公司的經理開玩笑,總經理感慨的說現在在大學里找一個又能力的學生來幫忙做項目真是很難啊,我說是呀,大學四年,大一的剛進校還在打基礎沒法做,大二的還剛起步沒足夠的能力做,大三的課程會很緊沒時間做,大四的找工作的找工作去了,考研的考研去了,沒人做了),大學四年,實則三年,希望大家不要把最寶貴的時間荒廢在游戲和娛樂上
3.1.2大三:深入學習,確定方向(技術方向,職業規劃)+多多實踐
到了大三,各種專業課會非常多,包括很重要的操作系統,匯編,組成原理,編譯原理,資料庫,計算機網路,軟體工程等等,大家將深入學習計算機的各大核心課程。這時大家的基礎打得也差不多了,可以選擇一門自己比較感興趣的技術並確定自己的技術的一個方向,比如選擇j2ee, .NET,WEB技術,資料庫技術,嵌入式,linux內核開發等等。當然也會有非常豐富多彩的專業選修課可以選擇學習。這段時間大家可以利用課程設計的機會好好鍛煉自己。
3.1.3大四:實踐和進步
大四,如果不打算考研的同學,工作有了著落之後,可以試著做項目,大四基本沒什麼課,相對輕松,這段時間是獲得經驗,銀子和巨大的進步黃金時期。
3.2重視專業課的學習
要把數據結構、演算法、資料庫、操作系統原理、計算機體系結構、計算機網路,離散數學等基礎課程學好
除非你足夠牛,請務必認真聽專業課,有些課像《數據結構》,《編譯原理》,《組成原理》,《操作系統》等等,這種課老師講一分鍾能讓你明白的內容,你自己看要看好幾個月
3.3培養好的思維能力
數學是鍛煉是思維的最好的東西了,他是你思考問題的最得力的工具,他體現著你的思想,在編程中會思考才能編出好的程序。
此外還要注重離散數學,數值分析,線性代數,數字邏輯等等課程的學習,他們對培養好的思維能力大有裨益
3.4激勵創新意識
創新太重要了,不管在哪個學科都重要,計算機同樣需要
3.5培養獨立分析問題和解決問題的能力
遇到問題,要先學會獨立思考,不能凡事依賴他人,盡量自己解決,在獨立解決問題過程中能獲得更大的進步,實在不能解決再請教別人也不遲
3.6培養自學能力和快速獲取知識的能力
自學能力之重要(大學和高中的學習方式的區別)
可以說高中是靠老師,大學是靠自己,要做到嚴格自律,自我約束,必須要學會自學
學習的過程也是學會學習的過程
要充分利用圖書館和網路上的豐富學習資源, 要培養計算機新知識,新技術方面的自學習能力,要學會如何通過網路,書籍,文獻,獨立地快速獲取自己需要的知識和信息
3.7培養團隊協作精神
在一個大型項目中,往往要求各種參與者密切配合才能取得成功。大家要從現在就開始注重團隊協作精神的培養,要學會與人溝通,善於表達,要注意提高自己的綜合素質,成為綜合型人才。
3.8學好英語
包括現在的大學英語和日後的專業英語。
也許有人會問,英語和技術有什麼大的關系嗎。大家是否知道,計算機的發展飛速,國際上新技術不斷涌現,如果今天國外出現了一門新的技術,或者國外某本技術書籍出了新版本,相關資料的中文的翻譯不知道要等到什麼猴年馬月才會出來,現在的許多出版也有了越來越多的英文原版書。
大家要學好英語,培養閱讀專業外語資料的能力,開始會看不懂,看多了自然熟練了。
(講下四六級,四級最好一次就過,六級在大二下結束前最好過)
3.9適時關注新技術
了解學科發展動態,跟上時代步法
3.10勤學苦練,持之以恆
學好技術不是一蹴而就的,要長期堅持。
4.無
5.無
6.關於編程的學習
6.1為什麼要學習編程
編程是軟體開發的基礎,學習計算機,只會編程是千萬不行的,但是開發軟體,不會編程是萬萬不行的
(結合本年級的情況將一下現狀,學習的重要性等)
6.2編程真的那麼難學嗎
(講講編程的苦與樂)
編程真的那麼可怕,那麼枯燥,那麼沒意思嗎?假如真是這樣,為什麼世界上還有那麼多優秀的人樂此不疲。
其實編程並不可怕,可怕的是你的心態。
編程固然很苦,編程時長時間對著屏幕,對身體不好,而且,經常因為考慮不周,會遇到各種各樣的錯誤和麻煩,初學者處處容易受挫。
但是其實編程是很有趣的,編程中充滿著無窮的快樂
首先,你通過編程得到了想要的成果的過程是一種創造的快樂
(編出了有用的東西的那一刻會有一股美好的成就感)
其次,你開發了有用的軟體可以方便自己或他人,方便自己,是一種享受的快樂,方便他人,是一種奉獻的快樂
再次,假如你開發的軟體得到了用戶的認可或好評,會有一種欣慰和滿足感
還有,你可以根據自己的意願寫你想要的東西,經過自己的努力親自實現你心中的願望
然後,編程也是一個挑戰自我的過程,遇到困難想辦法解決的過程是思考的過程,思維能得到鍛煉
最後,在代碼中有一種看不見的美,就像詩一樣,美景全是你的,你可以隨心所欲
編程真的非常有趣,它不僅滿足了我們內心深處進行創造的渴望,讓人頭腦變得靈活,而且還愉悅了每個人內在的情感。
6.3學好編程的建議
6.3.1請熱愛編程
如果想成為編程牛人的話,請熱愛編程。有興趣是最好了,沒興趣也沒關系,可以慢慢培養,當你感受到了編程的樂趣的時候你會愛上它。
6.3.2不要畏難
很多初學者往往都在遇到許多困難,遭受多次挫折後,自信心受到打擊從而對編程喪失興趣
這些困難每個人都會遇到,我在初學編程時也遇到過,關鍵是看你用什麼心態對待,是想辦法解決困難還是選擇逃避。很多問題其實是有很多解決方法的。譬如看書,遇到看不懂的部分,可以暫時跳過,先往後看,看完後面的之後,再回頭看前面跳過的部分往往會有一種豁然開朗的感覺。再比如,編程調試時死活找不到錯誤會很郁悶,這個時候很多同學會束手無策,其實只要在程序不同的地方加上輸出語句,然後運行看有哪些輸出,這樣一步步縮小錯誤的范圍從而確定錯誤發生的位置。等等。。。
不要畏懼困難,要用你的智慧戰勝它。
6.3.3多實踐,多交流
學習編程的秘訣是:編程,編程,再編程;(講講如何動手實踐)
在學校的實驗室就算你做錯一萬次程序都不會有人罵你,如果在公司你試試看!所以多去實驗室上機,現在錯得多了,畢業後就錯得少了。多實踐,多從失敗中吸取教訓,積累經驗。要勤奮,三天打魚兩天曬網是學不好的,學會了的東西一段時間不用就容易忘記,實踐得越多才能記得越牢。
現在大家是大一,可能有人會說沒有電腦不方便,其實實驗室不是只有在老師安排的實驗時間才可以去的,它是是面向計算機專業的學生免費開放的,大家有時間就去實驗機房練習,只要拿著學生證,或者乾脆直接跟那個阿姨說你是計算機的就行了。航海樓7樓的機房和圖書館電子閱覽室也是可以的。我大一的時候甚至還到陽光網吧編程呢。
到大二大三的時候課程設計就會多起來,大家一定要自己動手做,不要去網上搜一個就完事了。
與人交流,分享自己編程中的樂趣和經驗,共同進步。
6.3.4多閱讀書籍和代碼
編程不是非要在電腦上才能學的,閱讀書籍和書中的代碼也是一種學習方式,自己還可以嘗試著改進那些代碼,最後可以把自己的成果拿到電腦上調試
千萬不要忽視書後面的習題
6.3.5養成良好習慣
細節很重要
要細心,沉下心來編程,戒驕戒躁
養成良好習慣,注重編程風格,盡量寫代碼注釋,把寫過的代碼保留下來,以後會有用
6.3.6善於思考
遇到問題動腦筋解決
6.3.7注重基礎
打好編程基礎,除了熟悉基本的語法之外,要深刻理解指針,引用,面向過程思想,類,模板,標准庫,介面,繼承機制,面向對象思想等等,課後習題盡量全做一下
剛才說了,有精力的可以學學 photoshop圖像處理, flash動畫製作,3dmax或maya三維建模,dreamveaver網頁設計,但是不要因為他們花費過多的時間而影響了你基礎的學習,那些都是些應用技術,你學會了更好,不會也沒什麼丟人的,基礎打好了,以後學啥都輕松。
在基礎沒打好的情況下,不要覺得你編的程序只能在黑白的DOS窗口了運行就去學VC做漂亮的窗口,3d程序很有意思就去看OpenGL或DirectX,那些都屬於高級應用,沒有基礎學起來會很吃力。
基礎要扎實,不要覺得C#中沒有指針就扔掉C++, 不要今天看C#,明天搞java
要有明確的方向,計算機技術的發展實在太快,新技術不斷涌現,了解一下就可以了,不要隨波逐流,要沉得住氣
6.3.8選好開發環境
選擇一種適當的開發環境並熟悉它就可以了,不要今天擺弄Visual Studio,明天鑽研Eclipse,後天來個netbeans,在工具的使用的學習上白白浪費時間。
6.3.9選好編程語言
我在選擇語言時,走過一些彎路,浪費了一些精力,我在這里選出一些主流編程語言,對語言特性與環境稍作介紹,希望可以幫助大家,讓大家盡早了解與選擇,少走彎路
C(多用在性能要求較高的場合,如操作系統,嵌入式等)
C++(應用最廣泛、成熟,強大而復雜,兼有性能高和易於構建大型程序的優點,基本是衡量一個國家軟體產業發達程度的核心基礎)
Java(著名的SUN公司推出的,面向對象、安全、跨平台、強大穩健,需要java虛擬機的支持)
C#(微軟推出的完全面向對象,運行在 .NET Framework 環境中新興、易學、強大語言)
Python(新興的面向對象腳本語言,跨平台,語法清新易於使用,代碼優美得像數學一樣,非常容易學)
PHP (目前最流行、強大、穩健的動態網站開發腳本語言,語法類似C++)
ActionScript (Flash的編程腳本,最新版支持面向對象,能基於Flex開發RIA應用)
除此之外,還有vb, vb.net, asp.net, jsp, asp, ruby, Javascript等
這么多五花八門的語言,大家可能都會覺得眼花繚亂了。
其實各種語言之間只是語法不同,編程思想都是相通的,學精一門,了解多門是上策。
" 程序=演算法+數據結構 " 其中並沒有編程語言,說明語言只是程序員與計算機的編譯器溝通的一種工具,程序員用某種語言來表達程序的邏輯結構,計算機中相應的編譯器或解釋器理解這種語言,編譯得到二進製程序或者直接解釋執行。
以上這些語言我在大學前三年全部學過了,有的學得很深,有的很淺。因為人的精力畢竟有限,很多語言學過了之後根本就很少用到,幾乎是白學了,現在我深深的體會到,
語言並不是學得越多越好,與其泛而不精不如有針對性的先精通一門,其他的觸類旁通。
就大家現在的情況,希望大家把當前正在學習的C++學好,學到一定程度的時候,可以繼續深入的研究C++的各種庫,也可以從上面選擇感興趣的新語言學習,如果把C++基礎打好了,後面的學習就會容易得多。
最流行的語言不一定是最好的語言,用的人最多的語言也不一定是最好的語言。
請大家記住,沒有最好的語言,只有最適合某個領域的語言, 在不同的環境下選擇不同的語言就可以了。
6.3.10重視數據結構和演算法
理論上,計算機的任何編程語言都有可能會被淘汰,隨著時間的推移和計算機軟硬體的飛速發展,不斷會有新的語言產生和和舊的語言過時,但不會過時的是數據結構和優秀的演算法。真正的高手應該是善於設計優秀的數據結構和演算法的,應該是具有獨立分析和解決問題的能力並利用計算機程序來實現的,他的思想應該是超脫語言、在更高處的一種升華。
如果某一天,你深切的體會到,真正重要的不是什麼語言而是思想的時候,說明你可以出師了。
F. 學習「編譯原理」有什麼作用
編譯原理內容包括語言和文法、詞法分析、語法分析、語法制導翻譯、中間代碼生成、存儲管理、代碼優化和目標代碼生成。主要是講怎麼做程序的編譯器。需要數學基礎和很強的邏輯思維。編譯原理里的字元閉包是指有限循環。關於閉包這些名詞解釋,你們的課程應該有離散數學吧?會有對這些概念的解釋。編譯原理這書啊。得花老大精力去看了。每一行都會是至關重要的。如果你漏看了哪一節,或許接下來看到的新字母就不知道是什麼意思了。所以要反復看,反復用邏輯思維推敲。做習題,習題類型也就幾種,做熟了就很簡單
G. 編譯原理與嵌入式的關系
總有一天你會想學的。現在不想學可以先放放,能過就行。興趣最重要,別磨滅了。以後用到了自然就想學了。
編譯原理主要講的是如何去做個編譯器。其中的很多概念對開發很有用,如有限狀態自動機。編譯器如何代碼優化,優化了那些部分。做嵌入式應該知道怎麼優化,畢竟資源是有限的。
H. 學習編譯原理的重要性
編譯原理代表了軟體技術的最高層次,它表示了一個由人的理性思維到形式思維的過程,形式思維屬於數學思維,接近計算機思維.編譯原理的技術可以應用到軟體開發的各個方面,包括需求分析,架構設計,模式等等,都可以應用到,語言是人類最偉大的工具.編譯原理以語言為核心,構建了完美的解決方案.將現實生活中待解決的問題,以語言來描述,再翻譯成計算機所識別的語言,形成完美、靈活、高效的神奇演繹。而語言的實現過程,將囊括許多演算法和工具。
學習編譯原理這門課程讓我們在寫代碼的時候更簡潔靈活,同時,學習編譯原理可以提高你自己的程序設計的精簡度以及有利於提高我們編譯程序員的個人素質與能力。我們應該好好學習這門課程。