序號 | 問題 | 描述 |
---|---|---|
1 | 難易程度怎麼樣? | 這裡的難易程度,不是對已經有一門程式語言入門的人來講的難易程度,很多介紹的機構,個人,教授都是以自己已經會了程式設計的評價標準來衡量的,已經會了程式設計有了基礎的人看待問題的思維邏輯已經系統化了,跟真的零基礎的人理解事物的概念是不同的,雖然我是一個會程式設計的人,但是,作者進行了深入思考和回顧自身初學時遇到的痛點問題,進行了反向思維推導,來看待這個問題,作者的標準就是初學者是否具備計算機基礎知識,這個基礎知識就比較多了,並不是你會打個遊戲,你會看個電影,用個百度就是你有基礎知識了,基礎知識本身就很多,作者認為計算機專業最難的也是基礎知識,抽象的基礎知識很多資料結構,作業系統,在計算機領域都叫做基礎知識,但是,它們也是最難的,就算從事多年的計算機開發,依然需要反覆研讀和理解的基礎知識,所以,是否掌握基礎知識的評價標準確實是可以驗證你對程式設計入門的難易掌握程度。 |
2 | 環境設定是否複雜? | 這個問題真的是累哭了多少開始信心滿滿的初學者,本來懷著百分之二百的熱情來加入程式設計隊伍,結果一上來你不是教我怎麼寫出可以搞定一切qq賬戶的程式碼,而是來個一個莫名奇妙的環境變數設定,很多小夥伴滿臉黑人問號的問what,這就好比你本來去跟小哥哥/小姐姐去相親,結果去了不是相親,而是先講講財產怎麼分割,離婚後孩子歸誰一樣,讓人即莫名其妙又無可奈何,初學程式設計的小夥伴有多少人被環境變數搞得痛苦哀嚎呢?只有他們自己知道. 所以,一門語言是否有個複雜的(相對初學者)環境變數設定也是很多初學者痛苦的源泉,他們不想去做環境設定工作,因為經常出現一些他們無法搞定的問題,因此,這個問題也成為選擇學習程式語言的一個難度門檻. |
3 | 是否視覺化介面? | 這也是勸退更多初學者的一大難題,也是程式設計入門的一項基礎工作,一門語言一開始就用一個黑漆漆的執行介面,讓很多初學者都很畏懼,畢竟大家在多年的使用計算機的習慣中,已經被微軟的視覺化介面征服了,形成了使用視覺化介面的習慣,如果一門語言的開發是使用一個黑漆漆的執行介面,也會使得一些小夥伴迅速放棄,並自我催眠認為這門語言學起來好睏難啊! |
4 | 編譯器操作複雜度? | 很多初學者平時知識瀏覽瀏覽網頁,看看視訊,對於一款專業的軟體的使用一般都很困難,畢竟很多人無法熟練的使用word排版,製作精良的ppt和生成優美的excel表格圖示,現在讓他們使用一款全英文的編譯器,對於那些英語不是很精通,不喜歡英語的初學者,一下就像一座大山一樣壓倒了他們對於程式語言的選擇,所以,編譯器是否操作複雜也是要作為選擇程式語言的一個重要引數指標. |
5 | 學習的時間成本? | 大家總是對很多事務存在著開始新鮮,久處厭煩的狀態,因此,能不能是一門短時間學會的程式語言,也是成為對於程式語言的選擇的一個指標,這個時間成本可以參考很多培訓機構的時間表,他們的官網或者諮詢會告訴你培訓多久能學會這門語言,一般的都是半年左右,壓縮了課程,每天要學習八個小時以上,這樣也會拖得很多初學者失去了昨日的熱忱,因此,能否快速的學會一門程式語言,也是成為了程式語言選擇的要素 |
6 | 相關性學習時間的長短? | 有些東西就會分散初學者學習主語言的注意力,這就跟你同時學多門課程分散注意力一樣,比如既學數學又學物理,對於理科思維好的人是錦上添花,但是,對於理科思維不那麼活躍的人來說就是痛苦,同樣的就是既學文言文又學英語,也是對於另一些人同樣的痛苦,這也會或多或少的拖慢一個初學者對於主要程式語言的學習,有時會起到促進作用,而其他的時候就是滯待作用。因此,選擇一門程式語言的時候,要去了解其要學習多少相關性的知識,這些相關性的知識可能跟當前學習的程式語言無關,比如學習Java的整套,除了Java還要學習MySQL,Linux,git,Redis,JSP .... 這些就跟學習Java本身是無關的,你不會因為不會寫MySQL而寫不出Java本身的程式碼,但是,你要學習建立一個網站,又必須學習MySQL,這就會分散你學習Java的注意力,因此,你要探究一個程式語言是不是存在眾多的分散你注意力的輔助語言,這也是一門語言選擇的條件之一. |
這張圖應該很多選擇語言的初學者都看過,它的含義到底是什麼呢,含義就是越靠近底層的語言越困難,這個困難指的是對於人類的識別難度來說的,而越靠近上層的方向就會越簡單,這個簡單指的是人的理解和閱讀來說,比如最底層的機器語言就是一串0101,給你20個零一,你能迅速明白什麼意思,還是給你一個單詞Add,你更能理解其是什麼含義,這件事對於普通人來講就不言而寓了,因此,物件導向的語言,才成為更好學的程式語言,但是,很多語言在語法上也是互相借鑑(抄襲的),很多語法和格式也是類似或相近的,因此,一個人掌握了這個思維方式,他看其他語言長得像,那必然也是可以看明白的,就像有個人他們家族都有一個特色,左眼睛大,那麼,你遇到一個左眼睛大的人,在不考慮其他類似的家族的情況下,你首先會想這個人是不是跟左眼大家族有關係,因此,一門語言入門,就會很多門語言通用,比如最最經典的C語言,C++就是對C語言進行了借鑑,因此兩者在很多語法上是類似的,Java(另一個名字C++--)又是借鑑了C++,因此語法也是類似的,相近的還有Python/JavaScript/Php,因此,他們可以統稱為類C語言,這也是為什麼學校推薦學習C語言,你把他們借鑑的祖先都學會了,那你學那些兒子孫子,不也是手到擒來,因此,你會發現,那個C語言很好的同學,C++也會學的很好,Java也會很好,Python也會很好,而一個C語言學的不好的,其他語言一般也會很好,畢竟這些語言是一脈相承的,很多共同點,那麼你有一個點沒學會,那麼後期可能就在眾多類似的語言的相同地方栽跟頭.
程式語言的難易程度只是相對於人類來講的,比如你對這門語言的理解,跟你的生活是否相近,越跟你的生活相近,那麼你思考其他越不費勁,越遙遠,你理解越困難,但是,對於計算機而言,只有效率和空間的區別,而沒有理解的問題,所以,選擇程式語言的本身關鍵問題就是:
你個人能夠快速的理解的程式語言,就是最好入門語言
難點 | 描述 | |
---|---|---|
專業術語 | 很多想要入門的初學者都會在這一步上徘徊很久,找到一門入門書籍,每個字都認識,放在一起就是不知道什麼意思,歸根到底就是專業術語的儲備不夠,就像你讀一篇英語文章,有你認識的單詞,有你不認識的單詞,何在一起必然你也很難連貫的理解整個句子的含義,熟悉專業術語就像理解眾多單詞一樣,只不過這次不是記住單詞,而是記住名詞解釋. | |
翻譯 | 很多初學者學了程式設計,但是,看到程式設計題目很難將漢字轉化為程式,究其原因就是難以將漢字的表達方式轉化為程式的程式碼形式,這個就像你讀數學題目,要找到已知量和未知量,而程式需要找到什麼是變數,什麼是值,在哪裡變化,而這種操作,本博主認為就是在翻譯自然語言到程式語言的過程. | |
資料結構 | 由於這門語言是一種強型別的語言,因此,你要想很好的使用必須能夠清楚的知道一個量到底是什麼資料型別,而這個型別就要學習一門課程叫做"資料結構",因此,學習前還要理解資料結構,才能很好的使用這門語言. | |
語法 | 語言號稱是語法簡介,但是,這門語言的語法靈活性很高,因此,變化的方式很多,很多初學入門者很難快速的找到語法規律,同樣一個題目,可能有多種編寫方式,而初學者對於這種變化是很難快速直觀的感受到的. | |
陣列 | 這個概念可以跟數學的集合概念相互映襯理解,同時還要有線性代數的基礎,畢竟陣列的很多操作都是在遵循線性代數的規律,線性代數學的好的小夥伴,在這裡還是能夠很好的駕馭 | |
演演算法 | 這個概念在數學中叫做解題步驟,在計算機領域又進行了自己的定義和抽象化的描述,因為計算機的同一個題目很多時候,有多個解法,所以一般演演算法是不固定的,這樣很多初學者就會產生困惑,到底應該怎麼做這個題目,一個題目可以用for迴圈,可以用while,可以用do while,那麼我該用哪個,也是初學者很困惑的問題 | |
記憶體溢位 | 這個問題也是經常遇到的,因為這門語言比較靠近底層,因此,需要研究記憶體的問題,就要學習作業系統這門核心課程,因此,很多初學者也是不甚理解 | |
指標 | 這可以說是C語言的靈魂也不為過,但是,指標的操作又涉及了很多記憶體,記憶體地址的問題,這些問題也是要理解一些計算機組成原理和作業系統才會更好的理解概念,因此,有這兩門的基礎,還是會更好的理解這個概念. | |
結構體 | 結構體本身就是在現有的資料型別不夠的情況下,自定義一個資料型別,這裡也需要有資料結構基礎傍身,你才能快速理解使用. |
如果你是上述入門C語言困難,又想學習程式語言的小夥伴,那麼,可能物件導向的語言也是一個不錯的選擇,C語言是一個程式導向的語言,看看剛剛的圖片可以知曉,它是比較接近底層的,因此,他比物件導向的語言更加難學,因此,入門語言的小夥伴,你可以選擇相對C語言更簡單的物件導向的語言,比較經典的是C++/Java/Python,難易程度也是可以這麼排列的
C++<Java<Python
如果你對學習C語言入門比較有陰影,那麼,可以選擇在外型上比較差異大的Java,但是,Java需要設定環境變數,Python也需要設定環境變數,好在現在有很多網頁上直接執行程式碼的方案,可以解決初學者對於環境變數的設定困難,但是,網頁版的環境無法實現輸入功能,這也是一大困難,因此,最好還是能夠熟練掌握環境變數的設定.
Python是目前很多985高校推薦的入門程式語言,斯坦福大學也是用這門語言教學入門,可能一些高校發現了C語言對於初學者的困難程度和痛苦,Python相對於C語言需要經常強調資料型別來說,它是一門弱型別語言,你不用關注每個變數的資料型別是什麼,這對於資料結構基礎不好的小夥伴,簡直就是一個福音,因此,對於資料結構不好的小夥伴,選擇Python入門程式設計,無疑也是一種快樂.
前端和後端在很時候是相對的,這裡做個簡單的模糊比喻,比如你的計算機是一個桌上型電腦,你從顯示器看到的內容可以理解為是前端,你的機箱主機就是後端,因此,簡單的理解就是可以看到的內容就是前端的輸出結果,而你一般看不到的就是後端的內容.
所以如果喜歡視覺化介面,做什麼都可以直觀的,快速的看到的小夥伴,在程式語言入門的選擇的時候,就可以考慮從前端入門,這種方式的難度又比從後端入門更加簡單快速了.
這裡推薦的前段入門程式語言選擇就是HTML+CSS+JavaScript,這三個也被叫做網頁三劍客,如果能夠學會這三個也是屬於程式設計入門,JavaScript相對於後端多數開發語言都是更加簡單,便捷的,沒有資料型別的複雜概念,能夠快速在網頁上看到結果,對於很多習慣視覺化的入門者都是友好的,對於零基礎的小夥伴也是一個好的入門方案,而且,JavaScript也是類C語言,學過後,再看C語言,你就會發現你能看懂很多了.
序號 | 重點 | 描述 |
---|---|---|
1 | 難易程度怎麼樣? | 前端難度<後端難度 物件導向語言<程式導向語言 高階開發語言<低階開發語言<機器語言 |
2 | 環境設定是否複雜? | 前端環境 < 後端環境 < 系統環境 |
3 | 是否視覺化介面? | 前端開發語言的視覺化程度大於後端開發語言的視覺化程度 |
4 | 編譯器操作複雜度? | 後端開發語言的編譯器操作複雜程度大於一些前端開發語言的編譯器(比如HTML是記事本難度就比其他整合編譯器簡單很多) |
5 | 學習的時間成本? | 前段開發語言的入門學習時間少於後端開發語言的入門時間 |
6 | 相關性學習時間的長短? | 網頁三劍客學習的相關性時間學習少於整套後端語言的學習時間 |
序號 | 重點 | 描述 |
---|---|---|
1 | 程式碼能夠執行起來 | 對於一個入門初學者,不需要深入全面的瞭解各種知識原理,最重要的第一步,是讓自己寫的程式碼都能夠跑起來,跑起來能夠帶來信心,跑起來能夠帶來力量,跑起來能夠支撐你繼續努力的學下去. |
2 | 能夠處理簡單的小問題 | 在程式碼跑起來的時候,一定會遇到這樣的,那樣的問題,比如少寫了個分號,少寫了個括號,單詞拼寫錯誤,這種常見的問題,自己能夠找到並且改正,也是進步的原動力,這就涉及到認真,眼神好和會讀報錯資訊 |
3 | 會使用百度工具 | 很多初學者入門之後,能夠發現問題,能夠找到問題,但是,解決問題能力還不夠,因此,要學會使用百度,很多初期的問題都是可以在百度上找到的,每次遇到問題,也要記錄總結,才能不斷進步 |
4 | 熟練安裝編譯器和設定環境 | 這個難倒無數初學者的問題,真的是做個開發者必備的技能,所以,要把它的屬性點點滿,首先找到一個圖文並茂,步驟清晰詳細的安裝檔案,然後,比對安裝的編譯器版本,看看其視覺化的介面是否跟文章基本一致,然後,按照文章的步驟仔仔細細一步步執行,很多時候就是細節出了小問題,因此要單獨拿出一部分時間,就是反覆的做安裝這個工作,安裝和設定環境真的是一個孰能生巧的事情,就跟你組裝模型一樣,反覆多做幾次,十次每次都認真做,一定能夠將這個問題解決的 |
5 | 選擇一門語言入門後,一定要把它完整學完 | 很多初學者選擇一門語言後,今天看兩個覺得好簡單,然後,明天遇到困難了,就去學別的簡單的內容了,這樣是不對的,無論選什麼語言,都要認認真真從頭到尾完整的學完一整套,遇到不會的可以記錄下自己的問題,很多前期的問題,都會在整套學完得到解答,不要死扣一個概念原理不放,初期的時候,由於知識儲備不夠,生扣一個概念和原理,是不明智的,就像考試遇到不能馬上解答的題目,老師也是建議你先跳過,如果時間充裕在最後過來思考一樣,計算機的學習也是遵循這個原則,先整體後區域性,整體系統學過,再反過來思考曾經的問題,就會形成知識覆蓋,因為學習了更高階的知識,所以,初級的知識問題就會迎刃而解,你學會了二十以內的加減法,讓你做十以內的加減法,肯定是手到擒來. |
條條大路通羅馬,有人出生在羅馬,所以,面對同一個問題,站在不同的角度,不同的資源,不同的邏輯思維,所得到的結論,會存在千絲萬縷的差異,因此,程式語言入門也是這樣的,要根據自己的實際情況出發,具體問題,具體分析,你記憶力不是超級好,學習新事物的能力不是一級棒,沒關係,你換個方式方法,依然是王者,沒有最好的解決方案,最適合自己的就是最好的,C語言是強大,是鼻祖,是權威,但是,也不是保證人人都可以學會的語言,如果你走C語言入門學不同,學不懂,學著費勁,那幹嘛不找一個更輕鬆,更便捷的解決方案,C語言就像武功中的獨孤九劍,可以解決計算機裡所有的問題,可是你是個連劈砍都沒學會的人,給你劍譜你也看不懂學不會,不如給你一份初級劍法入門,等你學會一套劍法,再去領悟高深的劍法,豈不事半功倍,權威的是好的,但不一定是適合你的,就像給你馬雲一樣的創業的資金,你也不一定成為第二個馬雲,成功只能借鑑,不能雷同,入門程式設計只能選擇自己合適的,不能靠人云亦云,同樣在一個教室上課,同樣一個老師,還有打滿分和不及格的,你就能說不及格的同學一定不如打滿分的同學嗎,那只是不及格的同學在這個方面不擅長,沒準不及格的同學打遊戲一個虐五個,打滿分的同學打遊戲一個打不過呢,所以要善於發現自己的長處,不斷找尋適合自己的,才是學習和理解一切的最好方案,選擇比努力更重要.
實屬個人觀點,覺得喜歡的可以關注,點贊加收藏,您的支援就是所有愛好者的前進動力.