作者 謝恩銘,公眾號「程序員聯盟」(微信號:coderhub)。
轉載請注明出處。
原文:http://www.lxweimin.com/p/0194b98df6bc
程序員聯盟群里經常有人問:
- 我數學不好可以學編程嗎?
- 我英語不好可以學編程嗎?
今天就來一次性回答這兩個問題。
事先聲明:我絕對沒有貶低數學對編程的重要性的意思。
數學知識對于編程是很關鍵的,比如數據結構和算法的學習就得有較好的數學基礎。好的數學思維也很有用。
這幾年火熱的 AI(人工智能)的學習更是離不開數學:概率論、微積分、線性代數,等等。
我這些年的體會是:英語對于編程的(優先)助力比數學要大。所以要說優先級的話,首先過了英語這關再說。
為什么這么說呢?很簡單,有些編程不需要太多數學知識,但是英語卻是避無可避。
除非你是用易語言編程(不過說實話,中文真的不適合用來寫程序。英語的字母組成和特性決定了編程還真需要用英語),不然離不開英語。
對編程來說,學好英語有以下必要性:
對編程語言里的基本詞匯敏感,便于理解意思。很多函數和變量名都是自注釋的(也就是說光看名字就知道意思了),例如 isFinished() 函數,不懂英語的話就不知道是什么意思,如果會英語馬上會知道是判斷“是否結束”的函數。很多 API 或源碼是沒有注釋的,因為函數名已經可以達意了,但不會英語你就看不懂。
能夠為變量或函數起個好名字。命名可以一大學問,名字起得好,一看便知,就是第 1 點中所說的自注釋了。如果英語不好。起了個有語法錯誤的名字,或者胡亂起一個名字,或者起一個拼音讀音的名字(比如 haoChiMa,簡直不能忍),對于閱讀你程序的人或者是你日后自己回看自己的程序,簡直慘不忍睹。
很多好的教程和書籍是英語的。雖然現在我們偉大的祖國越來越發達,國人編程整體水平越來越高,也著有非常優秀的書籍,寫了非常優秀的博客等。但是,老外的思維方式還是跟我們不太一樣,看老外的文章往往比同類的中文教程易懂。因為他們思維跳躍,語言幽默、形象,看起來比較輕松愉快。不過,我越來越發現:比如我在搜索 Android 一個知識點時,Google 搜索的英文結果沒有滿意的答案,在中文的博客里卻會找到答案。這說明我國已今非昔比了。
很多好的論壇,網站是英語的。例如最著名的 StackOverflow,Github,等等。在上面可以用英語提問,回答;參與開源項目,撰寫文檔,等等。當然了,國內 CSDN 這樣的綜合編程社區也是很優秀的,但是一般來說新技術會第一時間用英語在國外網站發出來,例如 Android 的各種新聞,你想看中文版的話還需要等人翻譯,這就滯后了。
很多書籍,有中文翻譯版,但是不好理解,因為翻譯水平不行。所以要看原版的話只能會英語。很多編程書籍我都看英文原版。
很多軟件,沒有漢化,只能會英語。
我在之前的文章里提過,我這些年很努力,幾乎每天都在學習。我是一個持續學習者,我覺得自己始終是很不足的,所以必須終生學習。
這些年進步比較快的一個很重要的原因就是我的英語還不錯(當然了,比我英語好的人很多),英語好對編程真的幫助極大!
當然了,進步較快的另一個原因是我數學也不錯,幸虧學生時代沒有偏科。
反觀數學:某些特定領域需要數學比較好。
例如游戲開發,3D 游戲需要有坐標系的轉換,重力,反彈,角度等計算,需要數學知識。
嵌入式底層,位移,與、或、非等運算,二進制,十六進制,八進制和十進制的轉化和計算,需要數學知識。
高科技或研究領域,比如航空信息工程,那數學要求很高。
人工智能,算法研究領域,數學基礎也非常重要。
不過,這些編程領域,都離不開英語。
一般的編程,你說 Web 編程吧,如果是前端,一般不需要太多數學知識吧;做 Android 應用開發,也不一定需要數學多好。
當然了,如果你英語好,數學也好,那自然是:“強強聯手,天下我有”
那么,如何學好英語呢?
首先,興趣是最好的老師。
如果你不覺得學英語是一件苦差事,反而饒有趣味,那么你的進步會很快。
我就是這樣,學習外語對于我來說是很有意思的事。
如果你對英語興趣不大,那可以用下面的幾個方法:
1. 語法是主干
不少人學外語,總覺得應該要學一些常用語,和老外打成一片,口語是很好啊,單詞量也有。但是假如知其然,不知其所以然的話,你是走不遠的。
學語法,就是“知其所以然”。
要真的學好一門外語,語法太關鍵了。語法是銅筋鐵骨,打扎實了,其他的單詞,什么的,慢慢裝飾不急。
以前我的初中課外英語老師就經常強調:“英語要打扎實語法”。所以我對語法一直不敢怠慢,后來發現,學其他外語也特別快。只要先從語法入門,其他都水到渠成。
2. 看到背后的益處
也許你會說:“什么?學英語還有什么益處?除了讓我不開心之外。”
是的,學英語當然大有益處。學外語,其實是學其背后的文化。一門語言,代表了說這門語言的國家人群的生活習慣,思維方式,文化歷史,等等。
如果把學英語想成能夠接觸英語文化,學習其歷史背景,人文藝術,高新科技的大好機會,那你學習就有了新的目標和動力了。
什么?你還是沒有動力?你,你給我出去... :P
3. 學腔調
學一門語言,其實很關鍵的一點是學腔調。什么是學腔調呢?就是模仿,類似“鸚鵡學舌”。
你應該聽那些純正的外語者是怎么發音的,他們說話用的是什么腔調,你就跟著學,模仿就好了。他們怎么待人接物,你也怎么做;他們怎么用這門語言,你也怎么用。
因為語言不是干巴巴的文曲星的發音,每種語言都有其特殊的腔調。這一點,說英國腔英語的人肯定大有體會。
4. 不死背單詞
不少朋友學英語,拉起來就猛背單詞,個人覺得不是太有效。誠然,單詞對于語言來說很關鍵。假如沒有詞匯量,你語法再厲害,也是張口的“聾啞”人,不是嗎?聽也聽不懂,說也說不出來。
但是單詞怎么才能記得牢,個人覺得用情景記憶法最佳:比如多和老外聊天,他們提到或糾正你的單詞,你會一直記得,基本都不會忘了,因為你把這個單詞和當時的情景聯系在一起了;看文章看電影記單詞,也是不錯的方法,這樣才能活記,也是利用情景記憶法。
5. 勇敢說出來
“瘋狂英語”等概念其實是有其道理的。中國人一般都講求低調做人,要謙虛不張揚,隱忍不狂放,因為“槍打出頭鳥”。
但是很多外國的英語老師都會鼓勵我們不要怕丟面子,就要大聲說出來。畢竟肚子里再有墨水,不說就只能黑在肚子里。
6. 看電影和唱歌
看電影和學唱英語歌曲是很好提高英語的技巧,但是這個是在掌握好語法的情況下,不然跟不學語法只和老外聊天沒什么區別。
看英語電影時,可以用遮擋物遮住字幕部分,看幾遍電影,因為看中文字幕你是很難提高的。
學英語歌呢,可以先自己把歌曲用中文翻譯出來,搞清楚意思了,再去背。
7. 多看書
不用說了,多看一些好書吧。像我這樣不能靠顏值的,就得更努力~
我是 謝恩銘,公眾號「程序員聯盟」(微信號:coderhub)運營者,慕課網精英講師 Oscar 老師,終生學習者。
熱愛生活,喜歡游泳,略懂烹飪。
人生格言:「向著標桿直跑」