文科生轉身學習IT技術,推薦什麼入門書?主要想了解整體趨勢,從俄語人成為半個IT人。

我本科是學外語的,大學四年沒學過數學,不過高中數學還可以。今年畢業,想學習IT,是自己感興趣,也是工作需要。謝謝大家。

感謝大家的回答,的確有很多有用的信息,第一次在知乎上問問題,收穫很多。至於潑冷水,可能我是有不開心吧,如果之前有做得不好的,表示歉意。如果說是辯解,就是無知者無畏吧。至於大家一直說我提的這幾個方向太大,我想說我是做IT編輯的,只是想多學學IT的知識。通過大家的冷水,和自己的了解,我也發現的確不適合轉為純技術,我也不打算這樣,畢竟還是個俄語人。哈哈。而且我也沒想到自己的提問會引來這麼多的關注,最後感謝所有為我的問題思考的人。如有做得不好的,請大家多多諒解。


殺豬的轉身學習廚藝,推薦什麼入門技能?主要方向為:做蛋糕、西點、麵食、川菜、粵菜、西餐幾個領域。謝謝

——文科女轉身學習IT技術,推薦什麼入門書?主要方向為:編程;大數據;虛擬化;雲計算;開源幾個領域。謝謝

翻譯下來大概就這麼個感覺吧


我就是傲嬌喜歡抖個不太機靈的機靈都要被人說╮(╯▽╰)╭

很多題主答得蠻好的
我也沒有意願有事沒事上網潑潑冷水,這麼熱的天我只希望有人能多來點冷水潑潑我,


沒有任何惡意,我覺得這個問題問出來,題主你是沒經過腦子的,說實話吧即使是知乎,你問的每個領域,動動手指都能搜索到答案,更不要說你所謂的什麼大數據啊什麼的了

w3school 在線教程

中國報告大廳_首選市場研究報告門戶
中國互聯網路信息中心
慕課網-國內最大的IT技能學習平台
CSDN論壇首頁
開源中國 - 找到您想要的開源項目,分享和交流
Ruby China


隨便給你列出幾個非常基礎拿來可以玩一玩的網站,動動手指百度一下的事情。


不是潑你冷水,打擊你的信心和熱情,你所列出的東西都是細分行業,真要做到一定程度是不容易的,就說編程吧,大家不都是error無數遍幾千幾萬行代碼的幹麼,卻連最最簡單的概念都想要「衣來伸手飯來張口」,還有這麼多人慣著你,知乎確實友善度杠杠的。


我只是覺得樓主連這些明明輕易找到的東西都不願意去找,真的太懶了,這一行做起來你不一定能堅持下來。


我本科是學外語的,大學四年沒學過數學,不過高中數學還可以。今年畢業,想學習IT,是自己感興趣,也是工作需要。謝謝大家。

以上是題主的自述
大膽猜測如下:這只是題主找工作時臨時性抽風,如果是工作需要為什麼不找更合適的外語工種,如果是感興趣的話為什麼畢業找工作才開始學習?

對於題主這種臨時性抽風,看到一堆朋友熱心地回答,我真有種蛋蛋的憂傷。

然後,看題主自身的情況而言,並不是簡簡單單差幾本書的問題,完全就是個基礎不牢靠先天不足的新手。

你真的願意為你的臨時起意付出的話,就去找培訓機構吧,完全沒接觸過編程的人自學有多難就不談了,任何一本書都像一塊板磚,看到你想吐。

最後,還想對題主說,臨時起意的夢想和興趣,想想就好。


我本科是學外語的,大學四年沒學過數學,不過高中數學還可以。今年畢業,想學習IT,是自己感興趣,也是工作需要。謝謝大家。

這是原來的問題描述。
==混個先==
你本科是學外語的,這非常好,有助於你的知識水平和世界同步。
但是現狀是你沒有一點知識。
-----------------
你的所謂的主要方向,不過是幾個關鍵字而已。你可以感受一下key words和aspects的區別。
我就不吐槽了。

