小白如何在最短時間內成長為熟悉主流編程語言的高手?

1.小白具備成為高手的素質潛力;

2.高手定義是熟悉當前市場主流的編程語言和思想,能獨立解決問題。

3.現在已經有很多高手,每個高手都有自己獨特的成為高手的學習經歷。

4.假設所有高手重新思索自己的學習之路,把他們心得全部統計起來分析,並從中發現小白成為高手的公共最優解。求描述此最佳方案。

5.所謂最優是指:比如高手同時掌握了數門語言,學習順序不同,收穫和花費時間都不同——因此涉及到最優。

【所以該問題的實質是針對當前的市場趨勢(市場即代表了學科本身方向),探尋一種適合所有初學者的最好最優的學習編程的方案或「學習樹」結構】


如果目標是【完成訓練之後】能夠快速熟練掌握所有還沒學習的、方便找工作的語言,鑒於大部分語言互相之間都有相似性,那麼你只需要通過熟練掌握以下語言來【完成訓練】

  • C++
  • C#(熟悉C++的話學這個不費吹灰之力,但是還是要學)
  • TypeScript
  • Haskell 或 F# 或 Scala

其他語言基本無師自通,剩下的就是背誦函數名。還有一些語言是你學了這些也無法快速掌握的,不過鑒於他們基本上也沒有達到規模的工作崗位,所以不用管。如果你對那些東西也感興趣的話,你可能還需要學習Prolog。


這是一個純買方得利的問題,只定性分析,我幫你把其中的利益和成本做定性分析。

1.小白具備成為高手的素質潛力;能有10%的小白具備成為高手的素質,就已經是很樂觀的估計了

2.高手定義是熟悉當前市場主流的編程語言和思想,能獨立解決問題。 主要是加入了思想二字,這樣的人,在目前的所有的中文程序員當中,能有10%就已經是樂觀估計了

3.現在已經有很多高手,每個高手都有自己獨特的成為高手的學習經歷。對於這些高手的確認,說服工作,無法以客觀的手段進行,因為很容易理解為題主對高手的定義,那麼對不起,小白眼中的高手和真正能達到這些要求的高手,有一定的偏差

4.假設所有高手重新思索自己的學習之路,把他們心得全部統計起來分析,並從中發現小白成為高手的公共最優解。求描述此最佳方案。 第一,收集足夠的數據樣本無法完成,這涉及的成本過大,將一個人的心得總結出來,本身就是一個極大的工作量,其次,以客觀高手的情況,將心得詳細記錄下來,其耗費的工時,無人支付,第三,假設完成了一定量的數據收集,將高手的心得統計分析,這需要更強的高手,更何況,所謂最優解可能並不存在,因為所謂小白的情況不同,所以最優解針對不同情況,存在很多個,這就牽涉到了工作量。

5.所謂最優是指:比如高手同時掌握了數門語言,學習順序不同,收穫和花費時間都不同——因此涉及到最優。

【所以該問題的實質是針對當前的市場趨勢(市場即代表了學科本身方向),探尋一種適合所有初學者的最好最優的學習編程的方案或「學習樹」結構】

根據這個過程,第一,探索過程的成本無可估計和達到,第二,質量標準無可判定和客觀。

更何況所謂最短時間,並沒有確切定義。而且小白,通常支付不起這個費用。

所以你們還是去被培訓班騙騙智商稅算了。


成為高手的唯一最優解就是「無他,唯手熟爾」。而這個手熟的定義是「至少三年五載」。謝謝!


瀉藥。不知道題主「最短時間」是指多久,如果是 21 天精通 XX,那麼不好意思,這種高手我看不懂。


當然有辦法。

1. 確定一個社區成熟應用廣泛的語言,比如Java,比如PHP;

2. 開始寫代碼了解基本語法;

3. 然後寫代碼解決實際問題;

4. 然後和社區交互了解業界趨勢和大家的痛點;

5. 影響其他人,獲得「高手」頭銜。

這個過程,資質好的需要大約一兩年,資質差的需要五年八年。

什麼,你說這哪裡算最短時間成為高手的方法?這就是「最短時間」成為高手的方法,沒有更短的了,因為你不是要成為「高手」嘛,你要是有21天成為編程高手的方法,記得告訴我。


學C的話,努力一點,兩周可以學會「指針」之前的所有語法。

接下來,「指針」和「棧幀」,就不是那麼容易搞明白了。

搞明白那兩個之後,就先學鏈表、二叉樹、快速排序等基礎數據結構。

