編程是什麼?如何從零開始學習?

@vczh 看到一些知乎用戶自己設計的「爬蟲」什麼的用來統計雲音樂的評論,或者某些網站推的下載軟體的破解版,或者種子搜索引擎,我很是羨慕他們的動手能力。作為伸手黨肯定是舒服的,但不能什麼事都靠「等待」和」拜託「去解決這些問題。

看了vczh 推薦的Head.First.C# 說是入門教材,可惜我完全看不懂,想找vczh關於編程的回答,然而1萬多個回復立馬打消了我這個念頭。。。。。。

請問各位一張白紙應該怎樣開始學習編程,以及編程能否解決我上面所說的問題?


根據你的描述,你對計算機系統的(專業)認識基本為零。這種情況下看編程書肯定很困難。但是可以告訴你一個無敵的入門大法。適用於幾乎任何專業。那就是——看導論。

凡是比較成熟的學科,都建立了一套自己的知識體系,也就是說,其中的知識都有人做好了分類和概括,告訴你這個學科研究什麼,有哪些方向,大體的知識有哪些。歷史演變是怎麼樣的。

就好比你打遊戲,如果沒有地圖,那真的就是自己瞎摸索了。但是如果有地圖,你就能夠對整個遊戲有一個全局性的了解,最起碼方向性的認識就建立了。如果再能有一份攻略,那就更高效了。

導論類書籍的特點是:

  • 不要求閱讀者有相關背景
  • 注重知識體系的廣度,而不是深度
  • 注重歷史脈絡的介紹,既包含了過去和現在,也包含對未來的展望
  • 通常由資深權威人物撰寫

你可以以「計算機」+「導論」進行一些搜索,然後找國外編寫的,平易近人的作為入門去閱讀。我因為畢業久了,當初看的書現在可能過時了,所以就不推薦什麼了。請題主自己去判斷選擇。

這就是我的學習方法。希望對你有幫助。


沒有任何計算機基礎,不建議一開始就學習c# c++什麼的。這些東西自學的,如果不是天賦高。會感覺很抽象。你可以從做一個網頁入手,寫網頁,能夠看到效果,不容易澆滅你的熱情。慢慢的你就知道編程是幹嘛的啦。

我推薦一些入門教程給你:

IMOOC HTML+CSS基礎課程-慕課網

學習完這個,基本上知道HTML和CSS是幹嘛。HTML不需要花很多時間,接下來你要學習CSS.看《CSS權威指南》

看完這些,只能做靜態網頁,就是和用戶沒啥交互的網頁,需要交互,比如淘寶網頁那個輪播廣告,要實現這個效果,需要 javascript,這是一門主要用來操作 html編程語言。讓網頁更加豐富。你會學習到一門編程語言的基本組成,比如數據類型、函數等概念。很多高級語言都有這些概念。

推薦教程:JavaScript入門篇-JavaScript入門視頻教程-慕課網

看完這個,你基本知道了,JavaScript是用來幹嘛的。

JS的書本: JavaScript DOM編程藝術

學習完這個:你可以開始學習 jQuery ,jQuery可讓你更加高效的寫JS.推薦教程

鋒利的jQuery (豆瓣)

學完這些基本上知道編程是這個回事了。入門javascript了。但是你還需要深入學習javascript。

推薦教程:javascript高級程序設計。這本書比較大,如果只是了解編程是啥,可以不看。

看完這些,可以再去看看計算機導論。你會知道還有一些其他東西,計算機能幹嘛,需要哪些數學,發展歷程,網路等。


現在CS大三現身說法。

大學前對編程沒有任何概念,所以從新手學到現在,一回頭真的走了很多彎路,說點建議供你參考。

首先我覺得你是想做點什麼有用的東西,就是通過編程知識來解決自己遇到的問題。那麼很遺憾,你說的這些基本都不太可能讓新手來一個人完成。原因在於,但凡達到真實應用水平的產品,都涵蓋了多個學科的知識,還有大量的模板,再加上優化維護。。。

就你說的這幾個吧,想要定製爬蟲,Python/Java 之類的編程語言需要會用,還要有網路協議知識,HTML 等前端知識,正則表達式要會,更不用說可能遇到的各種環境搭建還有各種兼容問題。

軟體破解,這個要會操作系統,彙編,編譯原理,一些底層知識,最重要的是豐富的編程經驗,這個新手不用想了。

搜索引擎,這個知識需求跟爬蟲有些聯繫,我了解不多,但是想做好需要一些數據處理上的優化,總之水挺深的。。。

最後是如何開始學編程,我的建議是從一門簡單編程語言入手,直接上網搜Python,找廖雪峰什麼的那種UI 很順眼的網站悶頭學,自己多搗鼓,差不多對編程有點感覺時,肯定也會遇到很多問題,很多不明所以,一邊解決這些問題,你的水平就會一邊提高。

有人建議從導論開始看,CSAPP是好書,但是推薦給非科班真的太奇怪了,外行比科班,難就難在沒人領你進門,你需要找一個簡單的辦法先上道,而不是上來從CPU 和內存學起。

以上肺腑之言,你需要記住,編程語言只是計算機學科的一個小部分,但是你目前只需要從這裡入手,搞清自己每一步想學什麼才不會迷路。

最後給你個信息,初學編程的路上,代碼量真的是硬通貨。。。


編程就是使用一種程序設計語言編寫程序代碼,讓計算機解決某個問題的過程。根據這個定義來看,根據使用的程序設計語言不同,編寫的程序就不同。

總的來說分三種,機器語言,彙編語言,高級語言。具體的定義可以網上查。我們一般所說的編程,是通過高級語言編寫的。你說到的Pascal和C++,VB等都是高級語言。區別吧,就相當於一個是中文,一個是英文,一個是德文,雖然語言不同,但是都能讓電腦理解並執行。所以VB和其他語言一樣,什麼程序都能寫。

自學VB很簡單,一台電腦,一本基礎教程,再安裝一個VB語言。不要好高騖遠,把基礎了解以後可以嘗試著寫小程序。多上網學習,多看別人的代碼。源碼天空、枕善居,VB愛好者樂園都是不錯的網站。


買這本科普讀物看看《編碼~癮匿在計算機軟硬體背後的語言》。


就是用26個英文字母10個阿拉伯數字以及一些符號組合成可以讓電腦識別的電腦語,用來代替人力或者人為無法完成的事情。


這是一個很大的問題,編程就像作家寫小說,靠的是靈感和閱歷,只不過編程靠的是邏輯和經驗。

從0開始的話,最好從java 開始,一兩年就可以入門了

然後學習演算法,設計模式


你以為我們關注輪子哥是為了學習編程的?

少廢話,啥時候開車。


推薦閱讀:

如何快速地在每個函數入口處加入相同的語句?
自學python,目標是web開發,請問我現在應該怎樣學習最合理?
什麼是體素渲染,如何從頭編寫一個體素渲染器?
free一塊修改過的malloc指針會發生什麼?
為什麼基礎很好的程序員代碼依舊寫的很爛?

TAG:編程 | 編程學習 |