2009-04-20 45 views
9

我自己就是這類編碼器之一,他們從來沒有在正式環境中學過編碼,而是通過使用複製和粘貼腳本自學,通過GPL項目和高級軟件(這通常是商業腳本公司告訴你如何更改或更新腳本中的代碼的方式,例如「複製&在線234上粘貼此等等)」創作的作品。是我的開始。幫助複製和粘貼生成編碼

我不明白我是如何工作的,但是我對代碼做的很好,儘管我覺得由於我的非正式學習方法,我缺乏知識,有些非常簡單,但是一般網絡編碼的必要原則(服務器,瀏覽器等的細節)。我覺得自己從理解代碼的內部開始,從實踐的角度出發,缺乏基本的基礎知識,理解我正在做的事情。

我也知道其他很多其他人都是一樣的人,他們開始在我的同一社區學習,並且與我的相同點......感覺圖像中缺少一些大的東西。 當我嘗試使用PHP創作工具時,我發現我的紀律缺乏,而我發現這些工具很難理解......並且這正在成爲我完成我的項目的時間框架(不得不手工編寫代碼) 。我也發現很難有時要求幫助,缺乏編程時使用的特定語言,並且能夠使用正確的詞彙來解釋我的問題的複雜性。

我是一個貿易理髮師,我當過調酒師和酒店經理,我是專業的商業顧問。我一直在慢慢地學習網絡開發3年,在過去的2年裏我已經接受了不少商業項目,但我顯然感覺有些缺乏我的技能總體知識。

基本上,我想問任何有經驗的編碼人員,他們都有類似的開始,讓我知道如何讓我的編程規範更加有效和高效。對編程有這種非正式理解的人想要學習和理解什麼?作爲一名程序員,我必須瞭解哪些事情......以及整個畫面的基本概述是什麼?隨時引導我到文章

任何幫助總是表示讚賞。

LEA

編輯:只給圓了我的實際能力。我是一名程序員,我從頭開始編寫自己的代碼,並出售我的工作。我可以編寫PHP函數和類,使用mysql,對html有很好的理解,並且在設計方面(web圖形)非常好,並且正在學習javascript/ajax/jquery,因爲我正在使用jQuery我的大部分項目。感謝迄今爲止所有的答案!

+0

相似問:http://stackoverflow.com/questions/743099/is-it-wise-to-use-code-copied-from-the-web-in-our-own-applications – Dhana 2009-04-20 06:04:25

+0

你可以試試Java教程,瞭解您可能瞭解哪些關於OOP的短語。然後檢查MDN javascript以查看JavaScript不是基於類的,而是基於原型的。現在你會知道像強類型,抽象和其他很酷的短語,我通常必須在充分理解它們之前查看它們。如果你還沒有厭倦,那麼我會建議閱讀模式的東西,PHP項目通常缺乏良好的模式,並且難以擴展或擴展。並嘗試使用PHPUnit對您的項目進行單元測試。 – HMR 2013-02-02 08:52:46

+0

我大部分時間都在學習,發現上面提到的理論是我錯過的。而不是閱讀文檔,我做了一個var_dump或檢查螢火蟲中的變數。如果它起作用,它就會起作用,如果它不起作用,我不得不花時間學習它的理論。現在我沒有承擔很多項目,所有的閱讀都有時間,它幫助我將大部分知識應用到我以前遇到的實際問題上。 – HMR 2013-02-02 08:57:09

回答

3

我們都有不同的學習習慣,所以不要因爲你進入這個領域而感到傷殘。

我想我建議的最簡單,最簡單的事情就是讓自己的PHP書(看起來就是你現在熟悉的),並從那裏開始建立信心。

在業餘時間,只需創建一些非常小的基本應用程序即可在沒有任何壓力的情況下練習。然後採用Python,Java或.NET等語言。具體取決於您的喜好。使用一兩種語言,您可以購買Code Complete等書籍,這些書籍將涵蓋軟件開發的一些更深奧的領域。

祝你好運,這是一個專業,你真的永遠不會停止學習。

+0

是的,這似乎是要走的路......我之前從來沒有讀過關於編程的書,所以我清楚地感覺到它被這種感覺疏遠了。我發現你的回答非常令人鼓舞。非常感謝:) – Lea 2009-04-20 05:46:12

