程序員開發工作之算法和架構
開發三條路:算法、設計、系統。
系統,這條路,需要對文檔和環境有足夠興趣,這塊不適合我。算法和設計,我倒是很有興趣。我希望能把算法和設計該怎么做好好想清楚。
算法
對算法有興趣的朋友可以看這本書:《算法 第4版 Algorithms Fourth Edition》([美] Robert Sedgewick,[美]Kevin Wayne)【摘要 書評 試讀】
算法,由難到易,有四件事可以做:
1?擴展現有算法的應用領域。
算法發展到今天,已經積累了相當多的存量。除了新創算法以外,目前最迫切的需求大概是需要一大批去研究現有算法,把這些算法的優點擴展到更多領域,優化那些一直被錯誤操作的地方。這座算法金礦,有兩種生意可以做,一個創出有生產力的算法,一個幫更多人進來挖礦。
2?優化算法的空間。
對存儲的讀寫,一直是計算過程最大的限制。如果可以優化算法的空間占用,更少的讀寫次數,在更小的讀寫空間上遍歷,將有助于提升算法的速度。空間上的優化,造就時間上的同時優化。
3?優化算法的時間。
CPU/GPU等計算資源的提升,使得時間上的優化越來越沒那么重要。但如果是從指數級優化成線性級,不管計算資源怎么改變,都會有明顯的差別。隨著大數據云的擴張,時間上的優化也會得到更多的重視。
4?理清算法的驗證方法。
一個算法能不能用在當前環境,在未來一段應用時間,是否可以滿足需求,這是對算法認識的最低要求。
架構
對架構有興趣的朋友可以看這本書:《設計模式:可復用面向對象軟件的基礎》([美]Erich Gamma,[美]Richard Helm,[美]Ralph Johnson,等)【摘要 書評 試讀】
設計,由難到易,有四件事可以做:
1?測試架構的穩定性、可維護性、可擴展性。
一個架構設計到最后,應該有一份詳細的比較數據。清楚地顯示在什么地方有提升,提升程度如何。這是架構選擇的根據,而不是去靠跟別人討論、八卦、打嘴仗。
2?疊加現有模塊滿足需求。
通過已有的基礎模塊和業務模塊的疊加快速搭建需求變化所要求的服務。
3?理清模塊間的依賴。
通過模塊間依賴最小化的設計,將有助于提高模塊的獨立性,提高模塊的復用程度。
4?清楚問題的充要條件。
什么是業務必需的,有哪些地方可以裁減,盡可能降低業務使用的難度,這是架構設計的基本要求。
算法設計上,我一片空白,只讀了《算法》第4版200頁的書。架構設計上,我非常新手,只初步熟悉VIPER、MVVM、MVCS、MVC,只看了《設計模式》的150頁。這是我的算法設計和架構設計框架的第一版,希望在這方面有經驗有想法的朋友可以不吝賜教,幫我完善好應該怎么去做這兩塊工作的框架,不勝感激。
浙公網安備 33010602011771號