1.熟悉編程語言
熟悉編程語言是學(xué)習(xí)編程的第一步。人們通常以C,C++,Java或Python開頭。我個(gè)人一開始就喜歡C++,因?yàn)樗炔惶唵危ㄈ鏟ython),又不太缺乏庫(如C是)。C++相當(dāng)快,并且也具有良好的庫支持-兼而有之!另外,C++是競(jìng)爭(zhēng)性編程的一個(gè)不錯(cuò)的選擇,因?yàn)樗俣群芸觳⑶揖哂袠?biāo)準(zhǔn)模板庫(STL)的支持。根據(jù)您的興趣和目標(biāo),對(duì)第一語言的選擇非常主觀。您可能對(duì)前端,后端,移動(dòng)應(yīng)用程序開發(fā),游戲開發(fā),數(shù)據(jù)科學(xué)等感興趣。如果您的主要目標(biāo)是找工作,請(qǐng)查看我們的文章。哪種編程語言最適合找工作?
您可以從學(xué)習(xí)基礎(chǔ)知識(shí)開始-語法,數(shù)據(jù)類型,變量,循環(huán),數(shù)組等。嘗試解決基于實(shí)現(xiàn)的簡單問題,以熟悉這些基本概念。
2.學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)和算法
一旦您對(duì)上一節(jié)中提到的任何一種語言感到滿意,接下來您應(yīng)該做的就是學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)和算法。數(shù)據(jù)結(jié)構(gòu)和算法有助于建立編程所需的正確能力。有關(guān)數(shù)據(jù)結(jié)構(gòu)的知識(shí)將幫助您選擇要解決的問題的正確方法-并非所有數(shù)據(jù)結(jié)構(gòu)都可以在任何地方使用。了解算法之后,您將能夠理解許多庫函數(shù)的工作機(jī)制,否則,它們會(huì)像黑匣子一樣出現(xiàn)。
您可以學(xué)習(xí)許多優(yōu)秀的在線課程。算法的第1部分和第2部分是很好的入門課程。花時(shí)間思考這些數(shù)據(jù)結(jié)構(gòu)和算法的實(shí)現(xiàn),以使其適應(yīng)它們,這一點(diǎn)很重要。您可能認(rèn)為學(xué)習(xí)它們的實(shí)現(xiàn)可能并不重要,因?yàn)樽罱K會(huì)使用庫函數(shù)。這是人們最常見的誤解之一。了解實(shí)現(xiàn)將幫助您評(píng)估時(shí)間復(fù)雜度,這將幫助您進(jìn)一步優(yōu)化代碼。有一個(gè)很棒的網(wǎng)站Visualgo,您實(shí)際上可以在其中可視化各種數(shù)據(jù)結(jié)構(gòu)和算法的工作。
3.競(jìng)爭(zhēng)激烈的編程讓您的手變得骯臟
一旦學(xué)習(xí)了數(shù)據(jù)結(jié)構(gòu)和算法,就應(yīng)該開始在SPOJ,Codechef,Codeforces,Topcoder,Hackerrank,Geeksforgeeks等網(wǎng)站上解決問題。解決的問題越多,效果越好。不過,最好以難度遞增的順序解決問題。您可以按提交的解決方案數(shù)量的降序?qū)栴}進(jìn)行排序,然后開始解決。解決了大約100種混合品種問題后,您將對(duì)自己的編程技能充滿信心。
在解決問題并編寫解決方案編碼后,您便可以開始參加各種在線編程競(jìng)賽。這樣做將大大提高您的編程技能。
4.做一個(gè)項(xiàng)目
現(xiàn)在,您已經(jīng)提高了解決問題和編程的能力,是時(shí)候創(chuàng)建一些有用的應(yīng)用程序了。您可以選擇一些流行的Web開發(fā)框架(Django,F(xiàn)lask,RubyonRails等)并使用它來創(chuàng)建項(xiàng)目。編寫應(yīng)用程序會(huì)讓您有實(shí)際的軟件開發(fā)感覺,這是大多數(shù)程序員所做的。
完成一些Web開發(fā)項(xiàng)目后,您可能想嘗試Android或iOS開發(fā)。不要束縛自己-學(xué)任何你想學(xué)的!
5.探索
一旦對(duì)編程技能充滿信心并完成了一些項(xiàng)目,現(xiàn)在就應(yīng)該繼續(xù)探索計(jì)算機(jī)科學(xué)的各個(gè)領(lǐng)域,并找出最讓您著迷的地方。
計(jì)算機(jī)科學(xué)是一個(gè)廣闊而豐富的領(lǐng)域,有許多有趣的子領(lǐng)域。計(jì)算機(jī)科學(xué)的一些熱門領(lǐng)域是人工智能,機(jī)器學(xué)習(xí),密碼學(xué),云計(jì)算,系統(tǒng)編程,計(jì)算機(jī)視覺,自然語言處理,區(qū)塊鏈,虛擬現(xiàn)實(shí),Web開發(fā),移動(dòng)應(yīng)用程序開發(fā)等等。您應(yīng)該嘗試探索盡可能多的領(lǐng)域,以了解您的興趣所在。