如何優雅地進入IT世界

以下三段是廢話,請跳過。

 
(廢話段1)有文科生想了解IT世界。這並不是多麼神奇的事,想中小學時代還不分文理時,該喜歡IT的本來就喜歡。小學時,我當着全班的面說將來想成爲“電腦大師”,稱呼雖然腦殘,至少證明我從小就熱愛這東西;高中時姑父問我以後想做什麼,那時詞庫大了,我說想做軟件工程師,非常精準、到位,慶幸自己在成長的同時並未拋棄兒時的愛好與理想;大學志願,我把軟件工程填在第一專業,並如願以償地進去了,然後發現根本沒人願意報這專業,全是調劑過來的。有這麼一份從小到大毫不動搖的愛好與理想,這是一個多麼勵志的故事啊!
 
(廢話段2)然而與此形成鮮明對比的是,我並沒有如飢似渴地學習專業知識,既沒成學霸,也沒成大牛。小學時,光是記住鼠標發明者的名字就勝人一籌了,如今真正接觸這個領域,越來越意識到自己是何等無知,結果就在無知中彷徨度日,進步甚微。現在,我這枚渺小的IT屌絲要寫一篇《如何優雅地進入IT世界》,頓時發現這純粹是件不自量力高調尋噴的蠢事。
 
(廢話段3)然而題既已開,又怎能輕言放棄,上網查詢,思忖片刻,柳暗花明。做這件事,上有大神無數,裝逼無路,況自己尚在學校,不瞭解外頭行情,斷不敢班門弄斧,把自己知道的說出來就可以了。從水平上講,我也只算剛踏入門檻,如何再往進走自己也正在摸索,於是只好把“如何擡腿跨進門檻”的經驗拿出來分享。我是個學生,所能道者大抵也便是學校裏教的內容,但這些課程本身便是讓一個外行成爲內行的系統化途徑,如此而言,我以下要寫的還是具有一定價值的(自我安慰狀)。
 
IT者,Information Technology也,乃信息技術之意,簡釋之就是處理信息的技術合集,籠統地說包括軟硬件兩大部分,個人出於興趣去接觸,軟件是個很好的選擇,零成本,可操作性高,故而此處只討論軟件部分。
 
IT是個魅力十足的神奇世界,它不像別的領域那樣只可遠觀難以把玩。你若對醫學感興趣,最多抓只老鼠研究研究,不可能有機會在人身上動刀子;你若對園藝感興趣,大抵只能買幾樣盆景,一般人無法真正去大規模種植、管理、營銷。IT則好比文學,你寫首打油詩就步入了文學殿堂,你寫個hello world就進入了IT世界,而這一切都是極易上手、無需成本的。
 
然而IT比文學複雜得多,小學生作文與莫言的書用的都是那些字,而在IT界中不同領域、不同層面所用到的技術則截然不同,一輩子都沒法瞭解全部。我們所能做的是,通過一些基礎知識入門,然後選擇自己感興趣的方面再深入學習。PS:這裏要給的不是學習方法,僅是學習內容。
 
基礎中的基礎
我們不妨就從最簡單的hello world開始,從編程開始。衆所周知,計算機的運行靠的是01碼,我們稱之爲機器碼(機器語言),計算機能識別,人看着就頭大了,於是出現了彙編,彙編使用了人能看懂的自然語言中的單詞代替對應的機器碼,比如ADD表示兩數相加,瞬間有了可讀性。彙編相當於對機器語言的直譯(它們同屬低級語言),編寫複雜程序時難度依然很大。其實別說複雜程序了,我單看入門書上的那些簡單的例子就要瘋掉了,一個簡單功能它要寫好多句。而且彙編面向硬件,這臺機子上寫的程序可能在另一臺上就沒法用。
 
於是偉大的發明誕生了,那就是高級語言,我們現在常聽說的C、C++、Java、Pascal、Python等等都是高級語言。編程入門首選C,許多人建議以Python、Ruby作爲第一語言,說是容易上手,但我仍建議選C,或許上手會慢些,但它更接近硬件,更有助於掌握編程語言的思想精髓。而話說回來,學C其實也不難,找本合適的薄書一看。
 
C之後就是C++,這是爲了理解面向對象的思想,所謂世間萬物皆對象,具體怎麼回事這裏就不贅述了。Java也是典型的面嚮對象語言,但C++與C一脈相承,它們的語法是一樣的,甚至可以混用,學起來比Java輕鬆一些。雖然Java用途甚廣,但你不必擔心,學會C++之後Java掌握起來輕而易舉。
 
至此,在語言學習上其實已經足夠了,在沒有應用需求的情況下,不必急於接觸更多其他語言。編程思想達到一定程度,掌握一門新語言是分分鐘的事,或者說根本不需要掌握,用的時候搞本書查一查就完了。關鍵是,對於編程而言,最重要的並不是看書學習,而是實際動手操作。剛入大學時,學長就忽悠我們說這個專業動手性強,可以自己做很多東西,結果到頭來學了那麼久編程,做了那麼多作業,爲自己做的程序少得可憐。或許是我想象力不夠豐富,不是初學者的好榜樣。練習編程,除了完成練習題之外,最好能嘗試去實現一些自己的想法,比如小遊戲,比如手機端的APP,還可以做個小網站,掛在自己電腦上,別人可以訪問,成就感滿滿,再正式些,申請個域名,租個服務器,都可以開始創業了!想想還有點小激動,但這一切都是建立在牢實的基礎之上的。
 
