全文共3226字,預(yù)計學(xué)習(xí)時長10分鐘
全文共3226字,預(yù)計學(xué)習(xí)時長10分鐘
圖源:Pexels
在小芯認(rèn)識的程序員之中,大部分人都更注重實(shí)操實(shí)踐,對于知識點(diǎn)的學(xué)習(xí)沒有那么在意,雖然那些基礎(chǔ)知識常常在編碼中發(fā)揮不可取代的作用,但還是難以逃脫被人們看輕或忽視的命運(yùn)。
當(dāng)然現(xiàn)在也出了很多知識學(xué)習(xí),指南指導(dǎo)類的文章或者課程,成為大家“投機(jī)取巧”、短時間掌握大量核心知識的“捷徑”。
并不是說這種“捷徑”不好。
在大多數(shù)情況下,有很多指南都是可以參考的,它們能夠指導(dǎo)讀者學(xué)習(xí)那些最熱門的語言以及最熱門的知識,從而使讀者成為行業(yè)的佼佼者。
盡管這些指南可能有用,但它們僅引導(dǎo)讀者獲得表面價值。這些指南提供了淺層次的學(xué)習(xí)路線,如果想要往更深層次發(fā)展,還是需要自己去慢慢實(shí)踐和探索。
因此,小芯今天幫大家整理了能“獲得成為一個真正有效的開發(fā)人員所需的深度知識“。
但是這些生僻的編程“元”知識,仍需要讀者自己去主動潛心鉆研。
編程元知識是計算機(jī)科學(xué)專業(yè)畢業(yè)生必學(xué)的東西,而自學(xué)者經(jīng)常會漏掉這些知識點(diǎn)。編程元知識是查看和編寫代碼的基礎(chǔ)。
圖片由Aphinya Dechalert拍攝-這些都是“元”
本文提供一份清單式的指南,好讓讀者在這些新鮮好奇的知識行囊里進(jìn)行瀏覽和挑選。
綜合指南(絕大部分與語言無關(guān))
全局圖—:Aphinya Dechalert撰寫
1. 數(shù)組!因?yàn)橐磺卸际菙?shù)據(jù)
幾乎在每個教程中,都會遇到一個非常簡單的數(shù)組版本。比如熟知的扁平的一維數(shù)組,包含少許元素。但是在現(xiàn)實(shí)生活中,還有更多的種類,形狀和具有奇異性的數(shù)據(jù)可以以數(shù)組形式呈現(xiàn)。
當(dāng)涉及到生產(chǎn)級數(shù)據(jù)集時,多維數(shù)組和交錯數(shù)組是經(jīng)常使用的類型。如何優(yōu)化這些數(shù)組的結(jié)構(gòu)以供創(chuàng)建和使用,決定著開發(fā)人員是否能高效地執(zhí)行任務(wù)。
2. 談?wù)勊惴?/p>
每個人都在談?wù)摗八惴ā保路鹚且粋€被AI喚醒的神秘物體,會給所有人帶來厄運(yùn)。 或許這只是廣大民眾的一種看法。
在開發(fā)人員踏入編程的潮流前,算法只是編程中一系列實(shí)現(xiàn)特定結(jié)果的可重復(fù)規(guī)則。
當(dāng)涉及到算法時,了解排序算法的機(jī)制可以幫助開發(fā)人員在處理大量數(shù)據(jù)時保持清醒。
有些時候,面臨的是數(shù)據(jù)和數(shù)據(jù)處理問題。如果熟悉為特定類型的數(shù)據(jù)進(jìn)行設(shè)計和測試的方法,那么就能減少對列表的sort()等方法的依賴。
這是因?yàn)閟ort()傾向于運(yùn)行自己的算法,而該算法可能因繪制引擎而異。當(dāng)編寫自己的算法時,就可以更好地控制通過代碼處理的數(shù)據(jù)的質(zhì)量和速度。
3. SOLID設(shè)計原則
SOLID是編程中五項(xiàng)設(shè)計原則的集合。這五項(xiàng)原則是可以實(shí)現(xiàn)面向?qū)ο缶幊痰哪J健?/p>
SOLID原則的有用之處在于提升代碼靈活性、長期可維護(hù)性,以及加強(qiáng)對開發(fā)人員間工作完成方式的全面理解。
除了創(chuàng)立健壯的代碼之外,SOLID還形成了敏捷軟件開發(fā)的核心理念。
4. 測試
不要僅僅學(xué)習(xí)如何測試,更要學(xué)會研究測試背后的理論。當(dāng)進(jìn)行測試時,開發(fā)人員傾向于僅僅關(guān)注單元測試,而不去弄清楚整體意識形態(tài)的機(jī)制,以及它們?yōu)槭裁词谴a穩(wěn)健的基礎(chǔ)。
測試分為基于功能的測試和非功能性測試,如性能、安全性、可用性和兼容性測試。這些測試通常具有較低優(yōu)先級,或者根本未被考慮。
重要的是,測試還能讓開發(fā)人員運(yùn)行假設(shè)的場景并預(yù)先確定數(shù)據(jù)的形態(tài),以及在開始編碼之前預(yù)測潛在的問題。
圖源:Pexels
5. 樹
有些時候會聽到關(guān)于“樹”的內(nèi)容。這里的“樹”不是指通常生長在泥土中并提供氧氣的植物,而是基于關(guān)系基礎(chǔ)結(jié)構(gòu)——通過節(jié)點(diǎn)、葉節(jié)點(diǎn)、子節(jié)點(diǎn)、父節(jié)點(diǎn)和兄弟節(jié)點(diǎn)訪問,從而構(gòu)建數(shù)據(jù)。
如果使用過HTML,就會聽說過DOM樹。那是一種樹的類型。二叉樹是每個節(jié)點(diǎn)都有兩個子節(jié)點(diǎn)連接的樹,它創(chuàng)建了一個可以追溯到最頂端的金字塔樣式圖。
但是,樹的意義遠(yuǎn)不止這些,它還與性能、處理數(shù)據(jù)以及如何快速檢索數(shù)據(jù)有關(guān)。
6. 動態(tài)編程
動態(tài)編程是一種通過遞歸方式,將復(fù)雜問題分解為可能的最小子問題,來解決復(fù)雜問題的方法。這是一種編程技術(shù),可用于多個學(xué)科,而不僅限于代碼。
動態(tài)編程的關(guān)鍵點(diǎn)在于,它對遞歸的使用意味著一個問題只會被解決一次,并且可以優(yōu)化工作負(fù)載,而不是根據(jù)特定的重復(fù)算法來組合事物。
最初,因?yàn)楹芟袼惴ǎ瑒討B(tài)編程的概念可能會讓人困惑。但是動態(tài)編程和算法有著顯著的不同,有著不同的機(jī)制原理,從長遠(yuǎn)來看,學(xué)習(xí)動態(tài)編程可以幫助開發(fā)人員成為一個更好的程序員。
7. 散列表 (Hash Table)?(與土豆煎餅 (Hashbrowns) 無關(guān))
程序以一種易于訪問和理解的方式組織大量數(shù)據(jù)。散列表是存儲和檢索數(shù)據(jù)的另一種方法。
當(dāng)涉及大型數(shù)據(jù)集(有數(shù)百萬個的數(shù)據(jù)點(diǎn))并且需要快速檢索數(shù)據(jù)時,散列表是常見的選擇。但同時散列表也能對本地應(yīng)用程序存儲中較小的數(shù)據(jù)集進(jìn)行設(shè)計,以提高效率并對特定集進(jìn)行分類。
8. 二分搜索法
又回到了另一個與數(shù)據(jù)相關(guān)的話題。二分搜索是一個值得探索的重要話題,因?yàn)樗c性能有關(guān)。
為了使二分搜索工作正常進(jìn)行,必須要對需搜索的數(shù)據(jù)集進(jìn)行預(yù)排序,以使算法能夠快速遍歷每個數(shù)據(jù)點(diǎn)并確定是否匹配。
關(guān)于二分搜索,有多種方法能夠?qū)崿F(xiàn)它,通常是算法和遞歸的混合。二分搜索的思想可以應(yīng)用于不同的語言,它更多的是一種基于數(shù)學(xué)推理的技巧,而不是實(shí)際的代碼。
9. 認(rèn)真對待進(jìn)程、線程和并發(fā)
當(dāng)開始關(guān)注進(jìn)程、線程和并發(fā)時,這意味著已經(jīng)開始深入編程了。
然而,因?yàn)檫M(jìn)程、線程和并發(fā)主要面向后端開發(fā)人員,但作為一個前端開發(fā)人員,可能從未遇到過這些問題,但對它們的工作原理有所了解仍然是一件好事。因?yàn)檫@有助于全面了解計算機(jī)的工作原理,以及代碼是如何作為人類、繪制引擎/解釋引擎和機(jī)器之間的通信橋梁進(jìn)行工作的。
了解這些概念還能幫助你了解儲存系統(tǒng)的工作方式以及編寫的代碼對性能的影響。
圖源:Pexels
10. 鏈表
除非使用C ++或Python,否則不太可能會運(yùn)用到鏈表。雖然鏈表看起來與數(shù)組十分相似,但是鏈表有著不同于數(shù)組的特定優(yōu)點(diǎn)和缺點(diǎn)。
如果開始深入研究數(shù)據(jù)是如何以鏈表的形式顯示的,就會發(fā)現(xiàn)它非常適用于大型數(shù)據(jù)集工作,因?yàn)樗娜萘渴菬o限的。
如果數(shù)據(jù)過于龐大,最終需要調(diào)整數(shù)組的大小。而鏈表可以保持?jǐn)?shù)據(jù)之間的“鏈接”。
11. 設(shè)計模式的藝術(shù)
一切都可以歸結(jié)為一個模式。后退一步,著眼全局,并確定以前是否遇到相同問題,然后設(shè)計模式就得以實(shí)現(xiàn)了。
如果可能的話,則推薦使用設(shè)計模式來節(jié)省時間,防止?jié)撛诘膯栴}進(jìn)一步發(fā)展,并為代碼編寫過程創(chuàng)建標(biāo)準(zhǔn)。
雖然設(shè)計模式看起來是一個需要學(xué)習(xí)的大領(lǐng)域,但它也會帶來良好的投資回報,因?yàn)閷?shí)際上減少了將來由于結(jié)構(gòu)缺乏或結(jié)構(gòu)較弱而可能從代碼中出現(xiàn)的百搭碼文的數(shù)量。
在某種意義上,設(shè)計模式就好比一個預(yù)先設(shè)計的藍(lán)圖,有助于在不斷的實(shí)踐應(yīng)用中保持代碼的可讀性和可理解性。
結(jié)語
編程不僅僅是學(xué)習(xí)一門語言的工作原理。語言、框架、庫背后還隱藏著機(jī)制和技巧。
希望這份元知識指南能讓大家對編碼有更為全面的了解,并且不局限于……嗯,代碼本身。
If else 語句會使很多剛?cè)腴T的程序員感到困惑,但掌握if else 語句也是證明知識積累與應(yīng)用達(dá)到新高度的標(biāo)志。
不必完全理解所有的內(nèi)容,但這些知識點(diǎn)可以有助于未來的程序編寫。
知道或至少了解上述主題如何發(fā)揮作用并融入全局,將有助于加快編碼過程,并提高所創(chuàng)建代碼的潛在健壯性,以防出現(xiàn)殘缺和衰退。
加油,各位機(jī)智的天才程序員們!
留言 點(diǎn)贊 關(guān)注
我們一起分享AI學(xué)習(xí)與發(fā)展的干貨
編譯組:吳亞芳、李韻帷
相關(guān)鏈接:
https://medium/better-programming/a-comprehensive-guide-on-the-meta-knowledge-you-need-to-accelerate-your-code-creation-process-d0f5f3b67473
如需轉(zhuǎn)載,請后臺留言,遵守轉(zhuǎn)載規(guī)范


