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