㈠ 想自學it,該怎麼學
想要自學it,得明白以下幾點
1. 應該選擇什麼編程語言
可能困擾編程新手最多的一個問題是【我應該學什麼編程語言】或者【我需要學習哪些課程才能做出一個web、一個app】,很多人一直糾結這個問題,陷入了東學一點、西看一點的死循環,到頭來啥也沒學好,這會很浪費時間。
剛上大一的時候,我也很想知道應該選擇什麼編程語言。我問了很多人,網上各種查資料,但所能得到的答案都很片面,多數對這個問題答非所問,總是回答說「某某編程語言難」,「某某編程語言性能好」。其實作為初學者,我們對計算機體系都不了解,就不要過多地去糾結性能,或者難易等因素,原因我等下再說。
如果你有明確的方向,那麼很好選擇。如果你想做演算法、機器學習方向,那麼python是最好的選擇。如果你想做web開發,java、php等都可以。如果想做一些更底層的工作,那麼就可以選c。當然這是建立在你有明確方向的基礎上。可是,很多人都沒怎麼接觸過計算機行業,特別是和我一樣剛入學就被調劑到計算機專業的人。對這些同學來說,各個編程語言就只是個名字,除了叫法不一樣,你根本不知道它們有什麼差別。所以索性不要糾結了,我替你選一個吧。
如果你是在校大學生,那麼你有大把連續的時間,就先學習c,然後再學c++。我個人是學c入門的,也許很多人不理解我為什麼推薦學c,因為c和c++都很難、很復雜,看起來並不適合入門。然而正是它們的難和復雜才能讓你更好地理解計算機系統【計算機系統不是指操作系統】。學習編程不是學習編程語言,而是學習一個計算機生態,即一個龐大的知識體系。只會編程語言而不理解整個計算機的體系,就像只會寫字而寫不出好文章。了解c/c++和了解計算機系統是極為貼合的,向下可以幫助你更容易地理解操作系統、編譯原理、計算機網路、計算機組成原理,為什麼呢?因為較為底層的東西很多都是用c實現的,和系統的貼合度極高,很多教材源碼甚至教程,在講述這些知識的時候都是用c或c++作為媒介。而向上,c++面向對象的機制,也可以做出一些應用,譬如五子棋游戲等,也不會顯得那麼枯燥。花個小半年時間了解c和c++,之後你就會覺得看書、看資料可以輕松很多。
如果你是一個上班族,但是剛剛學習編程,可能學c和c++對你來說有些復雜和困難,因為學習它們確實是很需要時間。你們不像在校生那樣有大把的連續時間,而零碎的時間去學習一個比較復雜的東西效果不見得有那麼好,所以可以先學一些【更容易見效】的編程語言,從python入手吧,至少能快速做出一些小應用,不至於丟失了興趣,但是真的要入門編程又還得看看與計算機系統相關的書籍,這樣才能更深層次地去編程,譬如【深入理解計算機系統】這一本書可以讀很多遍,這本書把整個計算機系統給串起來了。
2.學習編程,我需要學習哪些課程?
我要學哪些課程?我為什麼要學習如高數、離散數學、線性代數、概率論等課程?
這個問題也是之前困擾了我很久的問題。不過我現在想通了,對於【高數、離散、線性代數、概率論】等課程,很好解釋,做演算法的同學肯定知道為啥要學習這些課程。機器學習中會大量用到上述提到的課程,所以會比較好理解。對在校生而言,學校開設的很多課程我們不知道為什麼要學,我們很疑惑,不知道學它有什麼用,這個時候我們就會很糾結,還會產生抵觸情緒。這很正常,因為我們學習得不夠深入,自然不能理解它們的用處。
在我看來,大學本科課程更多的是面向「面」的教學,即什麼課程都教給你一些,但是又講得不那麼深入;而工作或者讀研,更多的則是面向「點」的學習,用到的知識更專。本科時,學校也不知道你以後是去搞演算法、還是搞架構、還是搞伺服器開發,甚至去搞硬體,所以學校需要你學很多課程,至少有個了解。對學生來說,一方面可以從中選擇自己感興趣的點;一方面也可以對未來的就業方向有些啟發。所以即使像數電、模電等課程,雖然之後可能用不著,但是你也要學,並且會花費大量的時間。雖然你最後不一定去搞硬體,但是這些課程也會讓你更容易去理解一些知識,比如cpu中的邏輯器件。
如果你在大一的時候就有一個明確的定位,知道自己今後想從事哪方面的工作,課程與課程之間是可以調一下優先順序的。不過像大學物理,這種課程確實是對編程沒有幫助,但是像我前面所說的,大學教育更注重廣度,大物等課程可能就是為了給你普及生活常識吧。
其實,大學教育的問題是普遍存在的,我認為我們學習一項技能的時候,應該採取的是項目驅動式學習,即需要用到什麼東西時不會了再去學,而不是先填鴨式的都填進腦子,並且在學習的過程中我們還不知道它這是幹嘛用的,等之後用到了,甚至不記得自己學過,反而查資料才會想起:哦,原來我之前學的xx科目是這個用處啊,可是我當時並沒有好好學。很多時候學生時間的浪費可能還是要怪老師、怪學校,他們一開始沒給我們做好充分的課程介紹。所以,在經過比較多的編程和項目實踐後,我認為一個比較好的學習方式是,改良版的項目驅動學習法。即:
學習一段時間,做個小項目,將做項目遇到的問題記下來,針對性地學習相關知識,然後再實踐,再學一段時間理論,讓知識成網狀發射狀地變大。當然,項目驅動式學習有一個弊端,就是每次學習的知識都是項目所需要的,很零碎、不成體系,所以需要改良,即在採取項目驅動學習法的時候每天抽一段時間去完整地讀一本書,或者一個相關問題的完整介紹,這樣就很容易把一些知識成體系地串起來。這樣一段時間下來,慢慢的,你就知道我們為什麼要學那麼多科目,學這些科目能幹什麼。
談到數據獲取,可能最容易想到的是爬蟲,爬蟲是一個在知乎上被說爛了的話題,所以我不想多說它是什麼。很多時候有人覺得爬蟲簡單,為什麼呢,因為有現成的框架,所以獲取少量的數據就比較容易。但是當你需要爬取的數據很大的時候(比如我之前抓取了知乎500萬用戶的數據,在下班的時間、用自己家裡普通的pc,計算機性能並不是那麼好,比不上伺服器,又要在不被封IP的情況下抓到這么大量的數據,然後對數據進行清洗,最後還要可視化展示),使用現成的爬蟲框架就並不是那麼容易實現了。況且,我需要抓很多數據源,並不是一錘子買賣。所以我選擇去開發一個系統,即在現有的框架下進行二次開發,搭建一個屬於自己的爬蟲系統,並植入一些演算法。我在系統中添加了很多中間件,直到現在,它還可以在10分鍾內就部署一個能抓取大量數據的爬蟲應用。
㈡ it怎麼學
學習打字。
學習電腦的第一步就是學會打字,打字是學習電腦的基礎,我們在學習it技術的過程中,需要不斷地輸入文字,搜索內容,查找資料,這些都是需要打字基礎的。
㈢ IT技術應該怎麼學習
首先,IT技術目前已經形成了一個龐大的技術體系,涉及到計算機硬體研發、軟體編程、網路通信、大數據、嵌入式、人工智慧等諸多領域,而且IT技術自身的迭代速度也比較快,所以對於初學者來說,要想學習IT技術應該有一個系統的規劃。
初學者要學習IT技術,應該首先考慮自身的知識結構、能力特點和興趣愛好,在條件允許的情況下,選擇一個計算機方面的職業教育是不錯的選擇,而對於基礎知識比較扎實的本科畢業生來說,未來要想從事IT行業,選擇讀研也是一個不錯的學習路線。
對於一部分想通過自學的方式來學習IT技術的人來說,可以從編程語言開始學起。學習編程語言有三方面好處,其一是編程語言相對比較好學習,入門比較容易;其二是編程語言的實驗環境簡單,有一台電腦就可以了;其三是編程技術是打開IT技術的大門,不論未來要往大數據方向、物聯網方向還是人工智慧方向發展,編程語言都是重要的基礎。
學習編程語言的初期盡量選擇一門全場景編程語言,比如Java、Python和C#就是比較流行的全場景編程語言。從學習難度和未來發展前景兩方面來看,當前選擇學習Python是不錯的選擇,一方面Python比較簡單易學,大部分人完全可以通過自學來掌握,另一方面Python未來在大數據和人工智慧領域有廣闊的應用空間。
最後,初學者在學習IT技術的過程中,一定要注重多做實驗,實驗是學習IT技術的唯一捷徑。
㈣ 學習IT技術要從什麼方面入手
學習IT技術要從以下幾個方面入手:
1.多看書
看書不是一掃而過, 編程需要大量實踐, 練習也得慢慢過, 別人看技術書快,是因為人家都是科班出身,或者從業很多年。你是從零學, 只能惡補基礎,惡補基礎的意思是, 你得像科班一樣花費大量時間, 而不是跟看小說一樣速戰速決,那樣沒用的。人家給你推薦的CSAPP那些書, 對於科班的人當課外書看還得看個1個月, 你如果跟著學,每本書都至少半年。
2.多逛IT相關的論壇和社區
有些技術是靠經驗堆積的,比如整個框架的設計,設計模式的運用。我倒覺得這個能力只要你平時留心,掌握它們只是個時間的問題。
而有些技術,是要去實打實鑽研的,不看透幾本英文原版書,不逛遍幾個論壇,你永遠不能明白。越是難的東西,越能拉開你跟別人的距離。
3.多看大V的文章
大V都是過來人,很多你沒聽說過的問題或者不能解決的難題,他們可能早就遇到過了。現在人人手機不離手,不過有的人是用來學習,有的人卻是用來打游戲或者刷劇!
4.多上課或者多進社群:
現在網上的課有很多很多關於IT技術的,只要你想學,總是會找到相關的課程來學習的。關鍵就在於你是怎麼想的,僅僅是為了業余愛好學習還是為了找一份工作。在社群中除了能學習一些知識以外,還可以跟一些志同道合的朋友相互交流。
以上這些經驗足以讓你入門,如果想系統的學習,是需要專門去學習的!
附:IT學習課程表
㈤ 怎麼學習IT
一、深入學習一門編程語言
沒有掌握任何一門編程語言,就不可能成為一名編程人員。許多程序員試圖在學習之初一次學習幾種編程語言,以便應對他們第一份軟體開發工作的需要,但建議不要在開始時這樣做。同時學習多種語言只會導致混亂,也會分散學習其它技能的精力。
二、學習組織代碼
新手程序員在完成編程語言的學習之後,或者最好在學習編程語言的同時,需要掌握的是如何正確的組織代碼。對於新手程序員來說,簡潔清晰且含義明確的代碼,能讓你輕松地通過面試。提升代碼結構已經成為了軟體開發的重要部分,但是提升的過程卻是十分嚴格的。在這個過程中,雖然不需要編寫新的代碼,但是卻需要和團隊成員一起花費大量時間來維護現有的代碼。
三、開發平台與相關技術
應該至少對一個開發平台以及與之相關的技術或框架有一定的經驗。具備某個特定平台的專業知識,不僅僅意味著需要熟悉平台本身,還需要掌握開發平台常用的開發工具、模式和通用框架。