首頁 後端開發 php教程 關於電腦專業的人如何學好編程

關於電腦專業的人如何學好編程

Jul 25, 2016 am 08:49 AM

這篇文章是寫給低年級的人的,已經工作的就不用來看我廢話浪費時間了。
最近總是有人問如何確定自己方向的問題,說是看到有的人在搞手機,有的人在搞網頁,有的人在搞遊戲,還有其他的什麼的,然後說自己只懂得這麼一點東西不知道該怎麼辦之類的事情。我一直在一些做軟體開發的群組裡混,裡面有很多學生,也有很多從業者。那些人對於人們在基礎不夠紮實的情況下就「做各種各樣具體的項目」有兩種說法,一種說是浮躁,另一種說是這樣開闊眼界是好的。
大學就四年。學校通常安排前兩年學數學英語,然後大一學語言大二學資料結構。到了大三有很多比較具體而且複雜的課程,然後就要找實習,大四其實就是在找工作,課也沒有,衛生也不檢查了,等於在租學校的宿舍住。
於是在這短短的三年裡面想在電腦那麼多領域裡面找到自己喜歡的,然後鑽研下去,最後還有所成就的話,還是比較難的。因此很多人常常會看到自己周圍突然有兩三個人就乾了點什麼很有成就感的事情了,一問,以前學過的。這種人我也接觸了幾個。我有一個同學說是高中的時候被稱為代碼狂人,給emule寫了點代碼,然後還自己做了個即時通訊工具賣了出去。到了大學就一直在重寫這個東西,最後實習就到騰訊去了。前幾天還遇到個人,說是小學就在折騰flash裡面的action script了,後來投靠perl,說是一直到了大一才寫了一個超過2000行的程式。我也沒去求證,只是覺得比較不可思議。
於是我想,就照著那些傳統的路子先搞定一門語言(《C Primer》),然後學資料結構(《演算法導論》),再去學點庫(《STL原始碼分析》《深入淺出MFC》),之後弄點設計模式(《設計模式》),最後寫個某某管理系統(笑)什麼的,也是無聊了點。竟然要學了那麼多東西,才能弄出一個看得見摸得著的程序,也太考驗人的意志力了吧。幾乎是個人都是從拖曳控制開始的。那些一開始就摸著黑白螢幕狂搞演算法的人,要嘛是NOI出身,要嘛是ACM出身,然後對著幾道演算法題樂此不疲。但是最後有所成就的,很少。我在學校認識了那麼多ACM出身的,最後也就一個去了google。感覺風險還是有點大。
但是反過來也是有問題的。要是一開始就從介面開始弄,人也是很容易浮躁的。很多人因此就陷入了對花花世界的追求了(根據對群體裡面的人的統計),譬如說特別關心怎麼在ListView前面畫棵樹什麼的。這種人裡面,其中一些有追求的,最後都會沿著Windows SDK,再走到DDK,最後寫驅動,一腳踏進泥坑,從此不能自拔,當然這些人也是少數。每當有少數人人對著剩下的多數人說跟「我今天實現了讓Word不能打開某某文件」差不多的這些事情的時候,他們兩眼大放異彩,然後就開始跪求源碼,狂問用了什麼API,最後當程式碼終於到手的時候,就放進之前精心準備好的一個資料夾裡面,封存萬世,從此再也不去看了。當然也有其他的版本,譬如說老是下載書,而且還是rar,然後從來不解壓一樣。曾經有這麼一個人就在群組上炫耀說自己有多少多少G的電子書。我讓他上截圖,結果全是rar。根本沒看嘛,他自己也承認了。
於是怎麼看兩條路都是很有危險的,這就是為了什麼到了大四的時候,能學成的人總是不多的緣故。 太容易陷進去了 。這是什麼意思呢?人總是只對自己做得好的事情感興趣。對自己還沒做的事情感興趣那種是好奇,需要嚴肅看待。當人終於做好了一件事情之後,就會一直不斷的鑽研下去,這當然是好事。但是,從此只見樹木不見森林,以為全天下的編程就那一件事情,那當然是要吃虧的。
所以首先要開拓眼界,知道世界上原來還有這麼多的東西可以做。 在差不多知道程式設計是什麼東西的時候,需要這個玩一玩,那個玩一玩 。不然就會看到旁邊的同學這個用java在手機上跑一個能告訴你1 1=2的東西,那個人用PHP MYSQL弄了個留言版,看得唾液直流,心裡發慌,說自己對著C的黑白螢幕弄了這麼久居然連那點小玩意都做不出來,自尊心很容易受到打擊的。
於是在玩過了之後呢,要及時收手,就專門做一件事情好了 。因為這時候自己已經大概知道自己看見的東西差不多就是那個樣子,想做自己也做得出來,看著別人寫那些花邊的程序也就不會給自己施加太多壓力了。專門做一件事情的意思就是,選定一個方向,然後找書,找人,看程式碼,寫程式。 譬如說可以去弄圖形做遊戲,也可以去弄腳本引擎做做編譯器,還可以跟著老師去搞什麼資料探勘啊嵌入式什麼的 。對一個領域的深入研究最大的用處是可以讓自己接觸 複雜的問題 。
當然,當研究得深入了之後,程序就越寫越大了,這個時候就會出現很多各種各樣的問題了。譬如說效率太低啦,程式一出錯就要全盤推倒重來啦(這個還是比較可悲的),程式碼太多很難組織函數啊類什麼的啦,或者說名字給你用光啦等等。這時候就需要各種各樣的理論知識了,譬如說資料結構與演算法,還有設計模式什麼的。當然講來講去也就這幾樣,因為“這世界上沒有銀彈”,所以那些通用的東西必然不多,剩下的還是要靠在同各領域裡面其他人的積累或者自己的研究才能最終解決的。
上面所說的可以做的各種各樣的事情還是偏向於理論化一點,其實有一個學術上的領域還是不夠的,因為最終一個程序在跟計算機打交道的時候靠的是輸入輸出,也就是俗稱IO的東西了。這究竟是什麼呢?也就是說,知道那個地方放著你要的數據,你要把它拿過來。你自己算出了什麼,知道要往哪裡放,你要放。這裡麵包含的東西很多,譬如說典型的,鍵盤和螢幕上的輸入輸出,網路要用的Socket啦Web Service啦,那些看得見的視窗啦控制啦,讀寫硬碟啦,還有其他什麼的。這種 在某一平台上的專用的API 都是至少要熟悉一種的。不然你光學會這個演算法那個演算法有什麼用啊,譬如說你想對一個圖片進行壓縮,專門學了那個知識,但是一個bmp放在硬碟上你卻讀不進來,那豈不沒意義了麼。
於是說了這麼多,無非就是剛開始的時候要去見識世面,然後挑一個來慢慢研究,最後研究著研究著程序搞大了,就自然會碰到很多高級的問題了。這時候去解決了,其實本科需要你具備的程度其實也差不多達到了。
所以很多人都洗心革面,終於開始努力研究一個領域的問題了。領域總是複雜的,這時候會遇到很多程式設計上的問題,譬如說演算法太複雜表達不出來啦,文件讀著就掛啦,一不小心越界了之後造成了很多奇怪的問題啦( C )等等。這種關於調試的問題,一般只能夠靠自己錯得多錯得離譜了,最後就成才了。當然前人也總結出了經驗,寫了本叫《 Why Programs Fail 》的書,想看的話可以自己去下載。其次, 具體的庫總是有很多書和文檔的,沒事也要多看點 ,譬如說用Visual Studio的人都得把MSDN給裝了。
話也差不多說完了,雖然我自己也覺得這篇文章比較虛,因為這也是「通用的東西」。具體自己該怎麼辦自己得好好想想。我就把這篇東西獻給現在大一大二那些還在迷宮裡轉的弟弟妹妹了,要是有什麼特殊的疑難雜症的話,就私底下聯絡我吧。
總之,無論什麼時候,手頭上都要留有一個可以研究的問題才好。
免費領取LAMP兄弟連原創php教學光碟/《細說PHP》精要版,詳情諮詢官網客服:http://www.lampbrother.net
PHPCMS二次開發 http://yun.itxdl.cn/online/phpcms/index.php?u=5
微信開發            http://yun.itxdl.cn/online/weixin/index.php?u=5
🎜>行動互聯網伺服器端開發
   http://yun.itxdl.cn/online/server/index.php?u=5Javascript
