談新技術學習方法-如何學習一門新技術新編程語言

學習一門編程語言或者編程技術的方式基本上是這樣一個流程:

1,對學習這門語言或者技術的必要性進行評估。比如你是工作需要,或者興趣所至,甚至是為了把妹。這個必要性關系到你要學多深入,需要學習多長時間。

比如我想學Lua,是想學它如何在萬把行代碼里面實現了一個如此精巧的編程語言,想學習它的GC機制,學習它如何設計VM,如何用純C語言設計項目等等。

2,尋找相關資源。比較好的起始點是這門技術的官方網站以及維基百科。

比如Lua語言的官方網站是http://www.lua.org,維基百科地址為http://en.wikipedia.org/wiki/Lua_%28programming_language%29

一般在google.com里面敲入"lua wiki"之類就能直接搜索到相關維基條目。使用維基百科的好處是能夠對編程語言有個概括了解,基本上看了以后,你都可以跟別人扯上幾句一點問題也沒有。另外維基百科在編程語言相關條目中有一個很有意思的特色就是:influenced by以及influenced列表。比如Lua條目中注明被Scheme、SNOBOL、Modula、CLU、C++所影響,影響了IO、GameMonkey、Squirrel、Falcon、Dao、MiniD這些語言,通過它可以了解到這門語言的祖先以及后代,相當的有意思。

而在官方網站,會有最新鮮的新聞、下載、文檔幫助、論壇等相關內容。

image

3 找到官網以后,就要花上一段時間在官方網站好好瀏覽探尋一番。比如Lua官方網站的about欄目介紹了Lua是什么,為什么選擇Lua,誰編寫了Lua代碼等等。在News欄目有關于Lua的最新新聞。Download欄目中有軟件下載,學習一門語言,重要的是在練習中學習,大多數人都用Windows,就可以遵照下載欄目的推薦下載Lua for windows。

4 下載了軟件(Lua for windows),安裝成功以后,就可以看看文檔document了。在Lua的文檔網頁中有在線參考手冊(reference manual),大多數編程語言也都會在下載安裝包中自帶一份手冊文檔(就我所知Ruby Python都是如此)。

如何系統的學習一門語言?通過手冊不是什么好辦法,手冊內容相對教條枯燥,讀起來不容易。而且在線學習注意力不容易集中,很容易點著點著就跑偏了。最好的辦法還是要買一本實體的參考書。

買實體書就要用到amazon或者douban了,你可以根據amazon以及douban上的打分來確定這本書的好壞,另外在Lua的document頁面也有幾本書推薦,像是Lua這種略微偏門的語言,其實選書很簡單,因為就那么兩三本,我個人推薦Programming in lua,國內有翻譯版本,另外也可以下載到5.0的中文版。

image image

那么對于java、dotnet這類參考書烏央烏央的技術來說,該如何選書?這時候我會參考以下幾個因素:一個是語言創始人寫的可選擇,一個是奧萊里oreilly出版的可以買,另外可以參考豆瓣或者amazon的書單功能,看看其他人都推薦什么。最不濟的辦法可以看銷量,銷量高的書未必就好,但是選了也不至于錯的離譜。

買到書以后,最好花上幾天時間通讀一下,對于不理解的部分先標記略過,力爭先對語言技術的整體有個了解,對于一些基本操作、命令有一些印象。

5 通讀以后就要細讀了,一般來講,每個編程語言都力爭相對完整,所以必然有一些你未必感興趣的內容或者用不到的內容,這些都可以放在一邊需要時候再撿起來。細讀的過程最好準備個小本子,另外建議在github上注冊一個賬號,github有個gist.github.com頁面可以保存代碼片段,在做代碼練習的時候很有用。

細讀的過程力爭完全理解,書上的示例代碼也都盡量自己敲進去運行一次,另外可以對示例代碼做一定的擴展,比如在第五章的代碼中加入第四章的代碼,讓它們組合起來看看如何。

6 用一兩個月時間細讀以后就是熟練提高階段。當你細讀了感興趣的章節,最好在一段時間內盡量用新語言完成自己的編程需求,比如寫個網絡爬蟲,或者刪除某個目錄下的特定文件,或者做做文本處理,一定要經常用才不會忘記。這段使用過程可能需要兩三個月的時間,力爭達到常見的代碼函數不怎么查手冊就可以熟練寫下來。另外可以有意的對自己已經完成的算法或者應用進行語言上的翻譯,用新語言實現一下快速排序,實現一下正則表達式。編程其實就是個熟練過程,越練越順手。