然後,可以學「Unix環境高階編程」。

然後,學Nginx,參考書是陶輝那本「Nginx模塊開發與架構解析」。

然後,學學redis,把它的C介面庫hiredis的非同步編程介面整合進Nginx的事件驅動框架。

到了這裡,勉強可以算「熟悉」C、Linux、Nginx、Redis。

在大學校園裡,能算「高手」之一了。

怎麼也得需要兩年吧,快一點的話一年。

至於業界,大牛太多,稱自己為「高手」屬於「政治錯誤」。

成為其他語言的高手,比C更難。

因為其他語言,你看到的全是別人封裝好的,而且語言本身就比C複雜。

但要成為高手,就不得不去理解這些封裝機制。說實話,這個過程很扯淡……尤其是語言本身的設計不好的話。


多讀讀演算法與結構,編譯原理,通信協議相關的書,少看什麼xx天精通xx語言這種。


要有狗一樣靈敏的嗅覺找到知識的藏身之處啊~

學習就要不計成本

學習的過程中交到很多學友

有不少學友會計算學習成本

內心總是希望速成

甚至網上也有一些言論都在倡導少學習多回報的腦殘腦迴路

我將這個群體稱之為學習成本論者

學習成本論者們總是擔心一些無效的學習會導致學習的產出效率比較低,

擔心學錯了方向

相對於這些學習成本論者,我們學習都是泡在裡面的好嗎?

至於什麼時候能拿出成果全看運氣嘍~

不過越學成果越多這是真的

很多都懶得去計較

沒錢的時候隨便丟幾件一賣換點吃飯錢

我覺得與其這樣擔心

花這個時間考慮成本問題

還不如考慮怎麼把知識學好

其實在知識的學習過程中知識本身會具有一種自我指引力

明顯感覺到知識哪方面會不足~

直接跳轉鏈接學就是了

其實在學習的過程中你真正要對付的根本就不是這個

not 學習成本問題

而是你如何才能進入學習狀態的問題

學習真正的障礙,並不是成本

如果你是一個社會經驗豐富的老手

你甚至都找不到比學習成本更低的事情了

學習真正的障礙是如何進入狀態~

如何讓自己的內心平靜下來?

如何讓周圍的世界安靜下來

如何讓自己入定

真正進入到學習的狀態中來

這才是學者們真正應該克服的困難

至於學習效率的問題

請問當你真正進入到學習的狀態中來效率還會是個問題嗎?

那些知識有用

那些知識沒有

一般一眼就能識破~只要你在狀態中~

想要真正進入到學習狀態中去

是一件非常難的事情

一日三餐會打擾你

六根不凈會打擾你

各種屁事會干擾你

男朋友會騷擾你

女朋友會煩死你

屁股會疼~溝子會癢~手機振動~

這些東西都會讓你學不進去

上學的小朋友們還要受到垃圾老師的低效灌輸~

嘰喳同學的吵鬧~煩都煩死了還學什麼習?

最後還有老師大人的冷嘲熱諷~

教育評價體系的強制干涉~

等等等等~

.....

衝破種種藩籬,你才能真正入定真正進入學習的狀態~

小盆友~請問你今天入定了嗎?


如果要掌握主流語言,那麼學習內容上最好是有意挑選不同範式的語言,最好能減少重疊的部分。因為常用的語言特性就那麼多,學完就學完了,就算碰到一門新語言,也是換湯不換藥。

建議配置一:

一門函數式編程語言(Scheme/Racket/Common Lisp等等),一門C++(靜態類型、包含了面向對象的編程範式,同時可以接近底層)

建議配置二:

