如何使用搜索技巧來成為一名高效的程序員

沒有人是完全獨立的孤島,每個人都是整體的一部分。—— 約翰·多恩

  對于缺乏編程知識的人來說,完全有可能編寫一個網頁或小程序。如果在用Google搜索相關示例時幸運的話,可以搜到現成的代碼。即使是經驗豐富的程序員,通常也會為了節省時間和精力而在網上搜索解決方案。
?
如何使用搜索技巧來成為一名高效的程序員

  如果不借助搜索技術、網絡及集體智慧,現代化高效編程是難以想象的。因此,搜索技巧對高效程序員變得愈發重要。

  現在,我們不需要了解和記住如何解決眾多的編程問題,可以采用搜索技術。我們正變得更加高效、高生產力,并能夠解決更多的問題。但這是否意味著在構建軟件時,擁有好的搜索技巧就足夠了呢?本文將討論,搜索技巧在程序員知識的形成過程中的作用,以及如何高效使用搜索技巧。


  知識的類型及它在程序員大腦中如何成長。
?

如何使用搜索技巧來成為一名高效的程序員
?

  有三類知識:

  概念知識(為什么、是什么、如果—— 語義上的)——理解軟件系統構建過程中的概念、原理、關系及主要方法。根據這類知識,能夠找出體系結構或代碼必須按特定方式設計的原因,以及從中選擇最佳設計方案的備選方案和邏輯是什么。概念知識,不是指用特定編程語言解決特定問題,而是對問題的長遠看法和理解。

  • 用途:對復雜的開放式問題尋找新的解決方案,并創建穩健的軟件系統。
  • 收獲:學習計算機科學、體系結構以及編程概念,在實際實現和經驗的基礎上,構建自己的理論。

  實踐性知識(如何做 —— 過程中的)—— 關于如何解決特定編程問題的知識。這類知識不需要深入理解實現方法選擇過程中隱含的概念及基本原理。搜索技術在這里最重要,因為對有限的編程語言問題所采取的特定解決方案,搜索能相對容易的加以共享并說明。

  • 用途:用已證實的和已知的解決方案快速解決問題,而不是每次都重新發明一種新的方法。
  • 收獲:搜索現有的解決方案,通過例子學習或提出自己的解決方案并以后對其重利用。

  隱性知識(專業知識、經驗及直覺)——基于軟件系統實現過程中所積累的個人經驗,在大腦中形成的內在知識。通過強大的大腦功能,隱性知識可以綜合并協調其他兩種知識。這類知識很難傳授,因為它的大部分都存儲在我們的潛意識中。在特定環境下,它和直覺一同發揮作用,能夠在經驗、對概念性和實踐性知識的反饋和評估的基礎上,制定最佳決策。

  • 用途:利用自己的專長、經驗及直覺來實現最佳解決方案。
  • 收獲:構建軟件并從結果中學習知識。
如何使用搜索技巧來成為一名高效的程序員

?

  設計模式(還有架構、領域及其他)是不同類型知識相結合的有趣的例子:“如何做”的例子,這些例子中隱含的概念及實現過程中積累的經驗。這種知識的表現方式是模式成功及廣泛應用的原因之一。


  隨著越來越多的可供使用的實踐性解決方案和示例出現在網絡上,人們大腦中的實踐性知識的價值越來越小。我們不需要記住實踐性知識。現在我們能夠處理軟件構建過程中幾乎所有可能遇到的常見編程問題。然而,除能夠解決問題的示例或從哪搜索這些示例以外,一名大師級的程序員還知道更多的知識。他能夠提出自己的解決方案,制定大部分最佳決策,并采用最好的方式應用它們。此外,很難在網上找到新的、復雜的、領域性的及特定環境下的問題的解決方案。而且,對所有重要的軟件工程,在制定優秀解決方案的過程中,都需要高水平的軟件開發理論、這些理論的應用經驗、對系統的深入了解、問題空間及環境等相關知識。


  因此,在軟件開發過程中,概念知識和隱性知識仍然是非常重要的。在使用搜索技術時,我們應當努力擴充各種知識,而不是僅僅解決特定問題。隨著解決更高級問題的能力的提高,你會取得成功,成為更高效的程序員。
?