在實際應用中,若想做好程序,光學語言是片面的,我們還需要其他一些必備基礎,它們使你對程序、對計算機瞭解更全面、更透徹,我總結爲五大方面(以對編程的影響程度排序),也是我們專業求職的必考內容。
 
1) 數據結構與算法
既已編程,又何能脫離數據結構與算法,表、樹、圖,排序、檢索,雖然許多語言都已經做好了封裝,但掌握一點基本思想還是十分必要的。這些東西十分鍛鍊人的思維能力,不止編程,在其他地方也大有作用。許多人對算法興趣濃厚,智商大考驗,考驗說是脫離於IT的,進入了數學領域,深入下去,你會爲那些NB算法而驚歎。
 
2) 數據庫
剛接觸數據庫時我瞬間凌亂了,原來除了文件系統還有其他組織數據的方式,它是如此犀利,操作靈活,安全性高。重要的是,許多程序都需要數據庫支持,因此編程必備。
 
3) 操作系統
操作系統是人和計算機之間的橋樑,它管理着計算機所有的軟硬件資源。程序運行於操作系統之上,就如船隻浮於水,你若對操作不夠了解,做程序便只能停留在面上,你的漿劃不到水裏,船也沒法控制。舉個簡單的例子,不瞭解進程的工作原理,怎麼做多進程軟件呢?
 
4) 計算機網絡
網絡在當今的IT界扮演着越來越重要的角色,現在一臺不聯網的電腦能做的事少之又少。於編程而言,不學網絡寫不了分佈式軟件;於素養而言,一個不懂網絡的IT人士未免也太水了吧!
 
5) 計算機組成原理
如果你對計算機這複雜的玩意兒的構成及原理很感興趣,這方面的知識不容錯過。它是揭開計算機神祕面紗的關鍵,小到編碼與指令,大到存儲與I/O,是瞭解計算機硬件的好途徑。它看似對編程沒有直接影響,更多的是屬於素養型的知識(但學通之後猛一回頭,相信你對程序設計會有更高層次的領悟)。
 
基礎中的擴展
1) 編譯原理
當你程序寫到一定程度,成就感會漸漸消失,爲什麼呢?因爲你所用的高級語言都進行了一定程度的封裝,你接觸不到它們的工作原理,這個時候就該編譯原理登場了。編譯是將高級語言轉換爲機器語言的過程,是將人類思想翻譯給計算機去執行的過程。編譯原理告訴你高級語言的工作原理、它們是如何被設計出來的、爲什麼一句代碼你這樣寫可以那樣寫不行。
 
2) 彙編語言
除非做一些特殊產品,現在已經很少使用匯編,況乎業餘人士。若你學有餘力,可適當瞭解之;若你興趣濃厚,我也不攔着你成爲大神。當然話說回來,彙編對於IT素養是不可或缺的,百度百科有言:“至今爲止,還沒有程序員敢斷定彙編語言是不需要學的。一個不懂彙編語言的程序員,只是三流的程序員,這是大部分人的共識;同時,技術彙編語言是面向機器的程序設計語言,精湛的彙編程序員,已經脫離軟件開發,擠身於工業電子編程中。一個電子工程師,主要的開發語言就是彙編,C語言使用只佔極少部分,而電子開發工程師更是千金難求,在一些工業公司,一個核心的電子工程師比其它任何職員待遇都高。”
 
應用方向
基礎學好之後便可以選擇一些自己感興趣的方向深入瞭解了,遺憾的是,衆多的應用方向雖然有趣,但若不從事這樣的行業,我們大抵也只能停留在紙上談兵的層面。而既興趣使然又何所謂呢,仍然抑制不住自己挖掘理論知識的衝動吧。PS:有不盡處,懇請補充。
 
1) 嵌入式
嵌入式是一個應用極廣的方向,工業中的車牀、監控,航天領域的衛星、火箭,上網用的路由器、交換機,生活中的汽車、手機、各種家電……只要是一臺實現了一定程度自動化的用電機器,就無不涉及嵌入式系統。如果你好奇這些玩意兒是怎麼實現的,果斷走起。
 
2) Linux/Unix
相信你在學習操作系統的時候就已經接觸到這貨,沒錯,這貨就是個操作系統。平時大家都習慣於Windows,初接觸Linux/Unix一定多少有點彆扭,這裏不單是操作習慣的區別(比如Mac OS與Windows的區別),它們在根本上有着很大不同。不同在哪裏,不必贅述,百度一下你就知道,知乎一下更能得到許多切實的回答。電腦裏要是裝了個Linux/Unix,感覺瞬間高大上了有木有,隨便輸兩句命令,各種裝逼範不解釋,異常專業。國家現在也仍未放棄做自己的操作系統,你若有心,不妨煉成大神,勇敢地去實現OS報國的夢想吧!Linux的藝術在於開源和命令行,你若是出於好奇想體驗一下手感還是算了吧,作爲普通計算機用戶,若是沒有非要在Linux下跑的軟件,根本不需要裝這玩意兒,完了許多事還做不了(or不好做)。我自己就相當不喜歡Linux/Unix,作爲一名“專業人士”着實不該,找工作時多重要呀,尼瑪再重要我也不想去碰。
 