接下來是乾貨:
1、想學編程。可以啊,已經有很多人給你提示了。事實上,就純粹的編程來說,確實也沒有什麼困難的。真正困難的東西在編程以外:
當你遇到bug的時候學會看報錯的信息,學會自己動手上搜索到結果,學會stackoverflow。
當你要寫一個實用的程序,學會自己去翻看文檔,查找自己需要的知識。
當你解決不了一個問題,學會平心靜氣的去處理,忍耐、奮發是必要的素質。

學習編程是你所有的內容里最簡單的事情,也是最難的事情。學習編程,不過是學習如何去學習而已。

2、想學會大數據相關內容嗎?
可以啊。不過如果說編程其實可以和數學沒有特別多的關係的話,那麼大數據就真的有關係了。

你要學習數據結構與演算法:你也許從來沒有想過網頁上的文字是如何組織的,你也許從來沒有想過不同的組織結構會有不同的數據處理方法。
你要學習資料庫:這是很簡單的事情。資料庫是你的管家,為你提供對數據的基礎操作。

就你現在能夠找到的工作而言,上面這些已經夠了:事實上你根本不可能找到真正的數據相關的工作,你頂多找到一個數據分析的工作——那麼學好excel反而是最重要的。

但是我這個答案不僅僅是給題主看,也給別人看。那麼你還要繼續學習:
你的微積分、線性代數、數理統計是絕對不能不會的——這是一切的基礎。
如果你要登堂入室,隨機過程也是必要的——對於部分專業來說,這是研究生課程。

你如果僅僅學習了上述內容,那麼你撐死了是個書獃子。你還要付諸實踐:
有的時候你要懂一點tcp協議,有的時候你要懂一點密碼學,有的時候你要懂一點計算機組成原理,有的時候你要懂一點管理學。

大數據很龐雜。

3、想學會虛擬化嗎?
呵呵。反正我是不懂的。

4、雲計算??
就你理解範圍內大概就是hadoop吧?編程的事情而已。

然而雲計算要討論分散式存儲,要討論集群運維……甚至給雲拉根網線都是很蛋疼的事情。君不見被藍翔挖斷了的光纖嗎?

5、開源
開源本身只是一個概念,是一個運動,是一個理念。更具體的來說,開源是法律的文件。除非你是學法律出身,否則開源只是你寫完了程序以後你可以選擇的一種權利保障方式。

==
題主,你現在是不是有一種剛剛學會了1+1=2大言不慚說整數範圍內的事情都會瞭然而碰見了哥德巴赫猜想的感覺?

我也是得罪你一下。


題主說的:

主要方向為:編程;大數據;虛擬化;雲計算;開源幾個領域

大數據,虛擬化,雲計算這幾個方向都不甚了解,所以,暫且不表。
開源這個不是什麼領域,只是一個軟體的發布方式而已,與商業軟體相對應。涉及到很多,一般都是開源軟體,比如:Linux,nginx,memcached,apache tomcat等。
對編程比較熟悉,就談談這個了。不知道你對計算機編程語言的了解程度如何?

----------------------------------------------------分割線來了
很多人說我推薦的書太難了,不適合初學者!!!! 是我的錯。。。。已經改過來了。。下面推薦的都是我讀過,覺得比較適合入門學習的。
入門的話,推薦先看 Java語言程序設計基礎篇 (豆瓣),(此處也有很多人說,什麼都沒基礎的就讓別人學Java?? 好吧,那可以推薦一個Python吧,Python基礎教程 (豆瓣))吧,然後,學習一下數據結構,推薦數據結構與演算法分析 (豆瓣),知道在計算機領域,如何對現實社會中的關係(線性表(有序表),隊列(即社會中排隊的隊列的模擬),堆棧(類似存儲餅乾的圓筒,只有一個出口),集合,圖(現實中多個實物之間的關係圖的抽象))進行抽象,並用計算機語言表達出來。

