當前位置:首頁 » 編程軟體 » 編程難題

編程難題

發布時間: 2024-09-24 19:23:23

Ⅰ 如何突破編碼瓶頸

愛立信提出,重要的並不是經驗本身,而是「努力的學習」,也就是要不斷地挑戰自身能力之外的東西。一些狂熱的愛好者花費了大量的時間去下棋、打高爾夫球或者玩樂器,但他們可能始終停留在業余水平上,而一個訓練有素的學生卻可以在相對較短的時間里超越他們,原因就在這里。值得注意的是,在提高水平方面,花費在下棋上的大量時間(即使參加各種比賽)似乎還是比不過專門的訓練來得更為有效。訓練的主要價值在於發現弱點,並有針對性地進行提高。
「努力的學習」意味著,要常常去處理那些剛好在你能力極限上的問題,也就是那些對你來說有很大可能失敗的事情。如果不經歷一些失敗的話,你可能就不會成長。你必須不斷地挑戰自我,超越自己的極限。
那樣的挑戰有時會在工作中碰到,但也未必。將鍛煉從職業工作中分離出來,這在編程領域常被人稱為「編碼套路」(Code Kata)。
Code Kata的概念是由David Thomas提出的,他是《程序員修煉之道:從小工到專家》的作者之一。這個概念主要指的是,針對某一種特定技術或技能進行重復性的練習,從而將其熟練掌握。——譯者注
所謂套路,就是一系列的招式。這個概念借鑒於武術。
如果你想要看一些編碼套路的例子(也就是努力學習和磨練編程技能的方法),SteveYegge的文章里倒是提出了一些不錯的建議。他把它們稱作為「實踐演練」:
1.寫一份自己的簡歷。把自己所有的相關技能都羅列出來,然後把那些在100年後還用得到的標出來。給每個技能打分,滿分為10分。
2.羅列出你所景仰的程序員。盡量包括那些與你一起工作的人,因為你會在工作中從他們身上獲取一些技能。記錄下他們身上的1 ~ 2個閃光點,也就是你希望自己有所提高的方面。
3.查看維基網路上的「計算機科學」欄目,找到「計算機領域先驅者」這個分類,從這個列表中挑選一個人,閱讀他的事跡,並且在閱讀時打開任何你感興趣的鏈接。
4.花20分鍾通讀別人的代碼。讀出色的代碼和讀糟糕的代碼都是有益的,兩者都要讀,輪流切換。如果你無法感覺出它們之間的區別,可以求助於一位你尊敬的程序員,讓他給你展示一下什麼是出色的代碼、什麼是糟糕的代碼。把你讀過的代碼給別人也看看,問問他們的看法。
5.羅列出你最喜歡的10個編程工具——那些你覺得你用得最多、非有不行的工具。隨機挑選其中的一個工具,花一個小時去閱讀它的文檔。在這一個小時里,努力去學習這個工具的某個你不曾意識到的新功能,或者發現某種新的使用方法。
6.想一想,除了編程之外你最擅長什麼事情?再想一想,你是通過怎樣的鍛煉才變得如此熟練和專業的?這對於你的編程工作又有什麼啟發呢?(怎麼把這些經驗應用到編程方面?)
7.拿出一疊簡歷,並和一組面試官在同一個房間里待上一個小時。確保每份簡歷都至少被3個面試官看過,並且要給出1 ~ 3分的評分。針對那些不同面試官評判大相徑庭的簡歷展開討論。
8.參與一個電話面試。事後寫下你的反饋,拋出你的觀點,然後與主持電話面試的人聊一聊,看看你們是否達成了一致的結論。
9.進行一次技術面試,並且被面試的人應該是某個你不太了解的領域里的專家。讓他假定聽眾在該領域里一無所知,因此請他從最基礎的講起。努力去理解他所說的,必要時問一些問題。
10.有機會參與別人的技術面試。期間,你只是認真地聽、認真地學。在應聘者努力解決技術問題的同時,你也要在自己腦子里嘗試解決這些問題。
11.找到一個能和你交換實際問題的人,每隔一周,相互交流編程問題。花10 ~ 15分鍾來嘗試解決這些問題,再用10 ~ 15分鍾進行討論(無論能否解決)。
12.當你聽到任何你一時之間也無法解決的面試問題時,趕緊回到你的座位上,把這個問題用電子郵件發給自己,以留作日後的提醒。在那一周里找出點時間,用自己最喜歡的編程語言來解決它。
我之所以喜歡Steve開出的這個清單,是因為它看上去很全面。有些程序員一想到「鍛煉」,總認為就是一些編碼上的難題。但在我看來,編程更在於人,而不是代碼。因此,通過解決世上所有的、並且晦澀的編程面試題目,在提高你的個人能力方面,這種方法是有局限的。
關於「努力的學習」,我也很喜歡Peter Norvig在「Teach Yourself Programming in TenYears」(花10年時間自學編程)一文中提出的諸多建議:
1.與別的程序員交流。讀別人的代碼。這比任何書籍或培訓課程都更重要。
2.動手寫程序!最好的學習方法就是邊做邊學。
3.在本科或研究生的課程中學習編程課程。
4.找一些項目來做,並且需要與其他程序員形成團隊來合作。在項目的進行過程中,學會辨別最出色的程序員以及最糟糕的程序員。
5.在項目中跟隨別的程序員一起工作,了解如何維護那些不是你寫的代碼,並且學習如何寫出利於他人維護的代碼。
6.學習多種不同的編程語言,特別是那些與你現在所熟悉的語言有著不同的世界觀和編程模型的。
7.了解硬體對軟體的影響。知道你的電腦執行一條指令需要多少時間,從內存中取出一個字(在有緩存或沒緩存的情況下)需要多少時間,在乙太網(或者網際網路)上傳輸數據需要多少時間,從磁碟中讀取連續的數據或者在磁碟上跳轉到另一個位置需要多少時間,等等。
你還可以從Dave Thomas的21種實用的編碼套路中獲取靈感(CodeKata.com),或者你更願意加入一個你家當地的「編程武館」(CodingDojo.org)。
對於「努力的學習」,我無法像Steve,Peter或者Dave那樣提供一個長長的建議列表。我遠不如他們有耐心。實際上,在我看來,「編程套路」只需兩個招式:
1.寫博客。我在2004年初創辦了CodingHorror.com博客,作為我自己努力學習的一種形式。它在一開始很不起眼,到後來成為我職業生涯中做過的最重要的一件事。所以,你也應該寫博客。最後「聞達於天下」的人,往往就是那些能夠有效書寫和溝通的人。他們的聲音最響亮,是他們在制定游戲規則,並且引領世界的潮流。
2.積極參與著名的開源項目。所有的高談闊論聽起來都很好,但是,你是一個大話王還是一名實幹家呢?別光說不練,這個非常重要,因為人們會用你的行動來衡量你,而不是你的言論。努力在公眾面前留下些實實在在有用的東西吧,到時候你就可以說,「我在那個項目中出過力。」
當你能編寫精彩的代碼、並且能用精彩的言辭向世人解釋那些代碼時,到那時候,我會覺得你已經掌握了最牛的編碼套路!
文章來自簡書

