你所聽到的技術原理、技術本質到底是什麽?
職場的程序員們或多或少都受到過前輩或領導的指點,應該都聽過這麽一句話 “學技術不能光會搭建個環境,使幾個API,要學習了解技術的本質”。可能實際聽得比較多的是 “學習技術原理”這句。所以這兩個點都會說到,會說一說區別及聯系。
原理,何為原理,技術原理到底在學什麽?
本質,何為本質,怎麽就算了解掌握技術本質了?
本文就來碼一碼技術原理和技術本質這兩個東西。
一、技術原理
先說一下「技術原理」這個詞,這個應該大家都很熟悉,每每提起甚至感到一絲絲痛苦和折磨,一線互聯網公司面試官的最愛,經常拿來挑逗一下面試者,知道xx技術的實現原理嗎?能不能說一說。
技術原理即技術背後的 實現思想、架構設計、代碼 ,學習一個技術的實現原理就是學習這三個方面的內容。
這三個方面也是層層遞進的關系,越來越具體。
首先,思想是宏觀的東西,構建起整個技術的理論支撐;
其次,架構是思想的進一步推敲和論證的產物;
最後,就是代碼了,結合思想和架構設計變成一行行的可執行代碼。
所以,你看技術原理的路線圖和目標就出來了,第一,學習思想構建起宏觀概念 ;第二,學習整體架構及局部架構掌握整體結構的組成和相互之間的關系;第三,學習代碼的實現和邏輯。
舉例說明一下,學習 HashMap原理,這時候首先應該構建起的是它的數據結構知識即哈希表的概念和特點(其實如果再拔高一點,應當是先建立起各種數據結構和相互之間區別、特點及相關算法的思想和理論知識,當然這個要求就稍微高一些了),然後架構設計因為這是一個具體的類,所以這部分就是類中包含的核心方法及作用,最後就是深入代碼,學習具體的代碼實現邏輯,比如put方法是怎麽存入數據的,又在什麽情況下會進行擴容等等。
如果沒有前面部分的思想和理論做支撐, 不建議直接上來就進入到代碼細節,會學的很痛苦比較掙紮。發現概念和理論上的盲區,應及時補上,然後在繼續代碼的學習。
二、技術本質
說完技術原理,下面看技術本質。簡單理解,技術的本質就是解決問題,將解決問題的前因後果分別具體化研究,展開來說本質就是除過上面說到的技術原理之外,還應該包括 技術所解決的核心問題 和 應用場景 以及 存在什麽樣的優勢和不足。
總結一下,就是以下3點內容:
1、技術解決的核心問題和應用場景
2、技術原理
3、技術特性
所以,你看學習技術本質的路線圖和目標也就出來了,第一,掌握技術解決的核心問題和應用場景,即搞明白它可以用來幹什麽;第二,研究技術原理,即搞明白它為什麽可以做到;第三,了解它的技術特性,即搞明白它的優勢在哪裏。
拿redis來說,它解決的核心問題是提供高性能的內存數據緩存服務。雖說官方認為它還可以用作數據庫和消息代理,但實際應用中更多作為數據的緩存服務。
技術原理上面專門做了介紹了,讀者可以類比理解,這裏就不在展開了。
技術特性即是該項技術與相關其他類似技術相比有什麽牛逼的地方,拿redis和memcached比,多數據類型的支持就算redis的一個特性,持久化能力的支持也算是一個特性。特性在做技術選型的時候往往有著至關重要的作用。
搞清楚一門技術以上4點內容,才算得掌握到技術的本質。我們再學習技術原理的時候,不妨再加把勁,窺一窺它的技術本質。
再帶大家理解一下「本質」這個詞,下面這句是摘自網上的一句話
IPFS本質上是一種內容可尋址、版本化、點對點超媒體的分布式存儲、傳輸協議。
從面上看更像是一句定義,告訴你什麽是IPFS,但是加上了本質二字,就讓這句話看起來不是那麽的簡單,而支撐本質二字的背後就是IPFS這個技術的是內容可尋址,具有可以版本化、點對點、分布式傳輸的特性,解決的核心問題和應用場景就是標準化數據傳輸過程。
所以作者一定是窺透了這技術背後的本質內容而總結出這麽一句話。希望這裏沒有讓你看糊塗。
當我們再看到“xx的本質是xx”這種類似的話的時候,希望大家能多思考思考這句話中本質背後的支撐是什麽,有點跑題了,收回來。
三、總結
可以看到,技術本質包含了技術原理,也就是一種包含關系。
本文就是理清技術原理、技術本質的真正含義和關系,經常我們對這些看似都懂的概念不去深究,而實際上真正搞明白這些東西能夠幫助我們搭建自己的知識體系,而且知識結構脈絡十分清晰,不易混淆。在學習一門新技術或深入研究一門技術的時候也會有一個清晰的方向和目標。
最後,隨著學的東西越來越多,越往後大家就越會發現概念和理論(也就是思想)的重要性,有清晰的概念和理論體系作為支撐,能讓我們的學習事半功倍。
?
你所聽到的技術原理、技術本質到底是什麽?