關於學習編程這個主題,有各類讀者屢次要求寫一寫,並且要求文藝的寫、抒情的寫、充滿社會主義特點的寫,要作到:問題看起來巨複雜,讀起來巨簡單,學起來巨容易!看把大家慣成什麼樣子了,Mac 君你繼續去面壁吧。html
好吧無論他,咱們接着聊。前端
若是你準備將來投身到 IT 江湖從事編碼這份有前途的職業,學習一門語言顯然是遠遠不夠滴,就像你初入江湖,告訴別人,python
「兄弟只會太祖長拳!」
問,「Level 可及喬峯?」
答曰,「不及萬一」git
人家一看你就是P2的命,PK 時一個大招直接秒掉。寫到這我想起了一個叫作冰河的兄弟,也是奇葩一朵,在程序語言方面一輩子只愛 Lisp(Lisp號稱編程語言的祖宗),在人類語言方面則除了中英文,還在同時學習意、法、西、德四門語言,並且不是隨便學學,並且神志沒有錯亂,這一點讓我簡直佩服到逆天,一門英語已經從初中折磨我到如今了,在人類語言層面,我經常是被秒殺的。程序員
因此,若是編程有可能成爲你的職業,那麼5-10年的學習和實踐時間是須要的,由於你可能要學習編程語言、操做系統、算法、數據庫(Sql 的 NoSql 的)、Web 開發等等,還有各類數不清的引擎和架構,特別使人髮指的是當你熟練的掌握了一門技術以後,就會有位赤腳大仙走過來告訴你,孩紙,你學的技術已經不是方向嫋,而後在你絕望的眼神裏飄然離去……寫 Java 的兄弟感覺一下……github
若是你的職業發展與編程無關,只是想學習一門語言磨練人生意志,那麼這事就比較容易了,好比 Python、Shell、AppleScript、Ruby 等,根據本身經常使用的操做系統選一個就好,若是你用 Mac,這些語言能夠任選,並且環境都是現成的,若是你用其餘操做系統……,對不起,MacTalk 只說 Mac。這些語言除了可以幫助你鍛鍊意志和提升邏輯思惟能力的同時,還能夠在某些關鍵時刻幫助你處理各類繁瑣複雜的工做,好比大量文本、定時任務、自動化任務、編寫經常使用小工具等等,還能夠引起跨界編程的轟動效應,不信的話去百度搜索「Python 女神」便知。算法
好的,寫到這若是尚未打消你學習編程的熱情,那就能夠繼續往下讀,下面纔是正文:shell
不管學習什麼,必定要有明確的目的和目標,若是是抱着玩票的心態,最多可以「知道」而不是「學以至用」,因此搞清楚本身爲何要學習編程,準備學習哪門語言,要達到什麼程度,想用多長時間等等,這些問題在你的頭腦裏有個大概的思路和計劃,就基本解決了 Why 和 What 的問題,下面咱們來找 How。數據庫
多說一句,其實學什麼都有用的,大部分時間你只是不知道會在何時什麼地方用。編程
選定了語言不要着急去網上搜索各類祕籍、評價和下載各種盜版電子書,每一個技術領域都會有一些經典的聖經級別的圖書,找到它們,購買一本紙質書或電子書,最好是帶練習題的,能夠邊學邊作。
如何找到這些圖書,豆瓣讀書網應該是個不錯的選擇,雖然豆瓣的電影評價過於小清新口味,但圖書評價仍是值得信賴的,另外找樂於分享的老鳥推薦一下也是個不錯的選擇。
每一門編程語言的學習內容都會涉及:基礎運行環境、數據類型(數字、字符串、數組、集合、字典等)、表達式、函數、流程控制、類、方法等等,不一樣的語言還有一些不一樣的特性,這些內容並不複雜,儘快經過大量的練習擊倒它們,而後再去深刻了解面向對象、併發、異常、文件與目錄、網絡、標準庫等內容,並輔以持續的練習,這些內容纔可以讓你真正進入編程領域並作出實際的軟件。
初學者天天花1-2個小時是須要的,儘可能保證閱讀和練習的持續性和時間長度。其實1-2個小時根本不算什麼,想一想大家花費在看電視和刷微博上的時間吧,若是還說沒時間,那就是不抽不舒服斯基了。
記住那句話:一邊憎惡虛榮,一邊找各類機會虛榮,在應該爲了虛榮而努力的時候,丫拖延症犯了。
現代人的生活和學習是如此的方便,由於咱們有 Google!俗話說內事不決問百度,外事不決問 Google,技術絕對屬於外事,你要是去問度娘技術問題,被人家的迴旋踢踢飛可別怪我沒告訴過你。
之前學習技術只能經過技術圖書和口口相傳,如今遇到問題從Google 那裏就能夠找到答案,因此用好 Google 你就能如猛虎加之羽翼而翱翔四海。若是你還在認爲 Google 就是個搜索框,那就圖樣圖森破了,Mac 君今天爲你推薦這兩篇文章:
「Google,Google,再Google」 http://wordpress.lixiaolai.com/archives/7572.html
「如何用好 Google 搜索引擎」 http://www.zhihu.com/question/20161362
讓你的搜索不同凡響。
俗話說的好,欲練神功揮劍自宮,sorry 不是這句,工欲善其事必先利其器,想要學習編程必定要寫代碼,咱們不提倡咬破手指寫bloody code,因此必定要找到趁手的武器。我我的把工具分爲三種,第一種是部分程序語言自帶的 shell,第二種是文本編輯器,第三種是集成開發環境(IDE)。
一、Shell,若是你在學習 Python,那麼python shell,bpython 和 ipython 都是不錯的選擇;若是你在學習 Ruby,那麼irb就是 ruby 的 shell;若是你在學習 Shell,打開終端(Terminal)就是 shell;若是你在學習 Java 或Objective-C,對不起,這些語言沒有 shell。
Shell 可以單步執行你的編程語句並給出即時反饋,這種交互式編程方式很是適合初學者,所見即所得,因此凡是提供 shell 工具的語言,推薦你們優先使用shell學習。
二、文本編輯器,這個領域向來是「猿家必爭之地」,溢美之詞和吐槽之聲交相輝映,從古至今綿延不絕,提及來都是眼淚,好比Emacs和Vim程序猿,你們沿着不一樣的道路和目標前進,但老是會在某個點交叉相遇,見面就扔石頭和臭雞蛋,砸得對方鼻青臉腫,而後擦擦眼淚和口水繼續前行。還有 IDEer 說 Vimer 裝逼,Emacser 說 IDEer 垃圾balabala……種種血淋淋的事實足以拍一部驚悚科幻動做言情片。
我本身比較喜歡文本編輯器,可是也不排斥 IDE,這種人俗稱兩邊不待見,但我仍是那句話,不爲本身設限,不一樣的環境應該選擇最好的工具。下面給你們推薦幾款文本編輯器:
(1)VIM:號稱編輯器之神,全鍵盤操做,充滿速度感,良好的插件體系,幾乎知足一切程序語言的編寫需求。
(2)Emacs:神的編輯器,捆綁了文本編輯器的操做系統。沒了,你們感覺一下……
(3)TextMate:Mac 專有編輯器,號稱 Ruby 程序員最愛,當年1.0版一份39歐元,總共賣了十幾萬份拷貝,如今2.0免費開源,原來的開發者已經消失無蹤,聽說掙足銀子去太平洋的小島曬太陽去嫋。
(4)Sublime Text:文本編輯器的後起之秀,發展迅猛,媲美 TextMate,跨平臺,比 Vim 和 Emacs 容易上手,號稱性感編輯器。
以上四款自成體系,都有完善的插件生態環境,諸君可任意選擇。
對於TextMate 開發者賺了錢就跑的惡劣行徑,你們徹底能夠批判,有時咱們不得不痛苦的認可,國外程序員的雞賊是我泱泱大國之IT民工永遠沒法理解滴「淚」。
三、集成開發環境(IDE)
IDE 是圖形化的集成開發工具,具有精準的詞法分析、編程提示、調試等功能,功能之繁複用戶自知,若是作工業級編程和團隊協做的話,仍是推薦使用 IDE。
在這裏推薦幾個系列:
(1)Eclipse 系列,經過插件方式幾乎支持全部的經常使用編程語言,免費。
(2)JetBrains 系列,產品線豐富,幾乎都是精品,Java、Python、Ruby、Php、Objective-C、Web 等包羅萬象,收費。
(3)Xcode,Mac 上優秀的集成開發工具,全部的 Mac App 和 iOS App 都出自此貨之手,免費。
微軟的技術不懂,就不推薦了,嘿嘿……
除了寫代碼的工具,你還須要記錄、閱讀和查詢,因此再爲你們推薦三款應用:Evernote(筆記)、Pocket(之後讀)和Dash(代碼檢索)。具體介紹和用法就不說了,不要忘了上一篇提到的Google君。
小時候看西遊記發現,師傅原來是用來人肉的;後來看天龍八部發現,牛人都不須要師傅,即便有也是要被別人一掌震飛的;再後來看射鵰英雄傳發現,愚鈍的人首先得有師傅,其次得有不少師傅,再次每增長一個師傅功力都以指數級別增加,二、四、八、16……
因此,若是有人告訴你三人行,一個老師都沒有,你至少要質疑這一觀點,同時考慮本身會不會筋斗雲,是否天賦異稟以一當百等等。若是不成,那仍是去找師傅好了。
有老師的好處有這麼幾個:
(1)老師可以看到你本身看不到的地方,人這一生,不多人能給本身一個清晰的評價和認知,要麼高估本身,要麼低估本身,而旁觀者,尤爲是老師,每每可以看到你的弱點、長處、威脅、變化,並給你適時的提醒和指導,少走彎路。
(2)全部領域的知識都是成體系的,若是有這個領域的行家裏手在你早期的學習階段進行指導甚至設計練習技巧,與本身琢磨的效果是不可同日而語的。估計每一個人都會有這樣的經歷,一個問題本身,想到心碎想到夢醒也沒有結果,別人過來抽絲剝繭條理清晰的一講,不只你懂了,連你的小夥伴都懂了。這就是聽君一席話勝讀十年書的道理。
(3)好處多多,餘不一一。
可是走出校門以後再想找傳統意義的師傅就很難了,像絕地武士那樣和 Master 出雙入對同生共死更無可能,這時你就須要把身邊的朋友、同事當作老師和資源,不恥下問,並且要問的有智慧,讓人有回答慾望,那麼如何提問呢,請參考我以前寫的一篇「如何提問」。
本身學習和同事交流之餘,能夠參與一些網絡社區的交流,推薦:
技術問答社區:http://stackoverflow.com ,在技術領域幾乎包括萬象,無所不知。 GitHub:https://github.com ,幾乎全世界優秀的開源軟件做品都在上面。
另外還能夠參與一些羣組,訂閱一些優秀的我的博客,這個時代依然有人願意貢獻優質內容。
選擇性參與一些技術會議,好比 QCon,不期望在會場能學到什麼,但能夠了解技術趨勢,並看看別人在作什麼。
以前寫過兩篇「刻意練習」的文章,自感對學習編程有必定幫助,你們能夠去讀一下。
這一部分適合已經有必定編程基礎的童靴
什麼是溫馨區?若是你是個新手,你就沒什麼溫馨區,什麼都不懂嘛溫馨個毛,在磕磕絆絆的學習中懵懂前行,期間可能還伴隨着老鳥的嘲笑和進度的壓力,終於有一天你武功精進,乾坤大挪移練到了第五重,工做中開始駕輕就熟遊刃有餘,不斷有新人或老人來找你解決問題,你微笑着迎接挑戰,淡淡的送走難題,你揮一揮手,不帶走一片雲彩,這是什麼境界?這就是你的溫馨區,這和靠在沙發上看電視的溫馨不是一回事,一般進入溫馨區須要花費你不少的時間和精力,須要你不斷的練習,一旦進入,你會enjoy it!
這時候,若是有人膽敢讓你脫離溫馨區,可算要了親命了,你會勃然大怒,輕則爭吵,重則離職。這種事遇到太多了,一個寫前端的你讓他學習一些後端技術,一個寫Java的你讓他學習一下C,獲得的答覆可能會,Sorry, I feel very uncomfortable!
沒有人學新東西的時候很是舒服,一旦經歷過重新人到老鳥的過程,再讓你進入陌生的領域,那種痛苦會讓你自發的去抗拒。可是一我的不可能永遠躲在溫馨區裏,逃離溫馨區會有助於你從不一樣的角度看問題,視野會更加開闊。人總要往前走的。
不少人在某個地方待久了就會很是懈怠,沒退休就像在養老,這時候你就知道,他們在溫馨區過久了,與在哪一個地方無關。
實戰老是很重要,爲你們推薦一個在線學習編程網站:
假以時日,各位一定武功大成,那時橫刀立馬、拔劍四顧,說英雄誰是英雄!
文章內容來自微信公衆帳號:MacTalk
· 微信號:sagacity-mac
· 回覆 m 能夠查閱全部歷史文章和Mac Tips
· Web站點:macshuo.com
以上內容均屬於轉載。
原文地址:http://macshuo.com/?p=703
P.S.
對在 用好工具 這一片斷裏推薦的三個工具作下說明:
一、Evernote(筆記)
離線不可閱讀和編輯。iPhone 上離線也不能用。離線功能須要花錢購買。
二、Pocket(之後讀)
好用。能夠離線閱讀。
三、Dash(代碼檢索)
Mac 上纔有。不是 Mac 的就不用找了。