課程   http://yun.itxdl.cn/online/js/index.php?u=5
CTO訓練營              5


本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它們
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

在PHP API中說明JSON Web令牌(JWT)及其用例。 在PHP API中說明JSON Web令牌(JWT)及其用例。 Apr 05, 2025 am 12:04 AM

JWT是一種基於JSON的開放標準,用於在各方之間安全地傳輸信息,主要用於身份驗證和信息交換。 1.JWT由Header、Payload和Signature三部分組成。 2.JWT的工作原理包括生成JWT、驗證JWT和解析Payload三個步驟。 3.在PHP中使用JWT進行身份驗證時,可以生成和驗證JWT,並在高級用法中包含用戶角色和權限信息。 4.常見錯誤包括簽名驗證失敗、令牌過期和Payload過大,調試技巧包括使用調試工具和日誌記錄。 5.性能優化和最佳實踐包括使用合適的簽名算法、合理設置有效期、

解釋PHP中晚期靜態結合的概念。 解釋PHP中晚期靜態結合的概念。 Mar 21, 2025 pm 01:33 PM

文章討論了PHP 5.3中介紹的PHP中的晚期靜態結合(LSB),允許靜態方法的運行時間分辨率調用以更靈活的繼承。 LSB的實用應用和潛在的觸摸

描述紮實的原則及其如何應用於PHP的開發。 描述紮實的原則及其如何應用於PHP的開發。 Apr 03, 2025 am 12:04 AM

SOLID原則在PHP開發中的應用包括:1.單一職責原則(SRP):每個類只負責一個功能。 2.開閉原則(OCP):通過擴展而非修改實現變化。 3.里氏替換原則(LSP):子類可替換基類而不影響程序正確性。 4.接口隔離原則(ISP):使用細粒度接口避免依賴不使用的方法。 5.依賴倒置原則(DIP):高低層次模塊都依賴於抽象,通過依賴注入實現。

框架安全功能:防止漏洞。 框架安全功能:防止漏洞。 Mar 28, 2025 pm 05:11 PM

文章討論了框架中的基本安全功能,以防止漏洞,包括輸入驗證,身份驗證和常規更新。

自定義/擴展框架:如何添加自定義功能。 自定義/擴展框架:如何添加自定義功能。 Mar 28, 2025 pm 05:12 PM

本文討論了將自定義功能添加到框架上,專注於理解體系結構,識別擴展點以及集成和調試的最佳實踐。

如何用PHP的cURL庫發送包含JSON數據的POST請求? 如何用PHP的cURL庫發送包含JSON數據的POST請求? Apr 01, 2025 pm 03:12 PM

使用PHP的cURL庫發送JSON數據在PHP開發中,經常需要與外部API進行交互,其中一種常見的方式是使用cURL庫發送POST�...

如何在系統重啟後自動設置unixsocket的權限? 如何在系統重啟後自動設置unixsocket的權限? Mar 31, 2025 pm 11:54 PM

如何在系統重啟後自動設置unixsocket的權限每次系統重啟後,我們都需要執行以下命令來修改unixsocket的權限:sudo...

See all articles