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