一門函數式編程語言,一門面向對象語言(Java/C#),一門能夠接近底層的語言(C/Pascal)

這兩套配置都可以讓學習者掌握主流的編程範式(過程式、面向對象、函數式),既能夠接近底層,又能夠學會抽象。至於其他的語言,比如Python之類的,如果有以上的基礎,上手起來應該不會太困難。

函數式編程語言建議越早學越好,因為一般來說學了函數式編程,再去學命令式編程不會有太多阻礙,但是一個學了很久命令式編程的人,要學函數式編程,可能會感受到各種不適應,最終放棄學習。

當然,假如不考慮上手的難易程度,單從知識點覆蓋的全面性角度來說,學C++真的是一個很不錯的選擇,畢竟特性多,既能底層又能抽象。(逃


學編程其實和學外語差不多,比如說一種可以有效學習外語的方法就是雙向翻譯:把一段英文翻譯成中文,再把翻譯出來的的這段中文翻譯成英文。編程也可以這樣學:給一段代碼寫注釋,然後看著注釋寫代碼。


死了這條心吧..


凡是都要講 社會必要勞動時間。脫離了這個,都是做夢

從出生在賈府,到寫出紅樓夢,

先了解環境,在腦中有一個烙印,

再了解環境中的人,記錄他們的行為軌跡,讓這些人在腦中立體。

再看30年的賈府的運行。讓這些事實爛熟於心。

然後,背著寫30年的見聞。終成膾炙人口的紅樓夢。

那麼,我們來思考一下,首先你得生的好吧,家族前人的努力吧。努力多久呢?

不同的知名度有不同的人月去衡量。

所以我認為最短時間 得 28年。

因為從3歲開始學嘛。學過30周歲,到31周歲,你就是高手了。

那麼說明你對老的經典已經爛熟於心了,30-60歲這個階段呢?

你應該怎麼做?顯然,對你當時的一切事物進行模擬,找到你最擅長的部分,加以發揚光大,靠家族的力量,讓其他人做你不擅長,但是他們擅長的部分。

這樣,就形成了一個循環。族內循環,或者說是環境內循環。

你們的利益就綁定在一起了。

60-70的時間,要交班了,培養繼承人。

怎麼選,看當時的需要。謹慎之人是必須的。

寧可步子邁的小,也不能操之過急。

木秀於林風必摧之,在防禦措施沒有準備妥當之前,不要想著進。

所以說,哥們,多想想我說的話。


一個多線程就難倒95%的人啊。


已知的內容,就算你熟練掌握了,那都不叫高手。

你得通過已知,去發展,創造出來未知來。那才叫高手。

你想把技能樹上已知的內容,都量變了,你才能夠質變。

等你寫的代碼,只有輸入輸出是常量,中間的一切都是變數。

連流程也是變數,簡單點的類似模板,難點的類似模板元編程。

更難的,則是代碼生成器。

還有更難的嗎?當然了,數據結構感知器,數據結構架構器,

流程感知器,流程架構器。流程架構選擇器 等等。

你還需要歷練啊,你看看數學的深淵那3張圖。編程恐怕得10張圖才能裝下。


多打代碼,沒有50w行代碼都不好意思說會主流語音。

代碼打多了自然熟悉編程語言了。而且只要是用心打的,各種演算法,各種設計模式就自己出來了。然後學學軟體工程,工程化開發。


植入編程大師的記憶晶元


請先定義好最短時間的具體時間,畢竟短長對於每個人都只是相對而言。

另外,最優解這玩意兒要對不同的背景不同基礎的人進行不同量身定做,所以,普世最優的培養方案是不存在的,

滿意解的培養方案倒是有,可以參考大學教學培養方案,覺得學校教的慢的話,可以自己按著它給的課程自己自修。

另外,想要快速學習編程知識快速找到程序員的工作的話,也可以參考培訓班的培訓計劃及求職手段。高中畢業不讀大學的人參加幾個月培訓班,完畢然後去深圳從事程序員行業,工作幾個月後的確可以拿近10K的月薪。——這是我大學同學今年用她姐姐和弟弟的事例來給我舉例證明的。


我認為,睡覺可以達到你的要求,做夢誰不會


目標: 成為高手不應該是當前的目標,更不是在最短的時間內。而是學習思想,掌握方法,解決實際問題。

切記: 編程語言是工具不是目的。

方法: 林總說得透:

「學習毛主席著作,要帶著問題學,活學活用,學用結合,急用先學,立竿見影,在用字上狠下功夫」。


如果您找到了,請務必告訴我,我願意跟隨您,司機也行,您必定會是那個創造了比騰訊,阿里,臉書還要牛逼的公司的人物(呵呵,不存在的 )


  1. 小白具備成為高手的素質潛力;

把自己看得蒸糕啊~

此小白要是具備成為高手的素質和潛力,並不需要其他高手指引的路徑,自會找到最適合自己的方法。


內功這種可以灌輸,心法這種不是一朝一夕。


推薦閱讀:

為什麼打開一個幾兆的 .jpg 圖片比打開一個幾兆的 .txt 文本文檔快很多?
你在閱讀源代碼或設計文檔時,看到哪些驚艷的技巧?
導師想要招收什麼樣的研究生?
俄羅斯計算機相關專業高等院校教育及科研現狀是怎樣的?
電腦重新分區並重裝了系統文件可以恢復啊嗎?

TAG:程序員 | 編程 | 程序 | 計算機科學 |