眾所周知在快速發(fā)展的信息時代,程序員是極具優(yōu)勢的工作,不僅很少被社會瑣事煩擾,還能擁有極高報酬。可是作為一個零基礎的初學者該怎么成為一名合格的程序員呢?那么下面就讓我分析一下初學者該怎么學習編程。
編程語言
要當程序員,肯定是要從學習一門編程語言開始。這是HelloGitHub給出的2022年5月編程語言排行榜:
可以從這個排行榜中清楚地看到哪些是熱門語言,我整理了一下對于各種語言的看法,但是具體怎么選擇就看你自己的需求啦:
- Python:它很適合初學者,簡單易學,并且和人工智能關系密切。目前主要應用于web開發(fā)、應用開發(fā)、大數(shù)據(jù)、數(shù)據(jù)挖掘、科學計算、機器學習、人工智能、運維、自然語言處理等等。
- Java:相對于C也是比較簡單的語言,不過它的學習難度肯定比Python大,在這三個語言中難度中等,、目前主要應用于安卓和 IOS 的應用開發(fā)、視頻游戲開發(fā)、桌面GUI、軟件開發(fā)等等。
- C:難度最大,主要應用在操作系統(tǒng)、嵌入式領域和服務器領域。應用范圍廣,薪資待遇高。C 是 C 語言的一個超集,既有指針又有對象使它成為最復雜的語言。幾乎所有現(xiàn)代編程語言都由C/C 發(fā)展而來,因此了解C/C 非常有利于快速掌握其他各類編程語言;
- JavaScript: JavaScript 是一種動態(tài)類型、弱類型、基于原型的直譯式腳本語言,也是使用頻率最高的給 HTML 網(wǎng)頁增加動態(tài)功能的語言。作為腳本語言,JavaScript 可立即運行而無需等待服務器響應,速度非常出色,并且它是動態(tài)類型語言,學習難度低。
這幾個各有各的特色,但是如果你想入門當程序員,那我建議你從Python和Java中選,這兩種語言相較于C來說,更容易上手。
算法和數(shù)據(jù)結構
作為初學者,當你把編程語言學到一定程度后,接下來就是編程的通用技能了:基本的算法和數(shù)據(jù)結構。
你可能會說,你以后想找的工作很簡單,和算法這一塊兒關系并不大,有基本的知識就夠了;但要知道的是,這東西就好比地基,你之后的一切工作都將在這基礎上開展,如果不會以后進入工作了將花費大量的時間精力和金錢在上面。
在我看來,這些是必須要掌握的:
10個算法:二分查找、遞歸、排序、搜索、哈希算法、分治算法、回溯算法、貪心算法、動態(tài)規(guī)劃、字符串匹配算法。
10個數(shù)據(jù)結構:棧、數(shù)組、鏈表、隊列、堆、跳表、圖、Trie 樹、散列表、二叉樹;
千萬不要小瞧這它們,每一個展開了去細學,怎么都得要一年半載;想想辦法把這些吃透,起碼以后再看見這些問題不用翻書,然后你就可以進一步向更深的層次進發(fā),去思考這些問題:
編程框架是如何運轉(zhuǎn)起來的?
主流的編程框架和設計模式存在怎樣的共通模式呢?
List、Hash、key各自的應用場景和共通之處?
……
每一個問題都是一座大山,當你想明白并且拿出可行的解決方案,你的技術相比以往就會提升一個Level。
實操
“實踐出真知”,這話放在編程的學習中,顯得尤為合適。
網(wǎng)上有一句比較流行的話,“我的眼睛和大腦都會了,但是手不會?!睂W習編程的過程中也容易出現(xiàn)這些問題;可能你通過看書、看視頻突然get到了某一個點,但是并沒有去實操,在不久后重新遇到相關的問題,全部忘記也是正常的。
所以,尋找實操性較高的個人項目,提升閱讀和編譯速度,是學習編程的不二之選。GitHub上有幾個有趣的項目,可以參考一下:
- lllyasviel/style2paints 這是一個能夠根據(jù)用戶自定義的顏色給線稿上色的工具。在這里,以ABCD這種格式呈現(xiàn)一些結果。你只需要上傳你的的草圖,選擇一種樣式,然后放置光源。就可以實現(xiàn)AI上色當結果在沒有任何人為顏色校正的情況下立即獲得時,我們將此結果視為全自動結果。當結果需要一些顏色校正時,人類可以很容易地在畫布上放置一些顏色提示,以指導AI著色過程。
- seq2seq-couplet 這是一個使用 seq2seq 模型來進行對聯(lián)(對對聯(lián))的項目。
- MisterBooo/LeetCodeAnimation 為了幫助大家更好的入門學習算法,經(jīng)過半年的積累,創(chuàng)作者給大家整理了《劍指 Offer》系列的四十道題目,都是算法面試的高頻題目,每一道題目都提供詳細的分析、精美的配圖、易于理解的動畫視頻,適合那些第一次刷題的同學,當然,也適合重復刷題的老手再次學習鞏固基礎。
這篇文章就介紹到這里,希望對初學者能有所幫助,歡迎點贊分享
版權聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權/違法違規(guī)的內(nèi)容, 請發(fā)送郵件至 舉報,一經(jīng)查實,本站將立刻刪除。