這個時候可以試著購買一些advanced級別的書籍,了解一些更深入的內容,書籍的好壞依然是到amazon或者douban上搜索。

提高的過程中可以訂閱一些相關的博客內容,可以到blogsearch.google.com查找博客文章,或者到csdn、javaeye、cnblogs這樣的技術相關博客站點搜索。看到好的文章,可以使用delicious.com這個書簽網站保存起來以后慢慢閱讀。

7 在這段期間包括以后的使用過程,如果出現問題怎么辦?可以遵照以下順序查找幫助:

a)書籍或者手冊,在線文檔,在線幫助等等

b)在官網的wiki或者stackoverflow.com上搜索相關的關鍵字。

c)使用google搜索相關關鍵字。

d)到stackoverflow或者官方郵件列表、官方論壇中提問。

一般來說最好訂閱這門語言的郵件列表,比如Lua的郵件列表就是http://www.lua.org/lua-l.html 即使不提問,看看別人的問題也是很有意思的。

我不建議大家加入什么QQ群學習,QQ或者msn的即時通訊特性決定了它不是一個很好的學習方式,基本上只適合打屁聊天。

8 到了四五個月以后,按照前面步驟學下來的朋友應該已經算是中級水平了,不太可能問出什么“跪求、裸求”之類的弱智問題。這時候就可以往更深入的層次發展,比如試著讀讀源代碼,試著寫寫相關編程庫編程插件,在官方論壇、maillist、stackoverflow里面多幫人解答解答問題,試著多寫寫自己對于這門語言的使用經驗,分享一些相關問題等等,就此走向“破碎虛空”的高手之路。

好了,就這樣吧!


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/452521.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/452521.shtml
英文地址,請注明出處:http://en.pswp.cn/news/452521.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

信息隱藏和局部化

信息隱藏原理:應該這樣設計和確定模塊,使得一個模塊內包含的信息(過程和數據)對于不需要這些信息的模塊來說,是不能訪問的。 局部化是指把一些關系密切的軟件元素物理地放得彼此靠近。 如果在測試期間和以后的軟件維護期間需要修改軟件&#…

圖像識別自動化android,Android自動化測試

寫在開頭:Android UI 自動化測試推薦網易的Airtest,也是谷歌推薦的,操作簡單,而且基于圖像識別根據用戶操作界面自動生成Python測試代碼JUnit單元測試testImplementation junit:junit:4.12image.pngimage.png使用gradle命令進行單…

如何重構“箭頭型”代碼

本文主要起因是,一次在微博上和朋友關于嵌套好幾層的if-else語句的代碼重構的討論(微博原文),在微博上大家有各式各樣的問題和想法。按道理來說這些都是編程的基本功,似乎不太值得寫一篇文章,不過我覺得很多…

Django博客--4.開發博客文章詳情頁

文章目錄0.思路引導1.設計文章詳情頁的 URL2.獲取文章的URL3.編寫 detail 視圖函數4.編寫詳情頁模板5.更改主頁中跳轉詳情頁的地址鏈接6.模板繼承--抽取base.html7.模板繼承--修改 index.html使其繼承base.html8.模板繼承--修改detail.html使其繼承base.html9.結果展示0.思路引…

10、并發容器,ConcurrentHashMap

Java 提供了不同層面的線程安全支持。在傳統集合框架內部,除了 Hashtable 等同步容器,還提供了所謂的同步包裝器(Synchronized Wrapper),我們可以調用 Collections 工具類提供的包裝方法,來獲取一個同步的包…

程序員的本質

Computers are useless. They can only give you answers. – Picasso計算機沒有什么作用。他們只能告訴你答案。——畢加索很多人(包括我岳母)認為計算機變得如此智能,所以在不久的未來將不再需要程序員。另外一些人認為程序員是天才&#x…

模式-視圖-控制器模式2.0

1 MVC的實現   1.1 分析應用問題,對系統進行分離   分析應用問題,分離出系統的內核功能、對功能的控制輸入、系統的輸出行為三大部分。設計模型部件使其封裝內核數據和計算功能,提供訪問顯示數據的操作,提供控制內部行為的操作…

總體設計的原理