Ⅱ 學習Python編程都有哪些挑戰

1.工作環境的設置


設置Python工作環境以滿足基本的編程需求,恐怕是初學者在使用Python時碰到過的最典型、最具挑戰性的問題。一旦Python環境未能被合理地設置,初學者不但無法順利地完成安裝,而且會在編程和使用過程中屢受挫敗,甚至失去學習的動力。


2.學會重要函數


每種編程語言,除了一些通用的函數功能之外,總有一些自帶的實現方法。Python也不例外。它通過lambda、map、以及filter等函數,來輔助實現應用的某些特定功能。對於初學者而言,這些既是難點,又是需要吃透和掌握的地方。只有學會善用它們,我們才能避免重復製造“輪子”,減少犯錯的可能性。


3.調試代碼


剛接觸Python和編程的人通常會對它的語法望而生畏,也可能會犯一些語法上的錯誤。不過,隨著用戶知識和經驗的積累,此類錯誤會逐漸減少。常言道:“要在游泳中學會游泳”。作為積累的一個重要環節,初學者可以通過對目標代碼的反復調試,來逐步修正各種小錯誤,進而提高程序的實現效率。

Ⅲ 涓鏂囩紪紼嬬洰鍓嶉潰涓寸殑闅鵑樻槸浠涔堬紝浣犳湁鍝浜涘緩璁錛

