挑戰(zhàn)這十七項(xiàng)編程 鍛煉大腦并且提升能力
譯文眾所周知,編程幾乎已經(jīng)成為各行各業(yè)不可或缺的重要技能儲備,它能夠以無法替代的方式幫助我們組織并維護(hù)大型系統(tǒng),因此如今越來越多的人才也開始踏上這條學(xué)習(xí)之路。
大家可以通過交互式平臺學(xué)習(xí)編程,也可以從各類教程及論著當(dāng)中汲取營養(yǎng)——每個人的學(xué)習(xí)軌跡不同,選擇的學(xué)習(xí)方式亦有所區(qū)別。不過,有時候單憑這些資源還不足完全解決問題,我們更需要找到新的實(shí)踐鍛煉途徑。
編程是一項(xiàng)充滿創(chuàng)造性的工作,每位參與者都有能力提出新的、有趣的想法;不過有時候因?yàn)樾枰獙⒋罅繒r間投入到解決覺問題的工作當(dāng)中,我們往往忽略了創(chuàng)造力的培養(yǎng)。我不太確定這是否正是各類編程挑戰(zhàn)賽的存在意義,但它們確實(shí)能夠幫助大家從更深層次出發(fā),考量自身在編程工作當(dāng)中的定位。
從這個角度出發(fā),各類編程挑戰(zhàn)賽能夠通過以下幾個方面為我們帶來助益:
- 學(xué)習(xí)新的編程實(shí)現(xiàn)方式
- 在實(shí)踐中磨礪新型編程語言的使用技巧
- 體驗(yàn)如何解決關(guān)鍵性問題
- 讓我們的頭腦保持敏銳與專注
- 享受由此帶來的種種樂趣
在今天的文章中,我們將共同分享17項(xiàng)最佳編程挑戰(zhàn)賽事,相信它們能夠在大家的編程學(xué)習(xí)及實(shí)踐道路上帶來顯著的推動作用——甚至有可能幫助大家樹立起偉大的學(xué)習(xí)目的,引導(dǎo)各位探索廣闊無垠的計(jì)算機(jī)科學(xué)世界。
大家可以在這里贏得真金白銀作為獎金,而且作為一個擁有近百萬程序員受眾的社區(qū),我敢肯定這里會提供大量極具挑戰(zhàn)的編程難題。之所以能夠給出這樣的結(jié)論,是因?yàn)槲野l(fā)現(xiàn)相當(dāng)一部分新手編程愛好者都認(rèn)為[topcoder]的題目確實(shí)難度較高。
大家可以同時參加每天以及每周組織的編程挑戰(zhàn)活動,這兩項(xiàng)賽事的題目都將對各位的頭腦及才能提出挑戰(zhàn),只有最睿智的人才能夠?qū)⑵浣鉀Q。但在參與之后,大家會發(fā)現(xiàn)這一切都是值得的,因?yàn)樗薪?jīng)歷都將成為您個人簡歷上的一筆寶貴財(cái)富。
HackerEarth提供一款SaaS應(yīng)用程序,旨在對候選人的技術(shù)及邏輯能力進(jìn)行自動化評估。它同時也是一套聚集并篩選開發(fā)人員的平臺,企業(yè)能夠在這里找到符合實(shí)際需要的理想員工人選。
他們會經(jīng)常組織各類編程挑戰(zhàn)活動,大家可以提前數(shù)周注冊并申請參加,從而著手準(zhǔn)備并提前了解應(yīng)對難題需要掌握的基礎(chǔ)知識。與TopCoder類似,HackerEarth同樣是一個質(zhì)量極高的網(wǎng)站,其提供的各種腦力挑戰(zhàn)題目能夠幫助大家在未來的職業(yè)生涯當(dāng)中大受裨益。
CodeMonk
HackerEarth的最新亮點(diǎn)在于其新近推出的CodeMonk系列挑戰(zhàn)賽事——在CodeMonk挑戰(zhàn)賽中,大家可以全身心沉浸在自己編寫出的代碼當(dāng)中,并通過反復(fù)挑戰(zhàn)讓實(shí)踐經(jīng)驗(yàn)真正融入自己的血液當(dāng)中。這項(xiàng)挑戰(zhàn)賽事主要關(guān)注編程難題的解決。
而且如果大家希望進(jìn)一步發(fā)揮自己的冒險精神,并且希望能夠突破學(xué)習(xí)的范疇參與一些真正的挑戰(zhàn)活動,那么不妨借助HackerEarth的Sprint服務(wù)——其允許我們創(chuàng)建屬于自己的黑客馬拉松。
Coderbyte是一個依靠Kickstarter眾籌建立而成的項(xiàng)目(雖然如此,但它的參加眾籌之前就已經(jīng)存在了),且設(shè)計(jì)受眾主要面向初學(xué)者及中等水平編程人員。
該站點(diǎn)建立于2012年,由Daniel Borowski一手締造,而且如今已經(jīng)發(fā)展成為一個由程序員們自主維護(hù)的社區(qū)。在這里,技術(shù)人員們利用自己的閑暇時間在這里解決各類挑戰(zhàn)性難題。
大家也可以在這里就自己不了解的編程內(nèi)容發(fā)問,整個社區(qū)的活躍氣氛足以幫助各位找到答案并獲得充足的干勁??傮w來講,Coderbyte是個人氣極高的網(wǎng)絡(luò)平臺,而且風(fēng)評相當(dāng)積極——大家不要錯過哦。
#p#
Project Euler可能是目前世界上人氣最高的編程挑戰(zhàn)網(wǎng)站了,自十年前創(chuàng)立以來,這里也已經(jīng)逐漸成為成千上萬名用戶的活動之家。大家每周都能在這里找到新的挑戰(zhàn)題目,但別誤以為這樣的節(jié)奏太過緩慢——此前已經(jīng)被解決的超過450道難題絕對能榨干您的腦汁。
不過這些題目本身并非難到高不可攀——相反,它們大多強(qiáng)調(diào)思路與解決問題的能力,旨在幫助大家培養(yǎng)并學(xué)習(xí)到更多與所用編程語言相關(guān)的知識積累。總之,各類題目都高度針對解決途徑而出現(xiàn),能夠確保大家以清晰的思路了解自己到底在利用編程語言做些什么。
要了解更多與Project Euler相關(guān)的情況,大家不妨點(diǎn)擊以下鏈接: 維基百科、Reddit、Stack Overflow以及Google Code。
該網(wǎng)站甚至推出了專門的Android應(yīng)用程序,大家可以點(diǎn)擊此處進(jìn)行下載。
這里我要介紹個人最喜愛的網(wǎng)站之一:Reddit推出的Daily Programmer。如果大家希望了解更多與編程及問題解決思路相關(guān)的內(nèi)容,這里將是非常理想的討論平臺。我認(rèn)為這正是Daily Programmer目前的核心定位所在,而且各位每周能夠在這里找到三道等待解決的獨(dú)特難題。
更值得一提的是,這里還擁有大量活躍用戶。我們在評論當(dāng)中提交的所有內(nèi)容都會得到眾多社區(qū)成員的查閱,因此每項(xiàng)解決方案都能得到點(diǎn)評及回復(fù)。
強(qiáng)烈推薦!
在這里,大家能夠找到大量針對不同編程語言所設(shè)計(jì)的思維挑戰(zhàn)難題。它們根據(jù)不同難度作出了適當(dāng)?shù)呐判?,而且整個流程將有40到50道難題為各位設(shè)下重重考驗(yàn)。
每一道難題都提供詳盡而充分的解釋,而且根據(jù)我的個人體驗(yàn),各試題都設(shè)定了時間限制——所以不要懈怠,一鼓作氣將其解決吧!
Sphere Online Judge (簡稱SPOJ)是一座包羅萬象的寶庫,其中的數(shù)千道編程挑戰(zhàn)試題足以讓大家忙上好一陣子。SPOF當(dāng)中挑戰(zhàn)題目的涵蓋范圍同樣廣泛,從最基本的編程難題到艱深的算法難關(guān)無所不包——后者要求大家具備某些高超的問題解決技巧,例如為NP難題尋找最佳啟發(fā)式算法。SPOJ允許大家利用所能想到的幾乎每一種編程語言作為解題工具,并針對您所給出的解決方案提供反饋意見——其中可能包含一些有針對性的額外提示。
SPOJ背后還擁有一整套令人贊嘆的社區(qū)(用戶數(shù)量超過30萬),這里的活躍成員們樂于幫助彼此在論壇上解決難題。SPOJ允許用戶添加自己的挑戰(zhàn)題目、組織編程競賽并比拼解決問題的能力。無論是新手上路還是從業(yè)多年的老鳥,都能夠在這里找到適合自己的定位與內(nèi)容。對大多數(shù)用戶來說,它提供了一套理想的大型編程競賽前不可或缺的預(yù)熱環(huán)境。眾多理論計(jì)算機(jī)科學(xué)家的加入為這里營造出一種充滿激情的編程鉆研氛圍,但又同時流露出極強(qiáng)的親和力——大家從該網(wǎng)站的宣傳口號就能感受到這一切:“Where Hackers eat Crackers(作黑客,不作駭客——cracker亦有餅干之意,代表這里如下午茶般的愜意氣氛)。”
#p#
CodeChef由Directi所創(chuàng)建,這里不僅是一個旨在鼓勵并挑戰(zhàn)開發(fā)人員解決難題的社區(qū),同時也為用戶提供了一整套實(shí)踐、競賽并提升自身技能水平的平臺。這里包含有大量供用戶解決的挑戰(zhàn)題目集合,大家也可以隨意查看其他成員在解決這些編程難題時所使用的源代碼。
全部挑戰(zhàn)題目根據(jù)難度不同而作出了具體類別劃分,而且該網(wǎng)站本身也擁有一個頗具規(guī)模的社區(qū)。總而言之,CodeChef是大家磨礪技能、展示身手的良好環(huán)境。
如果大家希望向企業(yè)雇主及其他同行展現(xiàn)自己的編程功力,那么請以開發(fā)者的身份加入到CodeEval當(dāng)中。在這里,我們可以參與到涉及多種不同領(lǐng)域的競賽當(dāng)中,不過大多數(shù)比賽目標(biāo)都設(shè)定為構(gòu)建一款產(chǎn)品/應(yīng)用程序——并提供現(xiàn)金作為獎勵。此外,大家也可以參與其中的編程挑戰(zhàn)賽,相信把出色的成績添加到簡歷當(dāng)中足以幫助各位給自己的潛在雇主留下良好的第一印象。
CodeEval網(wǎng)站專注于幫助開發(fā)人員立足于技術(shù)層面展示自己的個人水平,而且其實(shí)際效果也相當(dāng)值得稱道。
HackerRank網(wǎng)站最吸引我的一點(diǎn)在于,他們所提供的挑戰(zhàn)試題與人工智能技術(shù)高度相關(guān)——這不僅是種很酷的發(fā)展方向,同時也給高階程序員們提供了一展身手的良好平臺。HackerRank網(wǎng)站擁有著Y Combinator以及SVAngel等企業(yè)作為贊助方??偠灾瑢€人水平有自信的朋友一定不要錯過。
Codewars在組織編程挑戰(zhàn)賽方面顯然找到了一條極佳的實(shí)現(xiàn)途徑,而且比賽內(nèi)容也非常嚴(yán)肅。我費(fèi)盡心力希望更為全面地幫助大家了解該網(wǎng)站的定位,但相信下面這段長度為十分鐘的視頻能夠更好地展示Codewars的實(shí)際作用。
我想大家應(yīng)該會對Codewars產(chǎn)生興趣,正如眾多已經(jīng)參與到其社區(qū)當(dāng)中的開發(fā)者成員一樣。
雖然與前面提到的網(wǎng)站相比,Rosalind選取的方向更有針對性,但這仍然不妨礙它成為一種解決編程難題及學(xué)習(xí)編程知識的理想的途徑。Rosalind提供的挑戰(zhàn)題目大多面向生物信息學(xué)科,大家可以通過適合自己的節(jié)奏在這里展開探索。
#p#
大家可以在這里編寫自己的機(jī)器人,并利用它們同社區(qū)內(nèi)的其他成員彼此對毆!這是一套編程-游戲類型的平臺,但對于那些剛剛接觸此類方案的開發(fā)人員來說仍然頗具現(xiàn)實(shí)意義——或者至少能夠帶來不錯的娛樂性體驗(yàn)。感興趣的朋友不妨點(diǎn)擊此處查看官方文檔,了解與之相關(guān)的細(xì)節(jié)信息。
Codeforces高度關(guān)注每日/每周組織編程挑戰(zhàn)活動。大家可以在這里組建自己的隊(duì)伍、參加編程熱身并在站點(diǎn)當(dāng)中查看誰才是最出色的編程人才。當(dāng)然,該網(wǎng)站也會頻繁主辦編程賽事,幫助大家以出色的成績吸引到潛在雇主的注意。
這套編程挑戰(zhàn)平臺由Katrina Owen所創(chuàng)立。Exercism平臺的關(guān)注重點(diǎn)在于以眾包方式解決技術(shù)問題。在成為該網(wǎng)站的成員之后,大家不僅能夠提升自己的思維/計(jì)算/編程技能,同時也可以同其他針對我們編程難題給出有價值答復(fù)及解決辦法的成員進(jìn)行交流。這確實(shí)是種相當(dāng)不錯的自我進(jìn)修方式,值得大家加以體驗(yàn)。
看起來Kaggle網(wǎng)站的設(shè)立初衷更多是在面向?qū)I(yè)人士以及具備競爭意識的開發(fā)者群體,因?yàn)槠渲械母傎愓f明頁面確切指出,Kaggle組織的所有比賽都需要繳納費(fèi)用才可參與。但盡管如此,如果大家在工作及學(xué)習(xí)中遇到了難以解決的問題,這里無疑能為您提供極具價值的方案回報(bào)。大家也可以在這里找到眾多招聘崗位,并通過編程教程保持知識儲備的持續(xù)更新及核心競爭力。
在CodinGame,我們相信每一位參與者都能夠發(fā)現(xiàn)編程帶來的樂趣。身為程序員,我們知道編程是一種強(qiáng)大的工具,能夠幫助自身完成各類創(chuàng)新與創(chuàng)造性活動。雖然涉足編程領(lǐng)域的主因在于激情與沖動,但在此之上,樂趣同樣非常重要。因此我們構(gòu)建出了這樣一個融合了編程與游戲的平臺。我們的目標(biāo)是幫助來自世界各地的開發(fā)人員——無論其擁有怎樣的從業(yè)經(jīng)歷或者專業(yè)經(jīng)驗(yàn)——以游戲的方式學(xué)習(xí)并提升自己的編程技能并找到理想的工作。
以上內(nèi)容節(jié)選自CodinGame網(wǎng)站的官方說明頁面,簡而言之其關(guān)注重點(diǎn)在于編寫游戲程序,強(qiáng)調(diào)游戲的娛樂能力并以此為出發(fā)點(diǎn)幫助我們鍛煉自己的大腦。這種定位對于一部分開發(fā)者群體可能具有特殊的吸引力。
編程挑戰(zhàn)幫助我們鍛煉大腦
好吧,我覺得這篇文章的標(biāo)題起得確實(shí)有點(diǎn)俗氣——不過也非常寫實(shí),畢竟對每一位開發(fā)者來說,大腦正是自己最為寶貴的財(cái)富。
通過將這些資源匯總到一起,大家將一舉獲得成千上萬道獨(dú)特的編程挑戰(zhàn)試題——也許大家最終能夠解決的不過是其中的百分之一,但勿以善小而不為,這仍然值得我們一試。
大家在實(shí)際體驗(yàn)過程中,最偏愛以上哪個網(wǎng)站提供的資源?除了清單所列出的資源,相信大家肯定也有著自己的心頭所好,請?jiān)谠u論欄中與我們分享您的編程財(cái)富儲備吧——可別藏私哦!