最難的是開始特恬,最慘烈的戰(zhàn)爭(zhēng)是事后。
朋友曉月曾經(jīng)告訴我徐钠,開發(fā)三條路:算法、設(shè)計(jì)役首、系統(tǒng)尝丐。
系統(tǒng),這條路衡奥,需要對(duì)文檔和環(huán)境有足夠興趣爹袁,這塊不適合我。算法和設(shè)計(jì)矮固,我倒是很有興趣失息。我希望能把算法和設(shè)計(jì)該怎么做好好想清楚譬淳。
算法
對(duì)算法有興趣的朋友可以看這本書:http://item.jd.com/11098789.html
算法,由難到易盹兢,有四件事可以做:
1?擴(kuò)展現(xiàn)有算法的應(yīng)用領(lǐng)域邻梆。
算法發(fā)展到今天,已經(jīng)積累了相當(dāng)多的存量绎秒。除了新創(chuàng)算法以外浦妄,目前最迫切的需求大概是需要一大批去研究現(xiàn)有算法,把這些算法的優(yōu)點(diǎn)擴(kuò)展到更多領(lǐng)域见芹,優(yōu)化那些一直被錯(cuò)誤操作的地方剂娄。這座算法金礦,有兩種生意可以做玄呛,一個(gè)創(chuàng)出有生產(chǎn)力的算法阅懦,一個(gè)幫更多人進(jìn)來挖礦。
2?優(yōu)化算法的空間徘铝。
對(duì)存儲(chǔ)的讀寫故黑,一直是計(jì)算過程最大的限制。如果可以優(yōu)化算法的空間占用庭砍,更少的讀寫次數(shù)场晶,在更小的讀寫空間上遍歷,將有助于提升算法的速度怠缸∈幔空間上的優(yōu)化,造就時(shí)間上的同時(shí)優(yōu)化揭北。
3?優(yōu)化算法的時(shí)間扳炬。
CPU/GPU等計(jì)算資源的提升,使得時(shí)間上的優(yōu)化越來越?jīng)]那么重要搔体。但如果是從指數(shù)級(jí)優(yōu)化成線性級(jí)恨樟,不管計(jì)算資源怎么改變,都會(huì)有明顯的差別疚俱。隨著大數(shù)據(jù)云的擴(kuò)張劝术,時(shí)間上的優(yōu)化也會(huì)得到更多的重視。
4?理清算法的驗(yàn)證方法呆奕。
一個(gè)算法能不能用在當(dāng)前環(huán)境养晋,在未來一段應(yīng)用時(shí)間,是否可以滿足需求梁钾,這是對(duì)算法認(rèn)識(shí)的最低要求绳泉。
架構(gòu)
對(duì)架構(gòu)有興趣的朋友可以看這本書:http://item.jd.com/10057319.html
設(shè)計(jì),由難到易姆泻,有四件事可以做:
1?測(cè)試架構(gòu)的穩(wěn)定性零酪、可維護(hù)性冒嫡、可擴(kuò)展性。
一個(gè)架構(gòu)設(shè)計(jì)到最后四苇,應(yīng)該有一份詳細(xì)的比較數(shù)據(jù)孝凌。清楚地顯示在什么地方有提升,提升程度如何蛔琅。這是架構(gòu)選擇的根據(jù)胎许,而不是去靠跟別人討論、八卦罗售、打嘴仗辜窑。
2?疊加現(xiàn)有模塊滿足需求。
通過已有的基礎(chǔ)模塊和業(yè)務(wù)模塊的疊加快速搭建需求變化所要求的服務(wù)寨躁。
3?理清模塊間的依賴穆碎。
通過模塊間依賴最小化的設(shè)計(jì),將有助于提高模塊的獨(dú)立性职恳,提高模塊的復(fù)用程度所禀。
4?清楚問題的充要條件。
什么是業(yè)務(wù)必需的放钦,有哪些地方可以裁減色徘,盡可能降低業(yè)務(wù)使用的難度,這是架構(gòu)設(shè)計(jì)的基本要求操禀。
算法設(shè)計(jì)上褂策,我一片空白,只讀了《算法》第4版200頁的書颓屑。架構(gòu)設(shè)計(jì)上斤寂,我非常新手,只初步熟悉VIPER揪惦、MVVM遍搞、MVCS、MVC器腋,只看了《設(shè)計(jì)模式》的150頁溪猿。這是我的算法設(shè)計(jì)和架構(gòu)設(shè)計(jì)框架的第一版,希望在這方面有經(jīng)驗(yàn)有想法的朋友可以不吝賜教蒂培,幫我完善好應(yīng)該怎么去做這兩塊工作的框架再愈,不勝感激。
后記(下面以聊家常為主护戳,沒時(shí)間沒興趣的朋友請(qǐng)直接忽略):
我還在嘗試驗(yàn)證“遞減原則”。只做了150個(gè)仰臥起坐垂睬,比昨天還少3個(gè)媳荒,比前天少150個(gè)抗悍。健身是非常好的可以反思“遞減原則”。以目前的結(jié)果看钳枕,“遞減原則”效果遠(yuǎn)遠(yuǎn)差于“遞增原則”缴渊。
也不是毫無收獲,今天第一組做了100個(gè)鱼炒,比昨天第一組的75個(gè)有明顯提升衔沼,比前天的50個(gè)更是差天差地。今天昔瞧,同事都被我能做100個(gè)驚到了指蚁。
遞增原則在總量上也許有優(yōu)勢(shì)。但它沒有附加效果自晰,更多是純拼力量凝化。而遞減原則往往會(huì)有很多附加效果,在總量不足的情況酬荞,可以附外獲得很多成果搓劫。而且,在遞減原則下怎么增加總量混巧,我也有一點(diǎn)點(diǎn)靈感枪向。
就是,不要因?yàn)橄率贮c(diǎn)的困難辛苦放棄再次嘗試咧党,哪怕下次嘗試的效果微乎其微秘蛔。我第一組做了100個(gè),第二組做了10個(gè)凿傅。這個(gè)時(shí)候缠犀,我覺得今天完蛋了,大概只能110收?qǐng)隽舜鲜妗_^了一會(huì)辨液,我再做,第三組卻神奇地能做30個(gè)箱残。
在遞減原則滔迈,也許,開始的那組會(huì)比較困難被辑,但是第一組的困難嘗試燎悍,卻往往可以給后面的嘗試打開新的道路。
又比如我對(duì)VIPER的嘗試盼理,對(duì)Casa大大的離散型網(wǎng)格模塊的嘗試谈山,對(duì)Casa大大的數(shù)據(jù)調(diào)整器的嘗試,雖然最后未必能直接用到項(xiàng)目中宏怔,但見過好東西之后奏路,我就本能地知道比之前好一點(diǎn)的代碼應(yīng)該怎么寫畴椰。
我用“遞減原則”重新優(yōu)化了一遍我的方法論:瘋子一般深入系統(tǒng)。
長久以來鸽粉,我一直對(duì)這套系統(tǒng)非常不滿意斜脂。因?yàn)樗m然從低到高給我在人生選擇上提供一個(gè)順暢的指導(dǎo)。但總是讓我感到無聊触机。而且它對(duì)高手帚戳、老手、新手的指導(dǎo)無法達(dá)到同樣的效果儡首。
引入”遞減原則“片任,可以讓這套方法論有更普遍的適用范圍,也就是我現(xiàn)在的算法設(shè)計(jì)框架的第一點(diǎn):擴(kuò)大適用范圍椒舵。
遞減原則蚂踊,可以讓我第一眼就關(guān)注到最能讓我興奮的選擇。如果我能力不足笔宿,才是第二選擇犁钟,這樣可以讓我的熱情利用最大化,把我的潛力用到盡泼橘。