如何使用搜索技巧來成為一名高效的程序員
?

  可解決實際問題的高效搜索

  A. 查找

  • 1. 定義——弄清楚要解決什么問題,并以要查找的內容為焦點。網絡上有如此多的有趣的材料,以至于搜索過程能輕易地占掉你全部的工作時間(和個人時間)。
  • 2. 檢索(使用標準的Google、代碼搜索或其他的檢索引擎)—有很多關于如何高效的使用檢索引擎的建議。
  • 3. 瀏覽結果(內容的質量、可信度及專業技術的水平;如果資料的可信度過低,無須再看)-> 閱讀 -> 評估(人力物力、所需工具及函數庫)

  B. 使用

  • 1. 復制代碼 - 單獨復制(針對這一目的,帶有長釘技術的顯式單元測試最適合)
  • 2. 清除代碼 - 僅保留最小限度、相關性代碼,清除解決方案中的其它代碼。
  • 3. 在系統中應用代碼。

  C. 學習

  • 1. 理解——你做了什么及你為什么那樣做——從代碼和實現中學習。
  • 2. 擴充知識——
    • a. 實踐性知識:解決問題的特定方法、技巧及風格;
    • b. 概念知識:學習新概念、提煉現有的并構建自己的概念;
    • c. 隱性知識:明智地使用并學習搜索到的解決方案,經驗會自然而然地得到增長。
  • 3. 收集(鏈接、意見、參考文獻、閱讀清單)—任何對你今后搜索、發現及學習有用的有趣信息。為這些目標積累知識。

  你還有其他高效搜索代碼的訣竅嗎?歡迎在評論或微博中和大家分享。


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

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

相關文章

電開大計算機應用基礎作業,2016年電大-電大計算機應用基礎作業 答案.doc

2016年電大-電大計算機應用基礎作業 答案計算機作業2單項選擇題:第1題:在Word中編輯文本時,編輯區顯示的“水印”在打印時( )出現在紙上。(2分)A、不會B、全部C、一部分D、大部分第2題:Word文檔以文件形式存放于磁盤中,其默認的文件擴展名為(…

軟件測試的步驟

大型軟件系統的測試過程基本上由模塊測試、子系統測試、系統測試、驗收測試和平行運行等五個步驟組成。 1.模塊測試 在設計得好的軟件系統中,每個模塊完成一個清晰定義的子功能,而且這個子功能和同級其他模塊的功能之間沒有相互依賴關系。因此&#xff…

linux系統優化思路

文章目錄一. 影響linux性能的因素1.系統硬件資源2.操作系統相關資源3.應用程序軟件資源二. 分析系統性能涉及的人員1.Linux運維人員2.系統架構設計人員3.軟件開發人員三. 系統性能分析工具四.思路總結一. 影響linux性能的因素 1.系統硬件資源 1)cpu 2)…

遞歸鎖

from threading import Thread,RLock import timemutexAmutexBRLock()#一個線程拿到鎖,counter加1,該線程內又碰到加鎖的情況,則counter繼續加1, #這期間所有其他線程都只能等待,等待該線程釋放所有鎖,即counter遞減到…

UI體系的本質是結構化存在

UI體系的本質是結構化存在; UI系統的問題需要使用結構化的思維來處理。

什么是視圖

視圖是存儲在數據庫中的查詢的SQL 語句,它主要出于兩種原因:安全原因, 視圖可以隱藏一些數據,如:社會保險基金表,可以用視圖只顯示姓名,地址,而不顯示社會保險號和工資數等&#xff…

30分鐘,讓你成為一個更好的程序員

我相信激勵是非常重要的。這也是為什么我常常把時間管理(這些書激勵我不管改進我的時間管理方法)的書和軟件開發拿出來看看。我最近剛看完一本 書,“Apprenticeship Patterns: Guidance for the Aspiring Software Craftsman”。這本書推動我…

如何啟用計算機的遠程服務,遠程桌面服務,教您怎么打開遠程桌面服務

遠程桌面可以通過控制另一臺電腦的功能,讓網絡管理員可以在家中安全的控制單位的服務器,而且這個功能是系統內置的,所以比使用其他第三方的遠程控制工具更方便。那么我的重點來了,我今天就教你們怎么打開桌面遠程服務,…