(如果覺得這本書數據結構與演算法分析 (豆瓣)太難了,可以看一下Java語言程序設計 (豆瓣) 進階篇哦~~, 中第23章到27章,這幾章講的很淺顯易懂。其他部分可以略過,重要的事情說三遍,初學者不要看嚴蔚敏的數據結構,初學者不要看嚴蔚敏的數據結構,初學者不要看嚴蔚敏的數據結構!!!!)
-------------------------------------------------------------------------------補充
如果有哪位同學覺得上面的Java或者Python太高層了,想深入系統底層知道一個計算機是如何運行的,那麼這位同學已經不屬於初學者了,建議看下面的一系列書:
首先是大名鼎鼎的C語言,這是深入學習系統底層知識必須掌握的一門手藝,是的,你沒看錯,手藝~ ~。推薦C語言之父寫的——C程序設計語言 (豆瓣)


----------------------------------------------------------------------------------------分割線,我能說知乎沒有段落控制很不爽嗎?用個好一點的文本編輯器有那麼難么?
等這些看完之後,如果想深入一點,可以學習一下操作系統原理,知道一個如windows或mac osx操作系統是如何工作的,推薦看現代操作系統 (豆瓣)。同時,看一下計算機網路 (豆瓣),這本書已經出到了第6版,豆瓣上只有第5版。

理解多個計算機之間是如何通信的,比如:你使用瀏覽器的時候,從你點擊頁面( web page)上的一個按鈕之後,中間經過了哪些過程,數據是如何發送的,數據是如何接收的,為了達到發送的目的,兩台計算機是如何進行收發確認的,使用了什麼協議(該協議類似與我們現實生活中兩個人之間寫信時的地址規範,是生活中的抽象)來保證的;迅雷下載一個文件的時候,從最上層的http協議,到下層的tcp協議對應用數據進行封裝,然後使用IP協議和路由協議(該協議告訴你,如何在源端主機到目的主機之間的多條路徑中選擇一條符合某種條件的路徑,條件可以,這條路徑帶寬大,或者用時少,擁塞少,或者安全,發送的數據不容易被竊取等)對你的目的主機進行定位。 下面就不細說。

然後,等上述書單都看完了之後,你基本上入門了,可以說是大學計算機專業本科的平均水準了。
然後,就可以根據你的工作項目,學習相應的其他知識。比如,Java EE開發,面向對象的設計思想,設計模式Java與模式 (豆瓣)。等等一大堆了。。。。


我來給潑潑冷水吧, 雖說碼農門檻低, 文科生轉it搬磚的不少,但基本都是前端入手, 搞幾年能做低端碼農就很不錯了。而且從你自述, 數學大學四年沒學, 看見幾個新辭彙,大數據,虛擬化,雲計算,你知道那起碼都是CS,CE碩士或者專門從業的人才真正接觸的領域, 你的想法,首先就不知所以,跟一個外語為零得人說要自學做英日雙語翻譯差不多,還差的太遠了。

看書不是一掃而過, 編程需要大量實踐, 練習也得慢慢過, 別人看技術書快,是因為人家都是科班出身,或者從業很多年。你是從零學, 只能惡補基礎,惡補基礎的意思是, 你得像科班一樣花費大量時間, 而不是跟看小說一樣速戰速決,那樣沒用的。人家給你推薦的CSAPP那些書, 對於科班的人當課外書看還得看個1個月, 你如果跟著學,每本書都至少半年。

你要記住,你現有的水平,自己在家看半年書,能趕上北大青鳥學半年的人都不容易,如果僅僅對編程有興趣,你的目標定位在他們身上就行了。如果想真正搞懂你說的那些詞,請拿出幾年的時間深入系統學習, 人家全天候在校也要做題考試科研認真學幾年, 你這樣的沒任何數學基礎純文科生憑什麼登捷徑呢?從同濟高數上和線性代數讀起吧, 準備時間五年規劃, 否則你想看懂什麼大數據教材?

