2009-05-27 77 views
3

所以我知道一些人在編碼之前用純英文(僞代碼)寫出算法。我以前從來沒有這樣做過,但現在我想到了,組織複雜的算法很有意義。你做這個?它有幫助嗎?如果不是,那麼在你編寫程序之前你怎麼做(如果有的話)來組織你的程序?您是否在編碼之前用僞代碼寫出算法?

+0

部分重複的[http://stackoverflow.com/questions/480432/do-you-pseudo-code]? – 2009-05-27 23:31:34

+0

..或[http://stackoverflow.com/questions/852724/writing-pseudocode-best-practices/852928#852928]? – 2009-05-27 23:33:48

回答

8

I've mentioned it before

我傾向於發現自己寫的小用例在記事本中使用縮進......半打線後還是讓我突然意識到我正在寫的風格基本上是Python的但少一點語法!所以我得出這樣一個結論:Python實際上是僞代碼,它是一種用你想要寫的任何語言來創建你的想法的原型。關於這種技術的最好的事情是你已經有了一個可以比較的參考您的完成結果,以防止惡意錯誤。

+0

我剛剛準備建議Python原型作爲替代品,因爲這是我發現自己也在做的;) – 2009-05-27 23:54:23

0

我不寫在僞代碼,但我通常做某種流程圖來指導我。

1

如果它不平凡,我會首先使用僞代碼,然後在我的文檔中包含該僞代碼,如果我爲該特定組件生成任何正式文檔。

如果它很簡單,我只需在我的實現語言中編寫代碼,然後在需要的時候添加註釋。

1

如果這是一個非常棘手的問題,我會做一些僞代碼。

7

我不寫太多的僞代碼,但我發現如果我不能說我想用純英文做什麼,那麼我不明白這個問題就足以開始編寫代碼了。

+0

好的。在我爲它編寫一行代碼之前,我會繼續在假定函數的頭文件中執行此操作。 – 2009-05-27 23:49:35

+0

我傾向於親自寫一本純英文的大綱。 – 2009-05-27 23:53:18

0

如果我知道我需要爲另一部分編寫代碼,但我現在可以考慮方法或函數的總體輪廓,我會寫出足夠的內容,以便稍後可以記住我的想法。該方法應該如何運行。通常我最終會改變它,所以我很少發現它有幫助。

2

我試過這個,但是我覺得很難做到這一點,因爲在我被迫用嚴格的語言寫出算法之前,通常會有很多事情我沒有考慮過。英語就像是一種很好的語言來騙你自己。

我居然發現它是有害的,因爲我花時間在非問題上,忽略了直到我試圖寫計算機代碼纔看到的真正問題。事實上,我編寫了計算機代碼來幫助整理我對我用英文寫作的想法。

我發現繪製圖片和/或採取幾何方法可能會非常有幫助。

+1

對於在僞代碼上花費大量時間的問題,這是一個完美的解釋。 – 2009-05-27 23:46:01

4

我現在主要用Python編寫。這是開始的僞代碼。

1

通常對於一個函數,我會寫一個很好的長頭描述(Doxygen格式化,最好)。

如果它足夠複雜,我會做結構圖(舊的UML之前的pre-OO設計),或者像UML序列或活動圖。

對於整個系統,當然我從類圖開始。

+0

我曾經爲一個項目使用過UML,並且我覺得它有問題,但我也開發了適用於小型相當獨立的軟件項目。您使用UML的項目規模如何?你是建築師還是工程師? – 2009-05-28 00:58:33

+0

其實我也不太喜歡UML。這就是爲什麼我會先做我的舊時尚結構圖,如果可以的話。對於我想要弄清的內容,UML圖表看起來不太正確。我不知道這是因爲它們是由committe設計的,還是隻是我更喜歡我學會設計的東西。 – 2009-05-28 14:07:04

3

我使用註釋(在方法內和在發佈的界面中)作爲僞代碼。

當實現算法,我按照順序執行步驟是:

  • 確保API或接口是正確的。如果我無法確定正確的操作是什麼,或者有什麼數據進出,那就錯了。
  • 描述Javadoc(或等效)註釋中的每個操作;這通常指出算法的問題或如何使用它。
  • 將方法或方法中的註釋寫爲僞代碼的一種形式。我在開始編寫代碼之前或者在編寫代碼之前都要這樣做。這有助於我在寫作之前記住自己的想法,並記錄下我以後的參考。
0

這將是夢想。

只需編寫僞代碼,它就可以工作。

3

一般來說,並不是真的。如果我在計算機上,而且我正在做一些特別困難或乏味的事情,那麼我可能會先使用註釋進行描述,但它們往往比正確的僞代碼更像是一種自然語言陳述。通常我唯一一次使用適當的僞代碼是在上課期間。

但是,值得注意的是,對於一個開發人員來說什麼可能不適用於另一個開發人員,並且有些人會在開始前編寫僞代碼來發誓。

0

我非常喜歡用僞代碼編寫算法,只是爲了將我的頭包裹在算法中。它相對容易(對我來說)從英文轉換爲代碼,所以我傾向於寫更多的單詞和更少的代碼。我可以很容易地使用我的僞代碼作爲其他人的註釋,以獲得足夠複雜的算法。

至於具體情況,我通常會用舊紙/鉛筆,並縮進循環/控制語句。其他的一切都是我當時吐露出來的。

0

絕對......有一次,我有一些堅實的僞,我開始「端口」。輕鬆地以簡單的方式完成一些複雜的事情,而無需使用語言語義。

0

和其他人一樣,我的僞代碼基本上是Python。這不是關於我的Python專業知識的陳述,而是關於語言的直觀程度。我的解決問題的能力一直比我的記憶要好,比如語法這樣的細節,所以能夠用一種語言來工作是非常好的,這樣我就可以專注於手頭的問題,而不會因爲強迫我查找語法而陷入困境。而且,僞代碼與其他語言的好處之一就是在編寫沒有類型聲明之類的東西的邏輯時 - 無論如何你都不會在Python中這樣做,所以編寫代碼基本上不會比僞代碼邏輯更復雜。

0

我把它寫在fortran中 - 基本上這是幾乎任何人都可以理解的僞代碼。我想不出一個更簡單的方法來寫它。

0

這取決於算法。如果它很簡單,那麼我通常可以將所有的邏輯路徑存儲在我的腦海中,如果它很複雜,那麼我會用相關的邏輯畫出每一步。