?非程序員?編程指南

轉(zhuǎn)載請(qǐng)注明,來(lái)自微信公眾號(hào):以為以為

編程往往不是人們感興趣的話題。但它很有價(jià)值,除了專業(yè)的軟件開(kāi)發(fā)工程師,也就是所謂的程序員,很多人在工作中其實(shí)都會(huì)不同程度的涉及到。即使沒(méi)有剛性的需求,很多工作若以編程適當(dāng)助力,往往可以提升效率。并且,不僅僅是工程技術(shù)人員可以從中受益,早在 1980 年代,作家王小波就自己寫(xiě)程序滿足日常寫(xiě)作的需求以及提高創(chuàng)作效率了。

我們今天要展開(kāi)的就是針對(duì)?非程序員?編程的話題,讓我們一項(xiàng)一項(xiàng)討論。

1. 以解決問(wèn)題為目的

編程不是說(shuō)非要做一個(gè)什么系統(tǒng)出來(lái),我們的目的是要解決問(wèn)題,所以首先要想清楚解決的是什么問(wèn)題。大多數(shù)情況,可以歸結(jié)為兩類:一類是,我們希望把那些重復(fù)的工作交給軟件去完成,從而節(jié)約人的時(shí)間;另一類是,我們要針對(duì)特定領(lǐng)域進(jìn)行特殊的計(jì)算和分析,我們對(duì)這個(gè)領(lǐng)域很熟悉,但需要借助軟件解決這個(gè)領(lǐng)域的一些問(wèn)題。

當(dāng)面對(duì)的問(wèn)題,沒(méi)有成熟的軟件幫我們解決時(shí),我們可以考慮通過(guò)適當(dāng)?shù)木幊坦ぷ鱽?lái)解決。問(wèn)題分析清楚,解決問(wèn)題的道路就會(huì)平坦一些。

2. 如何選擇編程語(yǔ)言

編程語(yǔ)言的選擇取決于要解決的問(wèn)題。編程語(yǔ)言沒(méi)有好壞,更沒(méi)有尊卑,只有合適不合適,能解決問(wèn)題的語(yǔ)言就是好的語(yǔ)言,這是大的原則。

在這個(gè)大的原則基礎(chǔ)上,我們可以考慮以下幾個(gè)方面:

學(xué)習(xí)曲線:學(xué)習(xí)曲線過(guò)于陡峭的語(yǔ)言顯然不適合?非程序員?,主要是考慮投入的時(shí)間和獲得的效果,同樣的條件下要選那些易于使用上手的語(yǔ)言開(kāi)始。

成熟度:不要趕時(shí)髦選擇那些新推出的,尚未成熟的語(yǔ)言,往往有很多?坑?,會(huì)有很多不必要的麻煩。

庫(kù)資源:要和想解決的問(wèn)題匹配,不要企圖自己重造輪子,一個(gè)語(yǔ)言的背后就是一個(gè)工具體系,要看這個(gè)工具體系里是不是涵蓋了你的需求。除了語(yǔ)言本身的庫(kù),還要考慮整個(gè)語(yǔ)言生態(tài)上提供了哪些軟件包可以直接拿來(lái)用,這往往是最有價(jià)值的部分。

文檔和社區(qū):文檔是否全面詳盡,是否有活躍的社區(qū)也很重要。當(dāng)你需要幫助時(shí),詳盡的文檔是最好資料,活躍的社區(qū)可以提供豐富的經(jīng)驗(yàn)資料,當(dāng)遇到疑難問(wèn)題也更容易找到渠道去討論。

3. 快速取得進(jìn)展

明確了問(wèn)題,選擇好語(yǔ)言和相應(yīng)的庫(kù)、軟件包等。然后,最重要的是以最快的速度寫(xiě)出第一個(gè)可以運(yùn)行的程序,哪怕只是簡(jiǎn)單的輸出一些信息。

因?yàn)樽咄甑谝徊?,才表明你選擇的語(yǔ)言和工具等已經(jīng)安裝和配置完好,是可以實(shí)際運(yùn)行起來(lái)的,有了這個(gè)基礎(chǔ),后續(xù)的所有步驟才會(huì)順利。

然后,最好把你要解決的問(wèn)題的關(guān)鍵部分提取出來(lái),簡(jiǎn)化一下,寫(xiě)程序去驗(yàn)證下是不是可以達(dá)到預(yù)想的效果。用最簡(jiǎn)化的方式去驗(yàn)證最關(guān)鍵的部分,寫(xiě)出可以運(yùn)行的程序。

在這個(gè)基礎(chǔ)上去逐步完善,一小步一小步去豐富和驗(yàn)證,只到最終達(dá)到滿意的效果。

不要一開(kāi)始就大而全,不要過(guò)度設(shè)計(jì),把問(wèn)題的關(guān)鍵點(diǎn)找到,從這里開(kāi)始,然后去不斷的迭代完善。

4. 獲取高質(zhì)量的網(wǎng)絡(luò)資源

最好從原始的文檔入手,不要急于求成去看那些二手資料。大多數(shù)語(yǔ)言都有官方網(wǎng)站和官方文檔,這些是最有效的學(xué)習(xí)資料。另外,還要推薦一個(gè)網(wǎng)站:

stackoverflow.com