pipenv相關指令

pip install pipenv 安裝pipenv pipenv install 創建虛擬環境 (項目根目錄下) pipenv shell     進入虛擬環境(如果不存在,則創建并進入虛擬環境) pipenv install flask   安裝模塊 pipenv uninstall flask 卸…

簡易多線程爬蟲框架

本文首發于知乎 本文使用多線程實現一個簡易爬蟲框架,讓我們只需要關注網頁的解析,不用自己設置多線程、隊列等事情。調用形式類似scrapy,而諸多功能還不完善,因此稱為簡易爬蟲框架。 這個框架實現了Spider類,讓我們只…

【小松教你手游開發】【unity實用技能】給每個GameObject的打開關閉加上一個漸變...

在游戲開發中,經常會因為直接將GameObject,setActive的方式打開關閉,這種方式效果太過生硬而給它加上一個Tween 可能是AlphaTween或者ScaleTween。 再加上一個PlayTween來做控制。 這樣子需要在每個GameObject上加上這幾個Component不說&…

靜態網頁和動態網頁

靜態網頁是指不應用程序而直接或間接制作成html的網頁,這種網頁的內容是固定的,修改和更新都必須要通過專用的網頁制作工具,比如Dreamweaver。動態網頁是指使用網頁腳本語言,比如php、asp、asp.net等,通過腳本將網站內…

在微型計算機中 如果電源突然中斷,微型計算機在工作中電源突然中斷,則其中的信息全部丟失,再次通電后也不能恢復的..._考試資料網...

請根據下面的文字材料,完成一節課的教學設計。 絲綢之路 一座古樸典雅的“絲綢之路”巨型石雕,矗立在西安市玉祥門外。那馱著彩綢的一峰峰駱駝,高鼻凹眼的西域商人,精神飽滿,栩栩如生。商人們在這個東方大都市開了眼界…

Vmware上安裝RedHat Linux 7.3操作系統手冊

文章目錄1.點擊“創建新的虛擬機”,勾選“自定義”選項,點擊一步;2.默認選擇最高版本的workstations,點擊下一步;3.選擇“稍后安裝操作系統”,點擊下一步;4&a…

軟件開發的“三重門”

自從上次寫了“程序員技術練級攻略” 以來,就覺得似乎還有很多東西沒有談到,但當時沒有繼續思考了。而春節前有人問我,是做底層技術,還是做業務。這問題讓我思考了很多,不由自主地回顧了一 下我這十多年的軟件開發經歷…

軟件工程15 個人閱讀作業1

Task1:注冊個人博客賬號 個人博客地址 https://www.cnblogs.com/bmr666/ Task2:注冊碼云賬號 碼云賬號 https://gitee.com/bmr666 Task3:完成博客-閱讀與思考 閱讀參考材料,并回答下面幾個問題: (1&#xf…

Windows Server 2008操作系統安裝手冊

文章目錄1.輸入語言和其他首選項,然后單擊“下一步”繼續;2.點擊“現在安裝”,啟動安裝程序;3.選擇要安裝的操作系統,這里選擇Windows Server 2008 R2 Enterprise(完全安…

云計算機有哪些特征,你知道云計算有哪些核心特征嗎?

你知道云計算有哪些核心特征嗎?下面跟小編一起來了解下吧!!!1、敏捷:使用戶得以快速的,且以低價格的獲得技術架構資源。2、應用程序界面API的可達性是指允許軟件與云以類似“人機交互這種用戶界面設施交互相所相一致的方式”來交互。云計算系統典型的運…

從玩撲克到軟件開發

我以前不是做軟件開發的。在加入ThoughtWorks兩年之前,我主要靠玩撲克為生。當然,如果你曾跟我打聽過我前臂上的紋身,那你肯定已然聽過我的故事了。要是還沒有,等下次我們一起喝一杯時,我可以講給你聽。 我從未因為花…

什么是IPsec協議

IPSec 協議不是一個單獨的協議,它給出了應用于IP層上網絡數據安全的一整套體系結構,包括網絡認證協議 Authentication Header(AH)、封裝安全載荷協議Encapsulating Security Payload(ESP)、密鑰管理協議Int…