關於編程的一些我的感悟

關於編程的一些我的感悟

參加工做有一段時間了,在不斷的工做中對於編程有了新的體會,在這裏記錄並跟你們分享一下,也但願你們能夠留言探討。程序員

爲何須要編程?

站在公司的角度上,它須要提供一種產品能夠知足客戶的需求,而編程就是爲客戶製造產品的一種手段,其終極目的仍是爲了解決客戶的問題。也就是說,編程並非目的,只是一種手段,若是存在一種更加便捷有效的方式能夠解決問題,就沒有必要去進行編程。數據庫

爲何要強調編程不是目的呢?編程

由於大多數初入職場的人,尤爲是應屆畢業生,老是會在作產品時陷入對技術的過分追求。對技術有追求是一件好事,可是更要時刻謹記技術的意義。當前很火爆很牛x的一些開源技術,它們的存在難道單純是做者爲了炫技嗎?真正牛x的大佬應當是即具有了技術的深度,又能尋找到商業價值與技術價值的平衡點,過分的濫用技術只能說明其對技術的把控力不足,不能恰當合理的使用技術。緩存

如何進行編程?

編程的目的是完成既定的需求,編程的過程就是一個不斷遇到問題、解決問題最終知足需求的過程。這些在完成需求的過程當中所遇到的問題被稱之爲風險,一名程序員若是能夠提早識別風險,並會在真正開始編碼以前解決掉風險,他就算是邁入了架構師的門檻。性能優化

解決複雜問題的一個重要途徑是對問題進行拆解,將其轉換爲簡單問題或已知問題,並逐一解決。網絡

人類目前全部的知識體系,都是創建在人類對這個世界的認知中,計算機的整個知識體系也不例外。這也就意味着在編程中所遇到的問題,基本上都是在咱們認知範圍內能夠解決的,甚至能夠借鑑一些特別樸素的生活經驗,來幫助你尋找解決問題的方向。架構

以性能優化爲例,怎麼作才能夠加快網絡中數據的傳輸速度呢?編程語言

這個問題能夠轉換爲,在生活中若是咱們想快速的運輸一批貨物到異地,應該怎麼作纔好?工具

依據經驗,想要更快的運輸速度,首先確定選擇更高速的運輸設備,畢竟飛機快於高鐵,高鐵快於火車。性能

進一步的,咱們能夠多租幾架飛機,同時進行貨物的運輸,也能加快貨物運輸的速度。

再進一步的,每次運輸的貨物體量有限,咱們要想盡辦法利用運輸工具的每一分空間運送貨物,在不損壞貨物的前提下使勁擠壓貨物,向有限的空間內塞進去更多的貨物。

回到問題自己,如何加快網絡數據的傳輸速度?咱們能夠獲得一些答案:

  1. 使用更高速的傳輸介質,光纖的傳輸速度老是好於五類線。

  2. 對數據進行並行傳輸。

  3. 先對數據進行壓縮,再進行數據傳輸。

這種思路甚至能夠推而廣之,譬如如何對數據庫性能進行優化?

  1. 使用更高速的設備。

SSD比普通的機械盤確定是要快的。

大內存,數據庫能夠儘可能的將數據緩存在內存中。

更高運算頻率的CPU,每秒運算更多的指令。

  1. 並行處理

配置開啓更多的工做線程。

集羣多節點部署,將讀或者寫分散到多個節點上,並行處理。

  1. 數據壓縮

此處的數據壓縮,不只僅是單純意義上的壓縮數據。

數據的本質是什麼?是信息!咱們存儲數據,處理數據都是爲了可以按需從數據中提取須要的信息。

在存儲數據時,對數據進行篩選、處理,儘量的只存儲所需數據,減小數據冗餘,是數據壓縮的一種形式。在讀取數據時,只讀取特定範圍知足特定條件的有效數據,減小對數據的檢索範圍,也是一種數據壓縮的特殊形式。合理的使用索引,對數據進行分庫分表,或者相似ES的集羣形式,數據被分散到多個節點的多個分片內,每一個節點只存儲部分數據,這些都是數據壓縮,可讓你在較小的數據集範圍內get到本身想要的全部信息。

怎樣學習編程?

解決問題的思路離不開豐富的知識儲備,以及對知識的概括與演繹,不管是提高知識的廣度仍是深度其實都是異曲同工。

有些人比較具有鑽研精神,對技術的深度有狂熱的追求,在學習的過程當中遇到了什麼技術問題必定要摳的明明白白。首先,我要對這種作事方式進行確定,好的技術離不開鑽研精神,可是從我我的角度來說我不建議你們在學習編程時這麼作。計算機軟件是一個很是寬泛的學科,它的知識棧囊括了各種操做系統,網絡,以及各類各樣的編程語言。而且,這些知識棧並不是都是徹底獨立的個體,它們所使用的技術,解決問題的思路有好多都是大同小異。

我建議在初學編程時,應當儘可能多的去接觸各種技術,將學到的知識互相印證理解,最大可能的開拓本身的視野。這麼作的好處在於,第一不會由於某個極其困難的點而喪失掉對學習編程的興趣,第二視野的開拓能夠學習到更多解決問題的思路,讓你瞭解到同一種技術原來存在這麼多的可利用方式,對之後的工做生活有所啓發。

如何學習的一些建議:

我我的對於編程的學習經歷了幾個階段:

  1. 視頻學習

如今視頻教學網站不少,我當時主要是在淘寶購買相關的視頻教程。

視頻教學比較適合徹底什麼都不懂的小白階段,很差的地方就是學習進度太慢,本身思考的會比較少,如今我我的已經徹底放棄了這種學習方式。

  1. 看書

對於新人來說,有些技術書籍仍是值得一看的。有不少國外的經典著做,均可以一覽。目前國內的技術書基本上是魚龍混雜,我目前也不多會去看技術書籍了,由於我發現書裏的內容手冊中基本上均可以找到,手冊裏有的內容,每每由於篇幅的緣由書籍中卻沒法全量的覆蓋。

另外,目前技術的更迭速度仍是很快的,書籍裏的內容每每都是一些技術幾個版本以前的老東西了,即使學習了不少時候也沒法徹底適用於新版本,還可能會給你帶來一些困擾。

  1. 官方文檔+google+stackoverflow

這是本人目前獲取知識的主要途徑。在學習一種新技術時,鑑於本人的英語水平不是很高(目前好不少了),多數狀況下會首先使用搜索引擎閱讀一些博客對新技術的一些概念進行快速入門。以後,再進行文檔閱讀(瞭解了一些概念,在進行翻譯時才能更準確的理解原文的意思)。

對於一門技術的學習,最好的途徑是使用它,若是當前沒有環境去使用它,那麼就去了解別人是怎麼使用它的!《開發者頭條》是一個挺不錯的技術站點,我常常能夠在上面找到一些別的公司在生產環境對某個技術的應用實戰,這些生產環境的真實應用讓我受益不淺。

不喜歡看春晚,又沒有別的事情可作,年三十晚上隨便寫點東西,但願能給你們帶來一些收穫。

最後,祝你們新年快樂啊!豬年發大財!

最後,我的公衆號,歡迎你們關注~

相關文章
相關標籤/搜索