3

如果你有興趣成爲一個更好的程序員,我必須建議你閱讀pragmatic programmer,不要擔心,它不是一個完整的代碼文本,它會讓你把你的頭髮拉出來,但有用的教訓,可以只能從多年編程經驗中提煉出來,以易於閱讀,但仍然非常翔實的方式:)

+0

非常感謝您的參考,我只是讀了前幾頁,我已經感覺好多了。這是我名單上的必備條件。乾杯! – Lea 2009-04-20 05:40:45

1

我並不相信「複製&粘貼代」的前提是任何一種新的現象。現在只有這些工具可以比以前更廣泛的受衆。

如果你想真正磨練自己的技能,它可能是值得采取一些課程,或者在當地社區學院或通過使用一些manyfine網上資源或books自我導向的學習環境

+0

感謝您的回答。我不想讓它聽起來像是一種新現象,但很多人會認同我所指的是......哪一個更針對我和其他人學習的方法。感謝您的提示:) – Lea 2009-04-20 05:44:58

0

複製和粘貼編程是指在幾個地方使用相同的代碼,而不是將其放入函數或類中。如果您只是在遵循howto指南的情況下修改現有的源代碼,那麼您所做的不稱爲編程,只是複製和粘貼。

你需要做的是閱讀一本關於編程的書,不管你覺得你的水平是什麼。如果你覺得它的複製和粘貼水平,你應該從一個初學者的書。忘記你認爲你所知道的一切,閱讀並按照這本書。完成後,您可以記住一些在您的P日期間注意到的巧妙代碼(?)。

+0

嗨,謝謝你的回答。對不起,我沒有正確解釋我的意思,但我更多地提到我被介紹給編程的方法。這是通過複製和粘貼...我使用片段構建了我的第一個腳本,並且經常使用教程片段。感謝您的提示。 – Lea 2009-04-20 05:50:34

1

我相信Code Complete是另外一本書,與已經推薦的Pragmatic Programmer相同。

7
  • 認識到「複製和粘貼編程」實際上不是編程,儘管名稱。 「編程」的行爲是弄清楚應該如何工作,以及需要哪些代碼來完成這項工作。因此,當你複製並粘貼一些代碼時,它是編寫程序的其他人。這並不是一件壞事,因爲你不應該總是需要自己編寫代碼。但是爲了稱自己爲程序員,你需要自己編寫代碼。

  • 你會想開始謙虛。不要試圖編寫大型複雜應用程序作爲編程的第一步。爲什麼大多數教過編程的人首先被教授如何打印「你好,世界」是有原因的。這是因爲您需要了解更多的東西,而不僅僅是要使用哪些代碼 - 您需要知道代碼執行的起始位置以及流程的起始位置等等。您需要能夠查看代碼並在思維上逐步完成,知道程序執行的下一步將如何進行,以便了解它將如何工作。

  • 參加編程教程或課程。網上有這麼多免費的東西。不要相信任何只能給你大量代碼的教程,確保它強迫你自己真正想出一些代碼。做練習,如排序字符串,計算斐波那契數列等,並「回顯」或「打印」結果。瞭解條件語句(如「if」)和「for」循環,並與這些語句一起玩,做各種事情。

  • GUI或表單編程比較複雜;在查看任何API或框架文檔以查看語言的功能之前,請確保您知道該語言的基礎知識。您需要知道如何執行流程,如何編寫函數,可以使用哪些類型的變量等,然後纔能有效地使用API​​或框架。它很無聊,無法做出酷炫的圖形或形式,並堅持基本的文字或數字處理,但你必須在跑步之前走路。確保你在做,而不僅僅是閱讀。當你瞭解新的數組類型時,「while」語句,請嘗試一下。通過實際操作,你會比閱讀一本書或一個網站的速度快得多,而且你可能更有可能記住它。

  • 閱讀關於編程的書。有些人說,在學習其他東西之前,你應該學習C語言。我不一定同意,但如果你學習C語言,那麼這本書就是由Kernighan和Ritchie編寫的「The C Programming Language」。許多編程書籍都非常有趣,但要麼不適合初學者,要麼不會教你如何真正開始編程。這是一個例外。

  • 使用具有語法突出顯示和行編號的正派文本編輯器。這就是你應該需要的。在學習階段,一個大型的IDE也可以完成代碼完成等。不要花太長時間選擇一個或設置它。如果你還沒有一個,只需要記得Notepad ++(如果你在Windows上)並完成它。如果你不喜歡它,你可以改變它,一旦你變得更精通。或者,如果您已經爲Microsoft Visual Studio付款,那麼請使用該工具,但不要爲了學習某種語言而拿出它。避免陷入花費你所有時間磨快你的工具的陷阱,並且沒有時間使用它們。