(我現在順便要問一句某些隻字不提數學只推薦java等開始勵志的程序員, 您已經是從業人員還是有上過大數據或者機器學習或者資料庫設計的課?反正我不覺得在沒有高數基礎的情況下能看懂任何一本相關教材講義,別再是有人把機場火車站書攤賣的XX大數據時代什麼的當成專業書了吧?)


我也建議題主不要走大數據這條路,而是好好拿一門語言入門之後做web或者移動端的開發。


首先,題主是勇氣是十分值得讚賞的。贊	imes 32
本科沒有學過數學的話,有一定障礙,但不是問題(有時候現學)。我關注入門兩個字,題主說的幾個方向根本理解有錯誤。編程和開源不是方向,而虛擬化和雲計算是交叉的。大數據,虛擬化等都需要有一定的積累。拿虛擬化來講,這個需要你對操作系統和計算機體系結構有一個相對較深的理解才行,不然就是抓瞎。我個人給你幾點入門意見:
1.去學一門編程語言,比如C(ps:這個我認為是最適合的),python之類,看書《C語言程序設計》,《Python基礎編程》;
2.對數據結構和一些基本的演算法有一點了解,鑒於文科生,嚴蔚敏的《數據結構》吧;
3.對計算機系統的組成由一個宏觀的了解,《深入理解計算機系統》,原則上建議上英文原著;
4.對計算機網路有初步的認識,知道什麼是TCP/IP,知道三次握手...,葉希仁《計算機網路》;
5.學習一下操作系統的基本知識,知道操作系統是幹嘛的,進程調度,死鎖...,國內沒有好書,上《Operating System Concepts》;
這樣,你就入門了
--------------------------------個人意見,僅供參考--------------------------------


其實最好的方式是嫁給一個IT男,這樣就可以坐在他旁邊看IT是怎麼回事了。
至於說想轉去做這塊,要麼如上面一位同學所說臨時起意想想而已,要麼把最容易接觸到的編程:EXCEL編程拿出來練練,這種書一大堆,買上一本來實驗下,到時你就知道自己真的是否喜歡編程了。


當個程序猿鼓勵師可能更容易一點
(逃。。。


不要去看大數據,虛擬化,這兩個東西不是學會了java語言就可以的,要非常深厚的操作系統和計算機網路,資料庫知識,建議從python開始學起,先進行簡單文本處理和web開發。


關於轉行學習 Java 的問題,已經回答過了,建議參考下:
會計轉行從事IT,如何在一年時間內全職學習? - Night Silent 的回答


主要方向為:編程,大數據,雲計算,虛擬化,開源"等"幾個領域,姑娘志氣挺大


大數據、虛擬化、雲計算是比較大比較深的概念,不建議一開始就和這些東西死磕,先學點基礎的編程比較好。鑒於三個大方向的共同點,推薦學習java,入門書 Head First Java(第二版·中文版)已經足夠。看完以後可以試著做一點小項目,也可到知乎的java話題下看相關的學習路線——Java - 話題精華。


不瀉藥。

我身邊就有很多本科是北外日語專業的小女孩,做外包測試,不僅工作做的賣力氣,長的都挺好看的呢。

不過缺少工科背景,確實做技術一開始很辛苦,很多基本常識都得惡補,不過也沒必要為此煩惱,工科出身干N年了還啥都不會的也不計其數。

看你列的都是和程序有關的,為此給你幾個建議:

1)IT範圍很廣,未必都是跟編程打交道,所以沒必要一上來就得寫代碼,有很多操作類的崗位,比如測試

2)如果一定要涉及編程,建議從基礎開始,目前國外大學都是用Python作為初學語言,建議上MOOC等網站去找到相關課程開始學習,Coursera和Edx都有,既能學習,又能開拓視野。