這是一個(gè)軟件開(kāi)發(fā)的問(wèn)答社區(qū),人們開(kāi)始用一個(gè)新的語(yǔ)言遇到的問(wèn)題,在這個(gè)網(wǎng)站上幾乎都有人問(wèn)過(guò),并且得到了很好的回答。如果需要,去相應(yīng)的語(yǔ)言目錄下去找即可。當(dāng)然,也可以搜索想要的內(nèi)容,如果需要可以開(kāi)新的問(wèn)題提問(wèn)。

如果一定要用搜索引擎去查詢一些問(wèn)題,這里分享一個(gè)經(jīng)驗(yàn),通常,來(lái)自這兩個(gè)源的內(nèi)容質(zhì)量還可以:

一個(gè)是來(lái)自網(wǎng)易博客,網(wǎng)址里含有:blog.163.com ;另一個(gè)是博客園,網(wǎng)址里含有:cnblogs.com 。這里還有一批軟件開(kāi)發(fā)業(yè)者堅(jiān)持更新他們的 blog ,積累了一些優(yōu)質(zhì)內(nèi)容。

5. 常見(jiàn)語(yǔ)言的特點(diǎn)和適用場(chǎng)景

VBA - 是微軟 Office 系列內(nèi)嵌的腳本語(yǔ)言,如果面對(duì)的問(wèn)題和 Excel 、Word 相關(guān),并且已有的功能解決不了這樣的問(wèn)題,那么可以考慮用 VBA 來(lái)寫(xiě)一些擴(kuò)展來(lái)解決問(wèn)題。

更多信息參見(jiàn):

https://msdn.microsoft.com/en-us/library/office/ee814735(v=office.14).aspx

Windows Batch Script - 是 Windows 平臺(tái)上的批處理語(yǔ)言。適合完成一些需要重復(fù)操作的任務(wù),比如批量的文件處理,把不同命令行工具整合起來(lái)完成特定的任務(wù)等。

更多信息參見(jiàn):

http://commandwindows.com/batch.htm

Python - 適用范圍很廣,學(xué)習(xí)曲線也比較平滑。擁有豐富的庫(kù)和開(kāi)源資源供選擇,并且安裝、運(yùn)行都比較方便。

更多信息參見(jiàn):

https://python.org

http://www.pythondoc.com

Java - 擁有廣泛和成熟的資源,文檔和社區(qū)也比較健全。唯一的缺點(diǎn)是,對(duì)于非工程化的應(yīng)用場(chǎng)景顯得過(guò)于繁瑣,不像 Python 那么簡(jiǎn)單易于部署。

更多信息參見(jiàn):

https://www.java.com/zh_CN/download/faq/develop.xml

C 語(yǔ)言 - 有著廣泛的適用性,很成熟的一門(mén)語(yǔ)言。在用它之前,要徹底想清楚,用它解決什么樣的問(wèn)題。因?yàn)?,大多?shù)需要用 C 實(shí)現(xiàn)的事情都已經(jīng)有了對(duì)應(yīng)的其他解決方案了,也就是不需要重新造輪子了。

不過(guò) C 可以寫(xiě)比較原始的數(shù)據(jù)運(yùn)算,編譯成命令行程序,和 Windows 批處理腳本結(jié)合起來(lái)應(yīng)用是一個(gè)不錯(cuò)的選擇。

更多詳細(xì)信息參見(jiàn):

https://zh.wikipedia.org/wiki/C%E8%AF%AD%E8%A8%80

R 語(yǔ)言 - 一種針對(duì)統(tǒng)計(jì)分析的編程語(yǔ)言。之前的文章里提到過(guò),適用于做數(shù)據(jù)分析的場(chǎng)景。

更多信息:

https://www.r-project.org/

Lua - 一種小型腳本語(yǔ)言,很多游戲引擎里應(yīng)用的就是 Lua 這種小而精悍的語(yǔ)言。Lua 可以和 C 語(yǔ)言無(wú)縫結(jié)合,是一種很靈活的解決方案,這個(gè)語(yǔ)言的接受度和普及度要小一些,但很成熟,也很實(shí)用。不過(guò),學(xué)習(xí)曲線稍微陡峭一些。

更多詳細(xì)信息參見(jiàn):

https://www.lua.org/

更多其他語(yǔ)言我就不再列舉了,下面這個(gè)網(wǎng)址列車(chē)了 2016 年的 20 大編程語(yǔ)言排行,有興趣可以去了解下:

http://www.tiobe.com/tiobe-index/

轉(zhuǎn)載請(qǐng)注明,來(lái)自微信公眾號(hào):以為以為

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 本文把程序員所需掌握的關(guān)鍵知識(shí)總結(jié)為三大類19個(gè)關(guān)鍵概念,然后給出了掌握每個(gè)關(guān)鍵概念所需的入門(mén)書(shū)籍,必讀書(shū)籍,以及...
    dle_oxio閱讀 11,387評(píng)論 6 244
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,569評(píng)論 19 139
  • ¥開(kāi)啟¥ 【iAPP實(shí)現(xiàn)進(jìn)入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開(kāi)一個(gè)線程,因...
    小菜c閱讀 7,335評(píng)論 0 17
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,063評(píng)論 25 709
  • 看過(guò)青春偶像校園劇的同學(xué)們都向往大學(xué)的生活,我也不例外。還是高中生的時(shí)候就聽(tīng)老師回憶大學(xué)時(shí)光,是個(gè)可以一邊...
    大杰杰_5e7b閱讀 283評(píng)論 0 0

友情鏈接更多精彩內(nèi)容