1 模塊化 2 抽象 3 逐步求精 4 信息隱藏和局部化 5 模塊獨立

android 手動回收對象,Android Studio Studio回收列表中的JSON對象

我想在recyclerview中顯示一些JSON對象,并且希望它們在日期之后排序,我該如何實現?下面是下載從JSON URL的數據的方法:Android Studio Studio回收列表中的JSON對象public void downloadFromSkistar(){try{URL url new URL("…

剖析管理所有大數據組件的可視化利器:Hue

歡迎關注大數據和人工智能技術文章發布的微信公眾號:清研學堂,在這里你可以學到夜白(作者筆名)精心整理的筆記,讓我們每天進步一點點,讓優秀成為一種習慣! 日常的大數據使用都是在服務器命令行中…

Django博客--5.讓博客支持 Markdown 語法和代碼高亮

文章目錄0.前言1.安裝 Python Markdown2.在 detail 視圖中解析 Markdown3.safe 標簽4.代碼高亮5.效果展示0.前言 Markdown 是一種 HTML 文本標記語言,只要遵循它約定的語法格式,Markdown 的解析工具就能夠把 Markdown 文檔轉換為標準的 HTML 文檔&#…

耦合

模塊的獨立性很重要,因為有效的模塊化(即具有獨立的模塊)的軟件比較容易開發出來。 獨立的模塊比較容易測試和維護。 模塊的獨立程度可以由兩個定性標準度量,這兩個標準分別稱為內聚和耦合。 耦合 耦合是對一個軟件結構內不同模塊之間互連程度的度量。…

成為更優秀的開發人員:第二步-知道你的核心競爭力

編者按:原文作者羅布沃林(Rob Walling)從事Web應用開發10年之久,擔任過業內顧問、自由開發人員和全球最大的信用卡預付公司City of Pasadena的開發經理。現居住于加州中部城市弗雷斯諾(Fresno)。關注并指導…

android 字體間間隔,TextView設置行間距、字體間距

一、設置行間距1、設置行間距:android:lineSpacingExtra,取值范圍:正數、負數和0,正數表示增加相應的大小,負數表示減少相應的大小,0表示無變化2、設置行間距的倍數:android:lineSpacingMultipl…

破解mysql數據庫的密碼

發現的1小問題 語句打錯以后應該退出本語句,再繼續打新語句.也可以打\c,退出本語句. 如何破解數據庫的密碼: 1:通過任務管理器或者服務管理,關掉mysqld(服務進程) 2:通過命令行特殊參數開啟mysqld Mysqld --skip-grant-tables 3:此時,mysqld服務進程已經打開,并且,不需要權限檢…

Diango博客--6.Markdown 文章自動生成目錄

文章目錄0.思路引導1.在文中插入目錄2.在頁面的任何地方插入目錄3.美化標題的錨點 URL0.思路引導 Markdown 在解析內容的同時還可以自動提取整個內容的目錄結構,本文內容將從以下幾個方面展開: 1)在文中插入目錄; 2)在…

Java中對象和引用的理解

2019獨角獸企業重金招聘Python工程師標準>>> 偶然想起Java中對象和引用的基本概念,為了加深下對此的理解和認識,特地整理一下相關的知識點,通過具體實例從兩者的概念和區別兩方面去更形象的認識理解,再去記憶。12一、對…

android怎樣封裝,如何封裝屬于自己的博客網站安卓APP 源碼家園

說實話我今天在寫這個文章的時候是我使用易語言(E4A\易安卓)的第一天,我也是易小白,但是的確可以用!我為什么寫這個文章呢?因為之前我也想封裝自己的網站,然后去網上找的在線封裝生成APP,果然能封裝好了&am…

程序員常犯的5個非技術性錯誤

一個好的軟件開發人員需要培養兩種技能:技術技能和非技術技能。不幸的是一些開發者只注重技術的部分,以致養成一些陋習,下面是最常犯的5個非技術性錯誤: 0. 缺乏自律 Jim Rohn曾經說過:自律是目標和成果之間的橋梁。我…

Redis進階實踐之二十 Redis的配置文件使用詳解

一、引言   寫完上一篇有關redis使用lua腳本的文章,就有意結束Redis這個系列的文章了,當然了,這里的結束只是我這個系列的結束,但是要學的東西還有很多。但是,好多天過去了,總是感覺好像還缺點什么…