2010-09-08 64 views
1

我喜歡編程語言,並試圖想出問題的邏輯解決方案。我一直在閱讀C#和WPF的工作內容。 (也是Python和PyQt)在我編程的所有大學課程中,我什麼也學不了(變量是什麼,數組是什麼,不是什麼堆棧和堆,不是CLR/JVM實際做的)我感覺我有一個掌握基本知識,掌握更多實質性主題。如何開始開發軟件?

我一直在試圖製作自己的C#/ WPF應用程序,該應用程序由輸入傳感器和輸出繼電器進行家庭/商店自動化管理。

我有麻煩做某些事情。例如。使用戶控件由中央控件使用,該中央控件在具有數據庫層的同時控制另一個用戶控件。

我真的很想學習如何構造邏輯上的程序和最好的設計是什麼(例如,我討厭有一個程序充滿了if/else語句)。問題是,我發現的書籍只有基本的例子,並不能真正加深我對整個作品如何協同工作的全面認識。

+3

沒有冒犯,但是如果你不知道堆和堆之間的區別,你沒有掌握好基礎知識,而且你的教官對你造成了很大的傷害,並且浪費了你的時間。建議的位置:在嘗試解決硬件/軟件交互之前,最好花時間學習基礎知識。否則,你很快就會變得非常灰心。在你嘗試解決WPF問題之前,你可能會最好的,在這一點上,選擇一個開始的C#書。即使您是C#主控人員,WPF也不是一個簡單的學習框架。 – 2010-09-08 00:57:43

+0

對不起,我的意思是講師不知道並教導堆/堆棧以及C#和CLR之間的區別 – 2010-09-08 01:36:59

回答

5

我該如何開始做事?

您會發現一個開源(或至少「免費提供的源代碼」 - 不完全相同的東西,但差異應該只在您計劃重新分配結果時才重要)就像「(也許」隱約「地喜歡;-)你正在嘗試做什麼,並用你知道或想學習的語言編碼。

您複製該項目到您的計算機源代碼樹,並把重複的版本控制系統(svnhggitbazaar有一個bazillion好,免費的 - - 其他)項下的任何VCS相當independendently它最初可能已經存在 - 重要的是能夠隨時保存您的編輯內容,並在出錯時輕鬆恢復。

然後,你開始黑客攻擊,在文檔和論壇中查找內容,根據需要詢問SO等;-)。

0

在編程世界中沒有「一隻鞋適合所有人」的解決方案。但我推薦你一本書。希望你喜歡。

Head First設計模式 (O'Reilly出版)

0

老實說... ...真正的最佳答案?做東西。

我在學校學到了很多東西。噸。但正如你所說,有一個學校不接觸的水平。我在2個月的編程/數據分析師方面有了更深入的瞭解,而我在2年內獲得AA的編程經驗。

認識到一件事:學校在那裏教你一個廣泛的事情 - 到一個最低水平。你不會獨自從學校成爲專家(有任何例外......與任何規則一樣)。

我是怎麼開始理解的?編程。老闆給了我一個程序任務,我跑了。

我個人很喜歡Apress的書。 C#2008 Illustrated(或即將發佈的2010)已經證明對我非常寶貴。我實際上閱讀了這本書的95%,雙重檢查了例子......並且最重要的是......在我可怕的第一個編程任務中將它們付諸實踐。我已經重新考慮了至少5次,並且已經看到了會讓我再次這樣做的事情。

我不知道你是否有工作......或愛好......你想幫助的開源程序......或者你想自動執行的任務。挑選一些東西,從裏面學習,然後編程。

個人而言,再次......我想說加入一個已經運行的開源項目太多了。我嘗試了幾次,對我來說太過分了。很多事情我都不明白。我打算再次嘗試一次,但我不打算在NBA球場上閒逛,因爲我自己幾乎不能運球時......如果你知道我的意思。

0

我該如何開始做事?

找到一個需要解決的問題,並編寫一個程序來做到這一點。它不必漂亮或有效。該計劃只需要工作。當您使用該程序時,您將開始學習更好的技術來完成您爲自己設置的任務。谷歌和SO將成爲你的朋友,並幫助你學習這些更好的技術。正如其他人所說,用C#直接控制硬件可能不是您的第一個程序的簡單任務。

祝你好運。

0

閱讀Martin Fowler的着作「重構:改進現有代碼的設計」。

Martin Fowler通過向您介紹所有可能或可能不知道您正在製作的低級別決策,爲您提供構建模塊以考慮高層設計決策。他還很好地介紹了代碼氣味的概念。

看看DRY的設計原則不要重複自己,KISS保持簡單愚蠢,並保持一致(Pet Peeve)。 更多設計原則在這裏 Design Principles

實踐這些原則,儘可能多尤其是在你的課程和工作以外的項目..

涉足開源

難做到,但可能會幫助你結合最特別是當與前兩個。

個人體驗可隨意跳過。

經過三年艱苦的本科生,我意識到我可以解決一些非常複雜的證明,但我不知道如何寫任何東西,但意大利麪代碼。我有最長的項目是5個月的時間,這足以讓我真正趕上我。前2-3個月我的工作效率非常高,但是在第四個月時就從代碼債務中爬了出來。在這一點上,我也有同樣的想法。

大家都說最好的學習方式是練習,但我不知道如何練習。 我意識到思考設計的問題是我無法將一種設計移植到另一種設計中。一位教授提到Martin Fowler的着作「重構:改進現有代碼的設計」,這一切都發揮了重要作用。