跳轉到內容

如何編寫程式/架構

來自 Wikibooks,開放世界中的開放書籍

程式設計:如何編寫程式 返回目錄

程式設計架構是一件令人驚奇的事情。一些架構形式極其複雜,需要多年的實踐才能有效掌握。其他形式則不需要或只需要很少的開發經驗,這使得此類別成為初學者的最佳選擇。請注意,本次討論的重點是通用開發理論,而不是特定語言或平臺的技術。這些資訊對於您作為開發人員的成功至關重要,但在深入研究特定語言(根據您的目標、需求和現有技能組合)之前,必須首先建立起作為程式設計師開發軟體的心態基礎。以下是一些關於通用程式設計的簡單概念,請記住:


邏輯不僅僅是幾何學,因為大多數人在學習幾何學時發現了至今仍主導我們思維過程的古老概念。邏輯是一個有序的可定義的過程,它使用所有相關方都同意的預定規則得出結論。我將邏輯定義為開發的中心點。如果沒有邏輯,以任何型別的計算機能夠理解的方式建立所需的軟體邏輯將仍然是一項不可能完成的任務。因此,邏輯奠定了人類和機器在同一平臺上操作的基礎。這是應用開發中最大的難題之一,因為軟體錯誤通常源於邏輯方面的溝通不暢。例如,如果開發人員/程式設計師希望實現 X 功能,但錯誤地編寫了邏輯,導致計算機將其解釋為 Y 功能,則開發人員/程式設計師(我將繼續交替使用這兩個術語)必須重新評估其程式碼,以檢視其思維過程(從邏輯上講)與計算機對該過程的解釋在哪裡不一致。新開發人員最常遇到的難題之一是,以創造性的方式視覺化軟體功能比將其概念轉換為構建個人所需功能所需的命令、請求和其他函式的有序序列更容易。我將在後面討論創造力,但需要說明的是,程式設計是少數幾個始終同時兼具藝術性和科學性的行業之一。因此,剛開始開發軟體的程式設計師必須學會尋求不尋常的答案(創造力),同時牢牢地站在地面上(邏輯),才能將所需的功能變為現實。

創造力

[編輯 | 編輯原始碼]

創造力是開發人員在編寫新軟體時可以提供的第二重要的資產。它是一個思維過程的系統,這些過程融合在一起,為解決獨特的開發挑戰提供了新的選擇。任何真正稱職的開發人員都必須學會開啟自己的思維,以新的方式思考、表達和認識事物。事實上,原作者個人認為,缺乏創造力會阻礙每個沒有學會克服“盒子”綜合徵力量的程式設計師的潛力。簡單地說,程式設計師以在前輩或同事已經發現、對映和利用的領域內思考而聞名,從而導致了一個名為“盒子”的想象空間。開發人員在這個盒子裡工作、關聯意義並得出解決方案。一位有才華的開發人員的標誌是他/她能夠根據手頭的獨特程式設計挑戰動態調整或重新配置他/她心中的“盒子”。打破盒子的界限是令人畏懼的,因為它需要一種開發人員自身可能不存在的視角。一位智者曾經說過,“當你停止學習時,你就停止了領導。”為了軟體開發的目的,我謙卑地修改了這句話,並說:“當你停止學習時,你就停止了軟體創新的流程。”在固定的盒子裡取得成果可能會在一段時間內有效,如果盒子得到了充分開發,甚至可能持續數年。然而,程式設計行業的本質要求持續學習,以便在行業中保持優勢。我之所以關注“盒子”的概念,是因為我相信,在創造力方面真正地傳授知識是不可能的。你必須親身經歷,當你開始從許多不同的角度思考你的世界時。如果你選擇作為ISV(獨立軟體供應商)或系統整合商為他人開發軟體,則需要與你的軟體將要服務的所有型別的使用者進行訪談。深入瞭解他人的想法,並從軟體功能的角度發現他們的需求和願望,這是成為程式設計師最令人欣慰,但也往往最具挑戰性的方面。擁抱不同的視角和不同的學習方法,為你的工作帶來更多思維上的保障,從而增強你的創造力。

簡單來說,抽象是指在開發週期中,你與目標底層硬體之間存在的層數。例如,為影片晶片組編寫軟體對映的 ASIC 開發人員與為 Web 應用程式編寫指令碼的開發人員所處的抽象級別截然不同。由於許多原因,這兩個領域是分開的,但事實上,如果 Web 應用程式開發人員引用了部署了該晶片組的系統上的圖形元件,他可能會間接利用晶片組編寫者的程式碼庫。始終記住,與直接位於所用硬體頂部的低階抽象相比,高階抽象意味著軟體功能位於許多邏輯“管道”層之上。開發人員通常會選擇最適合其當前技能和能力的抽象級別,但不要因為低階抽象的複雜程式設計而害怕嘗試在該領域開發軟體。找到一個起點的細分領域,並努力在最符合你的願望和需求的領域達到所需的專業水平。

進一步閱讀

[編輯 | 編輯原始碼]

原作者(對未來的新增或改編不承擔責任):

Chris Stewart
President
Convergix Solutions
Arlington, Texas
[1] Email
[2] Visit the Convergix website!
華夏公益教科書