3)大數據,雲計算,物聯網,車聯網,都還是比較虛和概念階段,了解一下即可,萬丈高樓平地起。

4)有空到西單圖書大廈,看看國外的書籍特別是案例分析,更快更實用,O"relly的書都很有特點;

5)按照工作的實際需要,找對應的參考書、網上的資料自學。

只要不懶,善於總結,勤于思考,捨得加班,耐得住寂寞,絕大部分IT工作都能勝任的。


沒什麼不可以的,也沒那麼多要求,統計學就是文科的一種,R語言是專門給學統計的文科生用的。


妹子,聽哥一句,畢業季的轉角,稍微謹慎點。
你在問題中提到了5個概念,編程;大數據;虛擬化;雲計算;開源。這其中編程是個很范范的名詞,我姑且理解你想走coding技術路線。開源只是一個概念分類而已,並沒有什麼針對於開源的工作崗位。剩下三個是這幾年炒的最火的一些概念,但是每個方向下的一個小方向,也足夠一個人做一輩子了。綜上所述,按你的描述,我認為你對IT行業缺少一些基本的了解。
個人不是很建議進入一個不了解的行業。同時,你大學沒有學過數學,想必也沒有學過其它計算機基礎。這樣看來除非你天賦異常,否則可能要付出相當大的代價。我當時也是半路轉行做IT,在有一些基礎的情況下,早8晚12堅持了小半年,才逐漸算摸清門道。(PS,頭髮是真掉了一些)這裡我想說的是,如果你把投入在IT行業的精力投入在你自身擅長的行業上,收穫未必會比轉行少。
不是很清楚你為何要進入IT這哥行業,注意別被知乎上這些風光的小夥伴們騙到,能在這裡有底氣發言的,基本都是有兩把刷子。世界很大,好的行業很多,不要局限自己。
如果你確實想進入IT行業,按我的經驗,也許你可以試下如下方向:
1.隨便找一本上述朋友推薦的書,看一個月後如果你還有興趣。那估計你確實有搞技術的天賦,接著來吧。
2.如果你比較喜歡設計,可以試一下產品經理這類崗位。
3.如果你外語好,善於表達。可以試一下IT諮詢這類崗位,沒錯,也就是我目前所從事的行業。如果你感興趣,你傳張照片,我可以試著帶你入門。


那你大學四年年不是約等於白念了么。。


你說的這些哪裡是 IT 啊。。


理科計算機相關專業,強行答題。想學就學,找到適合自己的軟體學習方式,很多東西只是想的過於可怕了


怎麼說呢?別以為學了一兩門編程語言就表示你走進IT了,語言只是實現的手段,而如何實現還有一大堆得學。
大數據,虛擬化,雲計算,這一系列高大上的技術不是你單單學了java就可以解決的,例如大數據,對於幾百萬的數據你是要用哪種方法來進行捕捉、管理和處理;對於雲計算,你是要怎樣進行虛擬或者分散式存儲。這裡面有太多太多的知識。
計算機學科需要一個系統性的學習,一開始,你就要學高數、離散、數構、演算法、操作系統等基礎知識,雖然都是純理論知識,但對於你的後續發展影響巨大,應該說這些基礎知識教會了你編程的思維,讓你能夠更好的找到解決問題的方法。學計算機要有編程的思維,死記硬背這些是行不通的,單純只學習編程語言也是行不通的,這樣你以後出去了最多就是一個碼農,永遠重複著別人的代碼,永遠也走不進IT這個行業。


推薦閱讀:

是否存在一個字元串,它的md5值是其自身?
美國的失業率在 2011 年至 2015 年之間為何回落?都採取了什麼措施創造了那麼多的就業崗位?
哪裡有spark2.x的乾貨?
如何用Docker成為更高效的數據科學家?
全球 TOP 互聯網公司及學術界人工智慧方向薪資、高薪的攬才計劃有哪些?

TAG:雲計算 | 軟體開發 | 信息技術IT | 虛擬化 | 大數據 |