鎴戣夊緱鏈澶х殑闅鵑樻槸鎶鏈姘村鉤榪樻病鏈夎揪鍒板惂銆

姣忎竴涓緙栫▼鍦ㄥ彂灞曡繃紼嬩腑閮戒細閬囧埌闅鵑樺拰鐡墮堟湡銆


涓鏂囩紪紼嬬殑姒傛嫭

鎴戜滑鍏堟潵縐戞櫘涓嬩腑鏂囩紪紼嬬殑鎰忔濓紝涓鏂囩紪紼嬫槸楂樼駭璁$畻鏈鴻璦紼嬪簭涓浠諱綍鏍囪瘑閮藉彲浣跨敤涓鏂囧瓧銆佽瘝銆佽瘝緇勫拰鍙ュ瓙鐨勮璦鏂囨硶錛浣跨敤榪欑嶈璦緙栧啓鐨勭▼搴忕殑榪囩▼灝辨槸涓鏂囩紪紼嬨備腑鏂囩紪紼嬫妧鏈鍏抽敭涓嶆槸綆鍗曠▼搴忕紪鍐欐眽瀛楁爣璇嗕嬌鐢錛岃屾槸紼嬪簭浠g爜鐨勭紪璇戞妧鏈蹇呴』鑷宸辨帉鎻★紝緙栫▼涓庣紪璇戝繀欏諱簰涓虹粺涓鍙戝睍銆

鎬昏堪

姣忎釜浜嬬墿瀛樺湪閮芥湁瀹冨瓨鍦ㄧ殑鐞嗙敱錛屼篃閮芥湁姝e弽闈錛屾湁浼樼偣灝辨槸緙虹偣錛屾湁緙虹偣灝辯Н鏋佹敾鍏嬪氨濂斤紝涓嶈繃闂ㄥ栨眽涓嶆噦鐨勫氨鐪嬬潃灝卞ソ錛岃╀笓涓氱殑浜哄幓鍋氫笓涓氱殑浜嬪効銆

Ⅳ 有什麼好的編程問題網站推薦

一個好的網站推薦是Stack Overflow。

Stack Overflow是一個專門為程序員和軟體開發人員設計的問答網站。它擁有龐大的用戶群體和豐富的知識庫,涵蓋了各種編程語言和開發技術。這個網站的特點在於其高質量的問題和答案,許多問題都是由經驗豐富的開發者提出的,而答案則是由他們提供的經過驗證的解決方案。

使用Stack Overflow可以解決很多編程中遇到的問題。當你在開發過程中遇到難題時,可以在這個網站上搜索相關的問題和答案。通常,你可以找到其他人遇到並解決了同樣問題的例子,從而快速找到解決方案。此外,你還可以向社區提問,其他開發者會積極回答並提供幫助。這種互助精神使得Stack Overflow成為了一個非常活躍和有用的社區。

除了編程問題,Stack Overflow還提供了一些其他有用的功能。例如,它有一個標簽系統,可以幫助你瀏覽和查找感興趣的主題。此外,它還有一個排名系統,根據問題的質量和受歡迎程度對問題和答案進行排序。這使得你可以更容易地找到最有價值的內容。

