天天看點

你所聽到的技術原理、技術本質到底是什麼?

職場的程式員們或多或少都受到過前輩或上司的指點,應該都聽過這麼一句話 “學技術不能光會搭建個環境,使幾個API,要學習了解技術的本質”。可能實際聽得比較多的是 “學習技術原理”這句。是以這兩個點都會說到,會說一說差別及聯系。

原理,何為原理,技術原理到底在學什麼?

本質,何為本質,怎麼就算了解掌握技術本質了?

本文就來碼一碼技術原理和技術本質這兩個東西。

一、技術原理

先說一下「技術原理」這個詞,這個應該大家都很熟悉,每每提起甚至感到一絲絲痛苦和折磨,一線網際網路公司面試官的最愛,經常拿來挑逗一下面試者,"知道xx技術的實作原理嗎?能不能說一說"。

技術原理即技術背後的 實作思想、架構設計、代碼 ,學習一個技術的實作原理就是學習這三個方面的内容。

這三個方面也是層層遞進的關系,越來越具體。

首先,思想是宏觀的東西,建構起整個技術的理論支撐;

其次,架構是思想的進一步推敲和論證的産物;

最後,就是代碼了,結合思想和架構設計變成一行行的可執行代碼。

是以,你看技術原理的路線圖和目标就出來了,第一,學習思想建構起宏觀概念 ;第二,學習整體架構及局部架構掌握整體結構的組成和互相之間的關系;第三,學習代碼的實作和邏輯。

舉例說明一下,學習 "HashMap原理",這時候首先應該建構起的是它的資料結構知識即哈希表的概念和特點(其實如果再拔高一點,應當是先建立起各種資料結構和互相之間差別、特點及相關算法的思想和理論知識,當然這個要求就稍微高一些了),然後架構設計因為這是一個具體的類,是以這部分就是類中包含的核心方法及作用,最後就是深入代碼,學習具體的代碼實作邏輯,比如put方法是怎麼存入資料的,又在什麼情況下會進行擴容等等。

如果沒有前面部分的思想和理論做支撐, 不建議直接上來就進入到代碼細節,會學的很痛苦比較掙紮。發現概念和理論上的盲區,應及時補上,然後在繼續代碼的學習。

二、技術本質

說完技術原理,下面看技術本質。簡單了解,技術的本質就是解決問題,将解決問題的前因後果分别具體化研究,展開來說本質就是除過上面說到的技術原理之外,還應該包括 技術所解決的核心問題 和 應用場景 以及 存在什麼樣的優勢和不足。

總結一下,就是以下3點内容:

1、技術解決的核心問題和應用場景

2、技術原理

3、技術特性

是以,你看學習技術本質的路線圖和目标也就出來了,第一,掌握技術解決的核心問題和應用場景,即搞明白它可以用來幹什麼;第二,研究技術原理,即搞明白它為什麼可以做到;第三,了解它的技術特性,即搞明白它的優勢在哪裡。

拿redis來說,它解決的核心問題是提供高性能的記憶體資料緩存服務。雖說官方認為它還可以用作資料庫和消息代理,但實際應用中更多作為資料的緩存服務。

技術原理上面專門做了介紹了,讀者可以類比了解,這裡就不在展開了。

技術特性即是該項技術與相關其他類似技術相比有什麼牛逼的地方,拿redis和memcached比,多資料類型的支援就算redis的一個特性,持久化能力的支援也算是一個特性。特性在做技術選型的時候往往有着至關重要的作用。

搞清楚一門技術以上4點内容,才算得掌握到技術的本質。我們再學習技術原理的時候,不妨再加把勁,窺一窺它的技術本質。

再帶大家了解一下「本質」這個詞,下面這句是摘自網上的一句話

IPFS本質上是一種内容可尋址、版本化、點對點超媒體的分布式存儲、傳輸協定。

從面上看更像是一句定義,告訴你什麼是IPFS,但是加上了本質二字,就讓這句話看起來不是那麼的簡單,而支撐本質二字的背後就是IPFS這個技術的是内容可尋址,具有可以版本化、點對點、分布式傳輸的特性,解決的核心問題和應用場景就是标準化資料傳輸過程。

是以作者一定是窺透了這技術背後的本質内容而總結出這麼一句話。希望這裡沒有讓你看糊塗。

當我們再看到“xx的本質是xx”這種類似的話的時候,希望大家能多思考思考這句話中本質背後的支撐是什麼,有點跑題了,收回來。

三、總結

可以看到,技術本質包含了技術原理,也就是一種包含關系。

本文就是理清技術原理、技術本質的真正含義和關系,經常我們對這些看似都懂的概念不去深究,而實際上真正搞明白這些東西能夠幫助我們搭建自己的知識體系,而且知識結構脈絡十厘清晰,不易混淆。在學習一門新技術或深入研究一門技術的時候也會有一個清晰的方向和目标。

最後,随着學的東西越來越多,越往後大家就越會發現概念和理論(也就是思想)的重要性,有清晰的概念和理論體系作為支撐,能讓我們的學習事半功倍。