3) 雲計算
雲計算是分佈式計算的一種,你可以先了解一下分佈式計算,但相信你會對雲計算最感興趣。雲是一個比較新的概念,現在計算機的許多硬件技術都發展到了一定的瓶頸,單臺計算機的計算能力十分有限,而超級計算機的成本又非常高,於是人們考慮將普通的計算機聯合起來使用,正所謂衆人拾柴火焰高。好比寒暑假作業一大堆,同學們分工合作,每人負責一小部分,一瞬間就做完了。《電磁炮》裏的御阪網絡就是一個雲計算的例子,性能表現堪比“樹形圖設計者”,在第二季中還成果計算出導彈軌跡,咳咳,扯遠了。雲時代以通信的代價換取計算效果,現在如火如荼的雲存儲、雲服務器想必大家都有耳聞,不少人都已經在用了。然而目前不論是雲計算還是分佈式計算都僅處於初級階段,尚未達到理想中的那種狀態,基本上還是採用集羣(依然是集中式)實現的,依然分服務器和客戶端。以雲存儲爲例,我們的個人PC上並未劃出一部分硬盤爲雲服務。但看形勢人們似乎並沒有想往這方面發展,而是致力於實現終端的簡化,簡言之,以後你買一臺能上網的顯示器就可以當PC用了,所有的計算與存儲均在雲端完成。然而我相信雲的力量遠不如此,只有想不到,沒有做不到。
 
4) 存儲
計算機一強於計算,二強於存儲,這就是其人類遠不能及的兩大能力。數據在計算機中的組織形式非常有趣,也是我個人最喜歡的部分,存儲的金字塔結構、存儲介質、文件系統、雲存儲什麼都老有意思了。可以說,存儲是計算機離普通用戶最近的部分,上網也好,聽歌也罷,我們幾乎每天都在電腦裏存取東西。4G以上的電影拷不進FAT32的U盤、迅雷會員的離線下載、網盤的雲秒傳,無不與日常生活息息相關。
 
5) 無線通信
這部分內容特別有意思,至少我是這麼認爲,可能是貼近生活的原因:我們天天在使用手機,也好奇着手機通信是怎麼實現的。上面基礎部分的計算機網絡大抵覆蓋了有線通信的內容,而人類所用的通信基本上就是有線和無線兩類,在這裏補一補無線,你就理解全面了。並且現在無線的分量越來越重,4G手機的網速能秒殺絕大部分家庭寬帶,無線路由器也逐漸成爲家中必備,筆記本、平板、手機無不如飢似渴地接進WiFi,有線正被無線蠶食鯨吞。如今都誕生了無線充電的方式,何況通信呢!(推薦丁奇《大話無線通信》一書,大量比喻,由淺入深。)
 
6) 語音、圖像處理
如果你對語音輸入、語音合成、指紋識別、人臉識別這類技術有興趣,歡迎進入此坑。當時我差點就選這方向了,幸虧靈機一動,哎媽這不都是算法和數學麼,罪過罪過。開個玩笑,瞭解一下其基本原理還是比較輕鬆的。
 
行業資訊
IT是個日新月異的行業,光顧着技術研究而不跟着前沿走是閉關鎖國的陋習。拿經典的摩爾定律來說,計算機配置翻番那麼快,而現如今的新產品換代更加迅猛,資訊跟蹤真可謂是逆水行舟不進則退啊!若是條件允許,能訂些雜誌是最好的,實在不行只好淘電子版、關注各種博與微信了。
 
配件:CPU/APU、顯卡、硬盤、主板、顯示器,甚至鼠標、鍵盤、機箱、電源,配件控、性能控、裝機控走起,遊戲發燒友更是這方面的專家。現在配件們已經涉足龐大的手機平板市場了,更是不得不關注。
 
產品:PC、一體機、筆記本、平板、手機,各大品牌,配置如何,賣點何在,價格多少,高端貨什麼的買不起看看也舒服啊。
 
新發明:技術改變生活,你崇尚自由,不妨在家裏搭個NAS,坐着躺着拿平板看部高清電影;你喜歡客廳裏的沙發,不妨搞一臺智能電視,海量資源;你愛運動,好新鮮,可穿戴設備花樣層出……不過話說可穿戴還未普及,可植入都已經被提出來了。
 
公司動向:利益是推動技術發展的巨動力,你看那眼花繚亂的新產品們,哪樣不是市場競爭的成果,好在企業們的戰鬥給消費者帶來的基本上都是好處。現在打得熱火朝天的蘋果谷歌微軟、英特爾AMD、聯想三星小米諾基亞,互聯網公司更是數不勝數。誰說市場是沒有硝煙的戰場,我看是狼煙四起火光沖天啊。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章