+0

感謝您的回答。雖然正如我在我的問題中所說,我已經完成了不少商業項目。你在這裏所說的很多,我已經可以做到了。我不是一個完整的新手,而且我自己編寫自己的代碼。我把C&P稱爲我學習的第一種方法,讓每個人都瞭解我的開始。如果你看看我的其他問題,你會更好地瞭解我的知識水平。再次感謝。 – Lea 2009-04-20 05:56:25

7

最簡單最快速的方法呢? 尋找導師,或一組導師。不一定是現實生活中的導師,他們可以脫機,雖然現實生活中的導師更實際。

當您參與本地軟件開發社區(例如論壇或用戶組會議)時,您可以找到這些人員。頻繁的這些地方,無論是離線和在線;你將學到的知識的數量是巨大的,更不用說將思想從其他人身上反彈出來的好處。

Code Complete and Pragmatic Programmer同樣是上面的優秀書籍建議。我建議你首先使用Code Complete,因爲它解決了如何使代碼更加明智和優雅,您當然可以立即使用它。

Goodluck!

1

我一直都是你的情況,在實習的高中畢業時我主要是通過複製和粘貼「學習」c和shell編程,後來在不同的時候我可能遇到過類似的情況技術。

我的建議:

  1. 採取一類在你的CC。你想要的那個是高級編程類的先決條件。他們可能還會提供一個「我以前從未碰過電腦」的課程,但這不會成爲課程後續的正式要求。這可能會在Java中。

  2. 通過一個更好的編程書籍,其中包括練習您的方式。 Kernighan和Ritchie的C程序設計語言是經典的。這將是我的建議,因爲C與PHP相似以至於很熟悉,但足夠不同,以至於你可以將它們分開。即使您可能永遠不會寫出單一產品線,我也會這樣說。C. Paul Graham的ANSI Common Lisp也是一個合適的選擇。

  3. 如果您真的很難核心並且有奉獻精神,您可以嘗試Abelson和Sussman的計算機程序的結構和解釋。這是在加州大學伯克利分校(http://webcast.berkeley.edu/course_details.php?seriesid=1906978389)和麻省理工學院(http://ocw.mit.edu/OcwWeb/Electrical-Engineering-and-Computer-Science/6-001Spring-2005/CourseHome/)的第一門編程課程中使用的書。這可能太難以在學校環境之外進行嘗試。它專門爲聰明的年輕學生設計,除了學習之外沒有什麼可做的,並有定期的機會接受研究生的輔導。我只是爲了完整而包含它。

我會避免任何網絡編程書籍。你已經知道網絡編程。我得到的印象是,你感覺自己正在碰壁,看着周圍或那邊的牆壁,而不是直接穿過牆壁。

我建議不要研究任何面向網絡的書籍,因爲它不會給你大的圖片,它只會描述技術,因爲它們適用於網絡編程。要理解的重要事情是計算機實際運行的方式,堆棧和堆之間的區別,指針,垃圾回收的基礎知識以及遞歸,並且至少理解擴展機制可能會有幫助。我的意思是,如果你理解Unix上的共享庫,Windows上的DLL,或Java上的classpath和jar,或者如何使用PHP,Ruby,Perl或Python創建一個庫,其中任何一個都可以。這只是加載外部代碼的重要概念。

0

掌握任何技能需要時間,但如果你堅持下去,你會變得更好。在這個意義上,編程沒有任何內在的不同。具體到你如何學習最好,是一個非常個人的問題,所以很難給出任何有意義的建議。根據我的經驗,結合不同類型的學習(實踐經驗,圍繞其他程序員,閱讀書籍,正規教育等)以較大的劑量進行比僅僅進行一種學習(如正規教育)更有效。

您可能會發現這些讀數有趣的,如果你不知道他們已經: