<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 牛人業(yè)話 > 不斷增長的年紀(jì),需要盡快轉(zhuǎn)向基于模型的設(shè)計(jì)

          不斷增長的年紀(jì),需要盡快轉(zhuǎn)向基于模型的設(shè)計(jì)

          作者:麥宅客 時(shí)間:2019-11-04 來源:電子產(chǎn)品世界 收藏

          據(jù)說,中國的手機(jī)都帶有美顏和減齡功能,每每在朋友圈里看到女同學(xué)自己拍的凍齡自拍照,總是感到穿越般的恍惚不已:難道,這就是當(dāng)年的“翠花”?

          本文引用地址:http://www.ex-cimer.com/article/201911/406679.htm

          只見,那月光般柔和的臉上竟沒有一絲絲皺紋,如水的大眼睛秋波蕩漾,攝人心魂,一口細(xì)碎的小白牙洋溢著滿滿的青春氣息,仿佛在訴說著無言的柔情蜜意。

          再看那茭白的臉蛋蛋和嬌滴滴的紅唇,就像要透過手機(jī)的屏幕,貼到我的眼前,輕輕地說:我的臉龐,就像那皎潔的月光,想不想踩在我的鼻尖上,撫摸那溫柔的月光?

          但是,有的時(shí)候,她們的朋友圈竟而也會(huì)有漏網(wǎng)之魚。

          在受制于手機(jī)算力無法群體美顏的集體照里,歲月這把無情的照妖鏡,殘酷地揭開了昨日美女的畫皮,暴露了她們奔四的年紀(jì)!

          是的,她們當(dāng)年的小伙伴-灑家,也開始奔四了。

          中年男不一定油膩,但是肯定會(huì)間或感到精力不濟(jì),想提起神,做些深度的思考和學(xué)習(xí),但總覺腦袋里沒有足夠的電力,只能淺嘗輒止,扼腕嘆息。

          保溫杯里泡上滿滿的枸杞,也無法找回當(dāng)年滿當(dāng)當(dāng)?shù)幕盍Α?/p>

          對于腦力工作者而言,這絕對是個(gè)大忌!

          灑家不煙不酒不油膩,鍛煉身體,不打游戲,但是,隨著慢慢地上了年紀(jì),也開始經(jīng)常感到精力不濟(jì)。其中有一個(gè)突出的表現(xiàn):越來越不愿意手寫代碼了。

          這當(dāng)然不是因?yàn)闉⒓抑\求轉(zhuǎn)型,想從科研一線逃離,走向“一壺水一包煙,晃晃悠悠過一天”的管理崗位。而是靠著手寫代碼干活吃飯、掙錢養(yǎng)家的灑家,實(shí)在是覺得手工編碼越來越辛苦了。

          廣大人民群眾對美好生活的期待,加上當(dāng)今世界的算力不斷增長,導(dǎo)致嵌入式產(chǎn)品中的代碼量呈現(xiàn)爆炸式的增長。作為一名小公司的嵌入式軟件工程師,盡管自己的經(jīng)驗(yàn)與日俱增,但是悲催的是,經(jīng)驗(yàn)永遠(yuǎn)趕不上工作量增長的速度,加上公司“唯利是圖”,不可能招聘更多工程師來幫忙分擔(dān),所以自然越來越累。

          但是,還有另一方面同時(shí)也是最重要的原因:手寫代碼非常燒腦,喝涼水睡涼炕全靠火力壯的小伙子還能扛得住,奔四的老碼農(nóng)哪能受得了?

          可是,灑家也只能默默無言兩行淚。要知道,在好多IT公司中,過了35歲就被掃地出門了,不舍得招人的領(lǐng)導(dǎo)還能聽你在這里叨逼叨地訴苦?你忙你累,你還有理了?

          問君能有幾多愁,摸摸自己光禿禿的頭!

          那么,問題來了,手寫代碼為什么會(huì)那么累撒?

          記得有位經(jīng)濟(jì)學(xué)磚家說過,中國經(jīng)濟(jì)發(fā)展的所有問題都是因?yàn)橹贫葲]有理順。同理,手寫代碼累人的原因在于開發(fā)過程沒有理順。

          先看看手寫代碼遵循的開發(fā)過程:需求定義->設(shè)計(jì)->實(shí)現(xiàn)->測試與驗(yàn)證。

          這里的四個(gè)階段看起來貌似連貫,其實(shí)在很大程度上是各自獨(dú)立的。試為諸君細(xì)剖之。

          需求定義,顧名思義,搞清楚所開發(fā)產(chǎn)品有哪些功能、性能、標(biāo)準(zhǔn)上的要求,它的輸出是一些文本文檔。

          有人說,中國科技不發(fā)達(dá)的原因之一就在于漢語的模糊和歧義性。雖說漢語毫無來由地背了這么大一個(gè)鍋著實(shí)冤枉,但是,在文檔形式的需求定義中,各色人等對需求的理解確實(shí)是“橫看成嶺側(cè)成峰,遠(yuǎn)近高低各不同”。

          千人千面,無法統(tǒng)一,這就為漏洞和缺陷埋下了火藥線。

          再看設(shè)計(jì)階段,設(shè)計(jì)人員按照需求文檔設(shè)計(jì)原型,選擇架構(gòu),劃分模塊。在這個(gè)階段,可能會(huì)搭個(gè)電路,買個(gè)開發(fā)板,做一些實(shí)物原型,看看自己的思路是否可行。但是顯然,這種方式非常地耗時(shí)、好成本,同時(shí)也很不完整。

          到了實(shí)現(xiàn)階段,先聲明一點(diǎn),大部分嵌入式軟件工程師都是把設(shè)計(jì)階段和實(shí)現(xiàn)階段混在一起的。這個(gè)階段,工程師會(huì)借助各種開發(fā)工具,開始手工編碼代碼。手寫代碼講究個(gè)心到、眼到、手敲,用腳丫子都能想得到,這種方式特別地容易引入人為錯(cuò)誤。

          最后是測試階段,也是開發(fā)過程的最后一個(gè)階段。一般,測試人員在該階段介入進(jìn)來,對照著需求逐條測試。在整個(gè)鏈條的最后一環(huán)查找并修復(fù)錯(cuò)誤,會(huì)花費(fèi)很大的時(shí)間和人力成本。

          各個(gè)階段之間,實(shí)際上都有一道墻橫亙在那里。

          從需求分析到設(shè)計(jì),文本文檔的歧義性和模糊性可能會(huì)讓你誤入歧途,成為日后隱患的導(dǎo)火線。

          從設(shè)計(jì)到實(shí)現(xiàn),李宗盛大哥說:“既然不是仙,難免有雜念”,灑家說:“既然有雜念,難免會(huì)智商掉線”,從而在編碼中埋下一個(gè)又一個(gè)天雷滾滾,日后劈得自己外焦里嫩。

          從實(shí)現(xiàn)到測試,面對的便是一道肉墻了。測試大姐帶著豐滿的脂肪在你面前一站,一邊說落你不遵循編碼規(guī)則的自由散漫,一邊控訴你蹩腳的編程經(jīng)驗(yàn),你說你難堪不難堪?

          只提問題不說答案的都是在耍流氓。灑家風(fēng)度翩翩,自然是要臉面的。

          灑家開的藥方便是,基于模型的設(shè)計(jì)(MBD)。

          MBD,是以模型為核心,對算法進(jìn)行建模、驗(yàn)證,并支持文檔自動(dòng)化、自動(dòng)代碼生成。

          還是按照上面的四個(gè)階段,對比一下MBD的優(yōu)勢。

          在需求分析階段,MBD的輸出結(jié)果是一個(gè)可視化的模型,不同的人使用相同的模型。

          它的優(yōu)勢在于:相比于文本文檔,可視化的圖形模型顯得非常清楚、明確,最關(guān)鍵的是明確統(tǒng)一且唯一的需求,便于人們的交流。灑家認(rèn)為,圖形化的模型是消解漢語歧義性的最佳手段,各位看官以為然否?

          設(shè)計(jì)階段可以認(rèn)為是一個(gè)模型不斷細(xì)化的過程,隨著模型的細(xì)化,驗(yàn)證可以同時(shí)進(jìn)行,沒錯(cuò),傳統(tǒng)開發(fā)流程中第四個(gè)階段-測試可以提前到設(shè)計(jì)階段來進(jìn)行了。它的好處在哪里呢?

          佛門有句話,“不怕念起,只怕覺遲”。在“打得念頭死,許汝法身活”的語境中,起心動(dòng)念是不對的,要早點(diǎn)消除,不要覺察地太遲。在軟件開發(fā)上也是如此,要盡可能在早期發(fā)現(xiàn)錯(cuò)誤,這樣會(huì)給后續(xù)的開發(fā)過程帶來很多便利。

          在手寫代碼的傳統(tǒng)流程中,盡早發(fā)現(xiàn)問題靠的是“評審”,但是顯然那只適用于大公司。據(jù)我一個(gè)在大公司干過活的同學(xué)講,寫了文檔后要評審,做了設(shè)計(jì)后要評審,敲完代碼后要評審,弄完測試用例還是要評審,沒完沒了的評審,效率實(shí)在是低。

          現(xiàn)在好了,MBD在“早期”設(shè)計(jì)階段便可以做測試和驗(yàn)證,從而將錯(cuò)誤的苗頭盡早地扼殺在了搖籃里。

          再下一個(gè)便是實(shí)現(xiàn)階段。MBD正是在這個(gè)階段,極大地解放了碼農(nóng)的生產(chǎn)力,因?yàn)槟挥檬謱懘a啦,MBD支持自動(dòng)代碼生成!

          靠機(jī)器而不是人寫代碼,這合適嗎?合理嗎?

          好吧,人類是計(jì)算機(jī)的造物主,但是在這里,咱不談精神,不說靈魂。

          必須承認(rèn)的是,計(jì)算機(jī)在生成代碼方面確實(shí)要比人類的智慧高,且不說他們支持好幾種生成方式,可以選擇效率優(yōu)先,或者RAM優(yōu)先,人家還可以自動(dòng)支持MISRA-C編碼規(guī)范,光這一條,還不得秒一大街碼農(nóng)?

          沒有情感的計(jì)算機(jī)消滅了編碼階段的人為錯(cuò)誤,便是對碼農(nóng)最大的溫情!

          最后一個(gè)測試階段不用說了,因?yàn)樵贛BD設(shè)計(jì)里,這四個(gè)階段之間沒有“墻”,模型不斷細(xì)化,測試驗(yàn)證是持續(xù)進(jìn)行的,在早期就引入了驗(yàn)證,把錯(cuò)誤消滅在早期,盡可能降低了修復(fù)的成本。

          說到這里,老碼農(nóng)們也不要傷心,覺得脊梁骨發(fā)涼。都自動(dòng)代碼生成了,公司領(lǐng)導(dǎo)要是拿自己開刀咋辦?

          需要明確的是,MBD并非完全不需要軟件工程師的聰明才智了,比如對程序中各種變量、函數(shù)的命名,無論是手寫代碼還是MBD方式都很重要,程序設(shè)計(jì)中的命名是一個(gè)充滿創(chuàng)造力的地方,一個(gè)智商不到兩歲小孩的計(jì)算機(jī)能起好名?

          在MBD設(shè)計(jì)中,需要碼農(nóng)動(dòng)用自己的創(chuàng)造力來重視標(biāo)識符命名。因?yàn)楹玫拿哂袠O強(qiáng)、極精準(zhǔn)的描述能力,能夠清晰地表達(dá)函數(shù)或變量的含義,這樣會(huì)增加程序的可讀性和可維護(hù)性,也可以在一定程度上消除不必要的注釋。

          其次,在底層驅(qū)動(dòng)上,也很難引用MBD方式,因?yàn)樵诤芏鄳?yīng)用領(lǐng)域中,底層驅(qū)動(dòng)是比較復(fù)雜的,輸入驅(qū)動(dòng)、輸出驅(qū)動(dòng)、通信驅(qū)動(dòng)、特殊器件的驅(qū)動(dòng)等等這些,依然是手寫代碼的天下。

          還有通信、診斷、操作系統(tǒng)這些東西,用MBD很難實(shí)現(xiàn),而且也沒有優(yōu)勢,還不得靠咱?

          所以,通常的情景是:在一個(gè)產(chǎn)品級的開發(fā)中,會(huì)在一個(gè)大系統(tǒng)中的一個(gè)任務(wù)中或者ISR中,把MBD實(shí)現(xiàn)的算法放進(jìn)去,其它地方,仍然是手寫代碼的天下。將代碼集成到整個(gè)嵌入式系統(tǒng)的軟件中時(shí),依然需要手寫代碼的經(jīng)驗(yàn)。

          那種妄圖讓MBD取代所有編碼工作,是狂妄的,也是不現(xiàn)實(shí)的。

          后記

          從手寫代碼到MBD,是一種開發(fā)流程思維的革命。

          在這個(gè)過渡的過程中,不要有太大的負(fù)擔(dān)和畏難心理。無論是手寫代碼還是MBD的自動(dòng)代碼生成,就是個(gè)工具,一層窗戶紙的事兒。沒有捅破之前覺得很難,但是一旦捅破了,不過爾爾。

          革命革命,革掉自己的命,方能迎來新生。往日種種譬如昨日死,今日種種譬如今日生。

          在這個(gè)不斷增長的年紀(jì),希望各位老碼農(nóng)盡早轉(zhuǎn)型到基于模型的設(shè)計(jì)上來。

          我愛你們!



          關(guān)鍵詞:

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();