總的來說,Stack Overflow是一個非常好用的網站,對於程序員和軟體開發人員來說尤其如此。它提供了一個平台,讓開發者可以相互學習、分享知識和解決問題。無論你是初學者還是經驗豐富的開發者,都可以從這個網站中受益匪淺。

Ⅳ 編程究竟難在哪

1. 難在思路的構建

你學了很多語法,很多 API,但是當給你一個實際問題,讓你通過編程實現,不是簡單地羅列 API 即可完成,而是需要你對問題進行分析,理清解決問題的邏輯,然後再通過各種演算法、數據結構和 API 等進行編程實現。

2. 做出來容易,做好難

當你解決了思路構建的難點,解決了一個問題,但是你是否使用的最好的方法,這就是所謂的做出來容易,做好難。

寫的程序能夠解決問題且沒有 bug 是基本要求。這里的做好不是指功能正確,而是寫的程序容易理解,能夠很容易讓其他接手的程序員(水平不差)看懂為什麼這么寫。

正確是現在怎麼寫不會挖坑害將來的人,現在怎麼寫能讓別人1年後看你代碼時候不可能理解錯你現在的意圖,現在怎麼寫能在別人將來犯錯的時候提示他你錯了。

編程是給未來的未知人講故事,你無法知道將來這個人是誰,他都懂什麼,他經歷過什麼,這個系統將來已經是什麼樣子了。我們需要在這種無知,缺乏信息的情況下做決定,從千萬種把這件事做出來的方法里,選出你覺得最能把這個故事給講好的那種方式,把故事寫下來。

編程是一種溝通,用程序跨越時空之溝通則是一門屬於程序員的特有的藝術 —— 阿萊克西斯
3. 規范性好,有良好的可擴展性

並且程序的可擴展性,規范性高,後期維護難度小。整體功能實現的過程中,各種情況考慮規范。其實學習編程和學習其他內容一樣,沒有什麼太大差別。心態放好,用對方法,你就能夠學好。重要的是學知識的人是什麼樣子,而不是學的是什麼。

在這給你一些學習編程的建議,希望對你有用。

1. 讓編程成為一個習慣
想要培養一項技能的最好的辦法,就是將他融入到我們的生活並成為我們的愛好。其實說白了,就是讓這個愛好成為一個習慣,一天不去做這件事情,都會覺得少了什麼。在不知不覺中,這個習慣會像滾雪球一樣積累起來。

對我來說,養成這種習慣首先就是要對「拖延症」說不。比如,你想鍛煉下自己的寫作能力時,但是沒有好看的本子,沒有好的靈感,沒有安靜的環境....總之就是找各種理由一拖再拖,最後就不了了之了。

為自己設定一下,每周拿出幾天,每天拿出幾個小時,編程學習就這樣慢慢步入正軌。

2. 將每天的學習過程拆分成小塊
對待編程學習,我們沒必要像健身狂人那樣一口氣做到筋疲力盡。與其直接編程2小時,我們完全可以先做40分鍾、然後休息5分鍾,整個過程重復4次。很明顯。

熱點內容
動態規劃01背包演算法 發布:2024-11-05 22:17:40 瀏覽:846
nasm編譯器如何安裝 發布:2024-11-05 22:01:13 瀏覽:176
登錄密碼在微信的哪裡 發布:2024-11-05 22:00:29 瀏覽:735
c防止反編譯工具 發布:2024-11-05 21:56:14 瀏覽:243
安卓虛擬機怎麼用 發布:2024-11-05 21:52:48 瀏覽:340
php時間搜索 發布:2024-11-05 20:58:36 瀏覽:475
燕山大學編譯原理期末考試題 發布:2024-11-05 20:13:54 瀏覽:524
華為電腦出現臨時伺服器 發布:2024-11-05 20:05:08 瀏覽:405
斗戰神免費挖礦腳本 發布:2024-11-05 19:53:25 瀏覽:662
網吧伺服器分別是什麼 發布:2024-11-05 19:45:32 瀏覽:389