看了評論, 于是我想先說一下,希望大家能關注的是這篇博客中關于寫程序的方面,不要關注AI,我基本上也沒寫關于AI的什么東西,看篇幅應該能很明顯區(qū)別出來。偏偏就簡單提到的幾句被重點關注了,而重點寫的東西居然沒人注意。
今天早上看了一篇這個主題的文章,總有種作者不知道在抱怨什么的感覺,于是想寫一下我的看法。
首先,要說寫程序,首先不得不提一個經(jīng)典的等式:程序 = 數(shù)據(jù)結構 + 算法。見過很多人一邊說這個經(jīng)典是廢話,一邊卻并不知道怎么寫代碼。其實這個等式是對一段程序乃至一個系統(tǒng)開發(fā)的入手有很好的指導意義。
當你不知道怎么開始實現(xiàn)眼前的代碼時,你需要考慮的就是兩件事,一件是你需要什么樣的數(shù)據(jù)結構,另外一件是你要怎么使用這個數(shù)據(jù)結構--也就是算法?! ?/p>
需要什么樣的數(shù)據(jù)結構這件事在現(xiàn)今的大多數(shù)業(yè)務系統(tǒng)中幾乎已經(jīng)可以等價于你需要什么樣的對象去表達你的業(yè)務概念,小到一個對象的設計,達到非常大的系統(tǒng)領域設計,這方面著作非常豐富更有完整的理論體系可以指導整個設計進程,比如DDD。如果讓AI去寫程序,這一點提供足夠的訓練集,找出一個合適的模型,這一點看上去十分有實現(xiàn)的可能,雖然可能需要歸納的模型會非常的多,但畢竟還算收斂。理論上最理想的情況是每個行業(yè)的行業(yè)協(xié)會去規(guī)范一個業(yè)務體系模型,當然現(xiàn)實不現(xiàn)實這事。。。,但畢竟是個努力的方向。
比較麻煩的是算法, 其實我更習慣把這一部分換個通俗的說法---腦筋急轉彎。我經(jīng)常和別人說我之所以喜歡寫代碼,更多的是喜歡做腦筋急轉彎,程序 = 數(shù)據(jù)結構 + 腦筋急轉彎。面試中遇到過很多程序員說他們就寫業(yè)務代碼了,感覺沒什么發(fā)展,所以想換工作,這種其實就是屬于寫代碼不走腦子的,到哪都不會有太大變化,這種程度的代碼AI未必寫不出來。重點是怎么寫好代碼,在寫代碼的時候要根據(jù)當前的情況推論出最適合的解決方案,要秉持每一行代碼都是一個設計的理念去寫,而這種時候問題就來了,AI更多是對已有方案的統(tǒng)計來輔助產(chǎn)生結論,可腦筋急轉彎這種事一般會比較跳躍,雖然萬事萬物都是有聯(lián)系的,跳躍也是有據(jù)可循的,但是很多時候這種跳躍跨越了太多領域范圍,比如神經(jīng)網(wǎng)絡算法,明明是用來分解整合數(shù)據(jù)的,它卻去模擬大腦,那這時候你就要了解生物學了,而即使最強大的計算機其復雜程度也遠不如一個蟲子的大腦。另外一點,關于程序員年齡上限的問題,我一直保持著一個觀點,除了天賦異稟(事實上我還真的遇到過),絕大多數(shù)程序員不過而立之年都只能算是能寫程序而已,而立之后,程序員對程序的看法可能會有很明顯的不同,因為代碼也是創(chuàng)作,創(chuàng)作會包含很多人生的積累,世界觀價值觀這個扯遠了,但是回顧寫過的代碼,無不是在各種場景下做各種平衡甚至妥協(xié),平衡的因素有時候會包含工期,團隊的技術組成,人員性格,配合的默契程度這些不太直觀的因素統(tǒng)合起來決定怎么做才能完成項目。當然AI似乎倒是不太需要考慮溝通什么的,然而腦筋急轉彎終究是繞不過去的,要解決跳躍性的聯(lián)想,就需要各種看似毫不相干領域的數(shù)據(jù)來訓練,光是龐大的量對技術的要求就不得了,而且這個模型誰來規(guī)劃,即使世界知名的軟件工程宗師。。。不過當然,那種人的境界咱推測不了,總之算法我想說的就這些。
至于那篇文章中說的,機器理解需求的問題,這是個偽命題,因為能真正理解需求的程序員也不容易見到,所以才有敏捷這回事產(chǎn)生,而用敏捷去推動項目似乎AI更合適,因為它更不容易被迷惑,不會被次重要的目標而忽略了核心目標,不會因為某些詞語有歧義而導致理解的問題,至少不會因為請假擔心迭代周期。這方面不好討論,反正目前人做的項目我也沒見過需求就真的沒理解偏差的。
而且,當年的嫦娥估計也沒想到后來還會有人登月,看起來現(xiàn)在看AI做項目比當時看登月的可能性可高多了。不過無論什么技術目前也只是輔助人做決策,至少模型的修正什么的。。。,反正我覺得至少有生之年還不至于擔心被機器搶了飯碗吧。當然,未來的事,誰知道呢,以上。
==========================================================
咱最近用的github:https://github.com/saaavsaaa
微信公眾號:
轉載請注明出處;http://www.cnblogs.com/saaav/p/6784686.html